Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Polovni Automobili API page →
Classifieds & Second-hand

Polovni Automobili API & Scraper

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 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

search covered 75,467 live ads on 2026-10-01 and exposes 35 filters, every single one of which was measured to move the site's own result total in the same run with a 0.1 % tolerance: brand and model, price floor and ceiling, build year, odometer, engine power in kW, displacement in cc, fuel (9 values including LPG, CNG, plug-in hybrid and electric), gearbox (the site counts manual gears separately: 4, 5, 6 or automatic), body style, exterior colour from a 21-colour vocabulary, drive, Euro emission class, doors, seats, damage state, whether the car is on Serbian plates or goes on the buyer's name, air conditioning, upholstery material and interior colour, steering-wheel side, dual-mass flywheel, conversion attest, part-exchange stance, country of listing, country of import, price-only ads, ads where the car is registered to the seller, and used-versus-new. listing takes an ad id from any search row and returns the whole advert: the free-text description, the equipment list (up to 97 items the site tracks), the safety list (18 items), every photo at full size, exterior and interior colour and material, drive, registration validity and the site's own registration-cost estimate, financing terms, part-exchange stance, and the seller — trade name, street, town, district, postal code, coordinates, rating, active-ad count and the phone numbers the ad page itself prints. Prices were checked against the site's own published structured-data copy on 75 rows across three different searches: 74 matched, 0 disagreed, 1 had no price on either side because the seller published none, and the currency matched on 74 of 74. Cross-checked a second way, a search row against the full ad on 8 ids: price, odometer and year identical 8 of 8. No account, no browser — one ReefAPI key and the standard { ok, data, meta, error } envelope.

Reference

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.

