Weekly Grocery Circular Data: Sale Prices from the Top US Chains by ZIP
Every week, US grocery chains publish weekly ads, also called circulars or flyers, listing their best deals: chicken thighs at $1.99 a pound, two boxes of cereal for $6, buy-one-get-one on pasta sauce. For shoppers, the weekly ad is still one of the main ways to plan a grocery trip. For apps, it is one of the richest sources of real, local price information, but it arrives as images, PDFs and web pages rather than clean data.
In September 2026 WebDataScraping.us received a request from a US meal-planning company for "weekly promotional pricing (sale items from weekly circulars) for the top 10 US grocery chains by store count, matched to a ZIP code, roughly 500 common grocery items." Canadian clients asked for similar flyer data for Quebec and for weekly discounted products with regular and sale prices. This guide explains how Grocery Circular Data Scraping works and how to make weekly ads usable in an app.
Why weekly ads matter
- Real local prices. Circulars are published per store or per region, so they reflect what shoppers in a ZIP code will pay.
- Predictable cycle. Most chains run a weekly promotion cycle, often starting midweek.
- High intent. Shoppers who read circulars are actively planning purchases.
- Promotion insight. Brands and analysts learn how often and how deeply products are promoted.
Where circular data comes from
| Source | Format | Notes |
|---|---|---|
| Retailer weekly ad pages | HTML item lists or interactive flyers | Often require choosing a store or ZIP |
| Digital flyer platforms | Interactive flyers with item data | Common in Canada and the US |
| PDF circulars | Printed-style pages | Need text extraction and layout parsing |
| Image-only ads | Scanned pages | Need image-based text recognition |
| Retailer apps | Digital deals and clip coupons | Overlaps with circular items |
Many chains now publish their weekly ad as structured item lists online, which makes collection more accurate. Where only images or PDFs exist, text recognition and layout parsing are used, followed by quality checks.
What grocery circular data scraping produces
| Field | Example |
|---|---|
| Retailer and store or region | Example Grocer, store 1182, ZIP 75601 |
| Ad week | Wed 7 Oct to Tue 13 Oct |
| Item description | Boneless skinless chicken breast |
| Brand (if branded) | Sample Farms |
| Size or unit | Per lb, 12 oz, family pack |
| Sale price | $2.99/lb |
| Regular price (where shown) | $4.49/lb |
| Deal type | Price cut, BOGO, multi-buy (2 for $5), loyalty price, digital coupon |
| Conditions | With loyalty card, limit 2, minimum purchase |
| Category | Meat, produce, dairy, pantry |
Sample record
The record below is illustrative.
{
"retailer": "Example Grocer",
"store_id": "1182",
"zip_code": "75601",
"ad_start": "2026-10-07",
"ad_end": "2026-10-13",
"item_text": "Boneless Skinless Chicken Breast, Family Pack",
"brand": null,
"category": "Meat",
"unit": "lb",
"sale_price_usd": 2.99,
"regular_price_usd": 4.49,
"deal_type": "price_cut",
"loyalty_required": true,
"limit": null,
"matched_item": "chicken breast, boneless skinless",
"source_format": "html_item_list"
}
Matching circular items to a shopping list
Circular text is written for people, not databases. "Chicken breast, family pack, per lb" or "Sample cereal, select varieties, 10.8 to 14 oz, 2 for $6" needs to become something an app can match to "chicken breast" or "breakfast cereal" in a user's list. Matching involves:
- Normalising units to per lb, per oz or per item.
- Expanding "select varieties" into the product family it covers.
- Converting multi-buys into a per-item price (2 for $6 = $3 each).
- Mapping to a master item list, such as the 500 common items a meal-planning app uses.
- Flagging conditions like loyalty-only or purchase limits.
Choosing chains and stores
For a national app, the top chains by store count usually cover most shoppers. The challenge is that each chain publishes ads by store, division or region. A practical plan:
| Step | Action |
|---|---|
| 1 | List target chains and ZIP codes |
| 2 | Find the store that serves each ZIP code for each chain |
| 3 | Identify which stores share the same weekly ad (same ad region) |
| 4 | Collect one store per ad region, then map results to all ZIPs in that region |
| 5 | Refresh at the start of each ad week, with a mid-week check for changes |
Collecting by ad region rather than by individual store reduces volume without losing accuracy.
Example weekly summary
| Item (illustrative, ZIP 60123, week of 7 Oct) | Chain A | Chain B | Chain C | Best deal |
|---|---|---|---|---|
| Chicken breast, per lb | $2.99 | $3.49 | $1.99 (limit 2) | Chain C |
| Large eggs, dozen | $3.29 | $2.99 | — | Chain B |
| Pasta sauce, 24 oz | BOGO ($3.79) | $2.50 | 2 for $5 | Chain A |
| Strawberries, 1 lb | $2.50 | $2.99 | $2.49 | Chain C |
All prices are illustrative.
How apps and brands use circular data
- Meal-planning apps build weekly menus around what is on sale near the user.
- Coupon and cashback apps combine circular deals with digital coupons for the lowest price.
- Price-comparison apps show the cheapest store for a shopping list this week.
- CPG brands monitor how often retailers promote their products and competitors.
- Analysts track promotional intensity as an indicator of competition and inflation.
Canada: flyers and Quebec
Canadian grocery promotions are typically published as weekly flyers, often on digital flyer platforms, and in Quebec in French. Grocery circular data scraping for Canada handles bilingual item text and Canadian units, and maps flyer regions to postal codes. Clients asking for "the top 10 grocery stores in Quebec" receive French item text with English normalised fields.
Understanding deal types
Weekly ads use a small set of deal mechanics again and again. Structuring them correctly is what makes the data usable:
| Deal type | Example text | How it is stored |
|---|---|---|
| Price cut | "$2.99 lb, save $1.50" | Sale price, regular price, unit |
| Multi-buy | "2 for $5" | Per-item price $2.50, quantity required 2 |
| BOGO | "Buy 1 Get 1 Free" | Effective per-item price at half, quantity 2 |
| Mix and match | "Buy 5, save $5, mix or match" | Discount rule with eligible item list |
| Loyalty price | "With card" or "members save" | Loyalty flag, member price |
| Digital coupon | "Digital coupon, clip in app" | Coupon flag, coupon value |
| Limit | "Limit 2 per household" | Purchase limit field |
Getting the deal type right prevents an app from overstating savings, for example by showing a BOGO price for a single item.
Building a weekly deals feature
Apps that use grocery circular data scraping well tend to follow a simple pattern:
- Load new ads on the first day of the ad week for each store or ad region.
- Match deals to the user's list or favourite items.
- Highlight the best three deals for the user's nearest stores.
- Build a meal plan or shopping list around deals, for example suggesting recipes that use chicken and strawberries when both are on sale.
- Remove expired deals automatically at the end of the ad week.
Quality checks
| Check | Purpose |
|---|---|
| Item count per ad compared with previous weeks | Catches incomplete collection |
| Price sanity by category | Flags OCR errors such as $29.9 instead of $2.99 |
| Multi-buy parsing review | Ensures per-item prices are correct |
| Ad date validation | Prevents expired deals from appearing |
| Sample manual review | Compares a sample of items with the original ad |
Compliance-first collection
WebDataScraping.us collects publicly published weekly ad content only, respects reasonable request rates, does not collect any shopper data, and helps clients use data in line with retailer terms and applicable law. Item text and prices are delivered as data; retailer logos and ad images are not redistributed.
Key takeaways
- Weekly circulars are a rich, local source of real grocery prices.
- Grocery circular data scraping turns HTML, PDF and image ads into structured deals by ZIP code.
- Normalising units and multi-buys and matching to a master list makes deals usable in apps.
- Collecting by ad region keeps volumes and costs under control.
Get weekly ad data for your app
WebDataScraping.us delivers compliance-first grocery circular data scraping for US and Canadian apps, brands and analysts. Share your chains, ZIP codes and item list, and we will send a sample of this week's deals.
Frequently asked questions
Typically within hours of the ad being published online, so apps can show deals on the first day.
Publicly listed digital deals can be included and flagged separately from circular prices.
Most projects cover the top 10 to 20 chains and 300 to 2,000 master items, then expand.
Yes. Canadian flyers, including French-language Quebec flyers, are supported.