API

Sbazar API: inzeráty ze sbazar.cz v JSON

Sbazar je inzertní server Seznamu a jeho katalog měl při stavbě enginu (konec září 2026) zhruba 1,9 milionu inzerátů, od zahradní techniky po dětské oblečení. Tohle API vrací totéž, co vidí kupující bez přihlášení: titulek, cenu v Kč, druh ceny (pevná, „Dohodou“, nula), obec, okres a kraj, datum vložení a poslední úpravy, rubriku, fotku a veřejný profil obchodu, u inzerátu pak celý popis a všechny fotky. Pokud řešíte ceník inzerce, topování nebo správu vlastních inzerátů, tohle API vám nepomůže: inzerát přes něj nevložíte ani netopujete. Slouží ke čtení nabídky, ne k prodeji.

Endpointy

endpointCo se vracíPovinné
searchHledání podle slova (Sbazar ho hledá v titulku i textu inzerátu) a/nebo kategorie, s cenovým rozpětím v Kč, filtrem jednoho uživatele nebo firemního profilu, příznaky ochrany kupujícího a možnosti objednat přes Sbazar, čtyřmi řazeními a stránkováním do 100 inzerátů na stránku. Zadat je potřeba aspoň jedno z `query`, `category_id`, `user_id`, `premise_id`. Topované inzeráty se neodstraňují ani nepřesouvají, jen dostanou `promoted: true`.vše volitelné
listingCelý inzerát podle `listing_id` nebo adresy: kompletní popis, všechny fotky, počet fotek a videí, stav, platnost (`valid_to`), `price_original` a veřejná identita obchodu. Telefon ani e-mail prodávajícího se nenačítají; číslo vepsané do textu inzerátu se odstraní.vše volitelné
categoriesŽivý strom 451 kategorií ve třech úrovních, u každé počet aktuálních inzerátů. S `category_id` vrátí danou kategorii a její přímé podkategorie. Číselné id odtud bere `search`.vše volitelné

Každé volání se účtuje v kreditech. Neúspěšná a blokovaná volání jsou zdarma.

Funkční příklad

Sekačka za 2 000–6 000 Kč: Sbazar hlásil 413 inzerátů, bez cenového filtru 1 449. Že cenový filtr opravdu zabral, ukazuje `meta.filters_verified`: `filtered_total` je menší než `control_total`. Ze 30 řádků první stránky jich ale 12 cenu nemělo: inzeráty „Dohodou“ pouští Sbazar do každého cenového rozpětí a posílá u nich nulu. Tady mají `price: null`, `price_kind: "by_agreement"` a jejich počet je v `meta.unpriced_rows_in_price_band`. Ve výsledcích jsou i opravy sekaček (rubrika Nabídka služeb) a náhradní díly; jen na zahradní sekačky zúžíte hledání přes `category_id` 21 (Zahrada). Řazení podle relevance klidně vynese inzerát vložený v roce 2019: ten v příkladu má `posted_date` 2019, ale `updated_date` z října 2026. Na stáří nabídky se tedy dívejte do obou polí.

Požadavek
curl -X POST https://api.reefapi.com/sbazar/v1/search \
  -H "x-api-key: VAS_API_KLIC" \
  -H "content-type: application/json" \
  -d '{"query": "sekačka", "price_min": 2000, "price_max": 6000, "page_size": 30}'
