ALDI API
ALDI US product data as structured JSON, priced at the store you choose: search with the store's shelf price, was-price, unit price, stock level and aisle, product detail with ingredients and allergens, and a store locator by ZIP.
50 free credits on signup. No card, no ALDI account.
{ "data": { "query": "milk", "store": { "store_id": "151248", "service_type": "instore", "zip": null }, "sort": "best_match", "page": 1, "limit": 30, "total_results": 15, "total_pages": 1, "count": 15, "products": [ { "position": 1, "product_id": "16902710", "name": "Friendly Farms Whole Milk", "brand": "Friendly Farms", "size": "1 gal", "price": 3.07, "was_price": null, "on_sale": false, "unit_price": "$0.02/fl oz", "in_stock": true, "stock_level": "highly_in_stock", "in_store_location": "Cooler Doors", "store_brand": true, "dietary": [ "Whole" ] }, { "position": 6, "product_id": "21059061", "name": "Simply Nature Organic Whole Omega-3 Milk", "size": "64 fl oz", "price": 4.29, "was_price": 4.39, "on_sale": true, "discount_label": "2% off", "unit_price": "$0.07/fl oz", "in_stock": true, "stock_level": "highly_in_stock", "in_store_location": "Cooler Doors", "store_brand": true } ] }, "response_time": 5577}Live call against the real endpoint at store 151248 (Miami, FL), in-store prices. A search can take up to 20 seconds. 3 free runs, then it's your own key.
What is the Scavio ALDI API?
The Scavio ALDI API is a REST API that returns ALDI US product data as structured JSON for the store you pick. ALDI has no public API. Its 3 POST endpoints cover search and product detail with store prices, stock and aisle, ingredients and allergens, and a store locator, at 1 credit per call.
- 3
- endpoints, all live in production
- 1
- credit per call, every endpoint
- 3
- price modes per store: in-store, pickup, delivery
The ALDI data buyers actually need
What it costs at one store, whether it is on the shelf, and what is in it.
Store-level search
POST /api/v1/aldi/searchSearch ALDI at the store you pick: each result has that store's price in dollars, was-price and sale label, unit price, stock level and the aisle it sits in. Our Miami capture priced Friendly Farms Whole Milk, 1 gal, at $3.07 in the Cooler Doors section.
In-store, pickup or delivery price
POST /api/v1/aldi/searchALDI prices differ by shopping mode as well as by store. service_type instore (the default) returns the shelf price; pickup and delivery return the online prices for that store, which are often higher.
Ingredients, allergens and dietary labels
POST /api/v1/aldi/productOne product by id or aldi.us URL: description, ingredient list, allergen statement ("Contains: milk."), dietary labels, size, unit price and images, priced at your store.
Store locator
POST /api/v1/aldi/storesUp to 50 ALDI stores near a ZIP code, nearest first, with the store_id that search and product take. ZIP 33131 returned 33 stores, the nearest 1.4 miles away.
All 3 ALDI API endpoints
Every route is a POST, returns JSON, and takes the same API key. 1 credit per successful call.
| Endpoint | Returns | Credits |
|---|---|---|
Search/api/v1/aldi/search | Search at one store, up to 60 per page: the store's price and was-price, sale label, unit price, stock level, aisle location, ALDI brand flag, dietary labels, image and product URL | 1 |
Product detail/api/v1/aldi/product | One product by id or aldi.us URL at one store: price, stock and aisle, plus description, ingredients, allergen warnings, dietary labels and images | 1 |
Store locator/api/v1/aldi/stores | Up to 50 stores near a ZIP, nearest first, with store_id, name, address, city, state, ZIP, coordinates and distance in miles | 1 |
50 free credits on signup covers 50 ALDI calls. See plans
Find a store, then search and price it
The stores call turns a ZIP into store ids; search returns that store's prices, stock and aisles. The response on the right is a real capture.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Nearest ALDI stores to a ZIP - 1 credit
stores = client.aldi.stores(zip="33131")["data"]["stores"]
store_id = stores[0]["store_id"]
# Search at that store, in-store shelf prices - 1 credit
res = client.aldi.search(query="milk", store_id=store_id)["data"]
for p in res["products"]:
print(p["name"], p["size"], p["price"], "was", p["was_price"], p["stock_level"])
# Ingredients and allergens for one product - 1 credit
p = client.aldi.product(product_id=res["products"][0]["product_id"], store_id=store_id)["data"]
print(p["ingredients"], p["warnings"]){
"data": {
"query": "milk",
"store": {
"store_id": "151248",
"service_type": "instore",
"zip": null
},
"sort": "best_match",
"page": 1,
"limit": 30,
"total_results": 15,
"total_pages": 1,
"count": 15,
"products": [
{
"position": 1,
"product_id": "16902710",
"name": "Friendly Farms Whole Milk",
"brand": "Friendly Farms",
"size": "1 gal",
"price": 3.07,
"was_price": null,
"on_sale": false,
"unit_price": "$0.02/fl oz",
"in_stock": true,
"stock_level": "highly_in_stock",
"in_store_location": "Cooler Doors",
"store_brand": true,
"dietary": ["Whole"]
},
{
"position": 6,
"product_id": "21059061",
"name": "Simply Nature Organic Whole Omega-3 Milk",
"size": "64 fl oz",
"price": 4.29,
"was_price": 4.39,
"on_sale": true,
"discount_label": "2% off",
"unit_price": "$0.07/fl oz",
"in_stock": true,
"stock_level": "highly_in_stock",
"in_store_location": "Cooler Doors",
"store_brand": true
}
]
},
"response_time": 5577
}Why not the official ALDI API?
ALDI US has no public API for product, price, stock or store data.
ALDI, without an API
- No public API or self-serve developer key for products, prices or stores
- Prices are set per store and differ between in-store, pickup and delivery
- Every price check means choosing a store first
- Ingredients and allergens sit on individual product pages with no export
Scavio ALDI API
- One API key, issued at signup, with no ALDI account
- Any store's prices, stock and aisle by store_id, or the nearest store to a ZIP
- In-store shelf price by default, pickup or delivery price on request
- Ingredients, allergen warnings and dietary labels as fields
- Same JSON envelope as every other Scavio platform
Scavio returns publicly available data only, and never signs in as an ALDI customer.
What developers build with it
Grocery price comparison
Put ALDI shelf prices next to Walmart, Kroger and HEB for the same basket, store by store, on one API key.
search + Walmart + KrogerMeal planning and budget apps
Price a shopping list at the user's nearest ALDI, with unit prices to compare pack sizes and stock levels to flag low-stock items.
stores + searchAllergen and diet filters
Read ingredients, allergen statements and dietary labels such as lactose-free or organic to filter ALDI products for a diet.
search + productPrivate-label price tracking
ALDI sells mostly its own exclusive brands. Track their prices and sale markdowns at the stores you care about over time.
search + productOnline vs in-store pricing research
Compare the shelf price with the pickup and delivery price for the same items at the same store.
search (service_type)How to get ALDI data as JSON
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 credits free on signup, with no card required and no ALDI account.
- 2
Pick a store
Send {"zip": "33131"} to https://api.scavio.dev/api/v1/aldi/stores with an Authorization: Bearer header. Each store comes back with its store_id, address and distance.
- 3
Search and price at that store
Pass the store_id with a query to /api/v1/aldi/search, or with a product_id to /api/v1/aldi/product. Prices and stock are that store's; add service_type pickup or delivery for the online price.
ALDI API FAQ
Does ALDI have a public API?
+
No. ALDI US does not offer a public developer API for product, price, stock or store data. The Scavio ALDI API fills that gap with 3 POST endpoints that return aldi.us data as structured JSON: search, product detail and a store locator.
What is the Scavio ALDI API?
+
It is a REST API that returns public ALDI US product data as JSON, priced and stocked at the store you choose. It covers keyword search, product detail with ingredients and allergens, and a store locator by ZIP code, at 1 credit per call.
Are ALDI prices the same at every store?
+
No. ALDI prices are set per store, so every search and product call is priced at one store: pass store_id, or a zip to use the nearest store. The response echoes the store it priced at. In our capture, Friendly Farms Whole Milk (1 gal) was $3.07 at store 151248 in Miami.
What is service_type?
+
It picks which price you get. instore, the default, is the shelf price in the store. pickup and delivery are the online prices for ordering from that store, which are often higher than the shelf price. The response's store.service_type says which one you got.
How do I find an ALDI store_id?
+
POST a ZIP code to /api/v1/aldi/stores. It returns up to 50 stores nearest first (10 by default), each with store_id, name, street address, city, state, ZIP, coordinates and distance in miles. ZIP 33131 returned store 392415 at 1.4 miles and store 151248 at 5.1 miles.
Does the API return stock levels?
+
Yes. Every search and product row has in_stock and stock_level (highly_in_stock, in_stock or low_stock) for that store and shopping mode. ALDI does not publish unit counts, so there is no quantity on hand.
Does it show where a product is in the store?
+
Yes. in_store_location is the aisle or section ALDI lists for the product at that store, such as "Cooler Doors" for milk.
Can I get ingredients and allergens?
+
Yes, from /api/v1/aldi/product: description, ingredients, warnings (the allergen statement, such as "Contains: milk."), dietary labels and images. Fields are null when ALDI lists nothing for that product.
How do I tell if an ALDI item is on sale?
+
Check on_sale. A sale item carries was_price, the struck-through price, and discount_label, ALDI's badge. In our Miami capture, Simply Nature Organic Whole Omega-3 Milk was $4.29, was $4.39, labelled "2% off".
Does the API return ALDI reviews or ratings?
+
No. ALDI US does not show product ratings or reviews, so the API returns none.
What are the limitations?
+
Prices and stock are per store and per shopping mode, so you must pass store_id or zip. Coverage is ALDI US (aldi.us) only. There are no reviews or ratings. Search can take 10 to 20 seconds, so set a client timeout of 60 seconds. The store locator returns no opening hours or phone numbers.
How many results does search return?
+
Up to 60 per page (30 by default), across up to 100 pages. By default only exact matches are returned; set include_related to true to add the related items ALDI lists after them. total_results and total_pages tell you how far to page.
Can I look up a product by its aldi.us URL?
+
Yes. product_id accepts either the numeric id from a search result or an aldi.us product URL.
How much does an ALDI request cost?
+
Every ALDI endpoint costs 1 credit per successful call. Errors such as an unknown product (404) or a temporary outage (502) are not charged. New accounts get 50 free credits on signup, one time, with no card required. Paid plans start at $30 per month for 7,000 credits.
How fresh is the data?
+
Every request fetches live from ALDI at the moment you call it, and nothing is cached. Each response carries fetched_at, the time the data was retrieved.
Is using ALDI data legal?
+
Scavio returns publicly available ALDI product data and does not access accounts or order history. You remain responsible for how you use the data, including compliance with ALDI's terms. Talk to your own counsel for your specific use case.
Explore more of Scavio
ALDI API docs
All 3 endpoints with params and real responses.
Kroger API
Grocery prices and promos across Kroger banners.
HEB API
Grocery prices by store, nutrition facts, SNAP eligibility and store finder.
Walmart API
Search, product, reviews and store-level pricing.
Costco API
Warehouse prices and stock, coupons and deals.
Dollar General API
Store prices, units on hand and digital coupons.
Target API
Search, categories, detail and reviews.
Try the ALDI API free
50 free credits on signup, no card. Your first request is a POST with a product name and a ZIP in it.