AUTO.RIA API & Scraper
The AUTO.RIA API turns auto.ria.com, Ukraine's largest vehicle marketplace, into clean JSON in eight actions.
🤖 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 covers eight catalogues in one call shape, with the live totals measured on 2026-10-02: cars 317,666, motorbikes and scooters 18,587, trucks and vans 11,278, trailers 9,205, buses 3,981, special machinery 2,914, boats and watercraft 1,285 and agricultural machinery 189 — and three surfaces within each: second-hand stock already in Ukraine, new vehicles from dealers and importers (7,301 cars) and vehicles offered to order or in transit (4,330), or all three at once (324,968). Twenty-four filters were each measured twice over, against the unfiltered total of 317,671 in the same run AND against the rows they return: make, model, year band, price band in USD, odometer band in kilometres, engine displacement band, fuel (ten types including PHEV, MHEV and range-extender hybrids), gearbox, body style, region, city, seller type, accident history, video, photos, VIN-verified and open-to-bidding. Filters AUTO.RIA accepts and then silently ignores are deliberately absent, and so are two that do move the total but whose meaning could not be established. Every row carries the advert id, the canonical URL, make and model with AUTO.RIA's own ids, year, the asking price in all three currencies AUTO.RIA publishes with the one the seller actually set named, the odometer in kilometres, fuel and engine size separately, gearbox, drive type, body style, trim, modification and generation, colour, region and city, the VIN and plate where the seller publishes them, every photo URL, the accident, credit, customs, abroad and repair-parts flags AUTO.RIA prints on its own info bar, and the seller: a named dealer with their AUTO.RIA page and verification badges, or a private seller with the site's own numeric user id. search_ids answers the same query with just the ids and AUTO.RIA's own exact count, in one upstream read, for sizing a market or paging through tens of thousands of adverts cheaply. listing and listings return one or up to twenty-five adverts in full, and a sold or archived advert comes back as a successful row carrying is_sold, sold_at_utc and from_archive rather than as an error. makes, models, regions and reference return AUTO.RIA's own closed lists — 397 car makes, 99 Audi models, 23 oblasts, 134 Kyiv-region cities, 14 car body styles, 6 gearboxes — so nothing has to be guessed. In two consecutive live runs on 2026-10-02 all 88 cases passed in both, 88 of 88 and 88 of 88. Prices are USD, UAH and EUR; distances are kilometres; timestamps are returned both as AUTO.RIA prints them and converted to UTC. No AUTO.RIA account, one ReefAPI key, and the standard { ok, data, meta, error } envelope.
AUTO.RIA prints the same fact twice in places, and the units are not the obvious ones
Two of the most important numbers on an advert — the price and the odometer — each appear twice in AUTO.RIA's own data, in different units or different words. The API publishes both halves and tells you when they disagree, instead of picking one behind your back.
| What AUTO.RIA publishes | What the API returns | Why it matters |
|---|---|---|
| An odometer of 83 next to the words "83 тис. км" | mileage_km 83000 · mileage_text "83 тыс. км" | The number is in THOUSANDS of kilometres. Taken at face value every mileage in the catalogue would be a thousand times too low. Checked against the advert's own public page on six adverts: six of six matched after the conversion. |
| "без пробега" (no mileage) with an odometer of 0 | mileage_km 0 · mileage_text "без пробега" | Zero is an answer, not a gap — a new car and an unregistered trailer both read zero. mileage_km is filled on 60 of 60 sampled adverts. |
| "без пробега" with an odometer of 10 | mileage_km 10000 · mileage_conflict true | The source contradicts itself on roughly 1 advert in 60. The number is published and the disagreement is flagged, with a per-call count in meta. |
| 36000 and "36 000" in the same advert | price_usd 36000 · price_display_usd "36 000" · price_conflict false | Two copies of the price, compared on every row. Zero disagreements across 120 sampled adverts in two runs; and against the price box on the advert's own page, six of six matched. |
| $36,000 and ₴1,615,680 and €31,494, with the seller's currency marked USD | price_usd · price_uah · price_eur · price_currency "USD" | All three are published as AUTO.RIA publishes them; the other two are its own conversion. None is computed from another here, so nothing drifts with an exchange rate we invented. |
| "Бензин, 3 л." in a single field | fuel "Бензин" · engine_capacity_l 3.0 · fuel_text "Бензин, 3 л." | Fuel type and engine size share one field upstream. Both halves are returned separately and the raw string is kept. "Електро" has no displacement and "Не вказано" (not specified) becomes null rather than the literal words. |
| A new-car advert numbered 2085460 and a used-car advert numbered 2085460 | listing_type "new" vs "used" on listing; search routes each id by itself | New and second-hand adverts are numbered in separate, overlapping ranges, so the same id is two different vehicles. search handles it per row; for an id you bring yourself, say which range it came from. |
Timestamps arrive with no timezone marker. AUTO.RIA prints Kyiv local time — measured, by comparing the newest advert's stamp against the clock at the moment of the call — so each one is returned twice: added_at_local exactly as AUTO.RIA prints it, added_at_utc converted, and source_timezone naming the assumption.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/autoria/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"category": "cars",
"max_results": 5
}
}{
"ok": true,
"meta": {
"api": "autoria",
"endpoint": "search",
"mode": "live",
"latency_ms": 3036.9,
"record_count": 5,
"bytes": 74482,
"cache_hit": false,
"completeness_pct": 100,
"stop_reason": "limit_reached",
"promo_tiles_skipped": 1,
"new_car_rows": 0,
"price_witness_mismatch": 0,
"mileage_witness_mismatch": 0,
"detail_failed": 0,
"detail_not_found": 0,
"charged_credits": 1,
"version": "1.0.0",
"request_id": "24466f6436cc4a75",
"queue_ms": 1.2
},
"data": {
"category": "cars",
"listing_type": "used",
"sort": "relevance",
"page": 1,
"total_available": 317078,
"results": [
{
"listing_id": "38876558",
"url": "https://auto.ria.com/auto_audi_q7_38876558.html",
"title": "Audi Q7",
"make": "Audi",
"make_slug": "audi",
"make_id": 6,
"model": "Q7",
"model_slug": "q7",
"model_id": 1943,
"year": 2018,
"price_usd": 36000,
"price_uah": 1615680,
"price_eur": 31494,
"price_currency": "USD",
"price_display_usd": "36 000",
"price_conflict": false,
"mileage_km": 83000,
"mileage_text": "83 тыс. км",
"mileage_conflict": false,
"fuel": "Бензин",
"fuel_id": 1,
"fuel_text": "Бензин, 3 л.",
"engine_capacity_l": 3,
"gearbox": "Автомат",
"gearbox_id": 2,
"drive_type": "Повний",
"drive_type_id": 1,
"body_type": "Позашляховик / Кросовер",
"is_new": false,
"body_type_id": 5,
"body_type_slug": "vnedorozhnik-krossover",
"trim": "Prestige",
"modification": "3.0 TFSI Tiptronic (333 к.с.) Quattro",
"generation": "Typ 4M",
"colour": "Чорний",
"colour_slug": "black",
"colour_hex": "#000000",
"city": "Київ",
"city_id": 10,
"region": "Київська",
"region_slug": "kiev",
"region_id": 10,
"vin": "WA1LAAF73KD015408",
"vin_shown_by_seller": true,
"plate_number": "KA 4404 AT",
"description": "Машину для мене підбирали вже в Україні, свіжепригнану, з повними перевірками і без нюансів. По кузову тільки переднє крило замінено у колір, по прибору вся машина без підкрасів, безпека рідна, жовті повороти. 7 місць, 360 камери, навігація, асистенти, вентиляція сидінь, панорамома, сабвуфер… купа всього. Нова гума зима і літо - 2400$ Максимальне ТО з заміною всього що було потрібно і навіть просто бажано - 4000$! Машина жодних вкладень не потребує. Є відео фіксація всіх перевірок і повного ТО. Торг біля авто, майданчики і бізнесмени прохання не телефонувати, немає часу.",
"photo_count": 33,
"photo_urls": [
"https://cdn3.riastatic.com/photosnew/auto/photo/audi_q7__614846238f.jpg",
"https://cdn3.riastatic.com/photosnew/auto/photo/audi_q7__614846728f.jpg",
"https://cdn3.riastatic.com/photosnew/auto/photo/audi_q7__614846243f.jpg"
],
"has_video": false,
"is_sold": false,
"sold_at_local": null,
"sold_at_utc": null,
"is_active": true,
"from_archive": false,
"under_moderation": false,
"had_accident": true,
"under_credit": false,
"confiscated": false,
"on_repair_parts": false,
"registered_abroad": false,
"customs_cleared": true,
"vat_invoice": false,
"exchange_possible": false,
"exchange_type": "Будь-який",
"auction_possible": false,
"technical_condition": null,
"inspected_by_centre": false,
"added_at_local": "2026-10-01 00:49:15",
"added_at_utc": "2026-09-30T21:49:15Z",
"updated_at_local": "2026-10-01 00:56:54",
"updated_at_utc": "2026-09-30T21:56:54Z",
"expires_at_local": "2026-10-31 00:49:15",
"expires_at_utc": "2026-10-30T21:49:15Z",
"source_timezone": "Europe/Kyiv",
"seller": {
"kind": "private",
"name": null,
"dealer_id": null,
"dealer_type": null,
"url": null,
"logo_url": null,
"verified": null,
"is_reliable": null,
"user_id": 10363728,
"phone_masked": "(063) xxx-xx-xx"
}
},
{
"listing_id": "40419902",
"url": "https://auto.ria.com/auto_audi_q7_40419902.html",
"title": "Audi Q7",
"make": "Audi",
"make_slug": "audi",
"make_id": 6,
"model": "Q7",
"model_slug": "q7",
"model_id": 1943,
"year": 2016,
"price_usd": 25500,
"price_uah": 1144440,
"price_eur": 22308,
"price_currency": "USD",
"price_display_usd": "25 500",
"price_conflict": false,
"mileage_km": 161000,
"mileage_text": "161 тыс. км",
"mileage_conflict": false,
"fuel": "Бензин",
"fuel_id": 1,
"fuel_text": "Бензин, 3 л.",
"engine_capacity_l": 3,
"gearbox": "Автомат",
"gearbox_id": 2,
"drive_type": "Повний",
"drive_type_id": 1,
"body_type": "Позашляховик / Кросовер",
"is_new": false,
"body_type_id": 5,
"body_type_slug": "vnedorozhnik-krossover",
"trim": "Prestige",
"modification": "3.0 TFSI Tiptronic (333 к.с.) Quattro 7s",
"generation": "Typ 4M",
"colour": "Білий",
"colour_slug": "white",
"colour_hex": "#ffffff",
"city": "Львів",
"city_id": 5,
"region": "Львівська",
"region_slug": "lvov",
"region_id": 5,
"vin": "WA1VABF78HD020109",
"vin_shown_by_seller": true,
"plate_number": "BC 8173 TO",
"description": "Автомобіль найкращої комплектації престиж. Стан відмінний. Автомобіль поєднує потужність, комфорт, безпеку та практичність, тому чудово підходить як для щоденного використання, так і для подорожей. Всі деталі за телефоном.",
"photo_count": 23,
"photo_urls": [
"https://cdn2.riastatic.com/photosnew/auto/photo/audi_q7__657392237f.jpg",
"https://cdn2.riastatic.com/photosnew/auto/photo/audi_q7__657392236f.jpg",
"https://cdn2.riastatic.com/photosnew/auto/photo/audi_q7__657392244f.jpg"
],
"has_video": false,
"is_sold": false,
"sold_at_local": null,
"sold_at_utc": null,
"is_active": true,
"from_archive": false,
"under_moderation": false,
"had_accident": false,
"under_credit": false,
"confiscated": false,
"on_repair_parts": false,
"registered_abroad": false,
"customs_cleared": true,
"vat_invoice": false,
"exchange_possible": false,
"exchange_type": "Будь-який",
"auction_possible": false,
"technical_condition": null,
"inspected_by_centre": false,
"added_at_local": "2026-09-11 23:20:05",
"added_at_utc": "2026-09-11T20:20:05Z",
"updated_at_local": "2026-09-18 23:15:37",
"updated_at_utc": "2026-09-18T20:15:37Z",
"expires_at_local": "2026-10-11 23:20:05",
"expires_at_utc": "2026-10-11T20:20:05Z",
"source_timezone": "Europe/Kyiv",
"seller": {
"kind": "private",
"name": null,
"dealer_id": null,
"dealer_type": null,
"url": null,
"logo_url": null,
"verified": null,
"is_reliable": null,
"user_id": 9765334,
"phone_masked": "(096) xxx-xx-xx"
}
},
{
"listing_id": "40299426",
"url": "https://auto.ria.com/auto_bmw_x5_40299426.html",
"title": "BMW X5",
"make": "BMW",
"make_slug": "bmw",
"make_id": 9,
"model": "X5",
"model_slug": "x5",
"model_id": 96,
"year": 2008,
"price_usd": 14000,
"price_uah": 628320,
"price_eur": 12247,
"price_currency": "USD",
"price_display_usd": "14 000",
"price_conflict": false,
"mileage_km": 442000,
"mileage_text": "442 тыс. км",
"mileage_conflict": false,
"fuel": "Дизель",
"fuel_id": 2,
"fuel_text": "Дизель, 2.99 л.",
"engine_capacity_l": 2.99,
"gearbox": "Автомат",
"gearbox_id": 2,
"drive_type": "Повний",
"drive_type_id": 1,
"body_type": "Позашляховик / Кросовер",
"is_new": false,
"body_type_id": 5,
"body_type_slug": "vnedorozhnik-krossover",
"trim": "Individual",
"modification": "35d AT (286 к.с.) xDrive",
"generation": "E70",
"colour": "Сірий",
"colour_slug": "gray",
"colour_hex": "#9c9999",
"city": "Дніпро (Дніпропетровськ)",
"city_id": 11,
"region": "Дніпропетровська",
"region_slug": "dnepr-dnepropetrovsk",
"region_id": 11,
"vin": "WBAFF01030L201796",
"vin_shown_by_seller": true,
"plate_number": "KA 0379 PI",
"description": "Продам авто — доглянуте та технічно підготовлене Автомобіль у дуже хорошому технічному та візуальному стані. Проведено великий обсяг робіт і замінено багато дорогих вузлів та витратних матеріалів — вкладень не потребує. Що зроблено: замінено всі мастила та фільтри; замінено всі 4 амортизатори; замінено блок ручника з тросами на новий оригінальний; замінено радіатор інтеркулера; замінено нижні кульові опори разом із важелями на нові; замінено верхні кульові опори на нові; клімат-контроль працює; основний радіатор замінено на новий; залито новий антифриз; замінено гальмівну рідину; замінено пере",
"photo_count": 25,
"photo_urls": [
"https://cdn1.riastatic.com/photosnew/auto/photo/bmw_x5__654105641f.jpg"
],
"has_video": true,
"is_sold": false,
"sold_at_local": null,
"sold_at_utc": null,
"is_active": true,
"from_archive": false,
"under_moderation": false,
"had_accident": false,
"under_credit": false,
"confiscated": false,
"on_repair_parts": false,
"registered_abroad": false,
"customs_cleared": true,
"vat_invoice": false,
"exchange_possible": false,
"exchange_type": "Будь-який",
"auction_possible": true,
"technical_condition": "{'langId': 4, 'id': 1, 'title': 'Повністю непошкоджене', 'annotation': 'Пошкодження відсутні'}",
"inspected_by_centre": false,
"added_at_local": "2026-09-18 20:10:08",
"added_at_utc": "2026-09-18T17:10:08Z",
"updated_at_local": "2026-09-26 11:20:36",
"updated_at_utc": "2026-09-26T08:20:36Z",
"expires_at_local": "2026-11-13 20:40:35",
"expires_at_utc": "2026-11-13T17:40:35Z",
"source_timezone": "Europe/Kyiv",
"seller": {
"kind": "private",
"name": null,
"dealer_id": null,
"dealer_type": null,
"url": null,
"logo_url": null,
"verified": null,
"is_reliable": null,
"user_id": 10590371,
"phone_masked": "(073) xxx-xx-xx"
}
}
],
"returned": 5
}
}What the AUTO.RIA API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search AUTO.RIA and get FULL listings back, not ids: price in all three currencies AUTO.RIA publishes, odometer in kilometres, year, trim, modification, generation, body style, colour, region and city, VIN and plate where the seller publishes them, every photo URL, the accident/credit/customs flags the site prints, and the seller block (dealer name, dealer page and badges, or the private seller's own site id and the site's own masked phone). Covers all eight vehicle categories and the used, new and on-order surfaces. At least one of `make`, `model`, `region`, `city`, `year_from`, `year_to`, `price_from_usd`, `price_to_usd`, `fuel`, `gearbox`, `body_type_id`, `seller_type`, `mileage_from_km`, `mileage_to_km`, `engine_from_l`, `engine_to_l`, `accident_history`, `has_video`, `has_photo`, `vin_verified` or `auction_possible` is normally wanted — calling with none of them returns the whole category, newest/most-relevant first, which is a valid but very broad answer. | Price-intelligence teams call search to search AUTO.RIA and get FULL listings back, not ids. | category, listing_type, make, model, year_from, ... |
| search_ids | The same search, but it returns only AUTO.RIA's own exact total and the advert ids — one upstream request and about 3 KB, whatever the page size. Use it to size a market, to page through tens of thousands of ads cheaply, or to feed `listings`. At least one of `make`, `model`, `region`, `city`, `year_from`, `year_to`, `price_from_usd`, `price_to_usd`, `fuel`, `gearbox`, `body_type_id`, `seller_type`, `mileage_from_km`, `mileage_to_km`, `engine_from_l`, `engine_to_l`, `accident_history`, `has_video`, `has_photo`, `vin_verified` or `auction_possible` is normally wanted — calling with none of them returns the whole category, newest/most-relevant first, which is a valid but very broad answer. | Classifieds aggregators call search_ids to get the same search, but it. | category, listing_type, make, model, year_from, ... |
| listing | One AUTO.RIA advert in full, by id. Returns everything the advert page publishes: the three-currency price with the seller's own currency named, the odometer in kilometres, trim and modification, VIN and plate where published, every photo URL, the accident/credit/customs/abroad flags, and the seller. A SOLD or ARCHIVED advert is a successful answer carrying `is_sold`, `sold_at_utc`, `is_active` and `from_archive` — only an id AUTO.RIA has never issued returns NOT_FOUND. | Resale and arbitrage tools call listing to get one AUTO.RIA advert in full, by id. | listing_id, listing_type |
| listings | Up to 25 adverts in one call, in the same shape as `listing`, and cheaper per advert than 25 single calls. Ids AUTO.RIA does not know come back in `not_found` instead of failing the call; if the upstream cuts the batch short, the rows it did return are still returned and the shortfall is reported in `meta`. | Lead-generation teams call listings to get up to 25 adverts in one call, in the same shape as `listing`, and cheaper per advert than 25…. | listing_ids, listing_type |
| makes | Every manufacturer AUTO.RIA lists for a vehicle category, with the id the `make` filter takes. 500+ entries for cars, including Chinese EV brands most catalogues do not carry. | Price-intelligence teams call makes to get every manufacturer AUTO.RIA lists for a vehicle category, with the id the `make` filter takes. | category |
| models | Every model AUTO.RIA lists under one manufacturer, with the id the `model` filter takes. | Classifieds aggregators call models to get every model AUTO.RIA lists under one manufacturer, with the id the `model` filter takes.. | make, category |
| regions | Ukraine's oblasts with the ids the `region` filter takes. Pass `region` to get that oblast's cities with the ids the `city` filter takes instead. | Resale and arbitrage tools call regions to get ukraine's oblasts with the ids the `region` filter takes. | region |
| reference | AUTO.RIA's own closed lists, so nobody has to guess an id: vehicle categories, body styles, gearbox types and drive types. Drive type is returned on every listing but is NOT filterable — measured, and said here rather than discovered by a customer. | Lead-generation teams call reference to get aUTO.RIA's own closed lists, so nobody has to guess an id. | list, category |
Call search from your stack
curl -X POST https://api.reefapi.com/autoria/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"category":"cars","max_results":5}'import requests
r = requests.post(
"https://api.reefapi.com/autoria/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"category": "cars",
"max_results": 5
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/autoria/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"category": "cars",
"max_results": 5
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.autoria.search with {"category":"cars","max_results":5}.Who uses this API and why
- Price a car against the live Ukrainian market: search with make, model, year band and odometer band, read total_available for the size of the comparable set and the rows for the actual asking prices in USD. The odometer filter is in kilometres on our side and rounds to the nearest thousand, because that is the granularity AUTO.RIA's own filter has.
- Watch a dealer's inventory: search with seller_type=dealer and a region, sorted by newest, then read seller.dealer_id off the rows to group by dealership. 20,830 dealer adverts live on 2026-10-02 against 296,845 private ones, so the dealer slice is the one worth polling.
- Build an EV or hybrid dataset for Ukraine: fuel takes ten values, including the ones most catalogues flatten into one: electric 15,775 adverts, hybrid HEV, plug-in PHEV 2,208, mild MHEV 815 and range-extender REEV 39. engine_from_l and engine_to_l narrow by displacement where there is one.
- Size a market before you build on it: search_ids answers any filter combination with AUTO.RIA's own exact count and up to 100 ids in a single upstream read. Twenty-four filter combinations cost twenty-four cheap calls, which is how the coverage numbers on this page were produced.
- Screen out accident and import history: accident_history splits the catalogue into 233,006 adverts AUTO.RIA flags as never crashed and 84,669 with accident history, and every row also carries the had_accident, under_credit, confiscated, on_repair_parts, registered_abroad and customs_cleared flags AUTO.RIA prints on its own info bar.
Questions developers ask before integrating
What does search cover, and how many adverts are in each catalogue?
Eight catalogues in one call shape via the category parameter. Measured 2026-10-02: cars 317,666 · motorbikes and scooters 18,587 · trucks and vans 11,278 · trailers 9,205 · buses 3,981 · special machinery 2,914 · boats and watercraft 1,285 · agricultural machinery 189. Within cars you also choose the surface with listing_type: used 317,666, new 7,301, order 4,330, or all 324,968. Each of the eight categories and each of the surfaces has its own case in the acceptance suite, and all thirteen returned full rows in both runs — because a parser that works on cars can silently return nothing on buses.
How deep can one search go?
100 rows a page on search_ids and 40 a page on search, and paging is genuinely deep: page 500 still returned fresh ids. The 100-row page is AUTO.RIA's own ceiling — asking for 101, 150, 200 or 500 all returned exactly 100 — and total_available always reports the real size of your result set, which is AUTO.RIA's own exact count, not an estimate. search is capped lower at 40 because each row is a separate full advert read; use search_ids to walk a large result set and listings to pull the adverts you want in batches of 25.
Is paging reliable if I do not set a sort?
Yes, and it was measured rather than assumed. Two identical unsorted calls returned the same 100 ids, 100 of 100, and three consecutive unsorted pages of 100 gave 300 rows with 300 unique ids. So sort defaults to relevance, which is AUTO.RIA's own ranking. newest drifts very slightly while you page — four pages of 100 gave 400 rows and 399 unique, because adverts keep arriving — and that is reported rather than hidden. price_asc and price_desc share none of their first 100 rows, so they are genuinely opposite orders.
Which filters actually work?
The twenty-four on the page, each of which passed two tests: it moved AUTO.RIA's own total, and the rows it returned carried the value. For example seller_type=dealer returns 20,830 adverts and every sampled row has a named dealer, while seller_type=private returns 296,845 and no sampled row has one — and 20,830 + 296,845 accounts for the whole 317,671 catalogue. Drive type is a deliberate gap: it is returned on every advert that publishes it, but every way of filtering on it was accepted with HTTP 200 and then ignored, so there is no drive-type filter here rather than one that quietly does nothing.
What does a sold advert do?
It comes back as a successful row, carrying is_sold true, sold_at_local and sold_at_utc, is_active false and from_archive. Sold and archived adverts are an answer about the market, not an error — three of the four historical ids we audited were sold, with sale dates in 2019, 2021 and 2023. Only an id AUTO.RIA has never issued returns NOT_FOUND. An empty filtered result is also an answer: a search with no matches returns ok, zero rows, a total of zero, and a note in meta saying which filters produced it.
Do I get the seller?
Yes, as AUTO.RIA publishes it. For a dealer: the business name, its AUTO.RIA dealer page, logo, dealer type and the verification flags AUTO.RIA shows. For a private seller: AUTO.RIA's own numeric user id. The phone number is published exactly as AUTO.RIA itself prints it, which is partly masked on the public advert — we pass that string through and make no attempt to complete it. In a 60-advert sample across eleven surfaces, 20 adverts were from dealers and 40 from private sellers.
Do I get the VIN and the registration plate?
Where the seller publishes them. In the 60-advert sample the VIN was present on 40 and the plate on 14; both are null on the rest, never invented. vin_shown_by_seller tells you whether the seller agreed to show the VIN, and vin_verified as a filter narrows the catalogue to the 275,881 adverts whose VIN AUTO.RIA has checked. There is no vehicle-history report here: AUTO.RIA sells those separately and does not publish their contents.
How complete is a row?
Counted on 60 distinct adverts across eleven surfaces, identically in both runs. Always present: advert id, URL, title, make, model, year, all three prices, the seller's currency, odometer in kilometres and in AUTO.RIA's own words, city, region, photo count, every photo URL, the added, updated and expiry timestamps, and the seller block. Often present: description 57, body style 54, fuel 45, colour 43, VIN 40, gearbox 37, engine size 33, drive type 30, generation 26, technical condition 22, modification 20, trim 17, plate 14. Those are the numbers, not a promise: a field AUTO.RIA leaves blank comes back null.
What language is the text in?
AUTO.RIA's own, which is a Ukrainian and Russian mix — body styles and colours in Ukrainian, some info-bar text in Russian — and we return it as published rather than translating it. We checked whether the source has a language switch on this surface: four different language settings returned the same payload within four bytes, so there is nothing to switch. Every slug field (make_slug, model_slug, body_type_slug, colour_slug, region_slug) is AUTO.RIA's own Latin-script value, so you have a stable key as well as the display name.
How do I find the right make, model, region or body-style id?
Four free actions return AUTO.RIA's own lists: makes (397 for cars, 181 for trucks), models for one make (99 for Audi), regions (23 oblasts, or the 134 cities of a region), and reference for body styles, gearboxes, drive types and the category list. You can also just pass a name — make: "Audi", region: "Київська" — and an unknown name is rejected with the nearest matches named instead of silently returning the whole catalogue.
What is the AUTO.RIA API?
AUTO.RIA API is a ReefAPI endpoint group for ukraine's largest vehicle marketplace: 325,000 live adverts across cars, motorbikes, trucks, buses, trailers, machinery and boats, with price in three currencies, vin, plate and the dealer or private seller. It returns live JSON through POST requests under /autoria/v1.
Is the AUTO.RIA API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. AUTO.RIA calls use the same shared credit balance as every other ReefAPI engine.
Do I need an AUTO.RIA login or account?
No login to AUTO.RIA 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 AUTO.RIA data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.