Odpověď (zkrácená)
{
  "ok": true,
  "data": {
    "query": "sekačka",
    "category_id": null,
    "sort": "relevance",
    "total_results": 413,
    "page": 1,
    "page_size": 30,
    "has_more": true,
    "listings": [
      ...
      {
        "listing_id": "91452132",
        "title": "Sekačka",
        "price": null,
        "price_currency": "CZK",
        "price_kind": "by_agreement",
        "price_raw": 0,
        "category_id": 21,
        "category": "Zahrada",
        "locality": { "municipality": "Olomouc", "district": "Olomouc", "region": "Olomoucký kraj" },
        "posted_date": "2019-10-17T19:45:52",
        "updated_date": "2026-10-21T15:30:55",
        "promoted": false,
        "buyer_protection": false,
        "is_orderable": false
      },
      ...
      {
        "listing_id": "208295341",
        "title": "RPM 4735 travní sekačka 4v1 s pojezdem",
        "price": 4199.0,
        "price_currency": "CZK",
        "price_kind": "fixed",
        "price_raw": 4199,
        "category_id": 21,
        "category": "Zahrada",
        "locality": { "municipality": "Jičín", "district": "Jičín", "region": "Královéhradecký kraj" },
        "posted_date": "2024-05-09T10:34:59",
        "updated_date": "2026-10-27T08:56:59",
        "promoted": false
      },
      ...
    ]
  },
  "meta": {
    "record_count": 30,
    "filters_verified": { "filters": ["price_from", "price_to"], "control_total": 1449, "filtered_total": 413, "applied": true },
    "promoted_count": 0,
    "unpriced_rows_in_price_band": 12,
    "paging_window": 10000,
    "next_page": 2,
    "charged_credits": 1,
    "cache_hit": false,
    "mode": "live"
  }
}

Scraper na Sbazar: souhlas s cookies, ztracené filtry a nulová cena

Z HTML se na Sbazaru nic nepřečte. Každá adresa s výpisem, inzerátem, kategorií i `sitemap.xml` vrátila při stavbě enginu (30. 9. 2026) stejnou stránku „Nastavení souhlasu s personalizací“, vždy 21 123 bajtů a vždy s kódem 200. Výjimkou byla jen titulní strana, ve které je i strom kategorií. Parser HTML tak dostane stovky „úspěšných“ odpovědí bez jediného inzerátu.

Sbazar má i vlastní JSON rozhraní, jenže neznámý název filtru tiše zahodí a vrátí celý katalog. Dotaz `query=iphone` (a stejně tak `q`, `search` nebo `keyword`) dal 1 903 339 výsledků; skutečný název je `phrase` a ten dal 3 434. Řazení přijme jakýkoli text a odpoví 200, použije ale jen tři hodnoty. Vzestupné řazení podle data vložení nefunguje vůbec, proto engine řazení „od nejstarších“ nenabízí.

A pak cena 0. U inzerátů „Dohodou“ posílá Sbazar `price: 0` a cenové rozpětí je nevyřadí: při stavbě to byly 4 z 20 řádků v pásmu 20 000–25 000 Kč, dnes u sekaček 12 z 30. Skript, který nulu uloží, má v tabulce iPhony zadarmo.

Nic z toho nevyhodí chybu. Průměrná cena z vlastního skriptu jen tiše klesá s každým inzerátem „Dohodou“ a filtr, který se neuplatnil, vypadá jako trh, který přes noc narostl na celou republiku.

Omezení a poctivé poznámky

  • Oficiální API Seznamu to není: Seznam ho nevydal ani nepodporuje a partnerský ani obchodní vztah s ním nemáme.
  • Filtr podle místa ani okruhu není. Sbazar název `locality` zná, ale žádný z devíti vyzkoušených formátů nepřijal, a parametry pro okruh odmítl všechny. Obec, okres a kraj jsou v každém řádku, takže si výsledky zúžíte sami; obec chyběla u 27 z 345 měřených řádků.
  • Slovo se hledá i v textu inzerátu, takže „kočárek“ přinesl vedle kombinovaných kočárků i kočárky pro panenky, autosedačky a 5 inzerátů ze starožitností. Na přesnější výsledky použijte `category_id` z `categories`.
  • Stránkovat jde jen do 10 000. řádku (`page` × `page_size` ≤ 10 000); dál Sbazar odpovídá chybou a engine takový dotaz odmítne s `INVALID_PARAM`.
  • Řádek z hledání nese jednu fotku; počet fotek a celý popis vrací až `listing`. `price_kind: "zero"` je nula, kterou prodávající opravdu zadal bez „Dohodou“; za „zdarma“ ji nevykládáme.
  • Ochrana kupujícího a objednávka přes Sbazar se týkají malé části nabídky (28 a 26 inzerátů na celém webu při měření 30. 9. 2026), takže `buyer_protection_only` a `orderable_only` často vrátí málo nebo nic.
  • Telefon ani e-mail prodávajícího API nikdy nevrací; z údajů o prodávajícím jen veřejný profil obchodu.
  • Cena je u všech tří akcí stejná: 1 kredit za jedno volání.