AliExpress scrapen: Der pragmatische Leitfaden für Dropshipper und Product-Research-Tools

Praxisnaher Guide zum Scrapen von AliExpress — mobile API-Endpoints, Anti-Bot-Umgehung, Variant-SKU-Handling und Scraping-Kadenz für Dropshipping-Tools und Produktrecherche.

AliExpress scrapen: Der pragmatische Leitfaden für Dropshipper und Product-Research-Tools
In diesem Artikel

Warum AliExpress-Scraping anders ist als du denkst

Wenn du AliExpress scrapen willst, steht du vor einer grundlegenden Entscheidung: HTML-Rendering vs. API-Endpoints. Die Desktop-Website liefert server-side gerendertes HTML — langsam, schwer zu parsen, voller A/B-Tests und dynamischer Klassen. Die Mobile-API hingegen liefert sauberes JSON mit mehr Datenfeldern als die Oberfläche überhaupt anzeigt: vollständige SKU-Matrizen, Echtzeit-Shipping-Kosten, Seller-Reputationsscores und Promotions-Flags.

Für Dropshipping-Tools und Product-Research-Startups ist die Antwort klar: Gehe direkt auf die Mobile-API. Du sparst Bandbreite, umgehst einen Großteil des Anti-Bot-Stacks und erhältst strukturiertere Daten. Dieser Guide zeigt dir wie — mit konkreten Endpoints, Rate-Limit-Schwellen und funktionierendem Python-Code.

AliExpress-Seitenstruktur verstehen

Suchergebnisse

Die Suchseite unter aliexpress.com/wholesale?SearchText=... paginiert typischerweise 40–60 Produkte pro Seite. Die Mobile-API liefert kompaktere Ergebnisse mit 20 Items pro Seite, dafür aber mit mehr Metadaten pro Item.

Wichtige CSS/XPath-Selektoren (Desktop-HTML):

  • Produkt-Links: a[href*='/item/']
  • Preis: span[class*='price'] oder div[class*='product-price']
  • Bewertungen: span[class*='rating']
  • Bestellungen: span[class*='order']

Problem: Die Klassen-Namen rotieren regelmäßig. XPath über data-*-Attribute ist stabiler, aber auch nicht garantiert. Deswegen die API-Route.

Produktdetailseiten

Jedes Produkt hat die Form aliexpress.com/item/{itemId}.html. Die Desktop-Seite lädt Produktdaten asynchron via XHR. Die relevanten Endpoints liefern JSON-Objekte mit:

  • Vollständige SKU-Matrix (Farben × Größen mit individuellen Preisen)
  • Shipping-Kosten nach Destination
  • Seller-Statistiken (positive Rate, Antwortzeit, Jahre auf der Plattform)
  • Promotions und Coupons

Store-Seiten

Store-URLs: aliexpress.com/store/{storeId}. Hier findest du alle Produkte eines Sellers, Store-Bewertungen und Store-spezifische Promotions. Für Seller-Reputation-Monitoring unverzichtbar.

Hot-Product-Feeds

AliExpress betreibt mehrere Trend-Feeds: "Top Brands", "SuperDeals", "Choice"-Produkte. Diese Feeds sind für Product-Research besonders wertvoll, da sie bereits vorselektierte, konvertierende Produkte zeigen.

Der Alibaba-Group Anti-Bot-Stack

AliExpress gehört zur Alibaba Group und teilt Infrastruktur mit Taobao, Tmall und Lazada. Der Anti-Bot-Stack ist entsprechend ausgereift:

SchichtTechnologieWas sie prüft
Layer 1AliCAPTCHA / AliVerifySlide-CAPTCHA, Verhaltens-CAPTCHA bei verdächtigen Requests
Layer 2Device FingerprintingCanvas-Fingerprint, WebGL-Renderer, Screen-Auflösung, installierte Fonts
Layer 3TLS Fingerprinting (JA3)Python-Requests, Go-HTTP-Clients und Headless-Browser haben abweichende TLS-Profile
Layer 4Rate Limiting~100–200 Requests/Minute pro IP bei der Such-API, strikter bei Detail-Endpoints
Layer 5Behavioral AnalysisKlickmuster, Scroll-Verhalten, Verweildauer — vor allem auf der Desktop-Seite

