Fnac Scraper at a glance
Fnac Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes product id, sku / ean, product, change type (incremental mode) and brand, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Ecommerce, Automation, Developer Tools
- Pricing
- $1.80 per 1,000 results (Free plan), from $1.00 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 27 options
Scrape Fnac (fnac.com) products: current price plus strike-through discount, colour/model variant matrix, brand, breadcrumb category, and the site's own reviews with rating. Search by keyword/category or paste product and search-result links.
What Fnac Scraper can do
- Was-price and discount, never fabricated. When a listing card shows a product marked down against the site's own reference price, both prices are captured plus the computed discount amount, percentage and the site's own promo label. A full-price product carries null there, never a guessed discount. A pasted single-product link does not carry this discount data at all, since it reads the product page directly rather than a listing card; see the FAQ below.
- Real narrowing in search mode. In search mode, a requested brand narrows through the site's own search facet server side, and sort reorders the full server-side result set, both verified against live results. With several brands, each gets its own search pass. A pasted category or search-result link in URL mode does not send the brand facet to the site, and cannot filter by brand client-side either, since a plain listing card never carries its own brand (a pasted product page is checked against its page brand); use search mode if you need brand narrowing. Extra filters: sold by Fnac only, condition (new or refurbished), in-stock only, and several search terms at once.
- Colour/model variant matrix. Products sold in more than one colour or configuration return every sibling variant, each with its own id, url, image and availability.
- Reviews straight from the product page. Overall rating, rating count and the product's own individual written reviews (author, date, rating, title, body, verified-purchase flag), read directly from the page, not a third-party review vendor.
- Flattened spec sheet. Full detail returns every characteristic the product page itself declares, storage, screen size, colour, EAN, condition and whatever else that category carries, rather than a fixed field list.
- Two ways in. Keyword and/or category search with real site filters, or paste any product or search-result link and let pagination continue automatically.
Choose what to collect
These inputs let you configure Fnac Scraper - Products, Prices, Variants & Reviews. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | 'search' finds products by keyword and/or category using fnac.com's own search. 'url' scrapes any product or search-result-listing page URL you paste, walking pagination forward automatically. |
searchTermstring | Free-text keyword, e.g. 'iphone 14' or 'ps5'. Uses fnac.com's own product search. |
categorystring | A category/rayon name, e.g. 'smartphones', 'livres', 'console ps5'. Combined with Search keyword above into fnac.com's own free-text search (fnac.com does not expose a separate path-based category browse the way some catalog sites do). Search mode only: it is written into fnac.com's own search URL, so a pasted URL keeps whatever it already carries. |
sortBystring | fnac.com's own sort order, verified live to reorder the full server-side result set. Search mode only: it is written into fnac.com's own search URL, so a pasted URL keeps whatever it already carries. |
urlsarray | Paste one or more fnac.com product pages (including a bare /a link), category pages or search-result-listing pages. Left unedited, this field scrapes one example of each link shape. Pagination continues forward automatically from any PageIndex= already in the URL. Search-mode fields are ignored here. The fields in the Filters section still apply, including to a pasted product URL. |
brandsarray | Only return products from these brands, e.g. 'Apple'. Search mode runs one pass per brand through fnac.com's own brand filter; every brand is also re-checked on the product page value when known. Leave empty for all brands. Applies in BOTH search mode and URL mode. |
searchTermsarray | Extra keywords for search mode, each searched in turn alongside 'searchTerm'. Duplicates are skipped. |
Show 20 more inputs
| Input | What it controls |
|---|---|
soldByFnacboolean | Keep only offers sold by Fnac itself, using the seller type the site shows on every listing card and product page; offers whose seller is not known yet are kept. Applies in BOTH search mode and URL mode. |
conditionstring | any, new, or refurbished. 'refurbished' means any second-hand or refurbished offer: a graded used offer (like-new, very-good, good, acceptable) or a product labelled 'Reconditionné'; 'new' drops all of those. Applies in BOTH search mode and URL mode. |
inStockOnlyboolean | Drop products the listing card or product page marks as unavailable (for example 'Ce produit n'est plus en vente'). Applies in BOTH search mode and URL mode. |
minPricenumber | Only return products priced at or above this amount, in euros. Applies in BOTH search mode and URL mode, including a pasted product URL. |
maxPricenumber | Only return products priced at or below this amount, in euros. Applies in BOTH search mode and URL mode, including a pasted product URL. |
specialsOnlyboolean | Only return products currently showing a genuine strike-through discount against fnac.com's own reference price (verified live against real price data -- never a guess). Combines with the keyword/category above. Applies in BOTH search mode and URL mode, including a pasted product URL. |
fetchDetailsboolean | Adds full description (text and HTML), EAN/MPN/SKU, breadcrumb category path, complete flattened characteristics (spec sheet -- every field the product page shows, not a fixed list), image gallery, the colour/model variant matrix, seller identity and rating, the other sellers' offers (price, condition grade, delivery), delivery, warranty options, energy label, repairability and durability scores, eco-participation taxes and included accessories from the product page. Current price, was-price/discount, rating and card image are already included without this toggle. |
fetchReviewsboolean | Fetch the product's own reviews (not a third-party vendor): overall rating, total rating count, and the page's own recent individual written reviews (rating, title, body, author, date, verified-purchase). fnac.com only ever surfaces its most recent reviews per product page; products with no reviews simply return an empty list. |
maxReviewsPerProductinteger | Cap on written reviews fetched per product when 'Fetch reviews' is on, up to the site's own per-page limit (fnac.com serves at most 10 written reviews on a product page, so the real count is often lower). Values above 100 are treated as 100. |
maxPagesinteger | Stop after this many result pages per search/URL entry. Leave empty for no page limit -- the run stops at Max products total. |
maxItemsinteger | Hard cap on total products returned across every search/URL entry. 0 = unlimited (still bounded by Max pages per search). |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue a large crawl of products without returning or charging for products already collected there. Use this after an interrupted run, or when continuing a product pull in another run. For recurring monitoring of the same search, use Incremental mode below instead. |
incrementalModeboolean | Turn this on for daily or recurring monitoring. The first run returns all matching products as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED products. Turn on "Emit unchanged" or "Emit expired" only when you also want those products returned (and billed). State is kept separately for each mode/search-or-URL/filter setup; use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the mode, search/URL and filter settings -- different searches then never mix state with each other. |
emitUnchangedboolean | Off by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns -- and bills -- extra rows you already have, so leave it off unless you specifically want the full snapshot every run. |
emitExpiredboolean | Off by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned every tracked search/URL -- not when Max products capped it or when Resume was used. This returns -- and bills -- extra synthetic rows, so leave it off unless you need expiry tracking. |
ignoreFieldsForChangesarray | Optional. Field names that must NOT count as a change in incremental mode, for example "price" or "availability". A product whose only differences are in these fields is treated as UNCHANGED, so it is not returned or billed as UPDATED. Names match at any nesting depth. The fields still appear in the output of rows that are returned. |
mcpConnectorsarray | Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify -> Settings -> Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
productIdProduct ID (text)skuSKU / EAN (text)nameProduct (text)changeTypeChange type (incremental mode) (text)brandBrand (text)categoryCategory (text)pricePrice (number)currencyCurrency (text)originalPriceReference price (number)discountPercentDiscount % (number)isOnSpecialOn discount (boolean)promoLabelPromo label (text)Show 26 more fields
ratingRating (number)reviewCountRatings (number)onlineAvailableAvailable (boolean)conditionCondition (text)urlURL (link)imageImage (image)changedFieldsChanged fields (incremental mode) (array)firstSeenAtFirst seen (incremental mode) (date)lastSeenAtLast seen (incremental mode) (date)variantsVariants (axis, name, url, availability) (object)reviewsReviews (rating, counts, per-review list) (object)sellerNameSeller (text)sellerTypeSeller type (text)sellerIdSeller ID (text)sellerLocationSeller location (text)sellerRatingSeller rating (number)sellerSalesSeller sales (number)conditionDetailCondition detail (text)isRefurbishedRefurbished (boolean)offersNewCountNew offers (number)offersUsedCountUsed offers (number)otherSellersOther sellers (nested) (array)deliveryPriceDelivery price (number)deliveryDateDelivery date (text)availabilityAvailability (text)inStockIn stock (boolean)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"productId": "77340219",
"sku": "9871234567890",
"name": "Aurivex SoundWave Pro 500 Casque Sans Fil Noir",
"brand": "Aurivex",
"category": "Casque audio",
"breadcrumbPath": [
"Accueil",
"Son",
"Casques et ecouteurs",
"Casques sans fil"
],
"url": "https://www.fnac.com/mp77340219/aurivex-soundwave-pro-500-casque-sans-fil-noir/w-4",
"price": 89.99,
"currency": "EUR",
"originalPrice": 119.99,
"discountAmount": 30,
"discountPercent": 25,
"isOnSpecial": true,
"promoLabel": "Vente flash",
"onlineAvailable": true,
"condition": "new",
"sellerName": "Fnac",
"sellerType": "fnac",
"isRefurbished": false,
"availability": "En Stock",
"ean": "9871234567890",
"mpn": "AX-500",
"image": "https://static.example.com/000000001.jpg",
"description": "Sample product description as shown on the site.",
"offersNewCount": 1,
"offersUsedCount": 1,
"otherSellers": [
{
"sellerName": "Marketplace Shop",
"sellerType": "professional",
"sellerRating": 4.5,
"price": 74.9,
"condition": "used",
"conditionDetail": "Tres bon",
"isRefurbished": true,
"shippingCost": 0,
"delivery": "Livre le 04/11"
}
],
"scrapedAt": "2026-03-01T10:00:00Z",
"characteristics": {
"Autonomie": "30h",
"Couleur": "Noir",
"EAN": "9871234567890"
},
"variants": [
{
"axis": "Couleur",
"name": "Bleu",
"url": "https://www.fnac.com/mp77340220/aurivex-soundwave-pro-500-casque-sans-fil-bleu/w-4",
"available": true
}
],
"rating": 4.3,
"reviewCount": 18,
"reviews": {
"averageRating": 4.3,
"ratingCount": 18,
"totalReviewCount": 6,
"items": [
{
"rating": 5,
"title": "Tres bon son",
"body": "Le son est clair et la batterie tient longtemps.",
"author": "Marie L.",
"date": "Posted on 03 Mar 2026",
"verifiedPurchase": true
}
]
}
}Ways to use this data
- Price tracking and deal alerts: monitor a search or a list of products for price drops and genuine promotions over time.
- Catalog and competitor research: build a dataset of prices, discounts, specs and variant availability across a category.
- Review and reputation analysis: collect a product's own ratings and written reviews before stocking or recommending it.
- Assortment and variant mapping: pull the full colour/model matrix for a product line to see what is actually available.
- Feed a shop-comparison site or bot: keep prices and availability current with scheduled, incremental runs.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Fnac Scraper return?
The documented output for Fnac Scraper includes product id, sku / ean, product, change type (incremental mode), brand, category, price and currency. Availability of each field depends on the source page and the selected mode.
How much does Fnac Scraper cost?
It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
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, unchanged ones are not billed, and a product only comes back marked REAPPEARED if an earlier run had Emit expired on and had already completed a full scan that marked it gone.
How do multiple brands work?
Each brand in the list gets its own search pass, and results share the maxItems cap.
Why does a pasted product link always fetch the full page?
A single product link has no listing card to fall back on, so the actor always reads the full product page for it, regardless of the Fetch full product detail toggle, to get any data at all. Note that this means it never carries the listing-card discount fields (originalPrice, discountAmount, discountPercent, isOnSpecial, promoLabel), which always come back null there. The detail-enrichment charge itself is still gated by the toggles: it only applies when Fetch full product detail actually finds and adds data, or when Fetch reviews successfully reads the reviews endpoint at all, even if that product happens to have zero reviews.
Why did my run fail instead of returning an empty dataset?
If Fnac refuses every request, or serves a page that declares results but returns none of the actual product cards, the run stops with a clear connection message instead of quietly returning nothing. Run it again in a few minutes. A search that genuinely matched nothing still succeeds, with a message saying so.
