Walgreens.com Pharmacy & Drug Catalog

Datadory delivers Walgreens.com Pharmacy & Drug Catalog scrapeable data covering tens of thousands of US over-the-counter, wellness, beauty, and household SKUs - names, regular and per-unit prices, promotion rules, UPC/GTIN identifiers, ratings and review counts, store availability, and active-ingredient text in about 72-item listing batches - delivered daily, weekly, or hourly as API, files, or a warehouse load.

What is the Walgreens.com Pharmacy & Drug Catalog?

One of the two largest drugstore chains in the United States puts its entire front-of-store assortment on the web, and it does so in a form that is unusually generous to machines. Every category and keyword listing page on Walgreens.com - pain relief, vitamins, beauty, household - embeds one large JSON state object, and inside it sits a productList array of about 72 items per page. The Walgreens.com Pharmacy & Drug Catalog is that array, harvested at scale: tens of thousands of OTC, wellness, beauty, and household SKUs, each carrying its own structured record rather than a paragraph of prose.

The per-item payload is wide for a shelf catalog. Each product block holds the display name, the regular price inside a priceInfo structure, promotional rules spelled out in plain language ("Buy 1, Get 1 50% OFF"), a computed per-unit price with its size basis, UPC and GTIN barcodes plus the retailer's internal product id, an average customer rating with its review count, a store inventory status backed by per-SKU/per-location stock counts, active-ingredient text with strengths and roles, product size, and flags for private label, clearance, shipping eligibility, and same-day pickup. That is the full anatomy of a shelf decision - what the product is, what it costs, how it is promoted, whether it can be picked up today, and what is actually in it. Source: Walgreens. Get a sample of this dataset and see how much of your category list it already covers.

What do sample rows look like?

Five real rows from one pain-relief listing page - all acetaminophen and topical analgesics, straight from the embedded JSON:

productName                        regularPrice   unitPrice     upc          avgRating  reviews  storeInv
Pain Reliever Coated Caplets       $6.99          $0.14 / ea    31191701535  4.5        116      instock
500 mg Acetaminophen Caplets       $6.99          $0.29 / ea    30045044905  4.5        1721     instock
Pain Relieving Dry Spray + Lido..  $10.99         -             31191701097  4.0        79       instock
8-Hour Pain Relieving Patch        $11.99         -             34658111060  4.0        523      instock
Extra Strength Rapid Release Gels  $14.99         -             30045048828  4.5        1114     instock

(Each row also carries its ingredientName string; the first row reads "Acetaminophen - 500 mg Pain Reliever/Fever Reducer".)

Read as a set, the rows show why SKU-level granularity earns its keep. Two products both sell acetaminophen at 500 mg and both cost $6.99 - but the unit prices split them: $0.14 per caplet against $0.29, a two-fold difference hidden behind identical shelf prices. Review counts range from 79 to 1,721 across chemically near-identical items, which is brand equity expressed as data. And every row arrives keyed by UPC, so these records join to any barcode-keyed panel you already run. A sample request pins down current categories, exact header spellings, and live totals before any commitment.

What fields does the dataset include?

The working dictionary runs twelve fields wide, all verified against live listing pages - the table below carries each field with its type, definition, and a genuine example.

Three structures carry more than one cell can hold. ruleMessage repeats per attached promotion, so a single product can fan out into a small offer table of BOGO and percentage-off mechanics. skuInvAvailMap nests per-SKU stock counts keyed by location, which turns the flat availability flag into a store-by-store map when you want the geography. And ingredientName arrives as concatenated text - ingredient, strength, and pharmacological role strung together - usable as-is for enrichment or splittable into a clean ingredient table.

Where does coverage reach?

  • Geo: United States. The assortment is national, and inventory goes deeper than the flag: each product's stock map keys counts by SKU and location, so chain-level presence can be cut regionally during sampling rather than assumed.
  • Temporal: Every delivery is a current catalog-and-pricing snapshot taken in the same pass. Retain consecutive deliveries and each SKU becomes a time series - regular prices stepping up and down, promotions rotating, ratings and review counts accruing week over week.
  • Granularity: SKU/product level, arriving in per-listing-page batches of about 72 items across paginated categories. The estimated breadth is tens of thousands of OTC, wellness, beauty, and household SKUs.

That combination makes this catalog the shelf half of the drug retail data hub: where price-panel datasets say what consumers pay, this one says what sits on the shelf of one of America's two dominant drug chains.

How is the data delivered?

API, files, or your warehouse. Daily, weekly, or hourly.

Pick the categories, pick the cadence, pick the landing zone - the same SKU-level catalog arrives whichever way you take it, structure intact. Because each delivery is a complete snapshot, retention does the longitudinal work: diff two deliveries a week apart and repriced SKUs, new promotions, flipped availability, and fresh review counts fall out on their own, handing you a shelf-movement series nobody has to assemble by hand. The sample comes first, so row shape, category scope, and totals are settled facts before any commitment.

