El Corte Inglés API

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.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a El Corte Inglés endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
E
/elcorteingles/v1

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.

2 endpoints

search

1 cr

Search or browse elcorteingles.es.

required
optional
query, category, page, max_results, sort

product_detail

2 cr

Get one El Corte Inglés product in full, by URL, product code or EAN-13.

required
optional
url, product_id, ean, include_reviews, max_reviews

Every parameter, every allowed value →

El Corte Inglés API

2 of 2 endpoints, ready to run

View docs ↗

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.

1 credit0 required · 4 optional
POST/elcorteingles/v1/search
ok2611 ms · 12 records · sample
{
  "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"
      }
    ]
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

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.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 184 engines.

02
Call
POST /elcorteingles/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

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.

01search
POST/elcorteingles/v1/search
{"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.

02product_detail
POST/elcorteingles/v1/product_detail
{"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.

request
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}'
response envelope
{
  "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.

FieldShapeMeasured exampleIdentifies
product_id (own stock)A followed by 8 or 9 digitsA56390869, A200383484One product page in El Corte Inglés' own catalogue
product_id (marketplace)MP_<sellerId>_<sellerSku>MP_0652065_MKXC3A third-party seller's listing, is_marketplace true
variant_id / eci_reference18 digits001057063613046009One colour and size row, with its own price and stock
colour sku15 digits, the variant id minus its last 3001057063613046One colourway and its image set
gtin13EAN-138806097643135The barcode of that specific variant
seller_id001, or a longer numeric code001 is El Corte Inglés, 0652065 a marketplace sellerWho 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.

The search row counts what you can buy; the product page counts what exists

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.

The EAN on a search row belongs to one size, not to the product

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.

Every variant carries its own seller and its own 30-day lowest price

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.

A withdrawn product is a permanent answer, not a retry

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.

Some parts of the shop publish no rows at all, and it says so

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.

2

endpoints

1/2

credits per call

01

Pricing and assortment teams use El Corte Inglés to search or browse elcorteingles.es.

02

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.

03

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 →
$0.67–$1.50 / 1,000 credits
  • 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
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}'
python
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"])
FAQ

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.

0/4000

No account needed · we reply from [email protected]

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.