API

x-kom API: ceny z x-kom.pl, najniższa cena z 30 dni i Gorący strzał w JSON

Kto wpisuje „x-kom historia ceny”, zwykle chce sprawdzić, czy obniżka na x-kom.pl jest prawdziwa. Pełnej historii cen sklep nie pokazuje, ale przy przecenionym produkcie podaje najniższą cenę z 30 dni, a to API zwraca ją w osobnym polu, obok ceny, ceny przekreślonej i ceny z kodem rabatowym (razem z kodem, datami ważności i limitem sztuk na klienta). Do tego karta produktu z terminem dostawy, odbiorem w każdym z 31 salonów, ratami, wariantami i specyfikacją, opinie klientów oraz bieżący Gorący strzał z liczbą sprzedanych sztuk. Wszystkie kwoty są w złotych, tak jak widzi je klient bez logowania. API niczego nie kupuje i nie wystawia, więc nie zastąpi narzędzi dla dostawców ani partnerów x-kom; to samo API obsługuje też al.to i neonet.pl (parametr `site`).

Endpointy

endpointCo zwracaWymagane
searchSzukanie po frazie (po polsku albo nazwą modelu, np. „rtx 5070”) z filtrem kategorii, marki, przedziału cen w zł i dostępności oraz sortowaniem: cena, popularność, ocena, nazwa. Wiersz: id, nazwa, marka, kod producenta, kategoria, cena, cena przed obniżką, najniższa cena z ostatnich 30 dni, kod rabatowy z ceną, dostępność, ocena w skali 1–6 i pięciogwiazdkowej, liczba opinii, raty, najważniejsze parametry. Odpowiedź ma też fasety kategorii i marek z liczbą produktów.query
categoryProdukty jednej kategorii x-kom po id (np. 159 laptopy, 1590 smartfony) z tymi samymi filtrami, sortowaniem i wierszami co `search`, plus podkategorie i marki z liczbą produktów.category_id
productPełna karta po id albo adresie: wszystkie ceny (z datą najniższej ceny z 30 dni, jeśli sklep ją podaje), plany ratalne, termin dostawy, odbiór w każdym salonie z datą, opcje wysyłki z ceną, specyfikacja w grupach, warianty modelu z cenami, zdjęcia, opis jako czysty tekst i statystyka opinii z rozkładem ocen 1–6.wszystkie opcjonalne
reviewsOpinie klientów: autor, data, ocena 1–6 i w gwiazdkach, tytuł, treść, potwierdzony zakup, głosy, zdjęcia i odpowiedzi sklepu. Filtry: ocena, tylko potwierdzone zakupy, tylko ten wariant; sortowanie od najbardziej pomocnych, najnowszych, najstarszych albo według oceny.product_id
hot_shotBieżący Gorący strzał: cena promocyjna, cena regularna i najniższa z ostatnich 30 dni, oszczędność, pula sztuk, liczba sprzedanych i pozostałych, godziny rozpoczęcia i końca oraz produkt, którego dotyczy.wszystkie opcjonalne
categoriesDrzewo kategorii: bez parametrów główne grupy, z `group_id` kategorie danej grupy z liczbą produktów. Te id przyjmują `category` i `search`.wszystkie opcjonalne

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

Działający przykład

Laptopy z kategorii 159 w przedziale 2000–3000 zł, 28 października 2026: 60 produktów, w tym trzy różne obniżki. HP Omnibook 3 17 ma przekreślone 3499 zł i tyle samo wynosi najniższa cena z 30 dni, więc obniżka o 1000 zł (`discount_value`) jest rzeczywista. HP OmniBook 5 Flip ma przekreślone 3489 zł, ale najniższa cena z 30 dni to 2999 zł: liczona od niej obniżka to 10 zł i właśnie tyle podaje `discount_value`. TECNO Megabook T14 Air kosztuje 3099 zł, z kodem black-weeks15 2798 zł (do 19 listopada, najwyżej 3 sztuki na klienta), i dlatego zmieścił się w filtrze do 3000 zł; raty 20 × 139,90 zł też są policzone od ceny z kodem.

Żądanie
curl -X POST https://api.reefapi.com/x-kom/v1/category \
  -H "x-api-key: TWOJ_KLUCZ" \
  -H "content-type: application/json" \
  -d '{"category_id": "159", "price_min": 2000, "price_max": 3000, "limit": 60}'
Odpowiedź (skrócona)
{
  "ok": true,
  "data": {
    "results": [
      ...
      {
        "product_id": "1519929",
        "title": "HP Omnibook 3 17 Core 3-100U/8GB/256/Win11",
        "producer_code": "17-dk0005nwx (D8ZE1EA)",
        "currency": "PLN",
        "price": 2499.0,
        "old_price": 3499.0,
        "lowest_price_30d": 3499.0,
        "promo_code": null,
        "filter_price": 2499.0,
        "discount_value": 1000.0,
        "availability_status": "Available",
        "installment": { "text": "124,95 zł x 20 rat 0%", "zero_percent": true, "min_monthly": 124.95 }
      },
      ...
      {
        "product_id": "1540061",
        "title": "TECNO Megabook T14 Air Ryzen 7-7735HS/16GB/1TB/Win11",
        "currency": "PLN",
        "price": 3099.0,
        "old_price": null,
        "lowest_price_30d": 3099.0,
        "promo_code": {
          "code": "black-weeks15",
          "price": 2798.0,
          "starts_at": "2026-10-19T07:50:00",
          "ends_at": "2026-11-19T23:59:59",
          "customer_limit": 3,
          "active": true
        },
        "code_price": 2798.0,
        "filter_price": 2798.0,
        "discount_value": 301.0,
        "installment": { "text": "139,90 zł x 20 rat 0%", "zero_percent": true, "min_monthly": 139.9 }
      },
      ...
      {
        "product_id": "1454730",
        "title": "HP OmniBook 5 Flip Core 5-120U/16GB/512/Win11 Touch OLED",
        "category": { "id": "2980", "name": "Laptop 14\"", "parent_id": "159", "parent_name": "Laptop/Notebook/Ultrabook" },
        "currency": "PLN",
        "price": 2989.0,
        "old_price": 3489.0,
        "lowest_price_30d": 2999.0,
        "discount_value": 10.0,
        "marks": ["CrossedPrice"],
        "rating": 6.0,
        "rating_5": 5.0,
        "review_count": 1,
        "free_shipping": true
      },
      ...
    ],
    "total": 60,
    "pages": 1,
    "page": 1,
    "limit": 60,
    "has_more": false,
    "rows_outside_price_range": 0,
    "site": "xkom",
    "category_id": "159"
  },
  "meta": { "record_count": 60, "upstream_requests": 1, "charged_credits": 2, "cache_hit": false, "mode": "live" }
}

