API

AliExpress API: ceny w złotówkach, warianty i dostawa do Polski w JSON

Oficjalne API AliExpress (programy Affiliate i Dropshipping) są przeznaczone dla zarejestrowanych partnerów i sprzedawców. Tutaj chodzi o coś innego: o to, co widzi zwykły kupujący z Polski. Cena w złotych, warianty z osobną ceną i stanem, termin dostawy i kraj, z którego wyjdzie paczka, trafiają do jednego obiektu JSON. Rynek ustawiają trzy niezależne parametry: `"country": "PL"` (kraj dostawy), `"currency": "PLN"` i `"language": "pl"`. Dla karty produktu warto dodać `province`, czyli województwo: od niego zależy wyliczenie dostawy.

Endpointy

endpointCo zwracaWymagane
searchWyszukiwanie po frazie, także polskiej: cena, rabat w procentach, liczba sprzedanych, ocena, oznaczenie reklamy (`product_type: "ad"`) i etykiety promocji (`promo_tags`), m.in. najniższa cena z 30 dni. Filtry: cena minimalna i maksymalna, kraj wysyłki (`ship_from`, np. PL), darmowa dostawa; sortowanie wg trafności, liczby zamówień, ceny lub nowości.query
product_detailWszystko z karty produktu — wystarczy `product_id` albo adres: polski tytuł i parametry, cena i stan każdego wariantu (SKU), zdjęcia, wideo, sklep, ocena, kupony oraz dostawa do wskazanego kraju i województwa z terminem i krajem nadania.wszystkie opcjonalne
reviewsOpinie kupujących, do 20 stron w jednym wywołaniu, z rozkładem ocen; filtr `image` zostawia tylko opinie ze zdjęciami.wszystkie opcjonalne
similarProdukty podobne do wskazanego (bez niego samego) albo do podanych słów kluczowych.wszystkie opcjonalne
descriptionDługi opis sprzedawcy: tekst i obrazki.wszystkie opcjonalne
shippingOpcje dostawy do wybranego kraju: przewoźnik, koszt i termin.wszystkie opcjonalne
store_infoProfil sklepu, a po dodaniu frazy, którą sklep sprzedaje, także wskaźniki sprzedawcy: ocena, odsetek pozytywnych opinii, liczba opinii.wszystkie opcjonalne
dealsPrzecenione produkty dla danej frazy, z opcjonalnym minimalnym rabatem w procentach.query

Każde wywołanie jest rozliczane w kredytach. Nieudane i zablokowane wywołania są darmowe.

Działający przykład

W wyszukiwarce te lampki choinkowe kosztowały 61,59 zł. Na karcie produktu ta kwota okazuje się ceną jednego z ośmiu wariantów: 50 m w ciepłej bieli. Wersja 200 m kosztuje 146,19 zł, a cztery warianty są wyprzedane (`stock: 0`, `available: false`) i droższe, do 300,59 zł. To właśnie one wyznaczają `price_max`, więc przedział 61,59–300,59 zł nie mówi, ile faktycznie zapłacisz. Paczka wychodzi z magazynu w Polsce: `ship_from: "Poland"`, darmowa dostawa w 1–3 dni. Pole `currency` przyszło puste — szczegóły w ograniczeniach.

Żądanie
curl -X POST https://api.reefapi.com/aliexpress/v1/product_detail \
  -H "x-api-key: TWOJ_KLUCZ" \
  -H "content-type: application/json" \
  -d '{"product_id": "1005013336106946", "country": "PL", "currency": "PLN", "language": "pl", "province": "Mazowieckie"}'
Odpowiedź (skrócona)
{
  "ok": true,
  "data": {
    "product": {
      "product_id": "1005013336106946",
      "title": "Lampki sznurkowe LED na zewnątrz, 50M 100M, lampki choinkowe, girlanda na Nowy Rok, wesele, do ogrodu, na taras, dekoracja drzewek",
      "price_min": 61.59,
      "price_max": 300.59,
      "currency": null,
      "rating": 4.9,
      "review_count": 82,
      "sold_count": null,
      "sold_text": "Ten sprzedawca: 20 sprzedaży | Łączna liczba sprzedaży: +600",
      "total_stock": 481,
      "sku_variants": [
        {
          "sku_id": "12000060835397291",
          "props": { "Emitujący kolor": "Warm White", "Moc": "50M 500LED", "Wysyłka z": "Polonia", "Typ wtyczki": "wtyczka UE" },
          "price": { "sale": 61.59, "sale_str": "61,59zł", "original": null, "currency": null },
          "stock": 129,
          "available": true
        },
        {
          "sku_id": "12000060835397289",
          "props": { "Emitujący kolor": "Warm White", "Moc": "200M 2000LED", "Wysyłka z": "Polonia", "Typ wtyczki": "wtyczka UE" },
          "price": { "sale": 146.19, "sale_str": "146,19zł", "original": null, "currency": null },
          "stock": 266,
          "available": true
        },
        {
          "sku_id": "12000060835397294",
          "props": { "Emitujący kolor": "173", "Moc": "200M 2000LED", "Wysyłka z": "Polonia", "Typ wtyczki": "wtyczka UE" },
          "price": { "sale": 300.59, "sale_str": "300,59zł", "original": null, "currency": null },
          "stock": 0,
          "available": false
        },
        ...
      ],
      "shipping": {
        "ship_to": "PL",
        "shipping_cost": 0.0,
        "free": true,
        "delivery_estimate": "1-3 days",
        "delivery_eta": "Paź 28",
        "ship_from": "Poland",
        "lines": ["Dostępne śledzenie"],
        "selected_option_code": "AE_LOCAL_STANDARD_PL"
      },
      "store": { "store_id": 1105233629, "seller_country": "China", "seller_feedback_count": 0, "seller_score": null },
      ...
    }
  },
  "meta": { "record_count": 1, "variant_count": 8, "country": "PL", "currency": "PLN", "language_sent": "pl", "province_sent": "Mazowieckie", "cache_hit": false, "mode": "live" }
}

