Serbia's biggest car market, typed and filterable
The Polovni Automobili API returns Serbia's largest car-classifieds site as clean JSON in five actions: search, listing, brands, models and filter_options.
5 active endpoints, on 2 and 3 credit tiers.
- POST/polovniautomobili/v1/search
- POST/polovniautomobili/v1/listing
- POST/polovniautomobili/v1/brands
- POST/polovniautomobili/v1/models
- POST/polovniautomobili/v1/filter_options
What Polovni Automobili endpoints does ReefAPI ship?
5 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Polovni Automobili API
4 of 5 endpoints, ready to run
Live Serbian car ads for your filters: asking price with the currency the ad prints, build year, odometer, fuel, gearbox down to the number of manual gears, body, doors, seats, displacement in cc, power in kW and hp, town, photo count, the ad's own tags, and the seller — dealer name and their page on the site, or flagged private.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the Polovni Automobili API works
Polovni Automobili 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 438 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.
Price a car in the Serbian market in three calls
Three calls: the brand and model ids, the comparable adverts, then one advert in full.
Call brands to get the exact brand spelling the filter wants — the label, not a slug, so 'Mercedes Benz' rather than 'mercedes-benz'.
Call models with that brand to see which models currently have live ads, with the ad count beside each and sample_coverage_pct telling you whether the list is exhaustive.
Call search with brand, model, a year band, body_type and gearbox, and page_size 200. Read total_results for the size of the market segment and reachable_pages for how deep you can go; one page of 200 ads is one upstream request.
Average the price field across the rows, skipping the ones with price_on_request true, and keep mileage_km beside each price — a 240,000 km car and a 90,000 km car of the same year are different markets.
Call listing on the handful you care about for the equipment list, the photos, the description, the registration validity and the dealer's contact details.
Eleven credits for the five calls as written: brands 2, models 3, two searches at 2 each and listing 2. Drop the two reference calls once you have cached the ids and the same recipe costs six.
curl -X POST https://api.reefapi.com/polovniautomobili/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"brand":"volkswagen","max_results":20}'{
"ok": true,
"data": { … },
"meta": {
"api": "polovniautomobili",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}What one Serbian car ad looks like after parsing
Polovni Automobili is where the Serbian used-car market actually trades: 75,467 live ads on 2026-10-01, of which 1,678 were brand-new cars and 73,789 used. A row carries the asking price and the currency the ad itself prints, the odometer, the engine in cc and in both kW and hp, the gearbox down to the number of manual gears, the town, and whether the ad is from a dealer or a private seller. 86.3 % of 300 sampled rows were dealer ads and came with the dealer's name and their own page on the site; the remaining 13.7 % were private sellers, who are returned with the name null rather than invented.
| Car | Price | Odometer | Engine | Town | Seller |
|---|---|---|---|---|---|
| Volkswagen Passat B8 2.0 TDI DSG, 2015 (30427717) | EUR 8,490 | 235,633 km | 1,968 cc diesel, 110 kW / 150 hp, automatic | Novi Sad | VP auto — dealer, 15 live ads |
| Škoda Octavia 2.0 TDI 4x4 Clever, 2018 (30411278) | EUR 13,300 | 174,000 km | 1,968 cc diesel, 135 kW / 184 hp, automatic | Novi Sad | private — no name published |
| Volkswagen Tiguan 2.0 TDI, 2012 (29992052) | EUR 8,900 | 197,000 km | 1,980 cc diesel, 81 kW / 110 hp, 5-speed manual | Kraljevo | private — no name published |
| Peugeot 5008 Allure, 2018 (30427328) | EUR 13,490 | 198,000 km | 1,499 cc diesel, 96 kW / 131 hp, automatic | Novi Sad | Ćepa — dealer |
| BMW 520, 2012 (30236670) | EUR 9,450 | 248,329 km | 1,995 cc diesel, 135 kW / 184 hp, 6-speed manual | Bačko Petrovo Selo | TIM.AUTO — dealer |
| BMW X2 sDrive 18d, 2026, new (30083300) | EUR 58,990 | 2 km | 1,995 cc diesel, 110 kW / 150 hp, automatic | Niš | Mitić Company — dealer |
Captured live on 2026-10-01 in one call. Serbian ads come down when the car sells, so these ids are dated — take fresh ones from search. The full ad for the first row carried a 30-photo gallery, 57 equipment items, 13 safety items and the dealer's phone number; its registration field read 'Nije registrovan' (not registered) and its plates field 'Na ime kupca' (goes on the buyer's name), which is exactly the kind of Serbian-market detail the search row cannot hold.
What is covered, measured
Every figure below was read off the live source in the run recorded for this page.
Serbia (polovniautomobili.com), plus the ads the site carries from Montenegro, Bosnia and 32 other countries — country isolates them; RS was 75,341 of 75,453 ads
75,467 live car ads on 2026-10-01: 1,678 new, 73,789 used
35 filters, each measured to move the site's own result total in the same run
25, 50, 100 or 200 ads per page, one upstream request per page; page number capped at 750, so use 200 per page to reach a full 75,000-ad result set
prices compared against the site's own published copy on 75 rows: 74 matched, 0 disagreed, currency matched 74/74; search row vs full ad identical on price, odometer and year for 8 of 8 ids
What people build with Polovni Automobili
The jobs this data is most often used for.
endpoints
credits per call
Price a Serbian car before you buy or import it: filter to the same brand, model, year band, body and gearbox, pull the live asking prices with the odometer beside each, and compute the real market band instead of trusting one listing.
Track a dealer's stock over time. Every ad carries the dealer's id, trade name, their page on the site and their active-ad count, so you can follow a single lot's inventory, its price moves and its turnover week by week.
Source import stock. country_of_origin isolates cars brought in from a given market (Germany was 2,176 ads on 2026-10-01), plates separates domestic-registered cars from those sold on the buyer's name, and the registration-cost estimate tells you what the paperwork adds.
Feed a valuation or lead-scoring model with structured Serbian market data: 75,467 ads with price, year, odometer, kW, cc, fuel, gearbox, body, damage state, equipment list and town, all typed, with price_on_request kept separate so a zero never poisons an average.
What Polovni Automobili data costs
The cheapest call here is 2 credits, so $15/mo (Pro) buys 5,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 438 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/polovniautomobili/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"brand":"volkswagen","max_results":20}'import requests
r = requests.post(
"https://api.reefapi.com/polovniautomobili/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"brand": "volkswagen",
"max_results": 20
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Polovni Automobili.
Get a free key →How many ads are there, and can I page through all of them?▾
75,467 live car ads on 2026-10-01 — 1,678 new, 73,789 used. You can reach all of them, but only if you ask for large pages, and this is the one number worth reading twice. The site advertises more pages than it will serve: the page number is capped at 750, and a request for page 751 or beyond comes back with page 1 again. At the default 25 ads per page that means 18,750 ads are reachable out of 75,467; at 200 ads per page, 750 pages covers 150,000, so the whole result set is yours. The API therefore accepts page_size 25, 50, 100 or 200, rejects page beyond 750 instead of handing you duplicate rows, and every response states pages (what the site claims), reachable_pages and reachable_results so you never have to find this out the hard way.
Are the prices right?▾
Checked two independent ways, not assumed. First, against the site's own published structured-data copy of the same adverts: 75 rows across three different searches, 74 prices matched exactly, 0 disagreed, and the currency matched on 74 of 74. The one row without a match had no price on either side — the seller published none. Second, a search row against the full ad for the same id on 8 cars: price, odometer and build year identical 8 of 8. Prices are read as the ad prints them and the currency is read from the ad too, never assumed: 900 rows sampled across the result set were all in euro, and if an ad ever prints something else the raw symbol comes back untranslated rather than relabelled. An ad with no price returns price null and price_on_request true — never a zero. That was 6 of 300 sampled rows.
Do the filters actually do anything?▾
All 35 of them were measured against the unfiltered total in the same run, with a 0.1 % tolerance because the live total drifts by a few dozen ads between calls. From 75,453 unfiltered: diesel 47,873, automatic 28,415, SUV 19,259, Euro 6 28,639, four-wheel drive 14,828, leather interior 13,955, dual-mass flywheel 14,211, imported from Germany 2,176, Audi 8,064, Audi A4 1,976, under EUR 3,000 11,291, 2020 or newer 12,352, under 50,000 km 4,627, 150 kW or more 8,589. Every one bit. Just as important, the filters the site accepts but quietly ignores are deliberately missing from this API: its equipment, safety, condition, selling-method, owner-status and region keys all left the total unchanged whichever way they were sent, and its horsepower box is ignored upstream, so power is filtered in kW only. A handle that silently returns the whole catalogue is worse than no handle.
What is in the full ad that the search row does not have?▾
The free-text description the seller wrote, the equipment list (the site tracks 97 distinct items; one sampled ad had 57 of them), the safety list (18 items tracked, 13 on that ad), every photo at full resolution rather than the one thumbnail, exterior colour, interior colour and upholstery material, drive layout, Euro class, whether the car is damaged, the registration validity and the site's own estimate of what registering it costs, the part-exchange stance, financing terms, reserved status, and the seller block with street, town, district, postal code, latitude and longitude, rating, active-ad count and the phone numbers the ad page shows. On the 6 ads sampled, 34 of 39 fields were filled on every one; description was on 5 of 6, and condition, owner legal status and selling method appear only when the seller filled them in, so they come back null instead of guessed.
Can I get the list of brands and models?▾
brands returns all 99 brands with the exact spelling the search filter wants — and that matters, because the filter value is the site's label, 'Mercedes Benz' and 'Škoda' included, not a url slug. models is honest about a limit the site imposes: polovniautomobili publishes no model vocabulary anywhere on this surface, so models reads the brand's own live ads instead and returns the models that actually have cars for sale, each with the number of ads seen, plus brand_ads, ads_sampled and sample_coverage_pct so you can tell whether you got everything. Tesla returned Model 3, Model S, Model Y and Model X at 100 % coverage; Audi returned 31 models from three pages. A model with no live ad will not appear, and the response says so rather than pretending to be a catalogue.
What Serbian-market details does it carry that a generic car API would not?▾
Several, and they are the ones Serbian buyers filter on. Whether the car is on domestic plates, on foreign plates, or sold to be registered in the buyer's name — 51,577 of 75,453 were on domestic plates. Whether it has a dual-mass flywheel, which is a routine buying criterion there (14,211 ads). Whether it carries a conversion attest (3,026). Whether the vehicle is registered to the person selling it (37,165). The registration expiry date and the site's own estimate of the registration fee. The part-exchange stance, from 'no exchange' through 'for a cheaper car' to 'for a more expensive one'. Country of import, so you can separate German-sourced stock (2,176 ads) from the rest. And the gearbox is not just manual-or-automatic: the site distinguishes 4-, 5- and 6-speed manuals.
How fast is it, and how much does one search return?▾
Measured across two consecutive full runs on 2026-10-01: 12 of 12 calls succeeded in each run, median 623 ms in one and 838 ms in the other, median 107 KB of upstream payload for a 25-ad page and 374 KB for a 200-ad page — one page is one upstream request either way, so asking for 200 ads costs one call, not eight. Field fill on 300 rows across five different searches: ad id, url, title, brand, model, year, currency, fuel, gearbox, body, doors, seats, power in kW and hp, town, photo and photo count all 100 %; displacement 99.3 %; odometer 99.0 %; price 98.0 %. Emission class is the honest exception on a search row — the site only attaches it to some rows, so it was filled on 12 of 300 (4.0 %). The full ad has it every time.
What happens when an ad is gone, or I send something wrong?▾
A removed or non-existent ad returns NOT_FOUND, not an empty success — Serbian ads come down as soon as the car sells, so this happens a lot and it is a terminal answer, not something to retry. A missing required parameter returns MISSING_PARAM, a bad enum value returns INVALID_PARAM before a request is spent, and an unknown action returns UNKNOWN_ACTION. Enum values are validated against the vocabulary the site itself publishes, which matters because of a trap worth knowing: the site's door filter only knows '3' (meaning 2/3 doors) and '5' (4/5 doors), and asking for 4 returns zero ads with no error at all. Here it returns INVALID_PARAM and tells you the two values that exist. filter_options returns all 24 vocabularies with their Serbian labels, and marks the groups the site publishes but does not actually filter on as filterable: false, with the reason.
What is the Polovni Automobili API?▾
Polovni Automobili API is a ReefAPI endpoint group for serbia's biggest car market as json — 75,467 live ads, 35 filters that actually bite. It returns live JSON through POST requests under /polovniautomobili/v1.
Is the Polovni Automobili API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Polovni Automobili calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Polovni Automobili login or account?▾
No login to Polovni Automobili 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 Polovni Automobili 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 Polovni Automobili API use?▾
Polovni Automobili actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Polovni Automobili from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call polovniautomobili actions with the same key, credit pool and JSON envelope used by normal REST requests.
99 Classifieds & Second-hand APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Polovni Automobili, 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 437 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.