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

AUTO.RIA API & Scraper

The AUTO.RIA API turns auto.ria.com, Ukraine's largest vehicle marketplace, into clean JSON in eight actions.

8 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 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.

Reference

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 publishesWhat the API returnsWhy 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 0mileage_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 10mileage_km 10000 · mileage_conflict trueThe 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 advertprice_usd 36000 · price_display_usd "36 000" · price_conflict falseTwo 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 USDprice_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 fieldfuel "Бензин" · 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 2085460listing_type "new" vs "used" on listing; search routes each id by itselfNew 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.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "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
  }
}
Captured response
{
  "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
  }
}
Actions

What the AUTO.RIA API does

ActionDescriptionConcrete use caseKey params
searchSearch 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_idsThe 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, ...
listingOne 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
listingsUp 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
makesEvery 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
modelsEvery 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
regionsUkraine'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
referenceAUTO.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
Code samples

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}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.autoria.search with {"category":"cars","max_results":5}.
Use cases

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.
FAQ

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.

docs / autoria

AUTO.RIA

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.

base /autoria/v18 endpoints
post/autoria/v1/search_ids1 credit

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.

ParameterAllowed / rangeDescription
category = carsoptionalcars · moto · water · special · trailers · trucks · buses · agriculturalWhich vehicle catalogue to search. Each one is a separate surface with its own inventory; live totals measured 2026-10-01 are in the labels.
listing_type = usedoptionalused · new · order · allWhich AUTO.RIA surface to read. `used` = second-hand stock already in Ukraine (317,695 live) · `new` = new vehicles from dealers/importers (7,399) · `order` = offered to order or in transit (4,330) · `all` = the three together (325,095). New-car adverts are numbered in their OWN id range and are read through their own surface; `search` handles that per row, so a mixed `all` page still returns the right vehicle for every id in it.
makeoptional—Manufacturer. Accepts the AUTO.RIA make name as `makes` returns it (e.g. `Audi`, `Volkswagen`) or its numeric id (e.g. `6`). A name costs one extra lookup; the id does not. An unknown name is rejected with the nearest matches named.
modeloptional—Model, as `models` returns it (e.g. `Q7`) or its numeric id. Requires `make`. Resolving a model NAME costs one extra lookup.
year_fromoptional1900–2030Earliest model year, inclusive. Site parameter `s_yers[0]`.
year_tooptional1900–2030Latest model year, inclusive. Site parameter `po_yers[0]`.
price_from_usdoptional0–10000000Lowest asking price in US dollars. The site's price filter is denominated in USD — verified by rows: `price_from_usd=60000` returned cars priced $61,000–$285,000 and `price_to_usd=900` returned $320–$900.
price_to_usdoptional0–10000000Highest asking price in US dollars (see `price_from_usd`).
mileage_from_kmoptional0–3000000Lowest odometer reading in KILOMETRES. AUTO.RIA's own filter is denominated in thousands of km, so this is divided by 1000 before it is sent and therefore rounds down to the nearest 1,000 km.
mileage_to_kmoptional0–3000000Highest odometer reading in kilometres (see `mileage_from_km` for the 1,000 km rounding).
engine_from_loptional0–30Smallest engine displacement in litres. Site parameter `engineVolumeFrom`.
engine_to_loptional0–30Largest engine displacement in litres. Site parameter `engineVolumeTo`.
fueloptionalpetrol · diesel · gas · gas-petrol · hybrid · electric · methane · phev · mhev · reevFuel / drivetrain. Live row counts for the cars category are in the labels. Fuel ids 7 and 9 exist in the site's numbering but return 0 rows, so they are not offered.
gearboxoptionalmanual · automatic · tiptronic · robot · cvt · reducerTransmission, from the site's own gearbox list.
body_type_idoptional1–Body style id. The valid ids for a category come from `reference` with `list=body_types` (for cars: 3 saloon, 4 hatchback, 5 SUV/crossover, 8 MPV …). An unknown id returns 0 rows rather than an error.
regionoptional—Oblast / region. Accepts the name as `regions` returns it or its numeric id (e.g. `10` = Kyiv region). Resolving a name costs one extra lookup.
cityoptional—City. Accepts the name as `regions` with a `region` returns it, or its numeric id (`10` = Kyiv). Resolving a name requires `region` and costs one extra lookup.
seller_typeoptionalprivate · dealerWho is selling. Both values were confirmed against the rows they return, not just against the total.
accident_historyoptionalnone · had_accidentFilter on AUTO.RIA's own accident flag. `none` = never in an accident (233,031 live, every sampled row flagged false) · `had_accident` = has accident history (84,673, every sampled row flagged true).
has_videooptional—Only ads with a video (8,256 live in the cars category).
has_photooptional—Only ads with at least one photo (316,322 of 317,695 live — almost all of them, so this filter rarely changes much.
vin_verifiedoptional—Only ads whose VIN AUTO.RIA has checked (275,895 live; every sampled row carried a VIN).
auction_possibleoptional—Only sellers open to bidding/haggling (198,149 live; every sampled row carried the flag).
sort = relevanceoptionalrelevance · newest · price_asc · price_descResult order. `relevance` sends no sort key and uses AUTO.RIA's own ranking — measured stable (two identical calls shared 20/20 ids; three pages of 100 gave 300 rows, 300 unique). `newest` drifts slightly while you page, because ads keep arriving: four pages of 100 gave 400 rows and 399 unique. `price_asc` and `price_desc` share 0 of 20 rows, so they are genuinely opposite orders.
page = 1optional1–50001-based result page. Deep paging works: page 500 at 20 rows a page still answered 20 fresh ids.
max_results = 100optional1–100Ids to return, 1–100. 100 is the site's own page ceiling: asking for 101, 150, 200 or 500 all returned exactly 100.
Try in playground →
post/autoria/v1/listing1 credit

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.

ParameterAllowed / rangeDescription
listing_idrequired—AUTO.RIA advert id, as `search` / `search_ids` return it (e.g. `38876558`). New-car ids are shorter (`2085460`) and resolve through the same call.
listing_type = usedoptionalused · newWhich id namespace the advert id belongs to. AUTO.RIA numbers NEW-car adverts separately from second-hand ones and the two ranges OVERLAP: id 2085460 is a Peugeot 2008 among the new cars and an archived Subaru Forester among the used ones, and both answer HTTP 200. Pass `new` for an id that came out of a `new` search; `used` (the default) covers ids from `used`, `order` and `all` searches. `search` routes every id automatically, so this only matters when you bring your own id.
Try in playground →
post/autoria/v1/listings2 credits

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`.

ParameterAllowed / rangeDescription
listing_idsrequired—Up to 25 AUTO.RIA advert ids, comma-separated. Ids that do not exist are reported in `not_found` rather than failing the call.
listing_type = usedoptionalused · newWhich id namespace the advert id belongs to. AUTO.RIA numbers NEW-car adverts separately from second-hand ones and the two ranges OVERLAP: id 2085460 is a Peugeot 2008 among the new cars and an archived Subaru Forester among the used ones, and both answer HTTP 200. Pass `new` for an id that came out of a `new` search; `used` (the default) covers ids from `used`, `order` and `all` searches. `search` routes every id automatically, so this only matters when you bring your own id.
Try in playground →
post/autoria/v1/makes1 credit

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.

ParameterAllowed / rangeDescription
category = carsoptionalcars · moto · water · special · trailers · trucks · buses · agriculturalWhich vehicle catalogue to search. Each one is a separate surface with its own inventory; live totals measured 2026-10-01 are in the labels.
Try in playground →
post/autoria/v1/models1 credit

Every model AUTO.RIA lists under one manufacturer, with the id the `model` filter takes.

ParameterAllowed / rangeDescription
makeoptional—Manufacturer. Accepts the AUTO.RIA make name as `makes` returns it (e.g. `Audi`, `Volkswagen`) or its numeric id (e.g. `6`). A name costs one extra lookup; the id does not. An unknown name is rejected with the nearest matches named.
category = carsoptionalcars · moto · water · special · trailers · trucks · buses · agriculturalWhich vehicle catalogue to search. Each one is a separate surface with its own inventory; live totals measured 2026-10-01 are in the labels.
Try in playground →
post/autoria/v1/regions1 credit

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.

ParameterAllowed / rangeDescription
regionoptional—Oblast / region. Accepts the name as `regions` returns it or its numeric id (e.g. `10` = Kyiv region). Resolving a name costs one extra lookup.
Try in playground →
post/autoria/v1/reference1 credit

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.

ParameterAllowed / rangeDescription
listrequiredcategories · body_types · gearboxes · drive_typesWhich reference list to return.
category = carsoptionalcars · moto · water · special · trailers · trucks · buses · agriculturalWhich vehicle catalogue to search. Each one is a separate surface with its own inventory; live totals measured 2026-10-01 are in the labels.
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.