Fnac API

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).

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Fnac endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
F
/fnac/v1

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.

4 endpoints

search

3 cr

Search a Fnac storefront by keyword with the site's own sorts and filters (price range, sold…

required
query
optional
country, page, sort, price_min, price_max, sold_by_fnac, include_fallback_results, max_rotations

product/detail

2 cr

The Fnac product record by URL or product_id.

required
optional
url, product_id, country, max_rotations

product/offers

1 cr

Every offer for one product (Fnac/Darty and marketplace sellers, new and used), by URL or pro…

required
optional
url, product_id, country, condition, sort, page, max_rotations

product/reviews

2 cr

Customer reviews for a product, by URL or product_id, paged and sortable.

required
optional
url, product_id, country, sort, page, max_rotations

Every parameter, every allowed value →

Fnac API

3 of 4 endpoints, ready to run

View docs ↗

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.

3 credits1 required · 6 optional
POST/fnac/v1/search
ok7292 ms · 20 records · sample
{
  "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
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows. Press Try it for the untrimmed response.

How the Fnac API works

Fnac is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 252 engines.

02
Call
POST /fnac/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 or 3 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

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.

01search
POST/fnac/v1/search
{"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.

02detail
POST/fnac/v1/product/detail
{"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.

03offers
POST/fnac/v1/product/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.

request
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"}'
response envelope
{
  "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)pricestruck_priceother price on the pageincluded fees
Nikon Z f kit (fr)2,399 EUR2,749 (lowest price over 30 days), -13%noneeco-participation 0.22
Samsung Mini LED TV 55" (fr)569.99 EUR629.99 (lowest price over 30 days), -10%noneeco-participation 17.47
Apple iPhone 18 Pro 256 GB (fr)1,479 EURnullnoneeco-participation 3.07, private-copy levy 14
Strange Academy, grimoire edition (fr, book)36 EURnullstore_pickup_price 34.20 (-5% with store pickup)none
iPhone 16 128 GB (ch)799 CHFnullmember_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.

Four storefronts, one parameter

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.

Four prices, four fields

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.

A row is the buy-box, not the cheapest offer

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.

Against us: sold-out products have no price

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.

Against us: Fnac's lowest-price sort is not in price order

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.

Made-up keywords are empty, typos keep their results

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.

Against us: some storefronts have no marketplace offer list

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.

Checked against the product page

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.

4

endpoints

1/2/3

credits per call

01

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.

02

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.

03

Catalog teams pull the EAN, MPN, full specification list, energy class and images for products matched by GTIN, in four storefronts.

04

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 →
$0.67–$1.50 / 1,000 credits
  • 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
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"}'
python
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"])
FAQ

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.

0/4000

No account needed · we reply from [email protected]

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.