El Corte Inglés Scraper - Products, Prices, Variants & Reviews avatar

El Corte Inglés Scraper - Products, Prices, Variants & Reviews

Pricing

from $1.00 / 1,000 product results

Go to Apify Store
El Corte Inglés Scraper - Products, Prices, Variants & Reviews

El Corte Inglés Scraper - Products, Prices, Variants & Reviews

Scrape El Corte Inglés elcorteingles.es products across fashion, electronics, home, beauty, jewellery, toys and books. Extract current and was-prices, discounts, brands, categories, images, colour/size variants, availability, ratings and reviews. Supports keyword, category and URL modes.

Pricing

from $1.00 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

6 hours ago

Last modified

Share

El Corte Inglés Scraper: Prices, Discounts, Variants and Reviews

El Corte Inglés Scraper turns the elcorteingles.es catalog into structured product data. Get the current price and, when a product is genuinely marked down, its original price and discount percentage, plus colour and size variants with their own price and availability, brand, category, marketplace seller, and customer reviews, across moda, electrónica, hogar, perfumería, joyería y relojes, juguetes and libros (the grocery section is not covered). Search by keyword or a real site category with brand, price and on-sale filters, or paste any product, category or search-result link and keep paginating automatically, then export to JSON, CSV or Excel, or pull results straight into your app through the API.

Why This Scraper?

  • Was-price and discount, read from the site's own data, never guessed. When a product is marked down, both the original and current price are captured plus the discount percentage; on a full-price item those fields are simply empty rather than invented.
  • Colour and size variants. Fashion, footwear and similar products return every colour and size as its own variant, each carrying its own price, was-price/discount and availability.
  • Reviews with overall rating and review count. Total review count and individual reviews (rating, title, body, author, date), gathered whenever reviews are switched on.
  • Two ways in. Keyword or category search with brand, price and on-sale filters plus the site's own sort, or paste any product or listing link and continue pagination automatically.
  • Marketplace or direct sold, told apart. Every record says whether it is sold by El Corte Inglés itself or by a marketplace seller, and names that seller when it is.
  • Built for monitoring. Incremental mode returns only new and updated products on a recurring search by default (reappeared ones need Emit expired too), and a run that could not read the site at all fails loudly rather than finishing as an empty success.

Use Cases

  • Price and markdown monitoring: track discounts and price history across a category or brand on a recurring schedule.
  • Competitive retail research: compare pricing, sellers, stock and assortment across brands and departments.
  • Catalog and content enrichment: pull descriptions, specifications, images and variant data into your own product database.
  • Customer sentiment tracking: aggregate ratings and reviews for the products or brands you follow.

Data You Get

Sample shape: values below are illustrative placeholders, not from a live product.

FieldExample
productId"A930015820"
sku"52918473"
gtin"8412345671236"
name"Chaqueta acolchada con capucha desmontable"
brand"NORTHPEAK"
category / categoryPath"Chaquetas" / ["Moda mujer", "Abrigos y chaquetas", "Chaquetas"]
url"https://www.elcorteingles.es/moda-mujer/A930015820-8412345671236-pr-sample-slug/"
price / currency54.95 / "EUR"
originalPrice / discountPercent89.95 / 39.0
isOnSaletrue
color / size"Verde botella" / "M"
onlineAvailabletrue
seller / isMarketplace"Tienda Oficial Ejemplo" / true
image / images"https://dam.elcorteingles.es/producto/sample-front.jpg" / list of image URLs
descriptionfull product description text
specifications{"Género": "Mujer", "Composición": "80% poliéster, 20% algodón"}
variants[{"sku": "52918473", "gtin": "8412345671236", "color": "Verde botella", "size": "M", "price": 54.95, "originalPrice": 89.95, "discountPercent": 39.0, "onlineAvailable": true}, {"sku": "52918474", "gtin": "8412345671259", "color": "Verde botella", "size": "L", "price": 54.95, "originalPrice": 89.95, "discountPercent": 39.0, "onlineAvailable": true}]
reviews.averageRating / reviews.totalReviewCount4.3 / 128
reviews.items[][{"rating": 5, "title": "Muy abrigada", "body": "Sample review text.", "author": "Cliente", "date": "2026-03-14T00:00:00.000+00:00"}]
changeType / changedFields / firstSeenAt / lastSeenAt"UPDATED" / ["price", "isOnSale"] / ISO timestamps (Incremental mode only)