Who builds on it?

  • Competitive intelligence teams track assortment and promo mechanics at the shelf level - a rival's BOGO pattern, a private-label push, a category quietly expanding - instead of sending people down aisles with clipboards; playbooks sit on the competitive intel use cases page.
  • Market researchers and consultants benchmark price points, unit-price economics, and review volume by category and brand; workflows live on the market researchers use cases page.
  • E-commerce and pricing teams ground price-comparison, unit-price, and assortment features in a maintained feed keyed by UPC/GTIN rather than hand-checked listings; integration angles are on the e-commerce operators use cases page.
  • Consumer-health analysts read active-ingredient text alongside price and rating to map how molecules compete within a category; modeling notes sit on the data scientists use cases page.
  • Investors and quants treat promotion cadence, clearance flags, and review accrual as demand-side signals for retail health names; screens are on the investors quants use cases page.
  • Journalists and academics cite concrete shelf facts - a specific price, a specific ingredient strength, a specific rating base - instead of anecdotes about drugstore costs; reporting frames are on the journalists academics use cases page.

Which datasets and notes pair with it?

  • openFDA NDC Directory API - the regulated identity spine; joining on drug identity turns these shelf rows into a panel you can roll up by labeler and active ingredient.
  • GoodRx Drug Prices & Pharmacy Finder - the consumer cash-price panel for overlapping products; shelf price next to coupon price is the whole affordability story in one join.
  • openFDA Drug Label SPL API - the full labeling documents behind each active ingredient, adding indications and warnings to the shelf view.
  • NLM Clinical Table Search Service - RxTerms name normalization so clinical and consumer drug names meet on one join key.
  • Kaggle Pharmacy & Drug Retail Datasets - community-cut extracts worth scanning before commissioning a custom cut; both sit inside the best drug-retail datasets ranking.

Five reference points frame the catalog before you commit: the vocabulary notes defining product ratings, review metadata, unit price and was-price fields, and UPC barcode lookup, plus how store-level inventory availability differs from a plain in-stock flag. One honest caveat closes the loop: prescription-level assortment sits behind pharmacy flows outside this catalog's reach, and total SKU count is not published anywhere - only the roughly 72-item batch shape was verified, so scope is settled during sampling rather than promised up front.

Field dictionary

Every field below is documented against real records. The full dictionary ships with the sample.

Field dictionary for the Walgreens.com Pharmacy & Drug Catalog - twelve verified fields; examples are genuine values from live listing pages
FieldTypeDefinitionExample
productNamestringShort product title in the productList JSON.Pain Reliever Coated Caplets
regularPricestringCurrent listed price inside priceInfo.$6.99
ruleMessagestringPromotional pricing rule attached to priceInfo, e.g. BOGO offers.Buy 1, Get 1 50% OFF
unitPricestringComputed per-unit price and size basis (priceInfo.unitPrice / unitPriceSize).$0.14 / ea
upcstringUniversal Product Code for the sellable unit.31191701535
gtinstringGlobal Trade Item Number, 13-14 digits, for the product.311917015354
prodIdstringWalgreens internal product identifier used in product URLs (ID=...-product).300424559
averageRatingnumberAverage customer rating shown on the listing card.4.5
reviewCountintegerNumber of customer reviews aggregated for the product.116
storeInvstringStore inventory availability status; skuInvAvailMap gives counts per SKU/location.instock
ingredientNamestringActive drug ingredients and strengths concatenated with role labels.Acetaminophen - 500 mg Pain Reliever/Fever Reducer
wBrandIndstringFlag indicating Walgreens private-label ('Walgreens Brand') products.1

Questions buyers ask

How many SKUs does the Walgreens.com Pharmacy & Drug Catalog cover?

Tens of thousands of over-the-counter, wellness, beauty, and household SKUs across paginated category listings. The count is not published at the source - only the batch shape, about 72 items per listing page, was verified - so exact totals are confirmed during sampling for your categories rather than quoted up front.

What is the difference between regularPrice and unitPrice?

regularPrice is the shelf tag for the package - $6.99 for a bottle of coated caplets. unitPrice is the computed per-unit figure with its size basis - $0.14 per caplet for that same bottle. Comparing the two columns across look-alike products surfaces the value gaps identical shelf prices hide.

Does the catalog include promotional offers, not just list prices?

Yes. Each product's priceInfo carries a ruleMessage describing the attached mechanic in plain language - "Buy 1, Get 1 50% OFF" among those observed - alongside sale flags. Because the messages repeat per offer, one product fans out into a small promotion table, which is what makes promo-cadence tracking possible at scale.

How far does the inventory signal go?

Beyond the flat storeInv status - "instock" being the common value - each product carries a per-SKU stock map keyed by location. Treated as a flag it answers can-this-ship; treated as a map it supports regional availability cuts. Which depth your analysis needs is one of the things a sample settles early.

Are customer reviews part of every row?

Yes - averageRating and reviewCount ride along on each product card, from 4.0 across 79 reviews to 4.5 across 1,721 in the pain-relief sample above. Kept across consecutive deliveries, those counters accrue into a reception-over-time series without any extra collection work.

Do I get one snapshot or a history?

Every delivery is a complete current snapshot of the categories you select. History comes from retention: keep consecutive deliveries and each SKU becomes a series - prices stepping, promotions rotating, availability flipping, review counts growing. Cadence - daily, weekly, or hourly - is your call, and diffs between deliveries do the analytical work.

See the rows before you pay anything.

Name this dataset and we send real records from it — scoped to the fields you asked for.

See pricing