Fnac's four prices, every marketplace offer and the specs, as JSON
The Fnac API turns Fnac, the French electronics, books and culture retailer and marketplace, into clean JSON in four actions: search, product/detail, product/offers and product/reviews, across four storefronts chosen with country: fr (fnac.com, EUR), be (fr.fnac.be, EUR), ch (fr.fnac.ch, CHF) and pt (fnac.pt, EUR).
4 active endpoints, on 1, 2 and 3 credit tiers.
- POST/fnac/v1/search
- POST/fnac/v1/product/detail
- POST/fnac/v1/product/offers
- POST/fnac/v1/product/reviews
What Fnac endpoints does ReefAPI ship?
4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Fnac API
3 of 4 endpoints, ready to run
One page of 20 Fnac products: id, title, URL, brand or authors, price with the struck 30-day-lowest price and discount, member price where shown, store-pickup price on books, condition, seller (Fnac or marketplace), availability, rating and the other new/used offers with from-prices.
{ "ok": true, "meta": { "api": "fnac", "endpoint": "search", "mode": "live", "latency_ms": 7291.5, "record_count": 20, "cache_hit": false }, "data": { "results": [ { "position": 1, "product_id": "22687125", "catalog": 1, "product_code": "a22687125", "offer_id": null, "title": "Casque supra-auriculaire sans fil JBL Tune 535/530 Bluetooth Noir", "url": "https://www.fnac.com/Casque-supra-auriculaire-sans-fil-JBL-Tune-535BT-Bluetooth-Noir/a22687125/w-4", "brand": "JBL", "product_type": "Casque audio", "contributors": null, "price": 34.99, "currency": "EUR", "struck_price": 49.99, "struck_price_type": null, "discount_percent": 31, "member_price": null, "member_price_label": null, "store_pickup_price": null, "store_pickup_label": null, "store_pickup_only": false, "store_availability": "En stock en magasin", "condition": "new", "condition_grade": null, "seller": { "name": "FNAC.COM", "id": null, "type": "fnac", "is_fnac": true }, "fulfilled_by": "FNAC.COM", "availability": "En stock en ligne", "availability_code": 199, "sold_out": false, "rating": 4.5, "rating_count": 13, "rating_scale": 5, "other_offers": [ { "condition": "any", "count": null, "from_price": 34.99 } ], "lowest_new_offer_price": null, "lowest_used_offer_price": null, "badges": [ "Offre FNAC" ], "highlights": [ { "name": "Mode de connexion", "value": "Sans fil" }, { "name": "Autonomie de fonctionnement", "value": "76 Heures" } ], "image": "https://static.fnac-static.com/multimedia/Images/FR/MDM/7b/95/be/29267323/1545-1/tsp20260911094610/Casque-supra-auriculaire-sans-fil-JBL-Tune-535-530-Bluetooth-Noir.jpg" }, { "position": 2, "product_id": "21836330", "catalog": 1, "product_code": "a21836330", "offer_id": null, "title": "Casque circum-auriculaire sans fil JBL Tune 780NC Bluetooth avec réduction active du bruit Noir", "url": "https://www.fnac.com/Casque-circum-auriculaire-sans-fil-JBL-Tune-780NC-Bluetooth-avec-reduction-active-du-bruit-Noir/a21836330/w-4", "brand": "JBL", "product_type": "Casque audio", "contributors": null, "price": 89.99, "currency": "EUR", "struck_price": 129.99, "struck_price_type": null, "discount_percent": 31, "member_price": null, "member_price_label": null, "store_pickup_price": null, "store_pickup_label": null, "store_pickup_only": false, "store_availability": "En stock en magasin", "condition": "new", "condition_grade": null, "seller": { "name": "FNAC.COM", "id": null, "type": "fnac", "is_fnac": true }, "fulfilled_by": "FNAC.COM", "availability": "En stock en ligne", "availability_code": 199, "sold_out": false, "rating": 4.5, "rating_count": 20, "rating_scale": 5, "other_offers": [ { "condition": "any", "count": null, "from_price": 88.79 } ], "lowest_new_offer_price": null, "lowest_used_offer_price": null, "badges": [ "Offre Fnac" ], "highlights": [ { "name": "Isolation Phonique", "value": "Réduction de bruit active" }, { "name": "Mode de connexion", "value": "Sans fil" }, { "name": "Usages", "value": "Nomade" } ], "image": "https://static.fnac-static.com/multimedia/Images/FR/MDM/9e/4c/b3/28527774/1545-1/tsp20260911094610/Casque-circum-auriculaire-sans-fil-JBL-Tune-780NC-Bluetooth-avec-reduction-active-du-bruit-Noir.jpg" }, { "position": 3, "product_id": "17689644", "catalog": 1, "product_code": "a17689644", "offer_id": "d6218cfb-5419-2f3f-17d0-f691ca555d96", "title": "Casque audio sans fil SONY Bluetooth à réduction de bruit WH-CH720N Noir", "url": "https://www.fnac.com/Casque-audio-sans-fil-SONY-Bluetooth-a-reduction-de-bruit-WH-CH720N-Noir/a17689644/w-4?oref=d6218cfb-5419-2f3f-17d0-f691ca555d96", "brand": "Sony", "product_type": "Casque audio", "contributors": null, "price": 72.56, "currency": "EUR", "struck_price": null, "struck_price_type": null, "discount_percent": null, "member_price": null, "member_price_label": null, "store_pickup_price": null, "store_pickup_label": null, "store_pickup_only": false, "store_availability": null, "condition": "new", "condition_grade": null, "seller": { "name": "2KINGS", "id": "ef4cea55-df04-8599-5941-ba9a62c37ad0", "type": "professional", "is_fnac": false }, "fulfilled_by": "2KINGS", "availability": "En stock", "availability_code": 103, "sold_out": false, "rating": 4.5, "rating_count": 522, "rating_scale": 5, "other_offers": [ { "condition": "any", "count": null, "from_price": 72.56 } ], "lowest_new_offer_price": null, "lowest_used_offer_price": null, "badges": null, "highlights": [ { "name": "Isolation Phonique", "value": "Réduction de bruit active" }, { "name": "Mode de connexion", "value": "Sans fil" }, { "name": "Usages", "value": "Nomade" } ], "image": "https://static.fnac-static.com/multimedia/Images/FR/MDM/85/be/44/21282437/1545-1/tsp20260909184744/Casque-audio-sans-fil-SONY-Bluetooth-a-reduction-de-bruit-WH-CH720N-Noir.jpg" } ], "count": 20, "total_results": 11197, "total_pages": 560, "page": 1, "page_size": 20, "sort": "relevance", "sort_applied": "0", "query": "casque bluetooth", "country": "fr", "currency": "EUR", "applied_filters": null, "price_filter_mode": null, "dropped_outside_price_range": 0, "keyword_matches_on_page": 20, "query_recognised": true, "fallback_results_dropped": 0, "sponsored_dropped": 0, "redirected_to": null, "redirect_type": null, "page_notice": null } }
How the Fnac API works
Fnac is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 252 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Search, open the product, then compare every delivered offer
A search row is the buy-box. product/detail opens it in full with every price kept apart; product/offers lists the competing sellers with shipping, so the cheapest delivered offer is visible.
{"query": "casque bluetooth", "sold_by_fnac": true}20 products sold by Fnac itself (358 of 11,228 on 2026-09-16). Take results[].product_id.
{"product_id": "<results[0].product_id>"}EAN, specs, price with the struck 30-day-lowest price and the eco-fee inside it, delivery options, other offers.
{"product_id": "<same>", "sort": "price_asc"}Every seller, ordered by price plus shipping, each with condition and seller rating.
Three calls give the product record, every price kept in its own field, and the cheapest delivered marketplace offer.
curl -X POST https://api.reefapi.com/fnac/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"casque bluetooth"}'{
"ok": true,
"data": { … },
"meta": {
"api": "fnac",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}The price, the struck price, the member price and the pickup price are four different numbers
A Fnac page can show up to four prices for one product. The API keeps each in its own field so a price tracker never compares the wrong two, and it breaks out the fees that are already inside the price.
| Product (storefront) | price | struck_price | other price on the page | included fees |
|---|---|---|---|---|
| Nikon Z f kit (fr) | 2,399 EUR | 2,749 (lowest price over 30 days), -13% | none | eco-participation 0.22 |
| Samsung Mini LED TV 55" (fr) | 569.99 EUR | 629.99 (lowest price over 30 days), -10% | none | eco-participation 17.47 |
| Apple iPhone 18 Pro 256 GB (fr) | 1,479 EUR | null | none | eco-participation 3.07, private-copy levy 14 |
| Strange Academy, grimoire edition (fr, book) | 36 EUR | null | store_pickup_price 34.20 (-5% with store pickup) | none |
| iPhone 16 128 GB (ch) | 799 CHF | null | member_price 759.05 (Prix adhérent) | none |
struck_price is the legal 'lowest price over the last 30 days' when the page says so (struck_price_type lowest_price_30_days) and null when the page strikes nothing. member_price appears only where the storefront prints a separate member number (Switzerland and Portugal); on fnac.com a member-only marketplace deal is a badge ('OFFRE ADHERENT'), and the API does not invent a member number for it.
Which storefronts, which price is which, and what the page does not publish
Measured on 2026-09-16 across 60 live calls in four storefronts, 36 real and 16 nonsense French queries, and 11 products in 6 categories compared with their own pages. Some of these lines go against us.
country fr (fnac.com, EUR), be (fr.fnac.be, EUR), ch (fr.fnac.ch, CHF), pt (fnac.pt, EUR). A pasted URL sets it. Fnac Spain returns MARKET_UNAVAILABLE.
price (what the page sells at, fees included) · struck_price (on fnac.com the legal lowest price of the last 30 days) · member_price (only where the storefront prints one: Switzerland, Portugal) · store_pickup_price (books, -5% with pickup). The eco-participation and private-copy levy inside price are returned apart on product/detail.
Rows count the other new and used offers with their from-prices. product/offers returns each offer with shipping and total; its price sorts follow price plus shipping.
Fnac keeps sold-out products in its grid with an empty price box. Those rows return price null and sold_out true; on a price-descending search on 2026-09-16 that was 8 of 20 rows.
search sort price_asc returns Fnac's own 'lowest price' order, which is not strictly ascending on the shown price (12.99, 9.94, 12.99, 1.19 on 2026-09-16). The API does not reorder it; use price_min/price_max or sort the page yourself.
36 real French queries kept all 720 rows, including iphnoe, televison and harry poter; 16 nonsense queries came back empty, with Fnac's padding counted in fallback_results_dropped.
Products sold only by Fnac, and the Swiss storefront in our checks, return an empty product/offers list with page_notice. product/detail still returns the buy-box offer.
11 products in 6 categories: title, price, EAN, rating and availability matched the product page with 0 mismatches. EAN and specs were present on all 11; brand on 8 (books carry authors instead), a struck price on 5.
What people build with Fnac
The jobs this data is most often used for.
endpoints
credits per call
French, Belgian, Swiss and Portuguese price trackers follow Fnac's price, the struck 30-day-lowest price and, where shown, the member price, each in its own field.
Marketplace sellers watch which competitors list a product on Fnac, their condition, price plus shipping and seller rating, to see when the buy-box is beaten.
Catalog teams pull the EAN, MPN, full specification list, energy class and images for products matched by GTIN, in four storefronts.
Book and media analysts read authors with their roles, store-pickup prices and the new and used offer counts for titles.
What Fnac data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 252 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/fnac/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"casque bluetooth"}'import requests
r = requests.post(
"https://api.reefapi.com/fnac/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "casque bluetooth"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Fnac.
Get a free key →Which storefronts does this cover?▾
Four, chosen with country: fr for fnac.com (EUR, the default), be for fr.fnac.be (EUR), ch for fr.fnac.ch (CHF) and pt for fnac.pt (EUR). A pasted product URL sets the storefront by itself. Product ids are shared across storefronts, but price, stock and sellers differ, and currency follows the storefront. Fnac Spain (fnac.es) returns MARKET_UNAVAILABLE: it is not served.
Which price does a row carry, and what is struck_price?▾
price is the price the page sells at, VAT and fees included. struck_price is the crossed-out number next to it; on fnac.com that is the legal lowest price of the last 30 days (struck_price_type lowest_price_30_days), and discount_percent is the page's own label. When nothing is struck, struck_price is null. The eco-participation and private-copy levy are already inside price; product/detail returns them apart, so never add them on top.
Does the API return the member (adhérent) price?▾
Where the storefront prints one. Fnac Switzerland and Fnac Portugal show a member price next to the standard price on many products; the API returns the standard price as price and the member price apart as member_price with its label. On fnac.com, member-only marketplace deals carry an 'OFFRE ADHERENT' badge without a separate number, so the API returns the badge and leaves member_price null rather than guessing. Books also show a store-pickup price (-5%), returned as store_pickup_price, never as price.
Is a search result the cheapest offer?▾
No. A row is the product's buy-box offer, sold by Fnac or by a marketplace seller, and it tells you how many other new and used offers exist and their from-prices. product/offers lists every offer with price, shipping and total; its price sorts order by price plus shipping. Some marketplace sellers park unavailable stock at 9,999 EUR; those offers are flagged price_looks_placeholder and left in place.
What happens on a keyword Fnac does not know?▾
Fnac answers most made-up keywords with zero results, but some it pads with loosely related products (zzqqxxnonexist returned books whose titles contain 'existe'). When no product on the page carries a query word and the page is not one coherent kind of product, the API returns an empty list, counts the removed rows in fallback_results_dropped and keeps Fnac's count in fallback_total; include_fallback_results returns them apart. Typos Fnac understands keep their results: on 2026-09-16 all 36 real French queries, including iphnoe, televison, harry poter and nintedo switch, kept their pages, and all 16 nonsense queries came back empty.
Why does a search row have no price?▾
Because the product is sold out on that storefront. Fnac keeps sold-out products in the grid with an empty price box and 'Stock épuisé'; the API returns price null and sold_out true instead of inventing a number. On a price-descending search that can be a large share of the page.
Can I read the reviews?▾
Yes. product/reviews returns 10 reviews a page, sortable newest first, most helpful, best or lowest scores, with the score, title, text, the reviewer's display name, the review date, the purchase date when the page states it, a verified-purchase flag and helpful votes, plus the average rating and total count. A page past the last one comes back empty with page_notice.
What is the Fnac API?▾
Fnac API is a ReefAPI endpoint group for fnac france, belgium, switzerland and portugal: prices, member prices, marketplace offers, specs and reviews as json. It returns live JSON through POST requests under /fnac/v1.
Is the Fnac API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Fnac calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Fnac login or account?▾
No login to Fnac 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 Fnac 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 Fnac API use?▾
Fnac actions currently cost 1-3 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Fnac from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call fnac actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Fnac API a Fnac scraper?▾
It is the managed alternative to a DIY Fnac scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same fnac france, belgium, switzerland and portugal: prices, member prices, marketplace offers, specs and reviews as json back as clean JSON.
91 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Fnac, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 251 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-16.