One row per size, each with its own EAN and its own seller
El Corte Inglés API returns live El Corte Inglés data as clean JSON for el corte inglés The primary endpoint, search, returns product results including product id, product type, path, name and brand.
2 active endpoints, on 1 and 2 credit tiers.
- POST/elcorteingles/v1/search
- POST/elcorteingles/v1/product_detail
What El Corte Inglés endpoints does ReefAPI ship?
2 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
El Corte Inglés API
2 of 2 endpoints, ready to run
Search or browse the Spanish catalogue — every row with the product code, URL, name, brand, EAN, price range across colours, the colour list, the variant counts, the category hierarchy and whether a marketplace seller is behind it.
{ "ok": true, "meta": { "api": "elcorteingles", "endpoint": "search", "mode": "live", "latency_ms": 2610.9, "record_count": 12, "cache_hit": false, "completeness_pct": 100 }, "data": { "products": [ { "product_id": "A56390869", "product_type": "catalog", "url": "https://www.elcorteingles.es/electronica/A56390869-8806097643135-pr-movil-samsung-galaxy-a17-5g-67-exynos-1330-negro-256-gb-8-gb-ram/", "path": "/electronica/A56390869-8806097643135-pr-movil-samsung-galaxy-a17-5g-67-exynos-1330-negro-256-gb-8-gb-ram/", "name": "Móvil Samsung Galaxy A17 5G 6,7\" Exynos 1330 Negro", "brand": "Samsung", "brand_slug": "samsung", "gtin13": "8806097643135", "categories": [ "Electrónica", "Móviles y Smartphones" ], "hierarchy": [ "electronica", "moviles-y-smartphones" ], "image": "https://dam.elcorteingles.es/producto/www-001057063613046-00.jpg", "colour_count": 2, "colours": [ "Negro", "Azul" ], "variant_count": 2, "in_stock_variant_count": 2, "price": 319.9, "price_min": 319.9, "price_max": 319.9, "currency": "EUR", "availability": "in_stock", "is_marketplace": false, "sellers": [ "001" ], "is_gift_card": false, "is_collection": false, "size_guide": null, "group_by": "Color" }, { "product_id": "A202033692", "product_type": "catalog", "url": "https://www.elcorteingles.es/electronica/A202033692-8806099395414-pr-movil-samsung-galaxy-s26-fe-67-exynos-2500-grafito-128-gb-8-gb-ram/", "path": "/electronica/A202033692-8806099395414-pr-movil-samsung-galaxy-s26-fe-67-exynos-2500-grafito-128-gb-8-gb-ram/", "name": "Móvil Samsung Galaxy S26 FE 6,7\" Exynos 2500 Grafito", "brand": "Samsung", "brand_slug": "samsung", "gtin13": "8806099395414", "categories": [ "Electrónica", "Móviles y Smartphones" ], "hierarchy": [ "electronica", "moviles-y-smartphones" ], "image": "https://dam.elcorteingles.es/producto/www-001057063616601-00.jpg", "colour_count": 3, "colours": [ "Grafito", "Blueberry", "Pistacho" ], "variant_count": 6, "in_stock_variant_count": 0, "price": 799, "price_min": 799, "price_max": 899, "currency": "EUR", "availability": "out_of_stock", "is_marketplace": false, "sellers": [ "001" ], "is_gift_card": false, "is_collection": false, "size_guide": null, "group_by": "Color > Size" }, { "product_id": "A200383484", "product_type": "catalog", "url": "https://www.elcorteingles.es/electronica/A200383484-6932554476281-pr-movil-xiaomi-redmi-note-15-68-mediatek-helio-g100-ultra-negro-128-gb-6-gb-ram/", "path": "/electronica/A200383484-6932554476281-pr-movil-xiaomi-redmi-note-15-68-mediatek-helio-g100-ultra-negro-128-gb-6-gb-ram/", "name": "Móvil Xiaomi Redmi Note 15 6,8\" MediaTek Helio G100 Ultra Negro", "brand": "XIAOMI", "brand_slug": "xiaomi", "gtin13": "6932554476281", "categories": [ "Electrónica", "Móviles y Smartphones" ], "hierarchy": [ "electronica", "moviles-y-smartphones" ], "image": "https://dam.elcorteingles.es/producto/www-001057063429351-00.jpg", "colour_count": 5, "colours": [ "Negro", "Azul Glaciar", "Forest Green" ], "variant_count": 6, "in_stock_variant_count": 6, "price": 179.9, "price_min": 179.9, "price_max": 199.9, "currency": "EUR", "availability": "in_stock", "is_marketplace": false, "sellers": [ "001" ], "is_gift_card": false, "is_collection": false, "size_guide": null, "group_by": "Color > Size" } ] } }
How the El Corte Inglés API works
El Corte Inglés is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 184 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Turning a listing tile into a size table you can trust
The search tile is built for a grid: it says what is buyable right now. The product page says what exists. Those are different numbers and both are useful.
{"category": "electronica/moviles-y-smartphones", "max_results": "12"}Browsing by category is the route the site's own robots file allows, and the response reports which route answered so there is no ambiguity about it.
{"product_id": "A57217676"}The full matrix, one row per colour and size, each with its own EAN, its own price and strike-through, its own 30-day lowest price and its own buyable flag.
A variant table with a barcode and a legally-published reference price on every row — enough to price-monitor a Spanish SKU properly rather than by its tile.
curl -X POST https://api.reefapi.com/elcorteingles/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"zapatillas running","max_results":12}'{
"ok": true,
"data": { … },
"meta": {
"api": "elcorteingles",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}El Corte Inglés id formats: product codes, variant ids and seller ids
El Corte Inglés carries its own stock and third-party marketplace stock in one catalogue, and the id tells you which is which. Below that, a variant id addresses one colour and size row and carries its own barcode, price and stock flag. Every example was measured 2026-08-27.
| Field | Shape | Measured example | Identifies |
|---|---|---|---|
| product_id (own stock) | A followed by 8 or 9 digits | A56390869, A200383484 | One product page in El Corte Inglés' own catalogue |
| product_id (marketplace) | MP_<sellerId>_<sellerSku> | MP_0652065_MKXC3 | A third-party seller's listing, is_marketplace true |
| variant_id / eci_reference | 18 digits | 001057063613046009 | One colour and size row, with its own price and stock |
| colour sku | 15 digits, the variant id minus its last 3 | 001057063613046 | One colourway and its image set |
| gtin13 | EAN-13 | 8806097643135 | The barcode of that specific variant |
| seller_id | 001, or a longer numeric code | 001 is El Corte Inglés, 0652065 a marketplace seller | Who actually sells the row |
search accepts a product code or a bare EAN-13 in query and switches to a single-result lookup: query=A56390869 returned meta.search_mode id_lookup with total_results 1. The supermarket tree is not browsable at all: category=supermercado returns a typed NOT_FOUND explaining that /supermercado/ and /alimentacion/ render their contents in the browser and publish no product rows.
What the tile counts, what the page counts, and which one you needed
Measured by taking one product from a search row through to its product page and comparing the two, plus a browse, a bad code and a category that is not browsable.
One trainer came back from search reading as a single in-stock variant. The same product opened in full returned a dozen sizes, of which exactly one was buyable and the rest were sold out. Neither number is wrong — the tile is the shop's buyable count and the page is the size matrix — but they are not interchangeable, and planning sizes from a search row will mislead you.
Measured on that same trainer, the code on the search row and the code on the product page were two different EAN-13s. Each size carries its own barcode, and whichever one the tile happens to surface is the one you get. If a barcode is your join key, take it from the variant row.
Each row names whether the shop itself or a marketplace merchant stands behind that variant, and carries the EU-Omnibus lowest price of the last thirty days beside the current one. That is the reference a discount claim is measured against, and it is per variant.
The shop keeps a withdrawn product's page online for search engines but pulls every price from it. That comes back as a not-found that names the product and is explicitly not retryable — the signal to drop the code from a monitoring list rather than to try again tomorrow.
Brand hubs, landing pages and the whole supermarket catalogue render their contents in the browser and publish nothing to read. Asking for one of those returns an explanation and an example of a category that does work, instead of an empty list that looks like a shop with no stock. Search responses also report how many tiles were seen against how many rows were returned, and how many of the gaps were paid placements.
What people build with El Corte Inglés
The jobs this data is most often used for.
endpoints
credits per call
Pricing and assortment teams use El Corte Inglés to search or browse elcorteingles.es.
Brand-protection teams use El Corte Inglés to get one El Corte Inglés product in full, by URL, product code or EAN-13.
Retail analysts use El Corte Inglés to read a retailer's own catalogue with full product detail, variants, price and stock, all from one ReefAPI key and credit pool.
What El Corte Inglés data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 184 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/elcorteingles/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"zapatillas running","max_results":12}'import requests
r = requests.post(
"https://api.reefapi.com/elcorteingles/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "zapatillas running",
"max_results": 12
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up El Corte Inglés.
Get a free key →I asked for 12 products and got 8. Why?▾
Sponsored tiles are excluded from the rows. On the query zapatillas running the response reported tiles_seen 12, sponsored_slots 4, rejected_rows 0 and returned 8 products. El Corte Inglés fixes its own page at 12 tiles and ignores itemsPerPage, size and limit, so a page can be part advertising. meta.tiles_seen against meta.pagination.returned always reconciles the difference.
What is lowest_recent_price, and is it the same as list_price?▾
No. list_price is the struck-through reference price and lowest_recent_price is the lowest price in the recent window that EU pricing rules require shops to publish. On product A56390869 the three numbers were price 319.90, list_price 379.00 and lowest_recent_price 255.37, all EUR. discount_percent 15 is computed from price against list_price, so do not recompute a discount from lowest_recent_price.
How do I tell El Corte Inglés' own stock from marketplace stock?▾
Three signals agree. The product_id prefix (A... versus MP_...), the is_marketplace boolean, and the sellers array: own stock returns 001, a marketplace row returns the seller's code, for example 0652065 on MP_0652065_MKXC3 in deportes/ciclismo. Mixed categories are normal, that cycling page returned one marketplace row among eleven own-stock rows.
Is gtin13 the same for every colour of a product?▾
No, and this catches people out. The product-level gtin13 is the barcode of the preselected colour. On A56390869 the product carried 8806097643135, which is the black variant, while blue was 8806097640233 and grey 8806097640271. If you are matching a catalogue by barcode, read variants[].gtin13, not product.gtin13.
What does availability partially_in_stock mean?▾
The product is buyable but not every variant is. A56390869 returned availability partially_in_stock with in_stock true, variant_count 3 and in_stock_variant_count 2: black and blue had availability in_stock and status ADD, grey had out_of_stock and status SOLD_OUT. Colours also carry their own available boolean, so you can grey out a swatch without walking the variant list.
How deep can I page a category?▾
12 products per page, fixed at their end, and a hard ceiling on the result set. A narrow query pages out honestly: zapatillas running reported total_results 2,507 over 210 pages. A broad one hits the cap: moda-mujer/zapatos reported total_results 10000 over 416 pages, which is El Corte Inglés' own limit rather than the real catalogue size. Page until meta.pagination.has_more is false and split broad categories into sub-categories.
Does a bad sort value get ignored?▾
No, it is rejected before the request goes out. sort=cheapest returns INVALID_PARAM naming the ten keys the site publishes: featuredDesc, priceAsc, priceDesc, bestSellerQtyDesc, newInAsc, stockDesc, nameAsc, nameDesc, discountPerDesc and ratingDesc. That is deliberate, because elcorteingles.es answers an unknown sort key with HTTP 503. meta.sort echoes both what you asked for and the label the site confirmed, for example priceAsc and Precio de menor a mayor.
Where do the star ratings and reviews come from?▾
From Bazaarvoice, the review platform the product page loads, not from the El Corte Inglés HTML itself, and rating.source says so explicitly. On A56390869 it returned value 3.0, best 5.0, count 3 and two Spanish reviews with review_id, title, body and an ISO date. Coverage is uneven by department, so expect rating to be absent on plenty of products; set include_reviews false to skip the extra request entirely.
What is the El Corte Inglés API?▾
El Corte Inglés API is a ReefAPI endpoint group for el corte inglés It returns live JSON through POST requests under /elcorteingles/v1.
Is the El Corte Inglés API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. El Corte Inglés calls use the same shared credit balance as every other ReefAPI engine.
Do I need an El Corte Inglés login or account?▾
No login to El Corte Inglés is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the El Corte Inglés data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the El Corte Inglés API use?▾
El Corte Inglés actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call El Corte Inglés from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call elcorteingles actions with the same key, credit pool and JSON envelope used by normal REST requests.
16 More APIs APIs on the same key
One key, one credit pool, one response envelope. If you are pulling El Corte Inglés, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 183 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-08-30.