Czech car listings as JSON, where a filter Sauto silently drops becomes an error instead of a wrong answer
Sauto.cz API returns live Sauto.cz data as clean JSON for sauto.cz The primary endpoint, search, returns category, total_results, page, page_size, has_more, next_page, applied (the filters Sauto actually honoured) and listings[] with id, url,….
3 active endpoints. Every call is 1 credit.
- POST/sauto/v1/search
- POST/sauto/v1/listing
- POST/sauto/v1/filters
What Sauto.cz endpoints does ReefAPI ship?
3 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Sauto.cz API
3 of 3 endpoints, ready to run
Search sauto.cz the way its own visitors do: pick a make and model, narrow by year, price, mileage, engine volume and power, gearbox, fuel, drive, body, colour, condition and region, and page through the results. Every filter is proven against an unfiltered control in the same run, so a filter Sauto quietly ignores is reported instead of silently widening your result. Measured 2026-10-01: no filter returns 106,994 cars, make=bmw returns 6,415, adding model=rada-3 returns 798.
{ "ok": true, "data": { "category": "osobni", "category_id": 838, "currency": "CZK", "total_results": 7833, "page": 1, "page_size": 20, "has_more": true, "listings": [ { "id": 211195542, "url": "https://www.sauto.cz/osobni/detail/skoda/octavia/211195542", "title": "Škoda Octavia, 1.2TDi", "variant": "1.2TDi", "make": { "value": 93, "name": "Škoda", "seo_name": "skoda" }, "model": { "value": 705, "name": "Octavia", "seo_name": "octavia" }, "category": { "value": null, "name": "Osobní", "seo_name": "osobni" }, "price": 349000, "price_currency": "CZK", "price_kind": "fixed", "mileage_km": 84133, "fuel": { "value": 1, "name": "Benzín", "seo_name": "benzin" }, "gearbox": { "value": 1, "name": "Manuální", "seo_name": "manualni" }, "manufacturing_date": "2019-01-01", "in_operation_date": null, "locality": { "region": "Hlavní město Praha", "region_id": 10, "region_seo_name": "hlavni-mesto-praha", "district": "Hlavní město Praha", "district_id": 47, "district_seo_name": "hlavni-mesto-praha", "municipality": null, "municipality_id": null, "zip": null, "country_id": 112 }, "dealer": { "id": 205193, "name": "Auto ESA", "seo_name": "auto-esa", "logo": "https://d48-a.sdn.cz/d_48/c_img_E_E/YIQCpp.png", "url": "https://www.sauto.cz/bazar/auto-esa/205193" }, "seller_type": "dealer", "image": "https://d19-a.sdn.cz/d_19/c_img_qF_C/kcKfrMAkFB3JsTH1rH6y7Oo/68bb.jpeg", "image_count": 3, "promoted": false, "home_delivery": true, "cebia_verified": false, "dealer_reference": "447463139", "created_at": "2026-09-30T23:03:33", "updated_at": "2026-09-30T23:03:35" }, { "id": 211195494, "url": "https://www.sauto.cz/osobni/detail/skoda/octavia/211195494", "title": "Škoda Octavia, 1.5Tsi 110kW Liftback ČR", "variant": "1.5Tsi 110kW Liftback ČR", "make": { "value": 93, "name": "Škoda", "seo_name": "skoda" }, "model": { "value": 705, "name": "Octavia", "seo_name": "octavia" }, "category": { "value": null, "name": "Osobní", "seo_name": "osobni" }, "price": 390000, "price_currency": "CZK", "price_kind": "fixed", "mileage_km": 190000, "fuel": { "value": 1, "name": "Benzín", "seo_name": "benzin" }, "gearbox": { "value": 1, "name": "Manuální", "seo_name": "manualni" }, "manufacturing_date": "2023-03-01", "in_operation_date": null, "locality": { "region": "Hlavní město Praha", "region_id": 10, "region_seo_name": "hlavni-mesto-praha", "district": "Hlavní město Praha", "district_id": 47, "district_seo_name": "hlavni-mesto-praha", "municipality": "Praha", "municipality_id": 3468, "zip": null, "country_id": 112 }, "dealer": null, "seller_type": "private", "image": "https://d19-a.sdn.cz/d_19/c_img_qF_C/nCR9NVflLBkdq1IzNH6yx7V/f4f3.jpeg", "image_count": 10, "promoted": false, "home_delivery": null, "cebia_verified": false, "dealer_reference": null, "created_at": "2026-09-30T22:40:59", "updated_at": "2026-09-30T23:00:15" }, { "id": 209999592, "url": "https://www.sauto.cz/osobni/detail/skoda/octavia/209999592", "title": "Škoda Octavia, 2,0 TDI 110 kW DSG NAVIGACE Zá", "variant": "2,0 TDI 110 kW DSG NAVIGACE Zá", "make": { "value": 93, "name": "Škoda", "seo_name": "skoda" }, "model": { "value": 705, "name": "Octavia", "seo_name": "octavia" }, "category": { "value": null, "name": "Osobní", "seo_name": "osobni" }, "price": 378000, "price_currency": "CZK", "price_kind": "fixed", "mileage_km": 155990, "fuel": { "value": 2, "name": "Nafta", "seo_name": "nafta" }, "gearbox": { "value": 3, "name": "Automatická", "seo_name": "automaticka" }, "manufacturing_date": "2023-01-01", "in_operation_date": "2023-05-11", "locality": { "region": "Jihočeský kraj", "region_id": 1, "region_seo_name": "jihocesky-kraj", "district": "Tábor", "district_id": 7, "district_seo_name": "tabor", "municipality": null, "municipality_id": null, "zip": null, "country_id": 112 }, "dealer": { "id": 472007, "name": "Andy-auta, s.r.o.", "seo_name": "andy-auta-sro", "logo": "https://d48-a.sdn.cz/d_48/c_img_E_H/P54CtH.png", "url": "https://www.sauto.cz/bazar/andy-auta-sro/472007" }, "seller_type": "dealer", "image": "https://d19-a.sdn.cz/d_19/c_img_p9_B/nCTUX1iX5Do9kXEuvGGIb82/d02c.jpeg", "image_count": 30, "promoted": true, "home_delivery": false, "cebia_verified": true, "dealer_reference": "V260084", "created_at": "2026-03-03T20:10:01", "updated_at": "2026-09-30T22:51:27" } ], "applied": { "category": "osobni", "make": "skoda", "model": "octavia", "sort": "newest", "page": 1, "page_size": 20 } } }
How the Sauto.cz API works
Sauto.cz 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.
Read the codebook, then filter, because Sauto answers an unknown make with everything
Sauto does not reject a make or model it fails to recognise. It returns HTTP 200 and the whole category, which reads as a successful search that happens to have a lot of results. Measured: make=bmw gives 6,415 cars, and make=bmw with model=zzznope gives the same 6,415 rather than zero.
{"category": "osobni", "filter": "manufacturer_cb"}Sauto's own list of makes, with the slugs its search takes. Do this once and cache it.
{"category": "osobni", "filter": "model_cb", "make": "skoda"}Models for that make. Sauto has no server-side parent filter here, so the engine reads the whole codebook and resolves it. That is what fixed BMW returning 27 models instead of 37.
{"make": "skoda", "model": "octavia", "year_min": 2018}Twenty cars a page. Each filter is confirmed against an unfiltered control in the same run, so anything Sauto dropped comes back as an invalid parameter instead of a wider result.
{"id": 211075173}The full document for one ad: VIN, STK expiry, 67 equipment items, every photo. This price matched the search row in 12 of 12 cross-checks.
Twenty cars a page with Sauto's real total, each row carrying make, model, year, price in CZK, mileage, fuel, gearbox, locality and images, plus the codebooks behind every filter and the full detail document with VIN and equipment.
curl -X POST https://api.reefapi.com/sauto/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'{
"ok": true,
"data": { … },
"meta": {
"api": "sauto",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Czech Republic, in korunas, one site, and the odometer is not on every ad
Measured 2026-10-01 against the live gateway: 470 rows across 14 live searches in each of two runs, plus an independent audit that loaded the engine exactly as the pool loads it. Two of these lines go against us.
Czech Republic only, prices in CZK. Sauto is Seznam's car marketplace; its classifieds sibling Sbazar is a separate API here.
id, url, title, make, model, price, locality, image and created_at were filled on 100% of rows, identically in both runs.
mileage 99.8%, fuel 98.9%, gearbox 89.1%, manufacturing_date 77.7%. These are missing from Sauto's own document for those ads, so they come back null rather than guessed or copied from the model.
A search carrying make/model or region/district spends 2-3 upstream requests instead of one, because the engine proves the filter was applied before answering. That is the price of never returning a quietly wrong result.
Price, mileage and make on 12 rows were compared with each ad's own detail document: 12 of 12 matched exactly. The sample deliberately starts with the promoted rows at the top of the page, which is where a sibling engine once hid a tenfold error.
The seller's phone number exists in Sauto's detail document and is never fetched or returned.
Sauto stops serving results past an offset of 10,000. The engine enforces that instead of returning an empty page that would look like a real answer.
What people build with Sauto.cz
The jobs this data is most often used for.
endpoints
credit per call
Pricing and assortment teams use Sauto.cz to search Sauto listings.
Brand-protection teams use Sauto.cz to get the full detail document of one Sauto ad.
Retail analysts use Sauto.cz to get the resolver for `search`.
What Sauto.cz 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/sauto/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'import requests
r = requests.post(
"https://api.reefapi.com/sauto/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 Sauto.cz.
Get a free key →What is the Sauto.cz API?▾
Sauto.cz API is a ReefAPI endpoint group for sauto.cz It returns live JSON through POST requests under /sauto/v1.
Is the Sauto.cz API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Sauto.cz calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Sauto.cz login or account?▾
No login to Sauto.cz 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 Sauto.cz 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 Sauto.cz API use?▾
Sauto.cz actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Sauto.cz from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call sauto actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Sauto.cz API a Sauto.cz scraper?▾
It is the managed alternative to a DIY Sauto.cz 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 sauto.cz back as clean JSON.
Why does my Sauto.cz scraper keep getting blocked?▾
Most Sauto.cz 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 Sauto.cz, 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-10-01.