← Alle Artikel

Amazon-Preise scrapen: das Plugin und die Spider Cloud

Es gibt zwei Wege, an Amazon-Preisdaten zu kommen, und welchen du brauchst, hängt vom Volumen ab. Für eine Produktseite oder eine Stichwortsuche liefert das Amazon-Plugin alles als sauberes JSON in einem einzigen Aufruf. Für Millionen von Seiten nach Zeitplan lässt du dein eigenes Scrapy-Spider in unserer Spider Cloud laufen, wobei jede Anfrage bereits über dieselbe Anti-Bot-API geleitet wird. Diese Anleitung deckt beides ab - und zeigt, wo die Grenze zwischen ihnen verläuft.

Zwei Probleme versenken die meisten Amazon-Preis-Scraper, und es hilft, sie zu benennen, bevor man Code schreibt:

  1. Die Bot-Wall. Eine einfache HTTP-Anfrage an eine /dp/-Produktseite bekommt Amazons “Robot Check” oder einen 503, nicht den Preis. Du brauchst einen echten Browser-Fingerprint und eine saubere Exit-IP, rotiert.
  2. Die Währung. Diese ist leiser und erwischt viele. Amazon bepreist jede Seite in der Währung des Lieferorts, den es aus deiner Exit-IP ableitet. Scrape amazon.com von einem beliebigen Rechenzentrum in Dänemark, und der Preis kommt in DKK zurück - oder du bekommst eine “kann nicht an deinen Standort geliefert werden”-Seite ganz ohne Preis. Der Scrape hat “funktioniert”, nur ist die Zahl falsch.

Das Plugin löst beides für dich. Fangen wir dort an.

Ein Amazon-Produkt als JSON scrapen

Der Produkt-Endpunkt nimmt eine ASIN (oder eine vollständige Produkt-URL) und liefert die Felder, die man wirklich will: Titel, Marke, Preis und Währung, Listenpreis und Rabatt, Verfügbarkeit, Bewertung, Anzahl der Rezensionen, Verkäufer, Stichpunkt-Merkmale, Kategorien und Bilder.

curl -X POST "https://api.scrapeunblocker.com/marketplace/amazon-product?asin=B0BSHF7WHW&marketplace=amazon.com" \
  -H "x-scrapeunblocker-key: YOUR_API_KEY"
{
  "asin": "B0BSHF7WHW",
  "title": "Apple 2023 MacBook Pro Laptop M2 Pro chip",
  "brand": "Apple",
  "price": 1999.00,
  "currency": "USD",
  "listPrice": 2499.00,
  "savingsPercent": 20,
  "availability": "In Stock",
  "inStock": true,
  "rating": 4.7,
  "reviewCount": 386,
  "images": ["https://m.media-amazon.com/images/I/61fd2oCrvyL.jpg"]
}

Beachte, dass die Währung USD ist, nicht das, was die Exit-IP zufällig war. Das ist der Punkt: proxy_country nimmt standardmäßig das Heimatland des Marktplatzes - amazon.com zu US, amazon.de zu DE, amazon.co.uk zu GB - und die Anfrage wird auf einen ISP-Exit in diesem Land festgelegt. Der Preis ist in der Währung, die deine Nutzer erwarten, ohne jede Konfiguration. Wenn du eine bestimmte Lieferregion willst, übergib proxy_country selbst.

Amazon per Stichwort durchsuchen

Der Such-Endpunkt nimmt ein Stichwort und liefert die Ergebniskarten - ASIN, Titel, Preis, Listenpreis, Bewertung, Anzahl der Rezensionen, eine saubere Produkt-URL und die Sponsored- / Prime-Flags. Das ist die Entdeckungshälfte: suchen, um ASINs zu bekommen, und dann jedes Detail über den Produkt-Endpunkt abrufen.

import requests

BASE = "https://api.scrapeunblocker.com/marketplace"
HEAD = {"x-scrapeunblocker-key": "YOUR_API_KEY"}

# Produkte finden, günstigste zuerst
search = requests.post(
    f"{BASE}/amazon-search",
    params={"keyword": "wireless headphones", "sort": "price_asc"},
    headers=HEAD, timeout=180,
).json()

for card in search["results"][:5]:
    print(card["asin"], card["price"], card["currency"], card["rating"])

# Dann das vollständige Produkt für das günstigste abrufen
top = search["results"][0]["asin"]
product = requests.post(
    f"{BASE}/amazon-product",
    params={"asin": top},
    headers=HEAD, timeout=180,
).json()
print(product["title"], product["priceRaw"], product["availability"])

Du kannst mit min_price / max_price filtern, nach price_asc, price_desc, avg_review oder newest sortieren und mit page blättern. Einige Karten kommen mit price: null zurück - das ist Amazon, das den Preis auf der Suchseite aufschiebt, oder ein Artikel, der nur Kaufoptionen zeigt. Diese Karten bleiben in der Liste, statt verworfen zu werden, damit du immer die volle Seite siehst.