CarPriceOdometerEngineTownSeller
Volkswagen Passat B8 2.0 TDI DSG, 2015 (30427717)EUR 8,490235,633 km1,968 cc diesel, 110 kW / 150 hp, automaticNovi SadVP auto — dealer, 15 live ads
Škoda Octavia 2.0 TDI 4x4 Clever, 2018 (30411278)EUR 13,300174,000 km1,968 cc diesel, 135 kW / 184 hp, automaticNovi Sadprivate — no name published
Volkswagen Tiguan 2.0 TDI, 2012 (29992052)EUR 8,900197,000 km1,980 cc diesel, 81 kW / 110 hp, 5-speed manualKraljevoprivate — no name published
Peugeot 5008 Allure, 2018 (30427328)EUR 13,490198,000 km1,499 cc diesel, 96 kW / 131 hp, automaticNovi SadĆepa — dealer
BMW 520, 2012 (30236670)EUR 9,450248,329 km1,995 cc diesel, 135 kW / 184 hp, 6-speed manualBačko Petrovo SeloTIM.AUTO — dealer
BMW X2 sDrive 18d, 2026, new (30083300)EUR 58,9902 km1,995 cc diesel, 110 kW / 150 hp, automaticNiš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.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/polovniautomobili/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "brand": "volkswagen",
    "max_results": 20
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "polovniautomobili",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 664.7,
    "record_count": 25,
    "bytes": 106799,
    "cache_hit": false,
    "completeness_pct": 100,
    "stop_reason": "page_served",
    "total_results": 11585,
    "duplicates_dropped": 0,
    "top_ads": 2,
    "witness_conflicts": {},
    "currencies_seen": {
      "€": 25
    },
    "transport": "data",
    "upstream_requests": 1,
    "charged_credits": 1,
    "version": "0.1.0",
    "request_id": "3aa9bb17935a4cd9"
  },
  "data": {
    "total_results": 11585,
    "page": 1,
    "page_size": 25,
    "pages": 464,
    "reachable_pages": 464,
    "reachable_results": 11600,
    "has_more": true,
    "count": 25,
    "duplicates_dropped": 0,
    "filters_applied": {
      "brand": "Volkswagen"
    },
    "search_url": "https://www.polovniautomobili.com/auto-oglasi/pretraga?showOldNew=all&sort=basic&brand=Volkswagen",
    "cars": [
      {
        "ad_id": "30426588",
        "url": "https://www.polovniautomobili.com/auto-oglasi/30426588/oglas",
        "title": "Volkswagen Passat B6 4 MOTION CH",
        "brand": "Volkswagen",
        "model": "Passat B6",
        "year": 2009,
        "price": 5199,
        "price_currency": "EUR",
        "price_currency_raw": "€",
        "price_on_request": false,
        "price_before_discount": null,
        "discount_pct": null,
        "discounted": false,
        "mileage_km": 204000,
        "fuel": "Dizel",
        "gearbox": "Manuelni 6 brzina",
        "body_type": "Karavan",
        "doors": "4/5 vrata",
        "seats": "5 sedišta",
        "engine_cc": 1968,
        "power_kw": 103,
        "power_hp": 140,
        "emission_class": null,
        "city": "Niš",
        "is_new": false,
        "status": "active",
        "category": "car",
        "image_url": "https://cdn.polovniautomobili.com/user-images/thumbs/3042/30426588/bfccc0cd4ba4-370x278-dw.jpg",
        "images_count": 50,
        "tags": [
          "Garancija",
          "Na ime kupca"
        ],
        "registration_in_price": false,
        "credit_installment": null,
        "leasing_installment": null,
        "promoted_search": true,
        "promoted_home": false,
        "promoted_xl": false,
        "updated_at": "2026-10-02 02:06:08",
        "lifted_at": "2026-10-02 02:03:17",
        "indexed_at": "2026-10-02 02:06:14",
        "seller": {
          "name": "DN CARS",
          "dealer_id": 7554,
          "owner_id": 311084,
          "kind": "dealer",
          "page_url": "https://www.polovniautomobili.com/auto-placevi/dn-cars",
          "slug": "dn-cars",
          "logo_url": "https://cdn.polovniautomobili.com/user-images/superadvertiser/311084/logo.jpg"
        }
      },
      {
        "ad_id": "30263321",
        "url": "https://www.polovniautomobili.com/auto-oglasi/30263321/oglas",
        "title": "Volkswagen Polo (može zamena)",
        "brand": "Volkswagen",
        "model": "Polo",
        "year": 2007,
        "price": 2700,
        "price_currency": "EUR",
        "price_currency_raw": "€",
        "price_on_request": false,
        "price_before_discount": null,
        "discount_pct": null,
        "discounted": false,
        "mileage_km": 262000,
        "fuel": "Benzin + Gas (TNG)",
        "gearbox": "Manuelni 5 brzina",
        "body_type": "Hečbek",
        "doors": "2/3 vrata",
        "seats": "5 sedišta",
        "engine_cc": 1199,
        "power_kw": 55,
        "power_hp": 75,
        "emission_class": null,
        "city": "Obrenovac",
        "is_new": false,
        "status": "active",
        "category": "car",
        "image_url": "https://cdn.polovniautomobili.com/user-images/thumbs/3026/30263321/1ad05b2af6a9-370x278.jpg",
        "images_count": 10,
        "tags": [
          "Domaće tablice"
        ],
        "registration_in_price": false,
        "credit_installment": null,
        "leasing_installment": null,
        "promoted_search": true,
        "promoted_home": false,
        "promoted_xl": false,
        "updated_at": "2026-09-30 12:51:54",
        "lifted_at": "2026-10-02 01:00:16",
        "indexed_at": "2026-10-02 01:01:53",
        "seller": {
          "name": "Dvoriste",
          "dealer_id": 14971,
          "owner_id": 2146256,
          "kind": "dealer",
          "page_url": "https://www.polovniautomobili.com/auto-placevi/dvoriste",
          "slug": "dvoriste",
          "logo_url": "https://cdn.polovniautomobili.com/images/advertiser.png"
        }
      },
      {
        "ad_id": "30238444",
        "url": "https://www.polovniautomobili.com/auto-oglasi/30238444/oglas",
        "title": "Volkswagen Tiguan 2.0 TDI 4X4 DSG",
        "brand": "Volkswagen",
        "model": "Tiguan",
        "year": 2016,
        "price": 16850,
        "price_currency": "EUR",
        "price_currency_raw": "€",
        "price_on_request": false,
        "price_before_discount": null,
        "discount_pct": null,
        "discounted": false,
        "mileage_km": 237033,
        "fuel": "Dizel",
        "gearbox": "Automatski / poluautomatski",
        "body_type": "Džip/SUV",
        "doors": "4/5 vrata",
        "seats": "5 sedišta",
        "engine_cc": 1968,
        "power_kw": 110,
        "power_hp": 150,
        "emission_class": null,
        "city": "Čačak",
        "is_new": false,
        "status": "active",
        "category": "car",
        "image_url": "https://cdn.polovniautomobili.com/user-images/thumbs/3023/30238444/265c6d80a21d-370x278-dw.jpg",
        "images_count": 29,
        "tags": [
          "Na ime kupca"
        ],
        "registration_in_price": true,
        "credit_installment": null,
        "leasing_installment": null,
        "promoted_search": true,
        "promoted_home": false,
        "promoted_xl": false,
        "updated_at": "2026-10-02 00:48:38",
        "lifted_at": "2026-10-02 00:48:37",
        "indexed_at": "2026-10-02 00:48:38",
        "seller": {
          "name": "Auto Jankovic",
          "dealer_id": 1499,
          "owner_id": 112598,
          "kind": "dealer",
          "page_url": "https://www.polovniautomobili.com/auto-placevi/auto-jankovic",
          "slug": "auto-jankovic",
          "logo_url": "https://cdn.polovniautomobili.com/user-images/superadvertiser/112598/logo.jpg"
        }
      }
    ],
    "top_ads": [
      {
        "ad_id": "29740473",
        "url": "https://www.polovniautomobili.com/auto-oglasi/29740473/oglas",
        "title": "Volkswagen Tiguan 2.0 TDI 4M",
        "brand": "Volkswagen",
        "model": "Tiguan",
        "year": 2017,
        "price": 17999,
        "price_currency": "EUR",
        "price_currency_raw": "€",
        "price_on_request": false,
        "price_before_discount": null,
        "discount_pct": null,
        "discounted": false,
        "mileage_km": 175250,
        "fuel": "Dizel",
        "gearbox": "Automatski / poluautomatski",
        "body_type": "Džip/SUV",
        "doors": "4/5 vrata",
        "seats": "5 sedišta",
        "engine_cc": 1968,
        "power_kw": 110,
        "power_hp": 150,
        "emission_class": null,
        "city": "Novi Beograd",
        "is_new": false,
        "status": "active",
        "category": "car",
        "image_url": "https://cdn.polovniautomobili.com/user-images/thumbs/2974/29740473/ffbac6d9566c-370x278.jpg",
        "images_count": 19,
        "tags": [
          "Domaće tablice"
        ],
        "registration_in_price": false,
        "credit_installment": null,
        "leasing_installment": null,
        "promoted_search": false,
        "promoted_home": false,
        "promoted_xl": false,
        "updated_at": "2026-09-26 20:55:28",
        "lifted_at": "2026-09-16 10:50:08",
        "indexed_at": "2026-10-01 00:49:41",
        "seller": {
          "name": null,
          "dealer_id": null,
          "owner_id": 2163806,
          "kind": "private",
          "page_url": null,
          "slug": null,
          "logo_url": null
        }
      },
      {
        "ad_id": "30091060",
        "url": "https://www.polovniautomobili.com/auto-oglasi/30091060/oglas",
        "title": "Volkswagen Passat B8 1.6 tdi highline R",
        "brand": "Volkswagen",
        "model": "Passat B8",
        "year": 2018,
        "price": 10950,
        "price_currency": "EUR",
        "price_currency_raw": "€",
        "price_on_request": false,
        "price_before_discount": null,
        "discount_pct": null,
        "discounted": false,
        "mileage_km": 236526,
        "fuel": "Dizel",
        "gearbox": "Manuelni 6 brzina",
        "body_type": "Karavan",
        "doors": "4/5 vrata",
        "seats": "5 sedišta",
        "engine_cc": 1598,
        "power_kw": 88,
        "power_hp": 120,
        "emission_class": null,
        "city": "Batajnica",
        "is_new": false,
        "status": "active",
        "category": "car",
        "image_url": "https://cdn.polovniautomobili.com/user-images/thumbs/3009/30091060/4a58bb83c071-370x278.jpg",
        "images_count": 30,
        "tags": [
          "Na ime kupca"
        ],
        "registration_in_price": true,
        "credit_installment": null,
        "leasing_installment": null,
        "promoted_search": false,
        "promoted_home": false,
        "promoted_xl": false,
        "updated_at": "2026-09-17 16:14:17",
        "lifted_at": "2026-09-30 01:00:16",
        "indexed_at": "2026-09-30 01:06:30",
        "seller": {
          "name": "KD auto",
          "dealer_id": 10495,
          "owner_id": 1768737,
          "kind": "dealer",
          "page_url": "https://www.polovniautomobili.com/auto-placevi/kd-auto",
          "slug": "kd-auto",
          "logo_url": "https://cdn.polovniautomobili.com/images/advertiser.png"
        }
      }
    ]
  }
}
Actions

