Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the El Corte Inglés API page →
E-commerce & Marketplaces

El Corte Inglés API & Scraper

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.

3 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

Developers reach for it when they need to track product listings, prices, availability, variants and reviews without maintaining one-off scraping code or separate API contracts. If you were about to build or fix a El Corte Inglés scraper, this API is the maintained alternative — it returns the same data as clean JSON, with the proxies, rotation and anti-bot handling already solved. This page covers the live example, request shape, response shape and available actions: search, product_detail, price. Every request uses the same ReefAPI envelope, one API key and one shared credit pool, so it fits alongside the rest of your data stack.

Reference

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.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/elcorteingles/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "zapatillas running",
    "max_results": 12
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "elcorteingles",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 3104,
    "record_count": 8,
    "bytes": 1927650,
    "cache_hit": false,
    "completeness_pct": 66.67,
    "stop_reason": "limit_reached",
    "pages_requested": 1,
    "pages_ok": 1,
    "search_mode": "query",
    "robots": "disallowed_by_robots",
    "robots_note": "elcorteingles.es/robots.txt disallows /search-nwx/* for crawlers; browse by `category` for the robots-clean route to the same rows",
    "source": {
      "route": "/search-nwx/",
      "upstream_calls": 1
    },
    "sort": {
      "requested": null,
      "applied": "featuredDesc",
      "label": "Recomendados"
    },
    "tiles_seen": 12,
    "sponsored_slots": 4,
    "rejected_rows": 0,
    "pagination": {
      "page": 1,
      "per_page": 12,
      "pages_fetched": 1,
      "total_results": 3422,
      "total_pages": 286,
      "returned": 8,
      "has_more": true,
      "next_page": 2
    },
    "notes": null,
    "charged_credits": 2,
    "version": "1.0.0"
  },
  "data": {
    "products": [
      {
        "product_id": "MP_0248955_M4118K1",
        "product_type": "catalog",
        "url": "https://www.elcorteingles.es/deportes/MP_0248955_M4118K1-azul-marino-pr-zapatillas-de-running-de-hombre-411v4-new-balance/",
        "path": "/deportes/MP_0248955_M4118K1-azul-marino-pr-zapatillas-de-running-de-hombre-411v4-new-balance/",
        "name": "Zapatillas de running de hombre 411v4 New Balance Azul marino",
        "brand": "New Balance",
        "brand_slug": "new-balance",
        "gtin13": "0199063123600",
        "categories": [
          "Deportes"
        ],
        "hierarchy": [
          "deportes"
        ],
        "image": "https://dam.elcorteingles.es/producto/www-0199063123877-00.jpg",
        "colour_count": 1,
        "colours": [
          "Azul marino"
        ],
        "variant_count": 10,
        "in_stock_variant_count": 3,
        "price": 49.99,
        "price_min": 49.99,
        "price_max": 49.99,
        "currency": "EUR",
        "availability": "partially_in_stock",
        "in_stock": true,
        "is_marketplace": true,
        "sellers": [
          "0248955"
        ],
        "is_gift_card": false,
        "is_collection": false,
        "size_guide": "https://www.elcorteingles.es/deportes/calzado/tabla-de-tallas-new-balance/",
        "group_by": "Talla"
      },
      {
        "product_id": "A53952653",
        "product_type": "catalog",
        "url": "https://www.elcorteingles.es/deportes/A53952653-marron-pr-zapatillas-de-running-de-mujer-w-nike-revolution-8-nike/",
        "path": "/deportes/A53952653-marron-pr-zapatillas-de-running-de-mujer-w-nike-revolution-8-nike/",
        "name": "Zapatillas de running de mujer W NIKE REVOLUTION 8 Nike Marrón",
        "brand": "Nike",
        "brand_slug": "nike",
        "gtin13": "0197862924213",
        "categories": [
          "Deportes"
        ],
        "hierarchy": [
          "deportes"
        ],
        "image": "https://dam.elcorteingles.es/producto/www-001017730957960-00.jpg",
        "colour_count": 1,
        "colours": [
          "Marrón"
        ],
        "variant_count": 9,
        "in_stock_variant_count": 9,
        "price": 45.49,
        "price_min": 45.49,
        "price_max": 45.49,
        "currency": "EUR",
        "availability": "in_stock",
        "in_stock": true,
        "is_marketplace": false,
        "sellers": [
          "001"
        ],
        "is_gift_card": false,
        "is_collection": false,
        "size_guide": "https://www.elcorteingles.es/deportes/calzado/tabla-de-tallas-nike/",
        "group_by": "Talla"
      },
      {
        "product_id": "A55645803",
        "product_type": "catalog",
        "url": "https://www.elcorteingles.es/deportes/A55645803-azul-pr-zapatillas-de-hombre-galaxy-adidas/",
        "path": "/deportes/A55645803-azul-pr-zapatillas-de-hombre-galaxy-adidas/",
        "name": "Zapatillas de Hombre Galaxy Adidas Azul",
        "brand": "adidas",
        "brand_slug": "adidas",
        "gtin13": "4068812042942",
        "categories": [
          "Deportes"
        ],
        "hierarchy": [
          "deportes"
        ],
        "image": "https://dam.elcorteingles.es/producto/www-001017730881269-00.jpg",
        "colour_count": 1,
        "colours": [
          "Azul"
        ],
        "variant_count": 6,
        "in_stock_variant_count": 6,
        "price": 39.99,
        "price_min": 39.99,
        "price_max": 39.99,
        "currency": "EUR",
        "availability": "in_stock",
        "in_stock": true,
        "is_marketplace": false,
        "sellers": [
          "001"
        ],
        "is_gift_card": false,
        "is_collection": false,
        "size_guide": "https://www.elcorteingles.es/deportes/calzado/tabla-de-tallas-adidas/",
        "group_by": "Talla"
      }
    ]
  }
}
Actions

