Alcampo APIalcampo.es ↗
Search the Alcampo online grocery catalogue and fetch full product details including prices, promotions, ratings, and availability via two simple endpoints.
What is the Alcampo API?
The Alcampo.es API gives programmatic access to the compraonline.alcampo.es grocery catalogue through 2 endpoints. Use search_products to run keyword searches returning price, brand, availability, promotional flags, and unit price across matching products, or call get_product with a numeric product ID to retrieve full detail including ingredient sections, breadcrumb category paths, and alcohol flags for a single item.
curl -X GET 'https://api.parse.bot/scraper/0f52fd5c-70ad-40b4-abec-8797633c8a22/search_products?query=leche' \ -H 'X-API-Key: $PARSE_API_KEY'
Keyword search over the Alcampo online catalogue. Returns one row per product with name, brand, regular price, promotional price when the site shows one, unit price, image URL, product page URL, availability, category, rating and current promotions, plus the brand names available as a filter for this search. Results come in the site's own ordering for the chosen sort; the site caps a search at 300 products. Pagination is page/limit: limit is clamped to 10-50 and page is 1-based; a page beyond the 300-product cap returns an empty products list with has_more=false. Reaching page N costs N round trips because the site's continuation is session-bound, so prefer a larger limit over deep pages. offer_price and offer_unit_price are null unless the site publishes a promotional price; promotions lists text-only promotions (e.g. leaflet offers) that may carry no numeric price. A query that matches nothing returns an empty products list (success).
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number over the ordered result stream. |
| sort | string | Result ordering. The site applies price sorts inside each result cluster, so the first few personalised rows may not follow the price order. |
| brand | string | Restrict results to one brand, using a name exactly as returned in available_brands of a previous search (e.g. PASCUAL). An unknown brand yields an empty products list. |
| limit | integer | Products per page; values below 10 are raised to 10 and values above 50 are lowered to 50. |
| queryrequired | string | Free-text search keyword in Spanish, as typed into the site's search box (truncated to 50 characters). |
| on_offer | boolean | When true only products currently flagged with a promotion are returned (the site's 'Todas las promociones' filter). |
{
"type": "object",
"fields": {
"page": "page number returned",
"sort": "the sort option applied",
"count": "number of products in this page",
"limit": "effective page size after clamping",
"query": "the search keyword used",
"has_more": "true when the site has a further page after this one",
"products": "array of product rows; each has product_id (numeric string, input for get_product), name, brand, price (number, regular price in currency), offer_price (promotional price or null), currency, unit_price (number per unit_price_unit), unit_price_unit (site unit code such as PER_LITRE, PER_1KG, EACH), offer_unit_price (promotional unit price or null), pack_size (e.g. 1000ml, or null), image_url, product_url, available (boolean), category (leaf category name), category_path (array of category names from root), rating (average 0-5, 0.0 when unrated), rating_count, promotions (array of {description, type, promotion_id}), is_new, alcohol",
"available_brands": "brand names offered by the site's brand filter for this search (only populated from page 1)"
},
"sample": {
"data": {
"page": 1,
"sort": "favorite",
"count": 10,
"limit": 10,
"query": "leche",
"has_more": true,
"products": [
{
"name": "AUCHAN Leche semidesnatada de vaca 6 x 1l Producto Alcampo.",
"brand": "PRODUCTO ALCAMPO",
"price": 5.28,
"is_new": false,
"rating": 5,
"alcohol": false,
"category": "Leche semidesnatada",
"currency": "EUR",
"available": true,
"image_url": "https://www.compraonline.alcampo.es/images-v3/37ea0506-72ec-4543-93c8-a77bb916ec12/1aec1514-3cce-46d9-8133-20fdebbdb2cc/300x300.jpg",
"pack_size": "6000ml",
"product_id": "54180",
"promotions": [],
"unit_price": 0.88,
"offer_price": null,
"product_url": "https://www.compraonline.alcampo.es/products/auchan-leche-semidesnatada-de-vaca-6-x-1l-producto-alcampo/54180",
"rating_count": 1,
"category_path": [
"Leche, Huevos, Lácteos, Yogures y Bebidas vegetales",
"Leche",
"Leche semidesnatada"
],
"unit_price_unit": "PER_LITRE",
"offer_unit_price": null
},
{
"name": "L.R. Leche de vaca entera 1l.",
"brand": "L.R.",
"price": 0.95,
"is_new": false,
"rating": 5,
"alcohol": false,
"category": "Leche",
"currency": "EUR",
"available": true,
"image_url": "https://www.compraonline.alcampo.es/images-v3/37ea0506-72ec-4543-93c8-a77bb916ec12/2228d0d2-cadd-4294-ac70-0f22dc4a455f/300x300.jpg",
"pack_size": "1000ml",
"product_id": "99232",
"promotions": [
{
"type": "OFFER",
"description": "Producto en Folleto (08/10/26_21/10/26)",
"promotion_id": "1163113_1"
}
],
"unit_price": 0.95,
"offer_price": null,
"product_url": "https://www.compraonline.alcampo.es/products/l-r-leche-de-vaca-entera-1l/99232",
"rating_count": 1,
"category_path": [
"Folletos y Promociones",
"Folleto Alimentación Canarias",
"Leche"
],
"unit_price_unit": "PER_LITRE",
"offer_unit_price": null
}
],
"available_brands": [
"CENTRAL LECHERA ASTURIANA",
"L.R.",
"TRÜ FRÜ"
]
},
"status": "success"
}
}About the Alcampo API
Endpoints and Data
The search_products endpoint accepts a free-text query in Spanish (up to 50 characters) and returns a paginated list of matching products. Each row includes product_id, name, brand, regular price and promotional_price (when the site flags one), unit_price, image_url, url, available, category, rating (0–5 scale), and any active promotions. A top-level available_brands array is populated on page 1, listing every brand the site's filter offers for that search — pass one of those names back via the brand parameter to restrict subsequent pages to a single brand.
Filtering and Pagination
search_products supports on_offer (boolean) to return only promotion-flagged products, a sort parameter for price ordering, and a limit between 10 and 50 products per page. The has_more field signals whether additional pages exist. Note that the site clusters personalised results near the top, so price sorts apply within those clusters rather than globally across the full result set.
Product Detail
get_product takes a product_id — the numeric string emitted by search_products or taken from the trailing number of any Alcampo product URL — and returns a richer record. The details object contains labelled fields sections (title plus text or HTML table content covering nutritional info, ingredients, and other attributes) and a breadcrumbs array of {category, url} pairs tracing the full taxonomy path. Additional boolean flags is_new and alcohol are also returned alongside the same price, rating, and availability fields present in search results.
Currency and Coverage
All prices are returned with an ISO currency code. Coverage is limited to products listed on the Alcampo online shop (compraonline.alcampo.es); in-store-only SKUs and store-level stock availability are not exposed.
The Alcampo API is a managed, monitored endpoint for alcampo.es — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when alcampo.es 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 alcampo.es 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?+
- Track regular and promotional prices for a basket of grocery items over time using product_id and price fields.
- Build a nutrition comparison tool by extracting ingredient and nutritional detail sections from the get_product fields array.
- Filter own-brand vs. named-brand products using the available_brands list and the brand parameter in search_products.
- Monitor which products are flagged with active promotions by querying search_products with on_offer set to true.
- Construct a category taxonomy for the Alcampo catalogue using the breadcrumbs array returned by get_product.
- Alert on availability changes for specific SKUs by polling get_product and watching the available boolean field.
- Aggregate unit prices across product variants to surface the best per-unit value in a given search result.
| 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.