Czech and Slovak classifieds as JSON, with the postcode filter verified on every call
Bazos API returns live Bazos data as clean JSON for bazos The primary endpoint, search, returns market, currency, query/category/subcategory echo, total_results (+ the source's own printed string), page, page_size, has_more, and list….
3 active endpoints. Every call is 1 credit.
- POST/bazos/v1/search
- POST/bazos/v1/listing
- POST/bazos/v1/categories
What Bazos endpoints does ReefAPI ship?
3 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Bazos API
3 of 3 endpoints, ready to run
Search Bazos classifieds by keyword and/or category, with subcategory, postal-code radius, price band, five sorts and paging (20 ads per page). Paid TOP ads are returned in the position Bazos puts them and flagged `promoted: true` — they are not always on topic, so they are labelled rather than hidden or passed off as hits.
{ "ok": true, "meta": { "api": "bazos", "endpoint": "search", "mode": "live", "latency_ms": 585.9, "record_count": 3, "cache_hit": false }, "data": { "market": "cz", "currency": "CZK", "query": "iphone", "category": null, "subcategory": null, "sort": "newest", "total_results": 7041, "total_results_text": "7 041", "page": 1, "page_size": 20, "has_more": true, "listings": [ { "listing_id": "223947619", "url": "https://auto.bazos.cz/inzerat/223947619/audi-rs6-c8-441kwservis-audibodrcrs-dynamic-pluszaruka.php", "title": "AUDI RS6 C8 441KW,SERVIS AUDI,B&O,DRC,RS DYNAMIC PLUS,ZÁRUKA", "description_excerpt": "Prodám Audi RS6 C8 4.0 TFSI 441KW. Koupeno nové v ČR. Model: 2022, Najeto: 91 000 km. Vůz má kompletní servisní historii z Audi a dohledatelný původ v ČR. Záruka u Audi: 11/2026 Auto není odpočtové. Kontakt: [phone removed] K vozu jsou 2 klíče. Vůz je v individuální výbavě – příplatkov ...", "image": "https://www.bazos.cz/img/1t/619/223947619.jpg?t=1789670850", "price": 1849999, "price_currency": "CZK", "price_kind": "fixed", "price_text": "1 849 999 Kč", "locality": "Praha 1", "postal_code": "110 00", "views": 5399, "posted_date": "2026-09-30", "promoted": true, "promoted_label": "TOP 21x Platí do 29.10. 2026", "category": "auto" }, { "listing_id": "223985268", "url": "https://mobil.bazos.cz/inzerat/223985268/iphone-18-pro-max-512gb-burgundsky-cervena-eu-verze.php", "title": "iPhone 18 Pro Max 512GB burgundsky červená (EU verze)", "description_excerpt": "Mobilní telefon - 6,9i OLED 2868 x 1320 (120Hz), úložiště: 512 GB, RAM: 12 GB, fotoaparát: 48Mpx (f/1,48) hlavní + 48Mpx Sirokoúhlý + 48Mpx teleobjektiv + 18Mpx přední, CPU: Apple A20 Pro, NFC, USB-C, 5G, Dual SIM + eSIM, voděodolný dle IP68, rychlé nabíjení 36W, bezdratové nabijeni 25W, baterie 539 ...", "image": "https://www.bazos.cz/img/1t/268/223985268.jpg?t=1790453684", "price": 44000, "price_currency": "CZK", "price_kind": "fixed", "price_text": "44 000 Kč", "locality": "Praha 5", "postal_code": "155 00", "views": 1355, "posted_date": "2026-09-30", "promoted": true, "promoted_label": "TOP 4x Platí do 18.10. 2026", "category": "mobil" }, { "listing_id": "224437841", "url": "https://mobil.bazos.cz/inzerat/224437841/iphone-17-pro-256-gb-v-barve-deep-blue.php", "title": "iPhone 17 Pro 256 GB v barvě Deep Blue", "description_excerpt": "Telefon je ve velmi pěkném stavu a plně funkční. • Kapacita: 256 GB • Kondice baterie: 96 % • Počet cyklů baterie: 289 • Záruka do: 3. 11. 2026 • Telefon byl zakoupen na firmu, proto byla záruka pouze 1 rok • Součástí je originální kryt Pitaka Telefon byl používán s krytem.", "image": "https://www.bazos.cz/img/1t/841/224437841.jpg?t=1790683333", "price": 20000, "price_currency": "CZK", "price_kind": "fixed", "price_text": "20 000 Kč", "locality": "Brno", "postal_code": "602 00", "views": 525, "posted_date": "2026-09-30", "promoted": true, "promoted_label": "TOP 3x Platí do 17.10. 2026", "category": "mobil" } ] } }
How the Bazos API works
Bazos is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 321 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Verify the narrowing, because Bazos drops a postcode it does not know without saying so
Ask Bazos for ads near a postcode it does not recognise and it returns the whole category with a normal status. The result looks like a local search that happened to find a lot.
{"market": "cz"}Bazos's own category tree for that market, with the handles the search surface takes.
{"query": "kolo", "market": "cz"}Twenty ads a page. price is the number; price_text is Bazos's own words, and on this site those words are often the whole price.
{"query": "kolo", "market": "cz", "postal_code": "11000", "radius_km": 25}The engine runs an unfiltered control in the same call and compares the totals, so a postcode Bazos dropped is refused instead of returned as a local search. Both totals come back in the response.
{"url": "<from any row>"}The full ad. Do not judge it by the status code: a wrong slug returns 404 carrying the correct complete ad, and a deleted ad returns 200 with unrelated recommendations.
Two national markets in one call shape, with the narrowing proven rather than assumed and the totals published so you can see it.
curl -X POST https://api.reefapi.com/bazos/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'{
"ok": true,
"data": { … },
"meta": {
"api": "bazos",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Czechia and Slovakia, two currencies, and prices that are often words
Measured 2026-09-30 against the live gateway across both markets and sixty rows, with every number checked against the string Bazos printed. Three of these lines go against us.
The market parameter picks between bazos.cz and bazos.sk. They are separate catalogues and separate currencies, koruna and euro, and the currency was correct on every row of both markets in the measured runs. Both are exercised together rather than one standing in for the other.
A postcode Bazos does not recognise returns the unfiltered total with a normal status. The engine therefore runs an unfiltered control in the same call and compares: a real postcode took one category from 7,041 to 529 in Czechia and from 6,778 to 1,035 in Slovakia, while 99999 left the total untouched and is refused as an invalid parameter. Both the filtered and the control total are published so the narrowing is visible rather than claimed.
On one route four different sort values returned four byte-identical pages, and a category filter was dropped on the same route. The engine uses the subdomain route instead, which has its own paging key, and only the sorts whose effect could be seen are offered.
Eight of two hundred rows in the agent's run, and the same eight in both runs, published a word where a figure would be: agreed price, make an offer, or in the text. Those come back with the number null and Bazos's own word kept, never as zero. Free is the one word that does become a number, because free genuinely is zero, and it is labelled as such.
Sixty rows across both markets, zero disagreements. Both markets write thousands with a space and neither writes decimals, so the Czech and Slovak separator split that catches engines on other sites does not exist here. The parser still treats a comma as a decimal rather than a grouping in both markets, which is the direction that cannot produce a ten-times price.
A wrong slug answers 404 while carrying the complete and correct advertisement, and a deleted ad answers 200 with a page of unrelated recommendations that a naive parser would return as the listing. The engine decides on the page's own heading and wording instead, in both directions.
Bazos answers an unknown subcategory with the entire parent category, at 200 with a query and 404 without, so the status says nothing. The engine checks the last node of the source's own breadcrumb, which is its echo of the scope it actually applied.
Every row of the first pages measured was a paid placement, and they are not always on topic: a Czech search for iPhones led with an Audi. They are flagged and counted rather than dropped, because dropping them would silently change which page you are reading.
The phone endpoint is never called and no phone, e-mail, address or coordinate field exists in the output. Descriptions pass through redaction unconditionally: of two hundred live rows, four contained a phone pattern in their text and none survived.
Search and the full ad carry the cost; the category tree is the cheap lookup. No browser and no residential vantage point is needed for this source.
What people build with Bazos
The jobs this data is most often used for.
endpoints
credit per call
Pricing and assortment teams use Bazos to search Bazos classifieds by keyword and/or category, with subcategory, postal-code radius, pr….
Brand-protection teams use Bazos to get full detail of one Bazos ad.
Retail analysts use Bazos to get the market's own category tree.
What Bazos data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 321 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/bazos/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'import requests
r = requests.post(
"https://api.reefapi.com/bazos/v1/search",
headers={"x-api-key": REEF_KEY},
json={},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Bazos.
Get a free key →What is the Bazos API?▾
Bazos API is a ReefAPI endpoint group for bazos It returns live JSON through POST requests under /bazos/v1.
Is the Bazos API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Bazos calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Bazos login or account?▾
No login to Bazos is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Bazos data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Bazos API use?▾
Bazos actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Bazos from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call bazos actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Bazos API a Bazos scraper?▾
It is the managed alternative to a DIY Bazos scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same bazos back as clean JSON.
Why does my Bazos scraper keep getting blocked?▾
Most Bazos scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.
26 More APIs APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Bazos, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 320 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-30.