Walgreens API
Walgreens product data as structured JSON: search the retail catalog with regular and sale prices, promotions, coupons and ratings, read full product detail with dated offers and ingredients, find stores near a ZIP, and get one product's live unit count at up to 20 stores in one call.
50 free credits on signup. No card, no Walgreens account.
{ "data": { "query": "shampoo", "page": 1, "sort": "relevance", "store_id": "15350", "total_results": 533, "total_pages": 8, "count": 70, "products": [ { "position": 1, "product_id": "300452904", "upc": "19560214708", "name": "Walgreens Shiny & Smooth Shampoo", "brand": "Walgreens", "size": "33.8 fl oz", "price": 4.99, "sale_price": 3.74, "on_sale": true, "promotion": null, "coupon": null, "loyalty_message": "Earn $10 rewards on $30+ spent on select Walgreens brands*", "rating": 4, "review_count": 90, "availability": { "ship": true, "pickup": false, "delivery": false, "text": "In stock but not available for pickup" } }, { "position": 2, "product_id": "300421556", "upc": "8087819556", "name": "Pantene Daily Moisture Renewal 72 Hour Lush Moisture Shampoo", "brand": "Pantene", "size": "12 fl oz", "price": 6.49, "sale_price": null, "on_sale": false, "unit_price": 0.54, "unit_price_size": "oz", "promotion": "Buy 1, Get 1 50% OFF", "coupon": "$2 off 2 Coupon", "rating": 4.5, "review_count": 511 } ] }, "response_time": 2829}Live call against the real endpoint, with availability text for store 15350 (Chicago, IL). 2 free runs, then it's your own key.
What is the Scavio Walgreens API?
The Scavio Walgreens API is a REST API that returns walgreens.com retail data as structured JSON. Its 4 POST endpoints cover search and product detail with national online prices and promotions, a store locator, and live stock at up to 20 stores per call. Search, product and stores cost 2 credits; stock costs 4.
- 4
- endpoints, all live in production
- 2
- credits for search, product and stores; 4 for stock
- 20
- stores' unit counts for one product in one call
The Walgreens data buyers actually need
What it costs this week, which promotion applies, and which nearby store has it on the shelf.
Units on the shelf at 20 stores
POST /api/v1/walgreens/stockPass a product id and up to 20 store numbers and one call returns each store's status, unit count and in_stock. Our Chicago capture found Walgreens Shiny & Smooth Shampoo in stock at all 5 stores checked, with 1 to 5 units each.
Search with every promotion
POST /api/v1/walgreens/searchUp to 70 products a page with regular and sale price, unit price, Buy 1 Get 1 style promotions, clipped-coupon text, rewards and rebate messages. In our shampoo capture, 9 of 70 rows were on sale and 25 carried a coupon.
Product detail with offers
POST /api/v1/walgreens/productSKU, UPC and GTIN, savings amount and percent, rewards offers with start and end dates, description, ingredients, warnings, category path, images and the FSA flag.
Store locator
POST /api/v1/walgreens/storesWalgreens and Duane Reade stores near a ZIP or coordinates, nearest first, with the store number every stock call takes. ZIP 60614 returned 441 stores within 25 miles.
All 4 Walgreens API endpoints
Every route is a POST, returns JSON, and takes the same API key. Credits are charged per successful call.
| Endpoint | Returns | Credits |
|---|---|---|
Search/api/v1/walgreens/search | Retail product search, up to 70 per page and 11 sort orders: regular and sale price, unit price, promotion, coupon, rewards and rebate messages, rating, review count, UPC and ship/pickup/delivery availability | 2 |
Product detail/api/v1/walgreens/product | One product by id or URL: SKU, UPC, GTIN, price, sale price and savings, dated rewards and rebate offers, description, ingredients, warnings, category path, images and FSA flag | 2 |
Store locator/api/v1/walgreens/stores | Walgreens and Duane Reade stores near a ZIP or coordinates, nearest first, up to 25 a page: store number, address, phone, distance, opening and closing time | 2 |
Store stock/api/v1/walgreens/stock | One product's live stock at up to 20 stores in one call: status, unit count and in_stock per store | 4 |
50 free credits on signup covers 25 Walgreens searches. Prices are national online prices; stock is per store. See plans
Search the catalog, then find stock nearby
Search returns prices, promotions and the product_id; stores turns a ZIP into store numbers; stock returns the unit count at each. The response on the right is a real capture.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Search the catalog, availability text for store 15350 - 2 credits
res = client.walgreens.search(query="shampoo", store_id="15350")
p = res["data"]["products"][0]
print(p["name"], p["price"], "sale", p["sale_price"], p["promotion"])
# Stores near a ZIP, nearest first - 2 credits
stores = client.walgreens.stores(zip="60614", limit=5)["data"]["stores"]
ids = [s["store_number"] for s in stores]
# That product's units at each of those stores - 4 credits
stock = client.walgreens.stock(product_id=p["product_id"], store_ids=ids)["data"]
print([(s["store_number"], s["quantity"]) for s in stock["stores"] if s["in_stock"]]){
"data": {
"query": "shampoo",
"page": 1,
"sort": "relevance",
"store_id": "15350",
"total_results": 533,
"total_pages": 8,
"count": 70,
"products": [
{
"position": 1,
"product_id": "300452904",
"upc": "19560214708",
"name": "Walgreens Shiny & Smooth Shampoo",
"brand": "Walgreens",
"size": "33.8 fl oz",
"price": 4.99,
"sale_price": 3.74,
"on_sale": true,
"promotion": null,
"coupon": null,
"loyalty_message": "Earn $10 rewards on $30+ spent on select Walgreens brands*",
"rating": 4,
"review_count": 90,
"availability": {
"ship": true,
"pickup": false,
"delivery": false,
"text": "In stock but not available for pickup"
}
},
{
"position": 2,
"product_id": "300421556",
"upc": "8087819556",
"name": "Pantene Daily Moisture Renewal 72 Hour Lush Moisture Shampoo",
"brand": "Pantene",
"size": "12 fl oz",
"price": 6.49,
"sale_price": null,
"on_sale": false,
"unit_price": 0.54,
"unit_price_size": "oz",
"promotion": "Buy 1, Get 1 50% OFF",
"coupon": "$2 off 2 Coupon",
"rating": 4.5,
"review_count": 511
}
]
},
"response_time": 2829
}Why not the official Walgreens API?
Walgreens' developer program centers on partner integrations such as photo printing and prescriptions.
Walgreens Developer Program
- Built around partner use cases such as photo prints, prescriptions and store lookup
- Access starts with registering for the Walgreens developer program
- Catalog prices, promotions and coupons live on walgreens.com pages, with no export
Scavio Walgreens API
- One API key, issued at signup, with no Walgreens account or partner agreement
- Search with regular, sale and unit price, promotions, coupons and ratings
- One product's live unit count at up to 20 stores in a single call
- Product detail with dated offers, ingredients, GTIN and the FSA flag
- Same key and JSON envelope as every other Scavio platform
Scavio returns publicly available retail data only, and never signs in as a Walgreens customer.
What developers build with it
Local stock finder
Given a product and a ZIP, list the nearby Walgreens stores that have it on the shelf and how many units each holds: one stores call and one stock call.
stores + stockHealth and beauty price tracking
Track regular price, sale price, unit price and promotions for a list of health, beauty and household products over time.
search + productDeal and coupon apps
Show what an item really costs this week at Walgreens: sale price, Buy 1 Get 1 promotions, coupon text, rewards offers with their end dates and rebates.
search + productCPG brand monitoring
Check a brand's shelf presence store by store, and watch its price, promotions and ratings in the Walgreens catalog.
stock + searchDrugstore competitive intelligence
Compare Walgreens prices with Walmart, Target and Kroger for the same UPC, on one API key.
search + Walmart + TargetHow to get Walgreens data as JSON
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 credits free on signup, with no card required and no Walgreens account.
- 2
Search the catalog
Send {"query": "shampoo"} to https://api.scavio.dev/api/v1/walgreens/search with an Authorization: Bearer header. Each result carries its product_id, price, sale price and promotions.
- 3
Find stores and check their stock
Call /api/v1/walgreens/stores with a ZIP for store numbers, then pass a product_id and up to 20 of those numbers to /api/v1/walgreens/stock for each store's unit count.
Walgreens API FAQ
Does Walgreens have a public product data API?
+
Walgreens runs a developer program centered on partner integrations such as photo printing and prescriptions, with access through registration. For catalog prices, promotions and per-store stock as JSON, the Scavio Walgreens API offers 4 POST endpoints: search, product detail, a store locator and store stock.
What is the Scavio Walgreens API?
+
It is a REST API that returns public walgreens.com retail data as structured JSON. It covers product search with prices and promotions, product detail by id or URL, a Walgreens and Duane Reade store locator, and one product's live stock at up to 20 stores per call.
Are Walgreens prices per store?
+
No. Prices on search and product are Walgreens' national online prices, the same whichever store you pass; the product response marks this with store_pricing false. What is per store is stock: /api/v1/walgreens/stock returns each store's status and unit count.
What does store_id do on search?
+
It fills each result's availability.text for that store, for example "Not sold at your store" or "In stock but not available for pickup". It does not change prices or filter results. Without it, availability.text reads "Store inventory unavailable". For unit counts, use /api/v1/walgreens/stock.
How do I check stock at many Walgreens stores at once?
+
Call /api/v1/walgreens/stock with a product_id and up to 20 store numbers. Each store comes back with status (In Stock, Out of Stock, or Not Available when it does not carry the item), quantity and in_stock, plus in_stock_count across all of them. Near ZIP 60614, all 5 stores checked had the Walgreens Shiny & Smooth Shampoo, 1 to 5 units each.
How do I find a Walgreens store number?
+
POST a ZIP code, or a latitude and longitude, to /api/v1/walgreens/stores. It returns Walgreens and Duane Reade stores nearest first within 25 miles by default (up to 100), 10 a page by default and up to 25, with store_number, address, phone, distance in miles and opening and closing time. ZIP 60614 returned store 15350, 834 W Armitage Ave, at 0.36 miles.
Does the API return Walgreens promotions and coupons?
+
Yes. Search and product carry promotion (for example "Buy 1, Get 1 50% OFF"), coupon ("$2 off 2 Coupon"), loyalty_message for rewards offers and rebate for sitewide codes. Product also returns offers[] with each offer's title, details and start and end dates, plus savings_amount and savings_percent.
How are sale prices shown?
+
In dollars, as decimals. price is the regular price and sale_price the single-unit sale price; on_sale is true when sale_price is lower. A multi-buy sale keeps its wording in sale_text, for example "2/$12.00 or 1/$6.99".
Does it include pharmacy or prescription data?
+
No. The Walgreens API covers front-store retail products only: health, beauty, household, personal care and the rest of the walgreens.com shop. Nothing from the pharmacy, prescriptions or patient accounts is returned.
Does the API return Walgreens reviews?
+
It returns each product's star rating and review count on search and product. Review text is not available for Walgreens.
How many results does a search return?
+
Up to 70 products per page, across up to 100 pages, with total_results and total_pages for the whole query. Our "shampoo" capture reported 533 results over 8 pages. Eleven sort orders are available, including price, unit price, rating and newest arrivals.
How much does a Walgreens request cost?
+
Search, product and stores cost 2 credits each; stock costs 4 credits for up to 20 stores. New accounts get 50 free credits on signup, one time, with no card required. Paid plans start at $30 per month for 7,000 credits.
How fresh is the data?
+
Every request fetches live from Walgreens at the moment you call it, and nothing is cached. Each response carries fetched_at, the time the data was retrieved.
Which languages and tools are supported?
+
Every endpoint is a plain HTTPS POST with a JSON body, so any language works. Scavio also ships Python and JavaScript SDKs, a remote MCP server at mcp.scavio.dev for AI agents, and an n8n community node, all on the same API key.
Is using Walgreens data legal?
+
Scavio returns publicly available Walgreens retail data and does not access accounts, prescriptions or order history. You remain responsible for how you use the data, including compliance with Walgreens' terms. Talk to your own counsel for your specific use case.
Explore more of Scavio
Walgreens API docs
All 4 endpoints with params and real responses.
Walmart API
Search, product, reviews and store-level pricing.
Target API
Search, categories, detail and reviews.
Dollar General API
Store prices, units on hand, deals and coupons.
Kroger API
Grocery prices and promos across Kroger banners.
Costco API
Warehouse prices and stock, coupons and clearance.
Try the Walgreens API free
50 free credits on signup, no card. Your first request is a POST with a product name in it.