What the El Corte Inglés API does

ActionDescriptionConcrete use caseKey params
searchSearch or browse elcorteingles.es. Give a Spanish free-text `query` ('zapatillas running', 'movil samsung', 'lavadora'), an El Corte Inglés product code or a bare EAN-13, or a `category` path to browse ('electronica/moviles-y-smartphones', 'moda-mujer/zapatos'). Every row carries El Corte Inglés' own product code, the product URL to feed straight into `product_detail`, the name, brand, EAN-13, price range across colours, the colour list, the variant count, how many of those variants are actually buyable, the image, the category hierarchy and whether the listing is a marketplace seller's. Sort by price, discount, rating, newness, name or stock; page through the whole result set. `category` browsing is the route El Corte Inglés' robots.txt allows and `meta.robots` reports which route answered.Pricing teams call search to search or browse elcorteingles.es.query, category, page, max_results, sort
product_detailGet one El Corte Inglés product in full, by URL, product code or EAN-13. ONE call returns the complete image gallery, the full colour x size variant matrix with a stable native variant id, an EAN-13, a price, a strike-through price and a live buyable flag on EVERY row, the specification table as El Corte Inglés publishes it (grouped, with their own glossary text), the brand, the availability, the star rating and the top customer reviews inline, plus the seller behind each variant (El Corte Inglés itself or a marketplace merchant), the active promotions and the EU-Omnibus 30-day lowest price. Supermarket products are supported too and return their EAN, gallery and full nutrition panel instead of a size matrix. A product El Corte Inglés has WITHDRAWN answers `NOT_FOUND` with `meta.withdrawn: true` and `meta.withdrawn_product` naming the product it was — their server keeps the page online for search engines but pulls every price, so there is no offer left to return. That verdict is permanent and `retryable: false`: it is the signal to drop the SKU from a monitoring list, not a transient failure to retry.Marketplace operators call product_detail to get one El Corte Inglés product in full, by URL, product code or EAN-13.url, product_id, ean, include_reviews, max_reviews
priceCheap price + stock refresh for ONE El Corte Inglés product, by URL, product code or EAN-13 — for re-checking products you already track, instead of paying for a full `product_detail`. Returns the current price (what you pay today), the strike-through price, the discount, the EU-Omnibus 30-day lowest price, the buyable flag for the product AND for every colour x size variant, and each variant's own EAN, price and seller. It reads El Corte Inglés' own JSON product feed (the one their storefront renders from) in ONE upstream call, about 2.5-6x fewer bytes than the product page; `url`, `product_id` and `ean` cost the same. It does NOT return the gallery, description, specifications or reviews — that is `product_detail`. Supermarket (B-code) items are not covered here; use `product_detail`. A code or barcode El Corte Inglés no longer lists returns NOT_FOUND, retryable:false.Catalog enrichment teams call price to get cheap price + stock refresh for ONE El Corte Inglés product, by URL, product code or EAN-13.url, product_id, ean
Code samples

Call search from your stack

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}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.elcorteingles.search with {"query":"zapatillas running","max_results":12}.
Use cases

Who uses this API and why

  • Pricing teams use El Corte Inglés to search or browse elcorteingles.es.
  • Marketplace operators use El Corte Inglés to get one El Corte Inglés product in full, by URL, product code or EAN-13.
  • Catalog enrichment teams use El Corte Inglés to get cheap price + stock refresh for ONE El Corte Inglés product, by URL, product code or EAN-13.