What the Polovni Automobili API does

ActionDescriptionConcrete use caseKey params
searchSearch the live Serbian car market on polovniautomobili.com. Every row is one ad: brand, model, year, price with the currency the ad itself prints, odometer, fuel, gearbox, body, engine size, power in kW and hp, doors, seats, emission class, town, photo and the seller (trade name, dealer page, dealer id). total_results is the site's own count and pages / page_size come from the response, not from a constant. 🔴 Read reachable_pages, not pages: the source advertises more pages than it will serve — page 751 and beyond answer HTTP 200 with page 1 all over again (measured), so page is capped at 750 and 200 ads per page is how you reach a large result set. Every filter offered here was measured to move that total in the same run; filters the source accepts and ignores are deliberately absent. Call with no parameters to page the whole market. The paid block the site prints above the results is returned separately as top_ads so it is never mistaken for an organic hit.Price-intelligence teams call search to search the live Serbian car market on polovniautomobili.com.brand, model, price_min, price_max, year_min, ...
listingThe FULL ad behind an ad_id from search: everything the detail page publishes. Adds what the search row cannot carry — the free-text description, the complete equipment and safety lists (measured 1-97 and 0-18 items), every photo at full size, exterior and interior colour and material, drive, registration validity and the site's own registration-cost estimate, part-exchange stance, financing terms, and the seller block with street address, town, district, postal code, coordinates, rating, active-ad count and phone numbers. A dead or removed ad answers NOT_FOUND, never an empty success.Classifieds aggregators call listing to get the FULL ad behind an ad_id from search.ad_id, slug
brandsEvery car brand polovniautomobili lists, with the exact spelling the search filter wants and the site's url slug. Measured 99 entries on 2026-10-01 (including the catch-all 'other'). Read this before building a brand filter: the filter value is the LABEL ('Mercedes Benz', 'Škoda'), not the slug.Resale and arbitrage tools call brands to get every car brand polovniautomobili lists, with the exact spelling the search filter wants and….none
modelsThe models of one brand that currently have live ads, with the number of ads seen for each and the spelling the search `model` filter wants. polovniautomobili publishes no model vocabulary anywhere on this surface (probed on the search payload, the brand page and the brand/model page), so this reads the brand's own result pages instead and tells you exactly how big the sample was: brand_ads is the brand's total, ads_sampled is what was read, sample_coverage_pct is the share. A model with no live ad will not be listed.Lead-generation teams call models to get the models of one brand that currently have live ads, with the number of ads seen for each an….brand, sample_pages
filter_optionsThe complete filter vocabulary the site itself ships, group by group, with each value's Serbian label — fuel, gearbox, body, colour, interior, drive, emission class, damage, plates, condition/history claims, the 97-item equipment list, the 18-item safety list, regions and countries. Each group says which search parameter it feeds, and groups the site publishes but does not actually filter on are marked filterable: false. Use this instead of hard-coding enum values: when the site adds a colour or a driver-assist item, it shows up here on the next call.Price-intelligence teams call filter_options to get the complete filter vocabulary the site itself ships, group by group, with each value's Serbi….none
Code samples