Scraper x-kom: wartości, które wyglądają poprawnie, a znaczą co innego

To, jaką cenę podaje ld+json na karcie produktu x-kom, zależy od aktywnego kodu rabatowego. W teście z 15 października 2026 zestawiliśmy osiem kart produktów x-kom: na sześciu z aktywnym kodem `offers.price` było ceną z kodem, na dwóch bez kodu zwykłą ceną. Skrypt, który czyta tylko to pole, zapisuje więc w jednej kolumnie dwa różne rodzaje ceny. Tutaj cena i cena z kodem są rozdzielone, a „Najniższa cena z 30 dni” wydrukowana na stronie zgadzała się z `lowest_price_30d` na 6 z 6 kart.

x-kom ocenia produkty w skali od 1 do 6, a w danych strukturalnych podaje drugą liczbę, pięciogwiazdkową. Jednej nie przeliczysz na drugą, odejmując 1: w wynikach dla „rtx 5070” karta z oceną 5,76 miała 4,8 gwiazdki, a inna z oceną 5,7 miała 4,73. API zwraca obie wartości, `rating` i `rating_5`.

Opinie są wspólne dla wariantów jednego modelu. Przy produkcie 1532486 lista miała 10 opinii i żadna nie dotyczyła tego wariantu; przy 179862 z 310 opinii 105 napisano o nim samym. Każda opinia niesie więc `product_id`, a `this_variant_only` zostawia tylko te o wskazanym produkcie.

Dwa pola wprowadzają w błąd już w samym źródle. Data najniższej ceny z 30 dni bywa zapisana jako „0001-01-01T00:00:00”, czyli brak daty, a liczba sztuk w salonie wynosiła 0 we wszystkich 31 salonach każdego sprawdzonego produktu, także tam, gdzie odbiór był możliwy. API zwraca w pierwszym przypadku null, a drugiej liczby nie podaje wcale, tylko status i termin odbioru.

Rok 1, zero sztuk, ocena 5 zamiast 6: każda z tych wartości przechodzi przez walidację jako poprawna liczba. Wychodzą na jaw dopiero przy porównaniu z tym, co klient widzi na stronie.

Ograniczenia i uczciwe uwagi

  • To API zbudowaliśmy sami, bez udziału x-kom: nie jest oficjalne i nie mamy ze sklepem partnerstwa.
  • Historii cen nie ma, bo x-kom jej nie publikuje. Jest najniższa cena z 30 dni, i to tylko przy części produktów (12 z 60 laptopów w przykładzie); `lowest_price_30d_date` było null także na karcie OmniBooka. Historię zbudujesz, zapisując kolejne odczyty z datą.
  • Kwoty są takie jak na stronie dla klienta indywidualnego; cen netto API nie zwraca. Nie ma też kodów EAN, których x-kom nie publikuje: do łączenia z innymi sklepami zostaje `producer_code` (np. „14-fp0023nw (CX5B9EA)”).
  • Jeśli kod rabatowy jest aktywny, sklep filtruje i sortuje według ceny z kodem: dlatego Megabook T14 Air za 3099 zł mieści się w przedziale do 3000 zł. Wartość, której użył sklep, jest w `filter_price`.
  • Wyszukiwarka x-kom szuka szeroko: „rtx 5070” dało 1094 wyniki, bo obok kart graficznych trafiają tu komputery i laptopy z tą kartą (891 w fasecie „Laptopy do gier”). Same karty zawęzisz przez `category_id` z `facets.categories`.
  • Zamówione 30 albo 60 wierszy czasem daje o jeden mniej: „rtx 5070” z `limit: 30` zwróciło 29. Liczbę wierszy bierz z odpowiedzi, a dalsze strony z `page`.
  • W `reviews` z `this_variant_only: true` nasze `limit: 5` dało 10 opinii na stronę (28 października 2026). Bez tego przełącznika limit działał.
  • Gorący strzał z 28 października (Sony Alpha a7 III z obiektywem, 9999 zł zamiast 13 099 zł, pula 15 sztuk) o 17:29 miał już `quantity_left: 0`, a `is_active` nadal true, bo promocja trwała do 22:00. Czy da się jeszcze kupić, mówi `quantity_left`.
  • Odbiór w salonie a towar w salonie to nie to samo: dla OmniBooka wszystkie 31 salonów podało „Najwcześniej u Ciebie: jutro”, a `available_in_stores` miało wartość false. Do planowania odbioru używaj `pickup_date`.
  • Koszt: `search`, `category`, `product` i `hot_shot` po 2 kredyty, `reviews` i `categories` po 1.