Aldi Weekly Ad Scraper
Pricing
from $1.80 / 1,000 weekly ad offers
Aldi Weekly Ad Scraper
Scrape ALDI US weekly ads and ALDI Finds by ZIP code. Export sale price, regular price, brand, size, stock, and images from the public circular — an Aldi weekly ad API alternative for Python, Node.js, and MCP.
Pricing
from $1.80 / 1,000 weekly ad offers
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Aldi Weekly Ad Scraper — ZIP Grocery Prices
Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by ALDI or Instacart. Data is read from publicly accessible aldi.us circular pages only. No login. You are responsible for complying with applicable law and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.
This Aldi weekly ad scraper turns the public US weekly circular and ALDI Finds flyer into a structured Apify dataset, scoped to a store ZIP code. Export sale price, regular price, brand, size, stock, and images as JSON or CSV — an Aldi weekly ad API alternative for Python, Node.js, and MCP.
It is not a full 13k-SKU grocery catalog. Pair it with a marketplace scraper when you need online comps rather than ZIP-local advertised specials.
| Grocery weekly ads | US mass retail | EU Lidl leaflets | Marketplace comps |
|---|---|---|---|
| Aldi Weekly Ad Scraper ◄── you are here | Walmart Scraper | Lidl Weekly Offers Scraper | Amazon Search Scraper · Tractor Supply Product Scraper |
When to use this Actor
- Aldi weekly ad scrape for one US ZIP (this week’s sale circular / flyer)
- ALDI Finds scraper for limited-run SKUs, plus an optional next-week preview
- Grocery price monitoring on advertised ALDI prices, percent-off badges, and unit price
- Deal aggregators / meal-planning feeds that need ZIP-local ALDI offers
- CPG / private-label research on ALDI exclusive brands in the circular
- Scheduler jobs that refresh after Wednesday when the new ad drops
When not to use this Actor
- Full aisle catalog dumps — this Actor is the weekly circular, not every SKU
- Aldi Australia, UK, Ireland, or Germany (Nord/Süd / Hofer) — US
aldi.usonly - Checkout, cart, Instacart account, or login automation
- Store-locator crawls as a primary job — pass a ZIP; the Actor resolves the store
- Amazon search — use Amazon Search Scraper
Key Features
- ZIP-scoped grocery prices — ALDI US prices differ by store; every row is stamped with ZIP, store name, city, and state
- Weekly ad + ALDI Finds — sale circular (~150–250 items) and limited-run Finds, including next-week preview when published
- Sale fields — current price, regular price, dollar off, percent off, unit price, on-sale flag
- Stock + images — ZIP-local availability, product URL, and primary image
- Fast HTTP — public storefront JSON via Chrome TLS impersonation; no headless browser
- Simple input — ZIP in, offers out; optional keyword and price filters
Use Cases
| Use case | What you get | Why it helps |
|---|---|---|
| Weekly ad tracker | price, regularPrice, discountPercent, week | Refresh the circular after Wednesday |
| ZIP comparison | zipCode, storeId, storeName | Same SKU, different stores |
| ALDI Finds calendar | isAldiFinds, collection, next-week toggle | Limited-run SKUs that rotate weekly |
| Deal / meal-planning apps | Title, brand, size, image, product URL | Populate a grocery deals feed |
| Private-label research | isStoreBrand, brand, dietary badges | Track exclusive brands on promotion |
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
zipCode | String | 60174 | Required 5-digit US ZIP |
includeThisWeek | Boolean | true | This week’s weekly ad (sale circular) |
includeAldiFinds | Boolean | true | This week’s ALDI Finds |
includeNextWeek | Boolean | false | Upcoming ALDI Finds preview |
keyword | String | empty | Optional title/brand substring filter |
minPrice / maxPrice | Number | — | USD shelf-price bounds |
onSaleOnly | Boolean | false | Keep rows marked as sale vs regular |
maxItems | Integer | 200 | Max dataset rows; 0 = all selected circulars |
requestDelaySecs | Number | 0.2 | Delay between HTTP requests |
proxyConfiguration | Object | US proxy | Apify Proxy — US recommended |
Input Example — this week’s ad + Finds
{"zipCode": "60174","includeThisWeek": true,"includeAldiFinds": true,"includeNextWeek": false,"maxItems": 200}
Input Example — next-week Finds preview
{"zipCode": "10001","includeThisWeek": false,"includeAldiFinds": false,"includeNextWeek": true,"maxItems": 0}
Input Example — keyword filter
{"zipCode": "60174","keyword": "milk","onSaleOnly": true,"maxItems": 50}
Output Format
Each dataset row is one circular offer at the requested ZIP.
| Field | Type | Description |
|---|---|---|
productId | String | ALDI product id |
title | String | Product name |
brand | String | Brand (null when the circular omits it) |
isStoreBrand | Boolean | ALDI exclusive label |
size / unit | String | Pack size / pricing unit |
price | Number | Current USD price |
regularPrice | Number | Pre-sale price when discounted |
discount / discountPercent | Number | Dollar off / percent off |
pricePerUnit | String | Unit-price string when shown |
isOnSale | Boolean | Sale badge or regular > current |
inStock / stockLevel | Boolean / String | ZIP-scoped availability |
collection | String | weekly-specials, aldi-finds, or upcoming-aldi-finds |
week | String | this_week or next_week |
isAldiFinds | Boolean | Finds circular |
zipCode | String | Requested ZIP |
storeId / storeName | String | Resolved ALDI location |
storeCity / storeState | String | City and state |
productUrl | String | Public product URL |
imageUrl | String | Primary image |
dietaryAttributes | Array | Storefront badges |
scrapedAt | String | UTC timestamp |
Output Example
{"source": "aldi.us","productId": "19115493","title": "USDA Choice Black Angus Petite Sirloin Steak, per lb","brand": null,"isStoreBrand": false,"price": 11.69,"regularPrice": 12.99,"discount": 1.3,"discountPercent": 10,"priceCurrency": "USD","isOnSale": true,"inStock": true,"collection": "weekly-specials","week": "this_week","isAldiFinds": false,"zipCode": "60174","storeId": "20785","storeName": "ALDI - BAT 43 - St. Charles","productUrl": "https://www.aldi.us/store/aldi/products/19115493-black-angus-choice-petite-sirloin-steak-per-lb","scrapedAt": "2026-09-20T13:03:42Z"}
Integration examples
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('crawloop/aldi-weekly-ad-scraper').call({zipCode: '60174',includeThisWeek: true,includeAldiFinds: true,maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.slice(0, 5));
Python
from apify_client import ApifyClientclient = ApifyClient(token="YOUR_TOKEN")run = client.actor("crawloop/aldi-weekly-ad-scraper").call(run_input={"zipCode": "60174","includeThisWeek": True,"includeAldiFinds": True,"maxItems": 50,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item.get("title"), item.get("price"), item.get("zipCode"))
cURL
curl -X POST "https://api.apify.com/v2/acts/crawloop~aldi-weekly-ad-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"zipCode":"60174","includeThisWeek":true,"includeAldiFinds":true,"maxItems":50}'
MCP and AI assistants
Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store ID crawloop/aldi-weekly-ad-scraper.
Example prompts:
- "Run Aldi Weekly Ad Scraper for ZIP 60174 and return the top 20 sale rows as JSON"
- "Scrape this week's ALDI Finds for ZIP 10001 and summarize brands, prices, and percent off"
- "Chain Aldi Weekly Ad Scraper then Amazon Search Scraper to compare an ALDI Finds SKU vs Amazon listings"
Suite next step
After ZIP-local ALDI circular prices, run Walmart Scraper for ZIP-local mass-retail comps, Lidl Weekly Offers Scraper for European Lidl leaflets, Amazon Search Scraper for online comps on the same SKUs, or Tractor Supply Product Scraper for US rural-retail catalog prices.
FAQ
Why do I have to pass a ZIP?
ALDI US prices and assortment are store-specific. A price without a store is not a fact. The ZIP selects the store; it is not a post-filter.
Weekly ad vs ALDI Finds?
The weekly ad is the sale circular (collection=weekly-specials). ALDI Finds are limited-run items for the current week. Toggle includeNextWeek for the preview when ALDI has published it (typically Wednesday).
Can I scrape Aldi with Python or Node.js?
Yes. Use the Apify client examples above, or call the Actor from an AI assistant via MCP. The dataset is JSON — title, sale price, regular price, brand, size, stock, ZIP, and product URL.
What if the ZIP has no nearby store?
The run fails with a clear status message. No offer rows are written.
Is this the full grocery catalog?
No. It is the circular (plus Finds). Keyword search across every SKU is out of scope.
Are filtered-out rows charged as results?
No. Only dataset offers that pass your keyword / price / sale filters are charged as results.
US only?
Yes. This Actor reads the public US storefront. Other country catalogs are out of scope.
Related Actors
- Lidl Weekly Offers Scraper
- Walmart Scraper
- Amazon Search Scraper
- Tractor Supply Product Scraper
- Etsy Scraper
- 888lots Scraper
Notes
- Prefer US Apify Proxy. Switch to RESIDENTIAL US if GraphQL returns 403.
- Circulars usually refresh Wednesday. Next-week Finds can be empty earlier in the week.
- Duplicate products that appear in both the weekly ad and ALDI Finds keep the Finds row.
- Some weekly-ad rows omit
brand; title, price, and product URL still populate.