Call search from your stack

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}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.polovniautomobili.search with {"brand":"volkswagen","max_results":20}.
Use cases

Who uses this API and why

  • 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.
  • Build a Serbian car-search product without running a crawler: the 35 measured filters cover what buyers there actually search on, down to the dual-mass flywheel and the conversion attest, and the response tells you exactly how deep the result set can be paged.
FAQ

Questions developers ask before integrating

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.

docs / polovniautomobili

Polovni Automobili

Serbia's biggest car market as JSON — 75,467 live ads, 35 filters that actually bite.

base /polovniautomobili/v15 endpoints
post/polovniautomobili/v1/listing2 credits

The FULL ad behind an ad_id from search: everything the detail page publishes. Adds what the search row cannot carry — the free-text description, the complete equipment and safety lists (measured 1-97 and 0-18 items), every photo at full size, exterior and interior colour and material, drive, registration validity and the site's own registration-cost estimate, part-exchange stance, financing terms, and the seller block with street address, town, district, postal code, coordinates, rating, active-ad count and phone numbers. A dead or removed ad answers NOT_FOUND, never an empty success.

ParameterAllowed / rangeDescription
ad_idrequired—The numeric ad id, exactly as a search row returns it in ad_id.
slugoptional—Optional url slug. polovniautomobili ignores the slug text (two different slugs for the same id return the same ad), so leaving it out is fine — the engine supplies a placeholder. Pass it only if you want the canonical url echoed back verbatim.
Try in playground →
post/polovniautomobili/v1/brands2 credits

