API

Amazon API für amazon.de: Produktdaten und Preise als JSON

Diese API liest amazon.de von der Käuferseite, also das, was ein Kunde im Shop sieht: Titel, Preis in Euro, Sterne, Angebote und Rezensionen. Ein Händler- oder Partnerkonto bei Amazon braucht man dafür nicht. Mit der SP-API für Händler hat das nichts zu tun: Bestellungen, Lagerbestand oder eigene Listings verwaltet man hier nicht. Für deutsche Daten gehört `"marketplace": "de"` in jede Anfrage.

Endpunkte

endpointWas zurückkommtPflicht
searchProduktsuche mit Preisspanne, Mindestbewertung, Angebotsfilter und Marke; sortierbar nach Relevanz, Preis, Bewertung, Neuheit oder Beliebtheit.query
product/detailDie vollständige Produktseite per ASIN: Titel, Preis, Marke, Bullet Points, Bilder, Varianten, technische Daten, A+-Inhalte und die ersten acht Rezensionen.asin
product/offersAlle Angebote zu einem Artikel: das Buy-Box-Angebot und jedes weitere mit Verkäufer, Zustand, Versandort und Lieferung. Bei Multipacks werden Grundpreis und Packungspreis getrennt geliefert.asin
product/reviewsRezensionen eines Artikels: Autor, Sterne, Titel, Datum, Text, Kennzeichen „Verifizierter Kauf“ und Anzahl der „Hilfreich“-Stimmen, dazu Amazons Zusammenfassung „Kunden sagen“, wenn die Seite eine zeigt.asin
product/relatedDie Empfehlungsleisten einer Produktseite, nach Art getrennt („Wird oft zusammen gekauft“, „Kunden, die diesen Artikel angesehen haben…“), jeweils mit ASIN, Preis und Sternen.asin
products_batchViele ASINs in einem Aufruf: Titel, aktueller Preis, Sterne, Bild und Coupon. Das ist die Kurzfassung; technische Daten oder Rezensionen gibt es nur über product/detail. Nicht gefundene ASINs stehen in `not_found`.asins
gtin-to-asinVom Barcode zur ASIN: EAN, UPC oder ISBN übergeben, die passenden Amazon-Listings zurückbekommen. Optional prüft `verify`, ob die Produktseite den Barcode selbst nennt.alle optional
category/browseEine Kategorie über ihre Browse-Node-ID seitenweise durchgehen, wenn man ein ganzes Sortiment braucht und nicht nur Treffer zu einem Suchbegriff.node
bestsellersDie Bestseller-Liste einer Abteilung, bis Rang 100. Auf amazon.de heißen manche Abteilungen anders als auf amazon.com (`ce-de` statt `electronics`).category
new-releasesNeuerscheinungen einer Abteilung, aufgebaut wie die Bestseller-Liste.category
dealsDie aktuellen Angebote von der Angebotsseite: ASIN, Titel, Preis, Bild.alle optional
autocompleteDie Vorschläge, die das Amazon-Suchfeld beim Tippen anzeigt.query
seller/profileDas öffentliche Verkäuferprofil: Name, Anteil positiver Bewertungen, Anzahl der Bewertungen.seller_id
seller/productsDas Sortiment eines Verkäufers, seitenweise.seller_id
seller/reviewsDie Verkäuferbewertungen: Sterne, Text, Bewerter und Datum.seller_id

Jeder Aufruf wird in Credits abgerechnet. Fehlgeschlagene und blockierte Aufrufe sind kostenlos.

Funktionierendes Beispiel

`currency` enthält das Währungszeichen so, wie amazon.de es anzeigt (€); zum Rechnen gibt es daneben `currency_code`. In `campaign` steht, ob der Preis zu einer Aktion wie „Befristetes Angebot“ gehört. Wer Preise trackt, sollte diesen Wert mitspeichern, sonst sieht ein Aktionspreis in der Auswertung aus wie eine dauerhafte Preissenkung.

