ALDI APIaldi.us ↗
Retrieve ALDI weekly ad sale items by US ZIP code. Get 150–200 products per store with prices, sizes, brands, availability, and images via a single endpoint.
What is the ALDI API?
The ALDI Weekly Ad API exposes one endpoint — get_weekly_ad — that returns the full current sale circular for the nearest ALDI store to any US ZIP code. A single call typically yields 150–200 sale items, each with 8 structured fields including name, brand, size, current sale price, regular price, availability status, and a product image URL, along with a resolved store object identifying the matched location.
curl -X GET 'https://api.parse.bot/scraper/f5327b77-5c7e-4baa-b7fb-87a8baa593fd/get_weekly_ad?postal_code=67570' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace aldi-us-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: ALDI Weekly Ad API — fetch sale items for a local store."""
from parse_apis.aldi_us_api import AldiUs, StoreNotFound
client = AldiUs()
# Fetch the weekly ad for a ZIP code; handles store lookup internally.
try:
ad = client.weekly_ads.get(postal_code="67570")
except StoreNotFound:
print("No ALDI store found near that ZIP code.")
raise
# Inspect the resolved store.
print(f"Store #{ad.store.shop_id} (ZIP {ad.store.postal_code})")
print(f"Total sale items this week: {ad.total_items}")
# Browse available items and print a few highlights.
for item in ad.items[:5]:
status = "IN STOCK" if item.available else "OUT"
print(f" {item.name} ({item.brand}) — {item.price} {status}")
print("exercised: weekly_ads.get")
Returns the current weekly ad sale items for the nearest ALDI store to a given US ZIP code. Each item includes its name, brand, size, current sale price, regular price, availability status, and product image. Typically returns 150-200 items representing all on-sale products in the weekly circular. Makes multiple API calls internally (store lookup, collection fetch, item detail batches of 30).
| Param | Type | Description |
|---|---|---|
| postal_code | string | 5-digit US ZIP code to find the nearest ALDI store. Leading zeros preserved (e.g. 02134). |
{
"type": "object",
"fields": {
"items": "array of weekly ad sale items with id, name, brand, size, price, regular_price, available, and image_url",
"store": "object containing shop_id, postal_code, and retailer_location_id for the resolved ALDI store",
"total_items": "integer count of items returned"
},
"sample": {
"data": {
"items": [
{
"id": "19964988",
"name": "Burman's Hot Sauce",
"size": "12 fl oz",
"brand": "burman's",
"price": "$1.55",
"available": true,
"image_url": "https://d2lnr5mha7bycj.cloudfront.net/product-image/file/large_9d2a63e4-31f3-4ba8-8896-754cfb32fd19.jpg",
"regular_price": "reg. $2.09"
},
{
"id": "18648474",
"name": "Peanut Delight Creamy Peanut Butter",
"size": "18 oz",
"brand": "peanut delight",
"price": "$1.75",
"available": true,
"image_url": "https://d2lnr5mha7bycj.cloudfront.net/product-image/file/large_4754d8de-2e4e-4514-9190-8548745ee018.jpg",
"regular_price": "reg. $2.19"
}
],
"store": {
"shop_id": "29341",
"postal_code": "67570",
"retailer_location_id": "5884"
},
"total_items": 183
},
"status": "success"
}
}About the ALDI API
What the API Returns
The get_weekly_ad endpoint accepts a single postal_code parameter — a 5-digit US ZIP code, with leading zeros preserved — and resolves it to the nearest ALDI store. The response includes a store object with shop_id, postal_code, and retailer_location_id, confirming exactly which store's circular was used. The items array contains every product currently on sale at that store, and total_items gives the integer count for quick validation.
Item-Level Fields
Each element in the items array carries an id, name, brand, size, price (the current weekly sale price), regular_price (the normal shelf price), an available boolean indicating in-stock status, and an image_url pointing to the product photo. The price and regular_price pair allows straightforward discount calculation. Items span all product categories featured in the weekly circular — produce, meat, dairy, pantry staples, seasonal items, and ALDI Finds.
Coverage and Freshness
The API reflects ALDI's weekly ad cycle, which typically refreshes each Wednesday. Results are store-specific: two different ZIP codes that map to different store locations may return different item sets if regional inventory or promotions vary. Supplying no postal_code will fall back to a default store. Coverage is limited to US ALDI locations accessible via the aldi.us site.
The ALDI API is a managed, monitored endpoint for aldi.us — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when aldi.us changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official aldi.us API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a grocery price tracker that monitors weekly sale prices and regular prices across ALDI locations.
- Power a meal-planning app that surfaces discounted proteins, produce, and pantry items from the current circular.
- Compare ALDI weekly ad prices against other grocery chains using the sale price and regular price fields.
- Send automated weekly deal alerts segmented by product category using item name and brand fields.
- Populate a deal aggregator with ALDI sale items, images, and availability for a given ZIP code.
- Analyze ALDI Finds and seasonal product patterns by archiving weekly item arrays over time.
- Validate in-stock status of sale items before directing shoppers to a specific store using the available field.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ALDI provide an official developer API?+
What does the store object in the response actually identify?+
store object returns three fields: shop_id (ALDI's internal store identifier), postal_code (the ZIP code of the resolved store, which may differ from the input if the nearest store is in an adjacent area), and retailer_location_id. Together these let you correlate results to a specific physical location across repeated calls.Are historical weekly ads or past circular items available?+
Does the API cover individual product detail pages, nutrition info, or ingredients?+
Can I retrieve sale items for multiple ZIP codes in a single call?+
get_weekly_ad endpoint accepts one postal_code per request and returns data for the single nearest store. To cover multiple locations, you would make one call per ZIP code. You can fork this API on Parse and revise it to accept a batch of ZIP codes and return results for each resolved store.