Praktische Konsequenz: Datacenter-IPs werden deutlich schneller blockiert als Residential-IPs. Mobile-IPs haben die höchste Toleranz, da AliExpress mobile Traffic-Priorisierung betreibt. Rate-Limits liegen erfahrungsgemäß bei:

  • Desktop-Website: ~50 Requests/Minute/IP, dann CAPTCHA oder 403
  • Mobile-API: ~120–180 Requests/Minute/IP bei Residential-IPs
  • Mobile-API mit Datacenter-IP: ~30–50 Requests/Minute/IP, danach 429 oder 403

Mobile API-Endpoints: Das Goldmine-JSON

Die AliExpress-App kommuniziert über mehrere API-Gateways. Die wichtigsten für Product-Research:

Such-API

GET https://m.aliexpress.com/api/search/product/list.do
    ?keyword=wireless+earbuds
    &page=1
    &pageSize=20
    &sort=ORDERS
    &country=DE

Antwort enthält: itemId, title, price (Min/Max), discountPrice, orders, rating, storeInfo, shippingInfo — alles als sauberes JSON.

Produkt-Detail-API

GET https://m.aliexpress.com/api/product/detail/info.do
    ?productId=3256801234567890
    &country=DE

Liefert die vollständige SKU-Matrix, Shipping-Kosten nach Land, Seller-Reputation und Promotions.

Store-Produkte-API

GET https://m.aliexpress.com/api/store/product/list.do
    ?storeId=91234567
    &page=1
    &pageSize=40

Beispiel-Response (Suche, gekürzt)

{
  "data": {
    "resultList": [
      {
        "itemId": "3256801234567890",
        "title": "Wireless Earbuds TWS Bluetooth 5.3...",
        "price": {"minPrice": 8.99, "maxPrice": 15.99, "discountMinPrice": 5.99},
        "orders": 4521,
        "rating": 4.7,
        "storeInfo": {"storeId": "91234567", "storeName": "TechAudio Store", "positiveRate": 97.2},
        "shippingInfo": {"freeShipping": true, "deliveryDays": {"min": 12, "max": 25}}
      }
    ],
    "totalResults": 84200
  }
}

Hier ein vollständiges Beispiel, das AliExpress über die Mobile-API scrapet — mit ProxyHat Residential Proxies und Session-Rotation:

import requests
import time
import json
from datetime import datetime

PROXY_USER = "user-country-US"
PROXY_PASS = "dein_passwort"
PROXY_URL = f"http://{PROXY_USER}:{PROXY_PASS}@gate.proxyhat.com:8080"

PROXIES = {"http": PROXY_URL, "https": PROXY_URL}

HEADERS = {
    "User-Agent": "AliApp/8.96.2 (iPhone; iOS 17.4; Scale/3.00)",
    "x-ae-app-info": "appVersion=8.96.2;platform=iOS;osVersion=17.4",
    "Accept": "application/json",
    "Accept-Language": "en-US;q=1.0",
}

def search_trending(keyword, country="US", page=1):
    """Search AliExpress mobile API for trending products."""
    url = "https://m.aliexpress.com/api/search/product/list.do"
    params = {
        "keyword": keyword,
        "page": page,
        "pageSize": 20,
        "sort": "ORDERS",  # Sort by order count = trending
        "country": country,
    }
    try:
        resp = requests.get(
            url, params=params, headers=HEADERS,
            proxies=PROXIES, timeout=15
        )
        resp.raise_for_status()
        return resp.json()
    except requests.exceptions.HTTPError as e:
        if e.response.status_code == 429:
            print("Rate limited — rotating IP...")
            time.sleep(2)
            return search_trending(keyword, country, page)
        raise