Scraper AliExpress w Pythonie: co się psuje po cichu

Wariant potrafi przyjść z liczbą zamiast nazwy. Gdy wariant odwołuje się do wartości, której AliExpress nie deklaruje już na liście opcji, w `props` zostaje surowy identyfikator — w naszym przykładzie „Emitujący kolor: 173” przy czterech wyprzedanych wariantach. W sierpniu 2026 zmierzyliśmy to zjawisko na 1711 wartościach: dotyczyło 2 z nich (0,12%), obu na martwych wariantach. Zostawiliśmy je bez zmian świadomie, bo poprawka zmieniłaby format `props`, z którego korzystają działające integracje.

Paginacja ma własną pułapkę. We wrześniu 2026 klient zgłosił, że przy `max_results=120` druga strona powtarza większość pierwszej. Przyczyna leżała u nas: jedno wywołanie pobierało kilka stron AliExpress naraz, a `page` przesuwał się tylko o jedną. Po poprawce nakładanie się stron spadło z 21,7% do 7,0%; pozostałe 7% to powtórzenia, które AliExpress sam miesza między swoimi stronami. Duplikaty usuwaj po `product_id`.

Nie każdy filtr AliExpress działa. Filtr sklepu w wyszukiwarce jest ignorowany: w sierpniu 2026 sprawdzenie w danych samego AliExpress pokazało, że do wskazanego sklepu należało 1 z 6, 0 z 6 i 0 z 6 zwróconych produktów. Endpoint z produktami sklepu jest od 5 sierpnia 2026 wyłączony, bo mógłby odpowiadać poprawnie tylko przypadkiem.

Zanim napiszesz własny parser, ustal, co jest u Ciebie kluczem produktu. Cena należy do wariantu, nie do karty: zapisuj `sku_id` przy każdym odczycie, bo inaczej zestawisz cenę lampek 50-metrowych z ceną 200-metrowych i nic tego nie zasygnalizuje.

Ograniczenia i uczciwe uwagi

  • Usługa jest nieoficjalna: AliExpress jej nie wydaje ani nie popiera, a nas nie łączy z AliExpress żadna umowa ani partnerstwo.
  • Wyszukiwarka zwraca tytuły po angielsku mimo `"language": "pl"`: w naszych dwóch zapytaniach z 27 października 2026 (40 wierszy) nie było ani jednego polskiego tytułu. Po angielsku są też `sold_text` („5K+ sold”) i etykiety (`promo_tags`). Polski tytuł i polskie parametry przychodzą dopiero z `product_detail`.
  • W `product_detail` pole `currency` było puste (null) w obu sprawdzonych kartach, także w cenach wariantów. Kwoty są w złotych, co potwierdzają `sale_str` („61,59zł”) i `meta.currency`. W wynikach wyszukiwania `currency` jest wypełnione („PLN”).
  • Historii cen AliExpress nie publikuje. Najbliżej jest etykieta „30-day lowest price: 132,42zł” w `promo_tags` (14 z 20 wierszy przy lampkach), czyli tekst, nie osobne pole liczbowe. `original_price` było null we wszystkich 40 wierszach wyszukiwania, choć `discount_pct` podawał rabat.
  • Nazwy wartości wariantów pochodzą od AliExpress i nie zawsze są po polsku: „Wysyłka z: Polonia”, „Warm White” obok „ciepły biały” w innej karcie.
  • Termin dostawy zależy od magazynu: lampki z Polski miały 1–3 dni, inne lampki wysyłane z Chin 7–10 dni (obie karty z darmową dostawą, województwo mazowieckie).
  • `store_name` i `store_url` są w wynikach wyszukiwania puste (40 z 40 wierszy); sklep znajdziesz w `product_detail`.
  • Odpowiedzi nie są natychmiastowe: wyszukiwanie trwało u nas 12,7 i 18,2 s, karta produktu ok. 10,6 s. Ustaw limit czasu klienta z zapasem.
  • Koszt: `search`, `similar`, `reviews`, `description`, `shipping`, `store_info` i `deals` po 1 kredycie za wywołanie, `product_detail` 2 kredyty.