Mit einem SDK

Jedes offizielle SDK stellt beide Methoden bereit, sodass du die Anfrage nicht selbst baust:

// Node.js
const product = await su.amazonProduct({ asin: "B0BSHF7WHW" });
const results = await su.amazonSearch("wireless headphones", { sort: "price_asc" });
# Python
product = su.amazon_product(asin="B0BSHF7WHW")
results = su.amazon_search("wireless headphones", sort="price_asc")

Ruby (amazon_search) und PHP (amazonSearch) haben dasselbe Paar. Alle legen den Exit auf das Land des Marktplatzes fest, sodass die Währung gleich behandelt wird.

Wenn du Skalierung brauchst: ein Spider in der Cloud

Das Plugin ist das richtige Werkzeug für eine Produktseite, eine Suche, eine Preisprüfung, ein Dashboard, das ein paar tausend SKUs aktualisiert. Wenn du in Hunderttausende oder Millionen von Seiten nach Zeitplan übergehst - eine ganze Kategorie täglich verfolgt, der komplette Katalog eines Konkurrenten, Preisverlauf über jeden Marktplatz - willst du einen Crawler, keine Aufruf-Schleife. Dafür ist die Spider Cloud da.

Sie lässt dein eigenes Scrapy-Projekt auf unserer Infrastruktur laufen, und das Wichtige für Amazon ist, dass jede Anfrage bereits durch dieselbe Anti-Bot-API geht, die das Plugin nutzt. Du schreibst normales Scrapy - Spiders, Items, Pipelines - und die Bot-Wall und die Exit-Rotation werden darunter erledigt. Du baust kein Proxy-Management, keine Retry-Logik, kein Fingerprinting; du schreibst das Parsing.

Ein minimaler Amazon-Preis-Spider sieht aus wie jeder andere Scrapy-Spider:

import scrapy

class AmazonPriceSpider(scrapy.Spider):
    name = "amazon_prices"

    def start_requests(self):
        for asin in self.settings.get("ASINS", []):
            yield scrapy.Request(
                f"https://www.amazon.com/dp/{asin}",
                meta={"asin": asin},
            )

    def parse(self, response):
        price = response.css("#corePriceDisplay_desktop_feature_div "
                             ".a-price-whole::text").get()
        yield {
            "asin": response.meta["asin"],
            "title": response.css("#productTitle::text").get(default="").strip(),
            "price": price,
            "scraped_at": self.crawler.stats.get_value("start_time"),
        }

Du deployst ihn mit einem Befehl aus dem Projektstamm:

su-cloud deploy --notes "amazon price spider"

Der schnellste Weg dorthin ist unser Spider-Cloud-Starter-Template auf GitHub - ein sofort lauffähiges Scrapy-Projekt mit einem funktionierenden Beispiel-Spider und dem kompletten Ablauf deploy -> run -> Daten lesen, bereits fertig verdrahtet. Klick auf Use this template, trag deinen Token ein, und du hast in wenigen Minuten einen Spider in der Cloud laufen; danach tauschst du das Beispiel gegen deinen Amazon-Spider.

Von dort kaufst du die Parallelität, die du brauchst, legst einen Zeitplan fest (täglich, stündlich) und liest die Items als JSON, während der Job noch läuft. Jobs, Logs, Live-Item-Zähler und Statistiken sind alle im Dashboard. Die Spider Cloud ist unser eigenes Äquivalent eines gehosteten Scrapy-Dienstes, mit der Anti-Bot-Schicht eingebaut statt angeflanscht - dieselbe Schicht, egal ob du das Plugin aufrufst oder einen Spider hindurch laufen lässt.

Welches solltest du nehmen?

  • Ein Produkt, eine Suche, eine Preisprüfung, ein bescheidenes Dashboard - das Plugin. Ein Aufruf, JSON zurück, richtige Währung, keine Infrastruktur.
  • Ein ganzer Katalog, eine nach Zeitplan verfolgte Kategorie, Preisverlauf über Millionen von Seiten - ein Scrapy-Spider in der Spider Cloud. Du schreibst den Crawl; wir übernehmen das Blocking und die Skalierung.

Beide lesen dieselben Seiten, die ein Käufer sieht, mit deinem ScrapeUnblocker-Schlüssel und sonst nichts - kein Selling-Partner-Konto, keine Product-Advertising-API-Freigabe, keine Affiliate-Bindung. Starte mit dem Plugin im Dashboard und greif zur Cloud, wenn das Volumen es verlangt.

ScrapeUnblocker kostenlos testen

Über 95 % Erfolgsquote · ab 0,55 € pro 1.000 Aufrufe · 500 kostenlose Anfragen bei der Registrierung.

Kostenlos testen → Preise ansehen