FAQ

Questions developers ask before integrating

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. 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.

docs / elcorteingles

El Corte Inglés

El Corte Inglés

base /elcorteingles/v13 endpoints
post/elcorteingles/v1/product_detail2 credits

Get one El Corte Inglés product in full, by URL, product code or EAN-13. ONE call returns the complete image gallery, the full colour x size variant matrix with a stable native variant id, an EAN-13, a price, a strike-through price and a live buyable flag on EVERY row, the specification table as El Corte Inglés publishes it (grouped, with their own glossary text), the brand, the availability, the star rating and the top customer reviews inline, plus the seller behind each variant (El Corte Inglés itself or a marketplace merchant), the active promotions and the EU-Omnibus 30-day lowest price. Supermarket products are supported too and return their EAN, gallery and full nutrition panel instead of a size matrix. A product El Corte Inglés has WITHDRAWN answers `NOT_FOUND` with `meta.withdrawn: true` and `meta.withdrawn_product` naming the product it was — their server keeps the page online for search engines but pulls every price, so there is no offer left to return. That verdict is permanent and `retryable: false`: it is the signal to drop the SKU from a monitoring list, not a transient failure to retry.

ParameterAllowed / rangeDescription
urloptional—The product's elcorteingles.es URL, exactly as `search` returns it in `products[].url`. This is the ZERO-EXTRA-COST path: the URL is the only key El Corte Inglés' product page resolves, because it embeds a category and a slug that cannot be derived from an id. Give `url`, `product_id` or `ean`.
product_idoptional—El Corte Inglés' own product code — `A56390869` for their catalogue, `MP_0623819_261BZ152012640` for a marketplace listing, `B001018009401193` for a supermarket item. Accepted for convenience, but be aware it costs ONE EXTRA upstream call: elcorteingles.es serves no product-by-id route, so the code is resolved through their own search first (measured: 1 result, every time). Pass `url` when you already have it.
eanoptional—A bare EAN-13 / GTIN barcode. Resolved through El Corte Inglés' own search the same way `product_id` is (one extra call), which makes this endpoint usable for catalogue matching straight from a barcode. Returns NOT_FOUND if El Corte Inglés does not carry that barcode.
include_reviews = trueoptional—Fetch the star rating and the top customer reviews (default true). El Corte Inglés does not publish either on its own product page — they come from Bazaarvoice, the review platform their page loads, in one extra ~2 KB request. Measured coverage is 27 of 48 live products across 9 categories: home, appliances and toys are well covered, books and fashion carry none at all. Set false to skip the call entirely.
max_reviews = 8optional1–8How many reviews to return (1-8). Bazaarvoice's feed publishes at most 8 per page and this endpoint deliberately does not page through them — `rating.count` tells you the true total, which is frequently far larger (110 on one measured product).
Try in playground →
post/elcorteingles/v1/price1 credit

Cheap price + stock refresh for ONE El Corte Inglés product, by URL, product code or EAN-13 — for re-checking products you already track, instead of paying for a full `product_detail`. Returns the current price (what you pay today), the strike-through price, the discount, the EU-Omnibus 30-day lowest price, the buyable flag for the product AND for every colour x size variant, and each variant's own EAN, price and seller. It reads El Corte Inglés' own JSON product feed (the one their storefront renders from) in ONE upstream call, about 2.5-6x fewer bytes than the product page; `url`, `product_id` and `ean` cost the same. It does NOT return the gallery, description, specifications or reviews — that is `product_detail`. Supermarket (B-code) items are not covered here; use `product_detail`. A code or barcode El Corte Inglés no longer lists returns NOT_FOUND, retryable:false.

ParameterAllowed / rangeDescription
urloptional—The product's elcorteingles.es URL, exactly as `search` returns it in `products[].url`. This is the ZERO-EXTRA-COST path: the URL is the only key El Corte Inglés' product page resolves, because it embeds a category and a slug that cannot be derived from an id. Give `url`, `product_id` or `ean`.
product_idoptional—El Corte Inglés' own product code — `A56390869` for their catalogue, `MP_0623819_261BZ152012640` for a marketplace listing, `B001018009401193` for a supermarket item. Accepted for convenience, but be aware it costs ONE EXTRA upstream call: elcorteingles.es serves no product-by-id route, so the code is resolved through their own search first (measured: 1 result, every time). Pass `url` when you already have it.
eanoptional—A bare EAN-13 / GTIN barcode. Resolved through El Corte Inglés' own search the same way `product_id` is (one extra call), which makes this endpoint usable for catalogue matching straight from a barcode. Returns NOT_FOUND if El Corte Inglés does not carry that barcode.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.