def extract_products(data):
    """Extract relevant fields from search response."""
    products = []
    for item in data.get("data", {}).get("resultList", []):
        products.append({
            "item_id": item["itemId"],
            "title": item["title"],
            "min_price": item["price"]["minPrice"],
            "max_price": item["price"]["maxPrice"],
            "discount_min": item["price"].get("discountMinPrice"),
            "orders": item.get("orders", 0),
            "rating": item.get("rating", 0),
            "store_id": item["storeInfo"]["storeId"],
            "store_name": item["storeInfo"]["storeName"],
            "positive_rate": item["storeInfo"].get("positiveRate", 0),
            "free_shipping": item.get("shippingInfo", {}).get("freeShipping", False),
            "scraped_at": datetime.utcnow().isoformat(),
        })
    return products

# --- Main: Discover trending wireless earbuds ---
all_products = []
for page in range(1, 6):  # 5 pages = ~100 products
    print(f"Scraping page {page}...")
    data = search_trending("wireless earbuds", country="DE", page=page)
    products = extract_products(data)
    all_products.extend(products)
    time.sleep(1.5)  # Respect rate limits between pages

print(f"Total products scraped: {len(all_products)}")
print(json.dumps(all_products[:3], indent=2))

Wichtig: Die user-country-US-Flag im Proxy-Usernamen routet den Traffic durch US-Residential-IPs. Für den deutschen Markt verwendest du user-country-DE — so siehst du die gleichen Preise und Shipping-Optionen wie deine Zielkunden.

Variant-SKUs, Shipping-Kosten und Seller-Reputation verarbeiten

Variant-SKUs parsen

Die Detail-API liefert eine SKU-Matrix, die alle Kombinationen aus Farbe, Größe, Material etc. enthält. Jede SKU hat einen eigenen Preis und eine eigene Verfügbarkeit:

def parse_sku_matrix(product_detail):
    """Parse variant SKUs from product detail response."""
    skus = []
    sku_data = product_detail.get("data", {}).get("skuInfo", {})
    
    # Property definitions (e.g., Color: [Black, White])
    props = sku_data.get("skuProps", [])
    prop_map = {}
    for prop in props:
        prop_map[prop["propId"]] = {
            "name": prop["propName"],
            "values": {v["propValueId"]: v["propValueName"] for v in prop["values"]}
        }
    
    # Individual SKU entries
    for sku in sku_data.get("skuList", []):
        variant = {}
        for prop_id, value_id in sku.get("propPath", {}).items():
            prop_name = prop_map.get(prop_id, {}).get("name", prop_id)
            value_name = prop_map.get(prop_id, {}).get("values", {}).get(value_id, value_id)
            variant[prop_name] = value_name
        
        skus.append({
            "sku_id": sku["skuId"],
            "variant": variant,
            "price": sku.get("skuPrice", {}).get("salePrice", {}),
            "stock": sku.get("skuStock", 0),
            "available": sku.get("skuStock", 0) > 0,
        })
    
    return skus

Für Dropshipping-Tools ist das kritisch: Du musst wissen, welche Varianten verfügbar sind und zu welchem Preis. Oft ist die günstigste Variante (z.B. "schwarz, ohne Zubehör") ausverkauft, während teurere Varianten noch lieferbar sind — das beeinflusst deine Margenberechnung erheblich.

Shipping-Kosten nach Destination

Die Detail-API liefert Shipping-Optionen pro Zielland:

def extract_shipping_costs(product_detail, destination="DE"):
    """Extract shipping costs for a specific destination."""
    shipping = product_detail.get("data", {}).get("shippingInfo", {})
    options = []
    for method in shipping.get("shippingList", []):
        if method.get("country", "") == destination or destination is None:
            options.append({
                "carrier": method.get("company", ""),
                "cost": method.get("freight", {}).get("amount", 0),
                "currency": method.get("freight", {}).get("currency", "USD"),
                "delivery_days_min": method.get("deliveryTime", {}).get("min", 0),
                "delivery_days_max": method.get("deliveryTime", {}).get("max", 0),
                "tracking": method.get("isTracking", False),
            })
    return sorted(options, key=lambda x: x["cost"])

Tipp: Verwende den Proxy mit user-country-DE, um die für deutsche Kunden relevanten Shipping-Preise zu sehen. AliExpress variiert die Shipping-Optionen je nach Herkunftsland der Anfrage.

Seller-Reputation bewerten