Every record is one colour card, matching how the site itself splits colourways into separate listing cards. originalPrice and discountPercent are only ever populated when isOnSale is true, read straight off the site's own markdown data, never computed. seller is only populated when isMarketplace is true; a product sold directly by El Corte Inglés carries isMarketplace: false and seller: null. description, specifications and the complete colour x size variants matrix are only added once a Fetch full product detail fetch lands (a pasted single product link always fetches this); without it, variants still lists this colour's own sizes from the listing itself. reviews is always present, with an empty shape when Fetch reviews is off or the product has none. changeType, changedFields, firstSeenAt and lastSeenAt are only added when Incremental mode is on.

How to Use

  1. Pick a mode: search (a keyword, or a real site category, with filters; if both are set, the category is used and the keyword is ignored) or url (paste product, category or search-result links).
  2. Fill in the fields for that mode, and switch on Fetch full product detail / Fetch reviews if you want the full variant matrix, description, specifications and reviews.
  3. Set Max products total and Max pages per search to control run size and cost, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

Keyword search, first page:

{
"mode": "search",
"searchTerm": "zapatillas running",
"maxItems": 20
}

Category browse, filtered to a brand and price band, sorted by discount, on sale only:

{
"mode": "search",
"categoryPath": "moda-hombre/zapatillas",
"brands": ["Skechers"],
"minPrice": 20,
"maxPrice": 100,
"onSaleOnly": true,
"sortBy": "DISCOUNT_DESC",
"maxItems": 50,
"maxPages": 5
}

Full detail and reviews for a pasted product link:

{
"mode": "url",
"urls": ["https://www.elcorteingles.es/electronica/A900001234-0000000012345-pr-sample-television-55-pulgadas/"],
"fetchDetails": true,
"fetchReviews": true
}

Recurring monitoring: run the same search on a schedule, get only what changed:

{
"mode": "search",
"categoryPath": "moda-hombre/zapatillas",
"onSaleOnly": true,
"incrementalMode": true
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/elcorteingles-es-scraper").call(
run_input={"mode": "search", "searchTerm": "zapatillas running", "maxItems": 20}
)
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["name"], product["price"], product["currency"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/elcorteingles-es-scraper').call({
mode: 'search', searchTerm: 'zapatillas running', maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Resume and incremental mode (recurring monitoring)

  • Resume (resumeFromRunId) continues one interrupted run: paste its run or dataset id and the actor skips everything already collected there, so you don't pay twice.
  • Incremental mode (incrementalMode) is for a search or category you run repeatedly (e.g. an Apify schedule). Each record is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED (a product marked EXPIRED on a previous run, now back) or EXPIRED (only emitted when emitExpired is on, and only after this run scanned the tracked search to its natural end, with no cap and no resume). stateKey names or shares the stored state. With Incremental mode off, output is exactly as before.
  • The two can be combined only once, to bootstrap the very first incremental run from an already-collected dataset; combining them again after a baseline already exists is rejected, since a resumed run only returns a delta and would otherwise wipe out everything already tracked.

How the price, brand and on-sale filters are bounded

A price band is handed to the site's own price filter first, so the run pages only through results already inside it rather than the whole department (on a large department, a high minimum price can cut the pages walked by an order of magnitude). Brand and on-sale-only have no equivalent on the site, so those are checked after each page is fetched; to stop a very selective combination from paging through an entire department looking for survivors, the walk stops a search after 5 consecutive result pages that contain no match at all. The run's status message on the run page always says which happened: the search was read to its natural end, or it was stopped early and more matches may exist further down.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape; the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each product, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify, Settings, Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. If the picker is empty, you haven't authorized a connector yet.
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch finds products by a keyword, or a real category path (if both are set, the category wins and the keyword is ignored), with brand, price and on-sale filters and the site's own sort; url scrapes any pasted product, category or search-result link and walks pagination forward automatically.
searchTermstringzapatillas runningFree-text keyword (search mode). Defaults to a sample keyword so a run started with no input still returns real products.
categoryPathstring(none)A real elcorteingles.es category path exactly as it appears in the site's own URL, e.g. moda-hombre/zapatillas (search mode). The supermercado (grocery) section is not supported.
onSaleOnlybooleanfalseKeep only products currently marked down (a genuine strike-through price on the site itself). Applies in both search and URL mode.
brandsarray(none; prefilled empty)Exact brand names to keep. The site has no brand filter of its own, so this is checked after each result page is fetched. Applies in both modes.
minPricenumber(none)Minimum price in EUR. Applied by the site's own price filter first, so the run pages only through results already inside the band.
maxPricenumber(none)Maximum price in EUR. Applied by the site's own price filter first, so the run pages only through results already inside the band.
sortBystringRELEVANCEThe site's own sort order. Applies in both modes; in URL mode, a pasted link's own encoded sort order takes priority when it has one.
urlsarray(none; prefilled with a sample category link)Product, category or search-result page links to scrape (URL mode). Pagination continues automatically from any page segment already in the URL.
fetchDetailsbooleanfalseAdds the full breadcrumb category path, description, specifications and the complete colour x size variant matrix. A pasted single product link always fetches this regardless of this setting.
fetchReviewsbooleantrueFetches the product's reviews: overall rating, total review count and individual reviews.
maxReviewsPerProductinteger10Cap on individual reviews fetched per product when Fetch reviews is on.
maxPagesinteger0Cap on result pages per search/category/URL entry. 0 = unlimited, walk every page until the site's own page count or Max products total is hit.
maxItemsinteger20Hard cap on total products returned across every search/category/URL entry. 0 = unlimited (still bounded by Max pages per search).
resumeFromRunIdstring(none)Continue one interrupted run: paste its run or dataset id and already-collected products are skipped. For a recurring/scheduled search, use Incremental mode instead.
incrementalModebooleanfalseRecurring monitoring: track this search across scheduled runs and, by default, return only NEW and UPDATED products (REAPPEARED needs Emit expired too, see "Resume and incremental mode" above).
stateKeystring(none)Optional stable name for the tracked search when Incremental mode is on. Left empty, one is derived automatically from your search and filters.
emitUnchangedbooleanfalseIncremental mode only: also return UNCHANGED products. Billed like any other result.
emitExpiredbooleanfalseIncremental mode only: also return products no longer found, when this run reached a complete scan. Billed like any other result.
proxyobjectApify ProxyConnection settings for the run.
mcpConnectorsarray(none)Optional MCP connectors to export results into (Notion, Linear, Airtable, Apify).
notionParentPageUrlstring(none)Notion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on items exported to each connector per run. Does not affect the dataset.

Output Example

Sample shape: values below are illustrative placeholders, not from a live product.

{
"productId": "A930015820",
"name": "Chaqueta acolchada con capucha desmontable",
"brand": "NORTHPEAK",
"category": "Chaquetas",
"categoryPath": ["Moda mujer", "Abrigos y chaquetas", "Chaquetas"],
"url": "https://www.elcorteingles.es/moda-mujer/A930015820-8412345671236-pr-sample-slug/",
"sku": "52918473",
"gtin": "8412345671236",
"price": 54.95,
"currency": "EUR",
"originalPrice": 89.95,
"discountPercent": 39.0,
"isOnSale": true,
"color": "Verde botella",
"size": "M",
"onlineAvailable": true,
"seller": "Tienda Oficial Ejemplo",
"isMarketplace": true,
"image": "https://dam.elcorteingles.es/producto/sample-front.jpg",
"images": ["https://dam.elcorteingles.es/producto/sample-front.jpg", "https://dam.elcorteingles.es/producto/sample-back.jpg"],
"description": "Sample product description text as shown on the site.",
"specifications": { "Género": "Mujer", "Composición": "80% poliéster, 20% algodón" },
"variants": [
{ "sku": "52918473", "gtin": "8412345671236", "color": "Verde botella", "size": "M", "price": 54.95, "currency": "EUR", "originalPrice": 89.95, "discountPercent": 39.0, "isOnSale": true, "onlineAvailable": true, "isMarketplace": true, "seller": "Tienda Oficial Ejemplo" },
{ "sku": "52918474", "gtin": "8412345671259", "color": "Verde botella", "size": "L", "price": 54.95, "currency": "EUR", "originalPrice": 89.95, "discountPercent": 39.0, "isOnSale": true, "onlineAvailable": true, "isMarketplace": true, "seller": "Tienda Oficial Ejemplo" }
],
"reviews": {
"averageRating": 4.3,
"totalReviewCount": 128,
"items": [
{ "rating": 5, "title": "Muy abrigada", "body": "Sample review text.", "author": "Cliente", "date": "2026-03-14T00:00:00.000+00:00" }
]
}
}

Plan Requirement

The default connection setting works out of the box on every plan, and the run retries each failed request a few times before giving up on it. For a large or sustained monitoring run, switching to a different connection group under Connection can help. The Pricing tab shows current per-product and enrichment rates.

FAQ

How much does it cost?

You pay a run start fee, then a charge for every product returned in the dataset, plus a per-product detail/review enrichment charge whenever the detail fetch and/or the review lookup actually completes for that product, whether or not the product turns out to have any reviews. Fetch reviews is on by default, so most returned products carry this charge unless you turn both toggles off. Pasting a single product link always fetches its full detail (and is billed that enrichment charge once), regardless of the Fetch full product detail toggle, because a standalone product page has no listing card to build a base record from. For products found by searching, browsing a category, or pasting a listing link, that same enrichment charge only applies when Fetch full product detail and/or Fetch reviews is switched on. See the Pricing tab for current rates.

This actor collects only publicly available product data. You are responsible for how you use it: follow El Corte Inglés's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Prices and product facts are generally not protected, but product photos, descriptions and reviews may be subject to third-party rights.

Can I get only new or changed products on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated products for that tracked search by default (plus reappeared ones once an Emit expired pass has marked them gone), and unchanged ones are not billed unless you turn that on too.

The grocery section sits behind a materially harder verification step than the rest of the catalog and is not currently scraped by this actor. A categoryPath or pasted URL under that section is skipped with a clear log message rather than failing the whole run. Every other department (moda, electrónica, hogar, perfumería, joyería y relojes, juguetes, libros) is fully supported.

Why did a run stop before reaching the end of the results?

Brand and on-sale filters have no equivalent on the site, so a very selective combination can page through many results with nothing matching; the run stops a search after 5 consecutive pages with no match, and says so in the status message rather than claiming that was the end of the results. If that 5-page stop happens on every search in the run and nothing at all was returned, the run is marked failed rather than a plain empty success, since it has not actually proven there are no matches; add maxItems or maxPages, or narrow the filters, and try again. Max products and Max pages caps behave the same way: raise them, or narrow the category or filters, to see more.

Why did my run fail instead of returning an empty dataset?

If every page this run tried to load failed to load at all, the run stops with an error instead of finishing as an empty success, because that is a connection problem, not evidence that there are no matching products. Run it again in a few minutes. A run that read pages and reached the real end of the results, even with zero matches, finishes normally and reports what it found. If the walk instead gave up after 5 pages in a row with no match and returned nothing, the run is also marked failed, for the same reason: it has not proven there are no matches, see "Why did a run stop before reaching the end of the results?" above.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

🔗 Want more fashion data?

Pair this actor with these related scrapers from the same team:

🔌 MediaMarkt.es Scraper
Scrape MediaMarkt Spain (mediamarkt.es) products: current price, strike-through original...
🥦 Lidl.es Products, Weekly Offers, Prices & Reviews Scraper
Scrape Lidl.es grocery and non-food products across weekly offers, tools, home, garden...
🔌 PcComponentes Scraper
Scrape PcComponentes (pccomponentes.com) products: current price plus strike-through...
🔌 Fnac Scraper
Scrape Fnac (fnac.com) products: current price plus strike-through discount, colour/model...
👗 Myer Scraper
Scrape Myer (myer.com.au) department-store products: name, brand, price, was-price...
🔌 A101 Turkey Scraper
Scrape A101.com.tr products across A101 Ekstra and A101 Kapıda. Extract 80+ fields...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.