Every car brand polovniautomobili lists, with the exact spelling the search filter wants and the site's url slug. Measured 99 entries on 2026-10-01 (including the catch-all 'other'). Read this before building a brand filter: the filter value is the LABEL ('Mercedes Benz', 'Škoda'), not the slug.

Try in playground →
post/polovniautomobili/v1/models3 credits

The models of one brand that currently have live ads, with the number of ads seen for each and the spelling the search `model` filter wants. polovniautomobili publishes no model vocabulary anywhere on this surface (probed on the search payload, the brand page and the brand/model page), so this reads the brand's own result pages instead and tells you exactly how big the sample was: brand_ads is the brand's total, ads_sampled is what was read, sample_coverage_pct is the share. A model with no live ad will not be listed.

ParameterAllowed / rangeDescription
brandrequiredAlfa Romeo · Alpina · Alpine · Aro · Aston Martin · Audi · Avantier · BAIC · BAW · Bentley · BMW · BYD · Cadillac · Changan · Chery · Chevrolet · Chrysler · Citroen · Cupra · Dacia · Daewoo · Daihatsu · Dodge · Dongfeng · DR · DS · Ferrari · Fiat · Ford · Foton · GAZ · Geely · Genesis · GMC · Honda · Hummer · Hyundai · Ineos · Infiniti · Isuzu · JAC Motors · Jaguar · Jeep · Jetour · JMEV · KGM · Kia · Lada · Lamborghini · Lancia · Land Rover · Leapmotor · Lexus · Lincoln · Lynk & Co · Mahindra · Maserati · Maxus · Maybach · Mazda · McLaren · Mercedes Benz · MG · MINI · Mitsubishi · Moskvitch · Nissan · NSU · Oldsmobile · Opel · Peugeot · Polski Fiat · Pontiac · Porsche · Ram · Renault · Rolls Royce · Rover · Saab · Seat · Seres · Smart · SsangYong · Subaru · Suzuki · SWM · Škoda · Tata · Tesla · Toyota · Trabant · UAZ · Volkswagen · Volvo · Wartburg · Xiaomi · Yudo Auto · Zastava · otherBrand label as polovniautomobili spells it. Case is forgiven.
sample_pages = 3optional1–10How many 200-ad pages of this brand's stock to read. 3 pages cover 600 ads, which is the whole stock for most brands; raise it for Volkswagen or Audi, and read sample_coverage_pct to see whether you got all of it.
Try in playground →
post/polovniautomobili/v1/filter_options2 credits

The complete filter vocabulary the site itself ships, group by group, with each value's Serbian label — fuel, gearbox, body, colour, interior, drive, emission class, damage, plates, condition/history claims, the 97-item equipment list, the 18-item safety list, regions and countries. Each group says which search parameter it feeds, and groups the site publishes but does not actually filter on are marked filterable: false. Use this instead of hard-coding enum values: when the site adds a colour or a driver-assist item, it shows up here on the next call.

Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.