Die wichtigsten Seller-Metriken aus der API:

  • positiveRate: Anteil positiver Bewertungen (Ziel: >95%)
  • responseRate: Antwortrate auf Nachrichten (Ziel: >90%)
  • responseTime: Durchschnittliche Antwortzeit in Stunden
  • yearsOnPlatform: Jahre seit Store-Eröffnung
  • sellerScore: Aggregierter Score (0–100)

Für Dropshipping-Tools empfiehlt sich ein Mindest-Filter: positiveRate >= 95 AND orders >= 500 AND yearsOnPlatform >= 2.

Proxy-Strategie für AliExpress

Nicht alle Proxies sind für AliExpress gleich geeignet. Hier der Vergleich:

Proxy-TypRate-Limit-ToleranzCAPTCHA-RisikoDatenqualitätKostenEinsatz
DatacenterNiedrig (~30-50 Req/Min)HochPreise für falsche RegionNiedrigBulk-Monitoring, nicht zeitkritisch
ResidentialMittel (~120-180 Req/Min)NiedrigRegionsspezifisch korrektMittelProduct-Research, Preisüberwachung
MobileHoch (~200+ Req/Min)Sehr niedrigBeste Übereinstimmung mit App-DatenHöherHochvolumige API-Scrapes, Trend-Feeds

Für die meisten Dropshipping-Tools sind Residential Proxies mit Geo-Targeting der beste Kompromiss. Sie liefern regionsspezifische Preise und Shipping-Optionen, während sie ausreichend Rate-Limit-Toleranz bieten.

ProxyHat bietet Residential Proxies mit Land- und Stadt-Targeting:

# Germany residential proxy for accurate DE prices/shipping
http://user-country-DE:pass@gate.proxyhat.com:8080

# Berlin-specific targeting for local delivery estimates  
http://user-country-DE-city-berlin:pass@gate.proxyhat.com:8080

# Sticky session for multi-page product detail scraping
http://user-country-DE-session-prod123:pass@gate.proxyhat.com:8080

Sticky Sessions sind wichtig, wenn du mehrere API-Calls für dasselbe Produkt machst (Suche → Detail → Shipping). Mit user-session-abc123 behältst du dieselbe IP für bis zu 30 Minuten — das verhindert, dass AliExpress deine Requests als Bot-Verhalten erkennt.

Datenfrische und Scraping-Kadenz

Wie oft ändern sich AliExpress-Daten? Hier die empirischen Werte:

  • Preise: Können sich mehrfach täglich ändern — Promotions starten/enden, dynamische Preisgestaltung je nach Nachfrage
  • Lagerbestand: Bei Trend-Produkten stündlich; bei Nischenprodukten täglich
  • Bestellzahlen: Inkrementell, aber AliExpress rundet und aktualisiert asynchron (Verzögerung: 1–6 Stunden)
  • Shipping-Kosten: Relativ stabil, ändern sich wöchentlich oder bei Carrier-Updates
  • Seller-Reputation: Aktualisiert täglich

Empfohlene Scraping-Kadenz:

  • Preisüberwachung: Alle 2–4 Stunden für Top-Produkte, alle 6–12 Stunden für Long-Tail
  • Trend-Entdeckung: 1–2x täglich (morgens und abends)
  • Lagerbestand: Alle 4–6 Stunden für kritische Produkte
  • Seller-Monitoring: Täglich

Bei einer Produktdatenbank von 10.000 SKUs und einer Kadenz von 4 Stunden brauchst du ~2.500 Requests pro Zyklus. Bei 6 Zyklen pro Tag sind das 15.000 Requests/Tag — mit Residential Proxies und vernünftiger Rate-Limiting absolut machbar.

Ethische und rechtliche Überlegungen

  • robots.txt: AliExpress verbietet Scraping in der robots.txt. Prüfe die aktuelle robots.txt und bewerte das Risiko für deinen Use Case.
  • ToS: AliExpress' Nutzungsbedingungen untersagen automatisierten Datenzugriff. Rechne mit möglichen IP-Sperren.
  • GDPR/DSGVO: Personenbezogene Daten (Seller-Namen, Bewertungen) unterliegen europäischem Datenschutzrecht, wenn du EU-Nutzer bedienst.
  • Rate-Limiting: Halte dich an 120–180 Requests/Minute pro IP. Aggressives Scraping schadet allen.
  • Datenverwendung: Verkaufe keine Rohdaten weiter, ohne AliExpress' Einwilligung. Für interne Product-Research ist das Risiko überschaubarer.

