Decathlon.es - Prices, Discounts, Specs & Reviews
Pricing
from $1.00 / 1,000 product results
Decathlon.es - Prices, Discounts, Specs & Reviews
Scrape Decathlon Spain (decathlon.es) sporting goods: current price plus strike-through discount, brand, seller, technical specifications, colour/size availability, GTINs, and reviews. Search by keyword/category with brand and price filters, or paste product and listing links.
Pricing
from $1.00 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Decathlon Spain Product Scraper
Pull product data from Decathlon Spain (decathlon.es), a major sporting goods retailer. Search by keyword or a real Decathlon category, filter by brand and price, or paste product and listing links directly. Every record includes the current price, the strike-through original price with discount percentage when a product is marked down, seller information (Decathlon first-party vs marketplace), and reviews.
Why This Scraper?
- Was-price and discount, structured, not scraped from a badge. When a product is marked down, both prices are captured plus the discount percentage and sale end date -- gated on the site's own real price pair, never fabricated on full-price items.
- First-party vs marketplace seller. Decathlon Spain also runs a marketplace with third-party sellers; every record tells you which one sold it.
- Real technical specifications. Practice level, terrain, fit, material, waterproofing, and more -- straight from the product page's own structured attribute list, not scraped free text.
- Reviews straight from Decathlon's own API. Overall rating, review count, recommended count, and individual reviews (rating, title, body, author, date, verified-buyer flag) -- not a third-party review vendor.
- Real filters and sort. Brand and on-sale narrow the actual server-side result set; sort by price, highest discount, or highest rated all reorder the full result set, not just one page.
- Two ways in. Keyword or category search with real site filters, or paste any product/search/category link and continue pagination automatically.
- Incremental & dedup mode for scheduled monitoring. Run the same search daily and get back only what changed -- NEW, UPDATED, or REAPPEARED products -- instead of the full list every time, with unchanged products suppressed (not returned, not billed) by default.
- Optional export to your apps. Send results into Notion, Linear, Airtable, or any Apify MCP connector alongside the dataset.
Data You Get
| Field | Example value |
|---|---|
| productId / supermodelId / sku | 0000000, 000000, 00000000-0000-0000-0000-000000000000 |
| name | Sample Running Shoes - Grey and Pink |
| brand | SAMPLE BRAND |
| url | https://www.decathlon.es/es/p/sample-running-shoes/000000/c0000m0000000 |
| price / currency | 39.99, EUR |
| originalPrice / discountPercent | 54.99, 27 |
| isOnSpecial / saleEndsAt | true, 2026-07-31T22:00:00.000Z |
| onlineAvailable | true |
| availableSizes | ["38", "39 1/3", "40", "41 1/3"] |
| seller | {"name": "Decathlon", "type": "FIRST_PARTY"} |
| sports | ["Road running"] |
| image / images | ["https://contents.mediadecathlon.com/sample/picture.jpg"] |
| rating / reviewCount | 4.6, 607 |
| category / categoryPath | Adidas, ["Deportes", "Running", "Marcas", "Adidas"] |
| description | full product description text |
| specifications | [{"name": "Nivel de práctica", "value": "Iniciación"}, {"name": "Material", "value": "Materia sintética"}] |
| composition / careInstructions / guarantee | material composition, care text, guarantee terms when the site provides them |
| colors | [{"name": "rosa", "hexaCode": "#E30076"}] |
| gtins | ["0000000000000"] |
| reviews.averageRating / reviews.totalReviewCount / reviews.recommendedCount | 4.64, 607, 501 |
| reviews.items[] | [{"rating": 5, "title": "Excelente", "body": "Sample review text.", "author": "Sample User", "date": "2026-07-16T11:34:20+00:00", "recommended": true, "verifiedBuyer": true}] |
| scrapedAt | 2026-07-18T00:00:00.000000+00:00 |
| changeType (incremental mode only) | NEW, UPDATED, UNCHANGED, REAPPEARED, or EXPIRED |
| changedFields (incremental mode only) | ["price", "isOnSpecial"] |
| firstSeenAt / lastSeenAt (incremental mode only) | 2026-07-18T00:00:00Z, 2026-07-19T00:00:00Z |
Sample shape: values above are illustrative placeholders, not from a live product.
How to Use
1. Keyword search, first page, with reviews (default):
{"mode": "search","searchTerm": "zapatillas running","maxItems": 20}
2. Category browse, filtered to a brand, sorted by highest discount, on-sale only:
{"mode": "search","category": "deportes/running/zapatillas-running","brand": "ADIDAS","specialsOnly": true,"sortBy": "DISCOUNT_DESC","maxItems": 50,"maxPages": 5}
3. Full product detail (specifications + GTINs) and reviews for a pasted product link:
{"mode": "url","urls": ["https://www.decathlon.es/es/p/sample-running-shoes/000000/c0000m0000000"],"fetchDetails": true,"fetchReviews": true}
4. Paste a search result page and keep paginating forward:
{"mode": "url","urls": ["https://www.decathlon.es/es/search?Ntt=mochila+trekking"],"maxItems": 100,"maxPages": 10}
Input Parameters
| Parameter | Type | Description |
|---|---|---|
mode | string | search or url. |
searchTerm | string | Keyword (search mode only). |
category | string | A real decathlon.es category path, e.g. deportes/running/zapatillas-running (search mode only, used when Search keyword is empty). |
brand | string | Exact brand name to keep, e.g. ADIDAS (search mode only). |
specialsOnly | boolean | Keep only products currently marked down (search mode only). |
minPrice / maxPrice | number | EUR price band to keep (search mode only). |
sortBy | string | RELEVANCE, PRICE_ASC, PRICE_DESC, DISCOUNT_DESC, or RATING_DESC (search mode only). |
urls | array | Product, search, or category listing URLs to scrape (url mode only). |
fetchDetails | boolean | Fetch full product detail (breadcrumb category path, description, technical specifications, composition/care/guarantee, colours, GTINs). |
fetchReviews | boolean | Fetch the product's own reviews. |
maxReviewsPerProduct | integer | Cap on reviews per product; the API itself only ever surfaces up to 30 per page. |
maxPages | integer | Cap on result pages per search/category/URL entry; 0 (default) = unlimited -- the run stops at Max products total instead. |
maxItems | integer | Cap on total products returned; 0 = unlimited. |
resumeFromRunId | string | Paste a previous run id (or its dataset id) to continue that run: products already collected there are skipped, so this run only returns new products (a delta). Leave empty for a normal run. |
incrementalMode | boolean | Turn on for daily/recurring monitoring of the same search. The first run returns everything as NEW; later runs return only NEW/UPDATED/REAPPEARED products, suppressing (not returning, not billing) unchanged ones by default. Distinct from resumeFromRunId -- see "Incremental & dedup mode" below. |
stateKey | string | Incremental mode only. Optional name for a monitoring campaign so its state stays stable, or is deliberately shared across differently-configured runs. Leave empty to derive a key automatically from the search/category/URL and detail/reviews settings. |
emitUnchanged | boolean | Incremental mode only. Off by default. Also return (and bill) products that have not changed, marked UNCHANGED. |
emitExpired | boolean | Incremental mode only. Off by default. Also return (and bill) products present in a previous run but no longer found, marked EXPIRED -- only produced after a run fully scans the tracked search (not when Max products capped it or Resume was used). |
proxy | object | Apify proxy configuration. Works on every plan by default. |
mcpConnectors | array | Optional MCP connectors to export results into (Notion, Linear, Airtable, Apify). |
notionParentPageUrl | string | Notion connector only: page under which item pages are created. |
maxNotifyListings | integer | Cap on items exported to each connector per run. Does not affect the dataset. |
Output Example
{"productId": "0000000","supermodelId": "000000","sku": "00000000-0000-0000-0000-000000000000","name": "Sample Running Shoes - Grey and Pink","brand": "SAMPLE BRAND","url": "https://www.decathlon.es/es/p/sample-running-shoes/000000/c0000m0000000","image": "https://contents.mediadecathlon.com/sample/picture.jpg","images": ["https://contents.mediadecathlon.com/sample/picture.jpg"],"price": 39.99,"currency": "EUR","originalPrice": 54.99,"discountPercent": 27,"isOnSpecial": true,"saleEndsAt": "2026-07-31T22:00:00.000Z","availableSizes": ["38", "39 1/3", "40", "41 1/3"],"onlineAvailable": true,"seller": { "name": "Decathlon", "type": "FIRST_PARTY" },"sports": ["Road running"],"nature": "zapatillas de deporte","rating": 4.64,"reviewCount": 607,"categoryPath": ["Deportes", "Running", "Marcas", "Adidas"],"category": "Adidas","description": "Sample product description as shown on the site.","specifications": [{ "name": "Nivel de práctica", "value": "Iniciación" },{ "name": "Material", "value": "Materia sintética" }],"colors": [{ "name": "rosa", "hexaCode": "#E30076" }],"gtins": ["0000000000000"],"reviews": {"averageRating": 4.64,"totalReviewCount": 607,"recommendedCount": 501,"items": [{ "rating": 5, "title": "Excelente", "body": "Sample review text.", "author": "Sample User", "date": "2026-07-16T11:34:20+00:00", "recommended": true, "verifiedBuyer": true }]},"scrapedAt": "2026-07-18T00:00:00.000000+00:00"}
Sample shape: values above are illustrative placeholders, not from a live product.
A note on was-price and reviews
Decathlon Spain runs genuine seasonal sales and day-to-day promotions. originalPrice/discountPercent/isOnSpecial are only set when the site's own reference price is genuinely higher than the current price -- a manufacturer's suggested reference price shown with no active promotion is never reported as a was-price. Reviews come directly from Decathlon's own reviews API, not a third-party vendor; each product page surfaces its rating, total review count, and individual reviews.
Incremental & dedup mode (recurring/scheduled monitoring)
Turn on incrementalMode to run the same search/category/URL setup again and again (e.g. daily) and get back only what changed, instead of the full result set every time. The first run returns everything as NEW; later runs classify each product as NEW, UPDATED (with changedFields naming exactly what changed), UNCHANGED, REAPPEARED (was missing, now back), or EXPIRED (tracked previously, no longer found -- only detected after a run fully scans the tracked search). UNCHANGED products are suppressed by default -- neither returned nor billed -- unless emitUnchanged is turned on; EXPIRED products are only returned when emitExpired is turned on. State is kept per search/category/URL and detail/reviews configuration automatically; set stateKey to name or deliberately share a monitoring campaign.
This is a different feature from resumeFromRunId, which continues one specific interrupted run instead of tracking recurring changes.
Send results into your apps (MCP connectors)
Optionally pipe results into the apps you already use through Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it in the mcpConnectors field. Each connector receives a condensed, human-readable summary per product (name plus key fields), while the complete record always stays in the Apify dataset. For Notion, set notionParentPageUrl to the page the item pages should be created under, and use maxNotifyListings to cap how many items are exported per connector per run. Supported connectors: Notion, Linear, Airtable, and Apify. Leave the field empty to skip; it never changes the dataset output.
A note on plans
The default connection works on every Apify plan, including the free tier. A residential proxy connection is optional and only worth turning on for very large or sustained runs.