Aldi APIaldi.de ↗
Fetch current and upcoming Aldi Nord weekly offers, search products, filter by category or date, and retrieve digital flyer metadata via a structured JSON API.
What is the Aldi API?
The Aldi Nord API exposes 9 endpoints covering weekly discount offers, permanent assortment products, and digital flyer metadata from aldi-nord.de. You can pull all current-week deals via get_current_offers — each returning offer section titles, validity windows, and pricing — or preview next week's promotions before they go live. Product search, category browsing, and per-product detail lookups round out the available data.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/3e8a2517-2748-4ad2-809c-d99f0bc32914/get_current_offers' \ -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-de-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 Nord SDK — browse weekly offers, search products, drill into details."""
from parse_apis.Aldi_Nord_API import AldiNord, CategoryName, Query, ProductNotFound
client = AldiNord()
# List current week offers, capped at 5 items
for offer in client.offers.current(limit=5):
print(offer.name, offer.price, offer.offer_section_title)
# Filter offers by category substring
for offer in client.offers.by_category(category_name=CategoryName.OBST, limit=3):
print(offer.name, offer.validity_start, offer.validity_end)
# Search products by keyword, take one and drill into details
product = client.products.search(query=Query.MILCH, limit=1).first()
if product:
print(product.name, product.brand, product.price)
# Drill into full product details from an offer
offer = client.offers.current(limit=1).first()
if offer:
try:
detail = offer.details()
print(detail.name, detail.sales_unit, detail.category_ids)
except ProductNotFound as exc:
print(f"Product gone: {exc.product_id}")
# Browse categories and list products in the first one
for cat in client.categories.list(limit=3):
print(cat.name, cat.count)
print("exercised: offers.current / offers.by_category / products.search / offer.details / categories.list")
Retrieve all current-week discount offers from Aldi Nord. Returns products grouped by action date with pricing, category, and validity information. Each offer includes its section title (e.g. 'Frische-Aktion: Obst & Gemüse') and validity window. Products without a strike-through price have original_price=null.
No input parameters required.
{
"type": "object",
"fields": {
"week": "string literal 'current'",
"offers": "array of Offer objects"
},
"sample": {
"data": {
"week": "current",
"offers": [
{
"name": "Eisbergsalat",
"slug": "eisbergsalat-6276",
"brand": null,
"price": 0.69,
"image_url": "https://s7g10.scene7.com/is/image/aldinord/6276_24_2026_eisbergsalat_02_on_020626_150222",
"product_id": "6276",
"sales_unit": "Stück",
"validity_end": "2026-06-12",
"offer_category": "Aktion Mo. 8.6.",
"original_price": 0.89,
"validity_start": "2026-06-07",
"offer_section_title": "Frische-Aktion: Obst & Gemüse"
}
]
},
"status": "success"
}
}About the Aldi API
Weekly Offers and Flyer Data
get_current_offers and get_next_week_offers return arrays of Offer objects grouped by action date. Each offer carries an offer_section_title (e.g. 'Frische-Aktion: Obst & Gemüse'), a validity window with validity_start and validity_end dates, pricing, and category metadata. get_weekly_flyers complements these with CMS-level flyer tiles including images, descriptions, and publication dates — useful for surfacing the full promotional context around a given week.
Filtering Offers by Category or Date
Once you have section title strings from get_current_offers, you can pass a substring to get_offers_by_category (e.g. 'Fleisch' or 'Frische') for a case-insensitive match against offer_section_title. get_offers_by_date accepts a YYYY-MM-DD string matching validity_start, letting you isolate deals that activate on a specific day. Both filter endpoints echo the input parameter back in their response (category or date) for straightforward validation.
Product Search and Assortment Browsing
search_products accepts a query string (e.g. 'Milch', 'Käse') and an optional limit, returning a total count alongside an array of Product objects that include price, brand, and hierarchical category data. For browsing without a keyword, get_product_categories lists all top-level permanent-assortment categories with product counts, and get_products_by_category accepts a category_name matching those results — for example 'Milchprodukte' or 'Snacks & Süßigkeiten'.
Per-Product Detail
get_offer_details takes a product_id (obtainable from offer or search results) and returns enriched metadata: base_price as an array of objects with basePriceValue and basePriceScale, sales_unit, slug, price_unit, and an array of category_ids. Products without a listed price return null for the price field, so callers should handle that case explicitly.
The Aldi API is a managed, monitored endpoint for aldi.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when aldi.de 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.de 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 weekly deal tracker that alerts users when specific offer section titles (e.g. 'Fleisch') go live via get_current_offers
- Compare current and upcoming offer prices for the same product using get_current_offers and get_next_week_offers in parallel
- Populate a grocery price comparison tool with permanent assortment data from get_products_by_category and get_product_categories
- Generate a structured feed of Aldi Nord promotions filtered by activation date using get_offers_by_date
- Enrich offer listings with base price breakdowns (basePriceValue, basePriceScale) by chaining get_current_offers into get_offer_details
- Index the full Aldi Nord product catalog for keyword search using search_products with various German grocery terms
- Scrape weekly flyer metadata from get_weekly_flyers to display promotional banners with correct validity dates
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.