Key Takeaways

1. Mobile-API über HTML. Die AliExpress-Mobile-API liefert sauberes JSON mit mehr Datenfeldern und ist robuster gegen Layout-Änderungen.

2. Residential Proxies mit Geo-Targeting. Nutze user-country-DE für korrekte Preise und Shipping-Kosten. Mobile Proxies für maximale Rate-Limit-Toleranz.

3. SKU-Matrix verstehen. Die günstigste Variante ist oft ausverkauft — parse die vollständige SKU-Matrix für korrekte Margenberechnung.

4. Kadenz nach Datenfrische wählen. Preise ändern sich stündlich, Shipping wöchentlich. Passe deine Scraping-Frequenz entsprechend an.

5. Sticky Sessions für Multi-Step-Scrapes. Verwende user-session-* für zusammenhängende Requests, um Bot-Erkennung zu vermeiden.

Bereit, AliExpress-Daten professionell zu scrapen? Starte mit ProxyHat Residential Proxies und teste die Mobile-API mit dem Code aus diesem Guide. Bei Fragen zur Integration oder zu spezifischen Endpoints schau dir unsere Web-Scraping-Use-Cases an.

Häufig gestellte Fragen

Ist es legal, AliExpress zu scrapen?

AliExpress verbietet automatisierten Datenzugriff in seinen Nutzungsbedingungen und in der robots.txt. Technisch ist Scraping möglich, verstößt aber gegen die ToS. Für interne Product-Research ist das Risiko überschaubar, aber du solltest keinen Datenverkauf betreiben. Halte dich an Rate-Limits und nutze Residential Proxies, um die Server nicht zu überlasten.

Welche Proxy-Art ist am besten für AliExpress?

Residential Proxies mit Geo-Targeting sind der beste Kompromiss für AliExpress. Sie bieten ausreichend Rate-Limit-Toleranz (120–180 Requests/Minute) und zeigen regionsspezifische Preise und Shipping-Optionen. Mobile Proxies haben die höchste Toleranz, sind aber teurer. Datacenter-IPs werden schnell blockiert.

Wie oft ändern sich AliExpress-Preise?

AliExpress-Preise können sich mehrfach täglich ändern — insbesondere während Promotions (11.11, Black Friday). Dynamische Preisgestaltung je nach Nachfrage und Region ist üblich. Für Preisüberwachung empfiehlt sich eine Kadenz von 2–4 Stunden für Top-Produkte und 6–12 Stunden für Long-Tail-Artikel.

Wie umgehe ich AliExpress-CAPTCHAs beim Scrapen?

Die effektivste Strategie ist Vermeidung statt Lösung: Nutze Residential oder Mobile Proxies, halte dich an Rate-Limits (max. 120–180 Requests/Minute pro IP), verwende Mobile-App-Header und rotiere IPs bei ersten Anzeichen von CAPTCHAs. Sticky Sessions helfen bei Multi-Step-Scrapes. CAPTCHA-Solving-Services sind teuer und verlangsamen den Prozess erheblich.

Was ist der Unterschied zwischen AliExpress Desktop-HTML und Mobile-API?

Die Desktop-Website liefert server-side gerendertes HTML mit dynamischen Klassen, A/B-Tests und versteckten Daten. Die Mobile-API liefert sauberes JSON mit mehr Datenfeldern: vollständige SKU-Matrizen, Echtzeit-Shipping-Kosten, Seller-Reputationsscores und Promotions. Die API ist stabiler gegen Layout-Änderungen und benötigt weniger Bandbreite.

Preise und Wettbewerber verfolgen, ohne blockiert zu werden

Zuverlässige Residential-Proxys für E-Commerce-Daten. Registriere dich und hol dir saubere Daten.

Loslegen
← Zurück zum Blog