Darty Scraper - Prices, Discounts, Specs & Reviews
Pricing
from $1.20 / 1,000 product results
Darty Scraper - Prices, Discounts, Specs & Reviews
Scrape Darty (darty.com) products: current price plus strike-through reference price and discount, brand, category breadcrumb, full spec sheet, and the site's own customer reviews with rating breakdown. Search by keyword or paste product/listing links.
Pricing
from $1.20 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
1
Bookmarked
5
Total users
3
Monthly active users
6 hours ago
Last modified
Categories
Share
Darty Scraper: Prices, Discounts, Specs & Reviews
Darty Scraper turns darty.com, the French consumer-electronics and appliance retailer (part of Fnac Darty), into structured product data. Search by keyword or paste product and search-result links, and get the current price, the strike-through reference price with a computed discount whenever a product is genuinely marked down, brand and category, and the site's own customer reviews. Export to JSON, CSV or Excel, or pull results straight into your app through the API.
Why This Scraper?
- Was-price and discount, structured, never fabricated. When a product is marked down against darty.com's own reference price, both prices are captured plus the computed discount amount, percentage, and the site's own promo label (e.g. "Bon Plan", "Soldes"). A full-price product always carries
nullthere, never a guessed markdown. - Real narrowing, not a filter that quietly does nothing. Rating floor and free-delivery narrow via the site's own search facets, verified against live results; brand narrows against the site's own card-level brand field; sort reorders the full server-side result set.
- Reviews straight from the product page. Overall rating, total review count, recommend-percentage, per-criteria scores (e.g. ease of use, value for money), and the page's own individual reviews, not a third-party review vendor.
- Flattened spec sheet on demand. Full detail returns every characteristic the product page itself declares (screen size, energy class, dimensions, EAN, and whatever else that category carries) rather than a fixed field list, so nothing category-specific is silently dropped.
- Two ways in. Keyword search with real site filters (brand, price range, discount-only, rating, free delivery, sort), or paste any product or search-result link and continue pagination automatically.
- Optional export to your apps. Send results into Notion, Linear, Airtable, or any Apify MCP connector alongside the dataset.
- Resume and recurring updates. Turn on Incremental mode for scheduled runs to track NEW and UPDATED products against a remembered baseline; expiry and reappearance tracking are available too, gated behind their own toggle. Or continue one specific interrupted crawl with
resumeFromRunId.
Use Cases
- Price comparison and deal sites: track was-price/now-price pairs and genuine discounts across TVs, appliances and electronics.
- Repricing and competitive intelligence: monitor a brand's or category's Darty pricing on a recurring schedule.
- Product research and buying guides: pull full spec sheets, images and reviews before publishing comparisons.
- Review analytics: aggregate rating breakdowns and individual written reviews across a catalog.
- Catalog and availability monitoring: Incremental mode flags newly listed, updated and (optionally) delisted products.
Data You Get
Sample shape: values are illustrative placeholders, not from a live product.
| Field | Example |
|---|---|
productId | "00000001" (Darty's own "codic") |
name | "TV LED Sample Brand X100 80 cm" |
brand | "Sample Brand" |
category | "TV LED" |
url | link to the product page |
image | card thumbnail image URL |
price / currency | 119.99 / "EUR" |
originalPrice | 149.99 (only when genuinely marked down, else null) |
discountAmount / discountPercent | 30.00 / 20.0 |
isOnSpecial | true |
promoLabel | "Bon Plan" |
rating | 4.5 |
reviewCount | 26 |
inStock | true (every listing card reports this placeholder; refined to the page's own real stock status once Fetch full product detail is on) |
condition | "new" (same placeholder-then-refined pattern as inStock) |
seller | "Darty" |
reviews.averageRating / reviews.totalReviewCount | 4.5 / 26 |
reviews.recommendPercent | 93 |
reviews.criteria | [{"name": "Ease of use", "score": 4.8}] |
reviews.items[] | [{"rating": 5, "title": "Sample title", "body": "Sample review text.", "author": "JANE", "level": "confirmed", "postedDate": "01/01/2026", "purchaseDate": "20/12/2025", "purchaseStore": "DARTY SAMPLE"}] |
Turn on Fetch full product detail (off by default) and a search or listing result also gains ean, breadcrumbPath (the full category trail), the flattened specs object, the full images gallery, a free-text description, and availabilityLabel alongside the refined, real inStock/condition. A pasted single product URL fetches its own page in full regardless of that toggle, so it always carries the real ean, breadcrumbPath, inStock and condition; only specs, images and the reviews depend on the enrichment toggles there, and unlike an enriched search or listing result, a pasted product URL's own record never carries description at all (that field is only ever populated on the search/listing enrichment path).
How to Use
- Pick a mode:
search(keyword and site filters) orurl(paste product or search-result-listing links). - Fill in the fields for that mode.
brands,minPrice,maxPriceandspecialsOnlynarrow results in both modes, including a pasted product URL. - Toggle Fetch full product detail and Fetch reviews for the depth you need, and set Max products / Max pages to control run size and cost.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.
Keyword search, first page, with reviews (default):
{"mode": "search","searchTerm": "television","maxItems": 20}
Keyword filtered to a brand, discounted items only, 4+ stars, sorted by price:
{"mode": "search","searchTerm": "television","brands": ["Samsung"],"specialsOnly": true,"minRating": 4,"sortBy": "PRICE_ASC","maxItems": 50,"maxPages": 5}
A pasted product link, full detail and reviews:
{"mode": "url","urls": ["https://www.darty.com/nav/achat/hifi_video/televiseurs-led/grand_ecran_led/sample-brand-x100.html"],"fetchDetails": true,"fetchReviews": true}
Recurring monitoring of a search, including delisted products:
{"mode": "search","searchTerm": "lave-linge","incrementalMode": true,"emitExpired": true,"maxItems": 0,"maxPages": 0}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/darty-com-scraper").call(run_input={"mode": "search", "searchTerm": "television", "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/darty-com-scraper').call({ mode: 'search', searchTerm: 'television', 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.
Filters that apply to every mode
brands, minPrice, maxPrice and specialsOnly narrow results in BOTH search mode and URL mode, including a pasted single product URL: they are applied client-side against the site's own real card or product fields after the fetch, never by changing the request. minRating, freeDeliveryOnly and sortBy only work in search mode, since darty.com only honors them as parameters on its own search URL; a pasted URL keeps whatever sort or rating filter its own query string already carries.
Full detail, reviews, and what gets charged
A search or listing result only gets its product page fetched when Fetch full product detail or Fetch reviews is on; leave both off and you stay at listing speed with the base per-result charge only. A pasted single product URL is different: there is no listing card to fall back on, so its product page is always fetched in full regardless of these toggles, and you always get the real EAN, breadcrumb category and true stock/condition. But the Detail & review enrichment surcharge is only ever billed when that fetch actually happens because Fetch full product detail and/or Fetch reviews is on (Fetch reviews defaults to on, so a default pasted-URL run is billed for it); turn both off and the fetch still happens for free, just without the spec sheet, image gallery or reviews in the output.
Resume and recurring updates
Two different things, both under the same input section:
resumeFromRunIdcontinues ONE specific interrupted crawl. Paste a previous run ID or dataset ID and this run skips every product that run already collected, picking up where it left off.incrementalModeis for running the SAME search or URL set again and again (daily, weekly, on a schedule) and getting only what changed. State is kept in a dedicated key-value store, keyed automatically from the mode, the keyword or URL list,fetchDetails/fetchReviews(since they change the emitted record shape), and, in search mode only, the filter settings (URL mode does not fold filters into the key), or your ownstateKeyif you want to name or share a campaign deliberately.
Every scanned product is classified as changeType: NEW (first time seen), UPDATED (a comparable field changed, see changedFields), or UNCHANGED (tracked but not returned unless emitUnchanged is on). EXPIRED is different: it is only ever produced when emitExpired is on AND this run reached the natural, uncapped end of every tracked search/URL (not when Max products capped the run, Resume was used, or a result page was refused). An incomplete scan cannot tell "genuinely gone" from "not reached yet", so those runs skip expiry detection and leave the previous state untouched. REAPPEARED follows from that: it can only ever fire for a product this same state key previously marked EXPIRED and has now seen again. A state key that has never run with emitExpired on can never produce a REAPPEARED product. With Incremental mode off, output is exactly as before.
incrementalMode defaults to false; a normal run's behavior and output shape are unchanged until you opt in. Combining it with resumeFromRunId bootstraps a brand-new monitoring campaign from that resumed crawl's results; if a baseline already exists for the derived (or given) state key, the run fails fast rather than silently mixing the two.
Send results into your apps (MCP connectors)
Optionally pipe results into the apps you already use through 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.
- Authorize a connector once under Apify -> Settings -> Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the
mcpConnectorsfield. (If the picker is empty, you haven't authorized a connector yet.) - For Notion, also set
notionParentPageUrlto 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; it never changes the dataset output.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search (keyword and facets) or url (paste product/listing links). |
searchTerm | string | no default (prefill: television) | Free-text keyword. Uses darty.com's own product search. Search mode only. |
minRating | integer | 0 | Minimum star rating (1-5), via darty.com's own search facet. 0 = no rating filter. Search mode only; written into the search URL, so a pasted URL keeps whatever it already carries. |
freeDeliveryOnly | boolean | false | Only return products showing free home delivery, via darty.com's own search facet. Search mode only. |
sortBy | string | RELEVANCE | RELEVANCE, PRICE_ASC, PRICE_DESC, RATING_DESC, or NEWEST. Verified live to reorder the full server-side result set. Search mode only. |
urls | array | no default (prefill: a sample search URL) | Darty product or search-result-listing links to scrape. Pagination continues forward automatically from any offset already in the URL. URL mode only. |
brands | array | no default (prefill: empty) | Exact brand names to keep, matched against the site's own card-level brand field, case-insensitive. Applies in BOTH search mode and URL mode, including a pasted product URL. |
minPrice | number | no default | Only return products priced at or above this amount, in euros. Applies in BOTH search mode and URL mode. |
maxPrice | number | no default | Only return products priced at or below this amount, in euros. Applies in BOTH search mode and URL mode. |
specialsOnly | boolean | false | Keep only products currently showing a genuine strike-through discount against darty.com's own reference price. Applies in BOTH search mode and URL mode. |
fetchDetails | boolean | false | Fetch full product detail: description, EAN, breadcrumb category, the complete flattened spec sheet, and the full image gallery. Current price, discount, rating and card image are already included without this toggle. |
fetchReviews | boolean | true | Fetch the product's own customer reviews: overall rating, total review count, recommend-percent, per-criteria scores, and the page's own most recent written reviews. |
maxReviewsPerProduct | integer | 10 | Cap on written reviews fetched per product when Fetch reviews is on, up to the site's own per-page limit. |
maxPages | integer | no default (unlimited) | Stop after this many result pages per search/URL entry. Leave empty for no page limit; the run still stops at Max products total. |
maxItems | integer | 20 | Hard cap on total products returned across every search/URL entry. 0 = unlimited. |
resumeFromRunId | string | no default | Previous run ID or dataset ID to continue ONE interrupted crawl without re-returning or re-charging products it already collected. |
incrementalMode | boolean | false | Recurring monitoring of the same search/URL set: returns only NEW and UPDATED products (plus REAPPEARED/EXPIRED once you opt into those) against a remembered baseline. |
stateKey | string | no default | Name a monitoring campaign, or deliberately share state across differently-configured runs. Leave empty to derive one automatically. Incremental mode only. |
emitUnchanged | boolean | false | Also return UNCHANGED products. Off by default; returns and bills rows you already have. Incremental mode only. |
emitExpired | boolean | false | Also return EXPIRED products, and only once a run has fully scanned every tracked search/URL. Off by default; returns and bills extra synthetic rows. Incremental mode only. |
proxy | object | Residential (FR) | Proxy configuration. Leave the default as provided; this source needs it. Change only the region if you need a different one. |
mcpConnectors | array | no default | Optional MCP connectors to export results into (Notion, Linear, Airtable, Apify). |
notionParentPageUrl | string | no default | Notion connector only: page under which item pages are created. |
maxNotifyListings | integer | 50 | Cap 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. Shown with Fetch full product detail and Fetch reviews both on.
{"productId": "00000001","ean": "0000000000000","url": "https://www.darty.com/nav/achat/hifi_video/televiseurs-led/grand_ecran_led/sample-brand-x100.html","image": "https://image.darty.com/darty?type=image&source=/sample/000000000.jpg","name": "TV LED Sample Brand X100 80 cm","brand": "Sample Brand","category": "TV LED","price": 119.99,"currency": "EUR","originalPrice": 149.99,"discountAmount": 30.00,"discountPercent": 20.0,"isOnSpecial": true,"promoLabel": "Bon Plan","rating": 4.5,"reviewCount": 26,"inStock": true,"availabilityLabel": "En stock","condition": "new","seller": "Darty","description": "Sample product description as shown on the product page.","breadcrumbPath": ["TV, Video, Home cinema", "Television", "TV LED"],"specs": { "Screen size (inches)": "32 \"", "Definition": "HD (720p)", "Energy class": "E" },"images": ["https://image.darty.com/darty?type=image&source=/sample/000000000.jpg","https://image.darty.com/darty?type=image&source=/sample/000000001.jpg"],"reviews": {"averageRating": 4.5,"totalReviewCount": 26,"recommendPercent": 93,"criteria": [{ "name": "Ease of use", "score": 4.8 }],"items": [{ "rating": 5, "title": "Sample title", "body": "Sample review text.", "author": "JANE", "level": "confirmed", "postedDate": "01/01/2026", "purchaseDate": "20/12/2025", "purchaseStore": "DARTY SAMPLE" }]}}
Plan Requirement
The default proxy configuration (Apify's residential group, France) ships as the default and is required; leave it as provided. Change only the region if you need a different one. The actor works through its own connection ladder automatically when a request is refused, so most runs need no manual retry.
FAQ
How much does it cost?
You pay per product returned, plus a Detail & review enrichment charge on any product whose page is actually fetched for full detail and/or reviews (on by default, since Fetch reviews defaults to on). The Pricing tab shows the current rates for both events. Use Max products to cap the cost of any run.
Is it legal to scrape Darty?
This actor collects only publicly available product data from darty.com. You are responsible for how you use it: follow darty.com's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Prices and specifications are generally facts, but images, descriptions and review text 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 against a remembered baseline; UNCHANGED products are tracked but not billed unless you turn on Emit unchanged.
Why is originalPrice null on most products?
It reflects darty.com's own reference price and is only ever populated when it is genuinely higher than the current price. A full-price product always carries null there, never a fabricated discount.
Why does a pasted product link not include a description field?
A pasted product URL fetches its own page in full and returns the real EAN, breadcrumb category, and true stock/condition, plus the spec sheet and image gallery when Fetch full product detail is on, but its own extraction path does not populate description. A search or listing result enriched with Fetch full product detail on does include it, since it comes from a different extraction path on the same page. If you need the description for a specific product, run it through search or a listing link instead of pasting its product URL directly.
Why did my run fail instead of returning an empty dataset?
A run that genuinely matches nothing still succeeds with an empty dataset; widen the keyword or relax the filters. A run only fails when every attempted page was refused and nothing could be read at all, so "no products today" is never confused with "nothing could be read". If some pages read fine and only a later page or pasted URL was refused, the run still succeeds and its status message starts with "Partial results:" so a truncated harvest never reads as a complete one. Run it again in a few minutes and leave the default proxy configuration in place.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the mcpConnectors field to push results into Notion, Linear or Airtable.
๐ Want more electronics data?
Pair this actor with these related scrapers from the same team:
| ๐ Fnac Scraper Scrape Fnac (fnac.com) products: current price plus strike-through discount, colour/model... | ๐ Boulanger.com Scrape Boulanger (boulanger.com) electronics and home-appliance products: current price... |
| ๐ PcComponentes Scraper Scrape PcComponentes (pccomponentes.com) products: current price plus strike-through... | ๐ MediaMarkt.es Scraper Scrape MediaMarkt Spain (mediamarkt.es) products: current price, strike-through original... |
| ๐ Thegioididong Scraper Scrape thegioididong.com products with full specifications, current & original price... | ๐ Bic Camera Scraper Scrape Bic Camera (biccamera.com) products: JPY price, list price and discount, Bic Point... |
๐ 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.