API Amazon.fr : suivre les prix, les offres et les avis d'un produit en JSON
Suivre un prix sur amazon.fr demande plus que le chiffre affiché en haut de la fiche : il y a l'offre mise en avant, les autres vendeurs, l'occasion d'Amazon Seconde main, le badge « Offre à durée limitée ». Cette API lit amazon.fr comme un client non connecté et renvoie tout cela en JSON, prix en euros. Elle ne remplace pas les API d'Amazon : la SP-API sert aux vendeurs à gérer commandes, stock et annonces, et l'API Product Advertising est réservée aux membres du Partenariat Amazon. Ici, ni compte vendeur ni compte Partenaires : l'API se contente de lire, et ne modifie rien chez Amazon. Pour interroger amazon.fr, ajoutez `"marketplace": "fr"` à chaque appel.
Endpoints
| endpoint | Ce qui est renvoyé | Obligatoires |
|---|---|---|
| search | Recherche par mot-clé avec fourchette de prix, note minimale, offres du moment et marque ; tri par pertinence, prix croissant ou décroissant, avis, nouveautés ou popularité. Avec `max_results`, les pages suivantes sont lues dans le même appel, jusqu'à la 7e : Amazon ne sert rien au-delà. | query |
| product/detail | La fiche par ASIN : titre, prix, prix barré, marque, points clés, images, variantes, caractéristiques techniques, contenu A+ et les huit premiers avis. | asin |
| product/offers | L'offre mise en avant et toutes les autres : prix, vendeur, état (neuf ou d'occasion, avec le niveau), expéditeur et texte de livraison. Sur un lot, le prix unitaire est séparé du prix du pack. | asin |
| product/reviews | Les avis d'un produit : auteur, note, titre, date, texte, mention « Achat vérifié » et votes utiles, plus le résumé « Les clients disent » quand la page en affiche un. | asin |
| product/related | Les carrousels de recommandations de la fiche, groupés par type (achetés ensemble, vus ensemble…), avec ASIN, prix et note. | asin |
| products_batch | Jusqu'à 40 ASIN en un appel, en version courte : titre, prix, note, image, coupon. Un ASIN qu'Amazon ne renvoie pas est signalé dans `not_found` au lieu de disparaître. | asins |
| gtin-to-asin | D'un code-barres EAN, UPC ou ISBN vers l'ASIN correspondant ; les résultats sponsorisés ne comptent pas, et `verify` vérifie que la fiche affiche bien ce code. | tous optionnels |
| category/browse | Parcourir un rayon page par page à partir de son identifiant de nœud, pour un assortiment entier plutôt qu'une recherche. | node |
| bestsellers | Le classement des meilleures ventes d'un rayon, jusqu'à la 100e place. | category |
| new-releases | Les nouveautés d'un rayon, même format que les meilleures ventes. | category |
| deals | Les offres de la page des promotions : ASIN, titre, prix, prix de référence et pourcentage de réduction. | tous optionnels |
| autocomplete | Ce qu'Amazon propose sous la barre de recherche pendant la frappe. | query |
| seller/profile | Le profil public d'un vendeur tiers : nom, part d'évaluations positives, nombre d'évaluations. | seller_id |
| seller/products | Tous les produits proposés par un vendeur tiers, page après page. | seller_id |
| seller/reviews | Ce que les acheteurs ont écrit sur un vendeur tiers : note, commentaire, auteur et date. | seller_id |
Chaque appel est facturé en crédits. Les appels en échec ou bloqués sont gratuits.
Exemple qui fonctionne
Le 27 octobre 2026, la De'Longhi Magnifica S était à 279,99 € dans l'offre mise en avant, expédiée par Amazon. Parmi les 10 autres offres, la moins chère, à 260,08 €, venait d'Amazon Seconde main en état « D'occasion - Bon ». Un relevé qui garde seulement le prix le plus bas compare donc du neuf à de l'occasion : lisez `condition` avant toute comparaison. Le texte de `delivery` est celui de la page, compte à rebours compris. Et `pinned.seller` vaut « Vendeur » au lieu d'un nom : c'est un défaut connu sur amazon.fr, détaillé dans les limites.
curl -X POST https://api.reefapi.com/amazon/v1/product/offers \
-H "x-api-key: VOTRE_CLE" \
-H "content-type: application/json" \
-d '{"asin": "B00400OMU0", "marketplace": "fr"}'{
"ok": true,
"data": {
"pinned": {
"price": 279.99,
"total_price": 279.99,
"currency": "€",
"currency_code": "EUR",
"seller": "Vendeur",
"ships_from": "Amazon",
"condition": "Neuf",
"delivery": "Livraison GRATUITE vendredi 30 octobre . Commandez dans les 11 h 53 min . Détails ... Afficher plus",
"prime": false
},
"offer_count": 10,
"offers": [
{
"price": 260.08,
"total_price": 260.08,
"currency_code": "EUR",
"seller": "Amazon Seconde main",
"ships_from": "Amazon",
"condition": "D'occasion - Bon",
"prime": false
},
{
"price": 309.0,
"currency_code": "EUR",
"seller": "...",
"ships_from": "Amazon",
"condition": "Neuf"
},
{
"price": 315.45,
"currency_code": "EUR",
"seller": "...",
"ships_from": "...",
"condition": "Neuf",
"delivery": "Livraison GRATUITE 27 - 30 novembre lors de votre première commande. Détails ... Afficher plus"
},
...
]
},
"meta": { "record_count": 11, "marketplace": "fr", "currency_code": "EUR", "cache_hit": false, "mode": "live" }
}Un scraper Amazon en Python : les champs remplis… avec la mauvaise valeur
Premier piège, le prix barré. Sur la fiche, Amazon donne les mêmes classes CSS au prix de référence et au prix à l'unité (au kilo, au litre, à la pièce), qu'il affiche d'ailleurs en premier ; une autre classe sert à la fois au prix d'achat ponctuel du bloc « Prévoyez et Économisez » et au prix du neuf rappelé sur la ligne d'occasion. Notre propre `list_price` s'y est fait prendre : mesuré sur 68 fiches avant la correction du 8 octobre 2026, il contenait 39 fois un prix unitaire et 5 fois le prix d'un abonnement Kindle Unlimited. Après correction, les 29 valeurs encore publiées sur ces mêmes fiches portaient toutes l'étiquette de prix de référence de la page, et le champ reste null quand la page n'en affiche pas.
Le titre aussi a bougé. Vers le 1er septembre 2026, Amazon a scindé le titre des cartes de recherche en deux lignes, la marque d'un côté et le produit de l'autre. Un sélecteur qui prend le premier titre trouvé récupère la marque : sur une recherche « nike », les 48 cartes s'intitulaient « Nike ». La correction a été vérifiée sur 524 cartes d'amazon.com, .co.uk, .de, .fr et .co.jp.
Troisième exemple, la recherche par code-barres : pour un code qu'Amazon ne vend pas, toutes les cartes sont sponsorisées, et le premier résultat est donc une publicité. Sur 8 correspondances relevées par un client, 6 étaient des annonces. `gtin-to-asin` ne retient désormais que les résultats organiques.
Télécharger une page Amazon est la partie facile. La partie difficile consiste à s'apercevoir qu'une colonne bien remplie contient autre chose que ce que dit son nom : aucun de ces trois défauts ne produisait la moindre erreur.
Autres documentations en français
- leboncoin API — documentation
- Carrefour API — documentation
- Rakuten API — documentation
- Cdiscount API — documentation
- Fnac API — documentation
- AliExpress API — documentation
- Mubawab API — documentation
- API Vinted — annonces de vinted.fr
- idealo.fr API — documentation
- Cardmarket API — documentation
- AutoScout24 API — documentation (autoscout24.fr)
- Moteur.ma API — documentation
- API eBay (ebay.fr) — prix et enchères
- API Temu — vitrine française
- API Catawiki — enchères et prix de réserve
- API Avito.ma (Maroc) — annonces et prix en DH
- API Automobile.tn — neuf et occasion
Limites et remarques honnêtes
- Amazon n'édite ni n'approuve ce service : l'accès est non officiel, sans contrat ni partenariat avec Amazon.
- Sur amazon.fr, `pinned.seller` renvoie le libellé « Vendeur » au lieu du nom du vendeur de l'offre mise en avant (2 fiches sur 2 le 27 octobre 2026). Les noms sont corrects dans `offers`. `ships_from` désigne l'expéditeur, pas le vendeur : il ne suffit pas à savoir si l'offre principale est vendue par Amazon.
- Le prix peut manquer sur une carte de recherche. Pour « aspirateur balai sans fil », 16 lignes sur 20 sont revenues avec `price: null` au premier appel, puis 1 sur 20 au second ; « machine à café grains » n'en avait aucune. Traitez null comme une donnée absente et relisez le produit avec `product/offers` ou `products_batch`.
- `brand` était vide sur les 60 cartes de nos trois recherches sur amazon.fr ; pour la marque, passez par `product/detail`.
- `prime` valait false sur les 22 offres de nos deux appels, y compris celles expédiées par Amazon : ce champ ne permet pas de repérer les offres Prime.
- Pas d'historique de prix dans les réponses, amazon.fr n'en affichant pas. Une courbe de prix se construit en stockant vous-même chaque relevé avec sa date.
- Oublier `marketplace` renvoie les données d'amazon.com, prix en dollars.
- Coût : `search`, `bestsellers` et `new-releases` 1 crédit par page de résultats lue ; `product/detail` et `product/offers` 2 crédits ; `products_batch` 10 crédits ; `product/reviews` et `seller/reviews` 1 crédit par tranche de 25 avis ; les autres actions 1 crédit par appel.