Anfrage
curl -X POST https://api.reefapi.com/amazon/v1/search \
  -H "x-api-key: IHR_SCHLUESSEL" \
  -H "content-type: application/json" \
  -d '{"query": "kaffeevollautomat", "marketplace": "de", "max_results": 20}'
Antwort (gekürzt)
{
  "ok": true,
  "data": {
    "results": [
      {
        "asin": "B07MMSHC4R",
        "title": "PHILIPS Kaffeevollautomat Panarello 2200 Serie, Schwarz, 2 Spezialitäten",
        "brand": null,
        "price": 244.99,
        "currency": "€",
        "currency_code": "EUR",
        "rating": 4.3,
        "rating_count": 26446,
        "sponsored": false,
        "campaign": null,
        "in_stock": true
      },
      {
        "asin": "B00400OMU0",
        "title": "De'Longhi Magnifica S - Kaffeevollautomat 2 Getränke Schwarz",
        "brand": null,
        "price": 269.0,
        "currency": "€",
        "currency_code": "EUR",
        "rating": 4.5,
        "rating_count": 51384,
        "sponsored": false,
        "campaign": "Befristetes Angebot",
        "in_stock": true
      },
      ...
    ]
  },
  "meta": { "record_count": 20, "marketplace": "de", "currency_code": "EUR", "cache_hit": false, "mode": "live" }
}

Einen Amazon-Scraper in Python selbst schreiben?

Die Captcha-Seite von Amazon kommt mit Statuscode 200. Ein Scraper, der nur auf den Statuscode achtet, hält sie für eine normale Produktseite, findet keinen Titel und schreibt eine leere Zeile in die Datenbank. Hier wird diese Seite erkannt und die Anfrage wiederholt; scheitert sie trotzdem, erhalten Sie einen Fehlercode, und berechnet wird so ein Aufruf nicht.

Nicht hinter jeder ASIN steckt eine klassische Produktseite. Alben aus Digital Music etwa liefert Amazon als reine JavaScript-Anwendung aus; im HTML steht dort nicht einmal ein Produkttitel. Ein eigener Scraper meldet dort „blockiert“ und versucht es immer wieder; diese API antwortet mit NOT_FOUND und dem Hinweis `digital_media`, damit klar ist, dass es dort nichts zu holen gibt.

Dazu kommen die Unterschiede zwischen den Marktplätzen. Die Bestseller-Abteilung `electronics` gibt es auf amazon.de nicht, dort heißt sie `ce-de`. Statt einer leeren Liste kommt dann INVALID_PARAM mit den Abteilungen, die auf amazon.de funktionieren.

Wer einmal ein paar hundert Preise braucht, kommt mit einem eigenen Skript gut zurecht. Sobald daraus ein tägliches Preis-Monitoring wird, steckt die Arbeit nicht mehr im ersten Skript, sondern in genau solchen Sonderfällen.

Grenzen und ehrliche Hinweise

  • Das ist nicht die offizielle Amazon-Schnittstelle, und wir haben keine Partnerschaft mit Amazon.
  • Fehlt `marketplace`, wird amazon.com abgefragt, und die Preise kommen in US-Dollar.
  • Amazon zeigt pro Suchanfrage höchstens 7 Seiten, also maximal 336 Treffer. Für ein ganzes Sortiment ist `category/browse` der richtige Weg.
  • In der Trefferliste bleibt `brand` leer (bei unserer Abfrage 20 von 20); die Marke steht in `product/detail`.
  • Die Filter `prime` und `brand` sind nur Näherungen, weil Amazon dafür keinen verlässlichen Filter anbietet. Für eine strenge Markenauswahl gibt es `brand_exact`.
  • `category/browse` liefert bewusst keine Gesamtzahl: Amazons eigene Trefferzahl schwankt zwischen identischen Anfragen.
  • Antworten werden nicht zwischengespeichert: Was zurückkommt, stand in diesem Moment auf amazon.de.