Russia's car market as JSON, with every filter read back out of Drom's own echo
Drom API returns live Drom data as clean JSON for drom The primary endpoint, search, returns { query: {make, model, region, page, sort, url}, total, page, page_size, pages_available, has_more, filters_applied, filters_echoed, resu….
3 active endpoints. Every call is 1 credit.
- POST/drom/v1/search
- POST/drom/v1/detail
- POST/drom/v1/models
What Drom endpoints does ReefAPI ship?
3 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Drom API
3 of 3 endpoints, ready to run
Search auto.drom.ru the way its own visitors do: pick a make and model, narrow to a city or region with a radius, and apply drom's own year, price, odometer, engine volume, power, gearbox, fuel, drive, body, steering-side, damage, paperwork and seller-type filters. Every car returns the rouble price cross-checked against the price string drom renders next to it, the model year drom publishes, the odometer with drom's own formatted reading beside it, engine volume and power, gearbox, fuel and drive in both a stable code and drom's own Russian word, the body type, the city, whether a private person or a dealership is selling (drom's own flag, never inferred), drom's own price rating against the market, its row badges (only-on-drom, from-the-owner, brand-new, never-registered-in-Russia) and the ad's photos. Sort by price, model year, odometer, engine size or drom's price rating, and page through the result set 20 cars at a time up to page 100. The answer repeats every filter drom actually applied, read back out of drom's own echo — a filter drom dropped is an error, never a quietly widened result.
{ "ok": true, "data": { "query": { "make": "toyota", "model": "camry", "region": null, "page": 1, "sort": "relevance", "url": "https://auto.drom.ru/toyota/camry/" }, "total": 13345, "page": 1, "page_size": 20, "pages_available": 100, "has_more": true, "page_limit": 100, "sort_applied": "по актуальности", "filters_applied": {}, "filters_echoed": {}, "results": [ { "listing_id": "616952799", "url": "https://auto.drom.ru/moscow/toyota/camry/616952799.html", "title": "Toyota Camry, 2014", "trim": "2.5 AT Престиж", "year": 2014, "year_mismatch": null, "price": 1650000, "price_shown": 1650000, "price_mismatch": null, "currency": "RUB", "price_rating": "at_market", "price_rating_label": "нормальная цена", "mileage_km": 134000, "mileage_label": "134 000 км", "engine_volume_l": 2.5, "power_hp": 181, "fuel_type": "petrol", "fuel_label": "бензин", "fuel_note": null, "gearbox": "automatic", "gearbox_label": "АКПП", "drive": "front", "drive_label": "передний", "body_type": "Седан", "is_new": null, "is_sold": null, "seller_type": "private", "location": "Москва", "published_label": "сегодня", "badges": [ "only_on_drom" ], "badges_unmapped": null, "image_count": 12, "images": [ "https://s12.auto.drom.ru/photo/v2/aQ7KLUb3OOnJuxWuRy7oNtjXLdOy-TOkiCeUPXAp7iZdXnjkkqUybTTo9ijeNXeTRhLDayGtD1ck16Ul/gen272wb.jpg", "https://s12.auto.drom.ru/photo/v2/mdPMOcRLsHXtCekX6F-YUNLTGIyQQRHBusyd-W0Pg2gtOJfKn8TxVEFW0Lyb2UEvDTOTp2h53hs8oi2S/gen272wb.jpg", "https://s12.auto.drom.ru/photo/v2/R17utYaKhs6B9lfe633C3lD8M2T4PKm6p5hE3Cy53P4Q0Q1KdNFApN9KumoQ_1AgbCInYUVeqAYU3_bW/gen272wb.jpg" ], "attributes_unparsed": null }, { "listing_id": "415818830", "url": "https://auto.drom.ru/moscow/toyota/camry/415818830.html", "title": "Toyota Camry, 2021", "trim": "2.0 CVT Стандарт", "year": 2021, "year_mismatch": null, "price": 1900000, "price_shown": 1900000, "price_mismatch": null, "currency": "RUB", "price_rating": "at_market", "price_rating_label": "нормальная цена", "mileage_km": 201511, "mileage_label": "201 511 км", "engine_volume_l": 2, "power_hp": 150, "fuel_type": "petrol", "fuel_label": "бензин", "fuel_note": null, "gearbox": "cvt", "gearbox_label": "вариатор", "drive": "front", "drive_label": "передний", "body_type": "Седан", "is_new": null, "is_sold": null, "seller_type": "private", "location": "Москва", "published_label": "сегодня", "badges": null, "badges_unmapped": null, "image_count": 47, "images": [ "https://s12.auto.drom.ru/photo/v2/iwrMuxXtZ7ngb9YohhWHovHm7GNXQrrk3uqRU51f-le9sLQi7g9yAQpcDg9zvXICaSxMTLd5l9rS9MvT/gen272wb.jpg", "https://s12.auto.drom.ru/photo/v2/4N5OC5eM-ULwGfK-zLDcakMy2cJYrTNp0HFR_Ewwrj-Bj10j8mD57XriQ-fDuJjyx526UTeYkXDnq1jC/gen272wb.jpg", "https://s12.auto.drom.ru/photo/v2/Y3iJvAa30Q-GELQSFRc_e2ikiH45TWMSlKkOoo0tMrlopp6cevmqKKPleaZJYoxFww5Um4hyfT4dE7u_/gen272wb.jpg" ], "attributes_unparsed": null }, { "listing_id": "118723888", "url": "https://auto.drom.ru/moscow/toyota/camry/118723888.html", "title": "Toyota Camry, 2019", "trim": "2.5 AT Люкс Safety", "year": 2019, "year_mismatch": null, "price": 2300000, "price_shown": 2300000, "price_mismatch": null, "currency": "RUB", "price_rating": "good", "price_rating_label": "хорошая цена", "mileage_km": 147500, "mileage_label": "147 500 км", "engine_volume_l": 2.5, "power_hp": 181, "fuel_type": "petrol", "fuel_label": "бензин", "fuel_note": null, "gearbox": "automatic", "gearbox_label": "АКПП", "drive": "front", "drive_label": "передний", "body_type": "Седан", "is_new": null, "is_sold": null, "seller_type": "private", "location": "Москва", "published_label": "сегодня", "badges": [ "only_on_drom" ], "badges_unmapped": null, "image_count": 34, "images": [ "https://s12.auto.drom.ru/photo/v2/ushnvNBPhTebA6o89jPpJvx2LI2AHu9uGwuzLMg_CxpFWbK7WNdDvcjl3sHM6Qg5FIkYdr6FRibB1UMY/gen272wb.jpg", "https://s12.auto.drom.ru/photo/v2/YG5FNN4lOUhSm5ZCy7FfihuvJKmzOS6tBz0zRQB94W-kyy26ovz8eSc79NY4Pz_ipDX0UpMQ7m-9m_q1/gen272wb.jpg", "https://s12.auto.drom.ru/photo/v2/JQEj8s-gA0xOYcbIN58pMqljIARaMT-6v7zJJMzzBd8WDXV8XnrjqLIvNFTjmfp7NjYHK5vmTz_SFsdk/gen272wb.jpg" ], "attributes_unparsed": null } ] } }
How the Drom API works
Drom is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 321 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Let Drom confirm each filter, because the ones it ignores look exactly like the ones it applies
Drom answers an unrecognised filter key with HTTP 200 and the entire unfiltered result set. A search for rear-wheel-drive Camrys that quietly returns every Camry in Russia looks completely healthy from outside.
{"make": "toyota"}Drom's own model list for a make, with the slugs the search surface takes. Check the spelling here rather than guessing it.
{"make": "toyota", "region": "moscow"}Twenty cars a page. Every filter sent is read back out of Drom's own applied-filter list before the rows are returned, so a key it dropped comes back as an invalid parameter rather than as an unfiltered page.
{"make": "toyota", "min_year": 2018, "max_mileage": 120000, "seller_type": "private"}Filters combine. The engine checks the combination is echoed, not just each part, because on a neighbouring Russian site a mileage and seller pair was accepted and then silently dropped.
{"listing_id": "<from any row>"}The full advertisement, including the fields the results card does not carry, such as which side the steering wheel is on.
A filtered set you can trust because Drom confirmed each filter, with its own market rating attached to every price.
curl -X POST https://api.reefapi.com/drom/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"make":"toyota","model":"camry"}'{
"ok": true,
"data": { … },
"meta": {
"api": "drom",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Russia only, in roubles, and a filter set that is verified rather than assumed
Measured 2026-09-30 against the live gateway across four searches and eighty rows, with the engine's own price and year cross-checks read on every one. Three of these lines go against us.
Drom is a single national market and prices come back in RUB. Region is a slug exactly as it appears in a Drom URL, so Moscow is moscow; a slug Drom does not know is reported as not found rather than quietly ignored, which on this source is the difference between a Moscow search and a nationwide one.
Asking for a drive type, a colour or a private-seller flag with the wrong key returns 200 and all 13,361 Camrys with an empty filter echo. The engine therefore reads every filter back out of Drom's own applied-filter list and its own geography context, and refuses with an invalid parameter naming the one that was dropped. Twenty-six filters were proved this way against a same-run unfiltered control, with the total moving and the returned rows conforming; a colour filter was measured, found inert and removed rather than shipped.
Mileage with seller type, year with seller type, and a four-filter combination were each verified as a set rather than one at a time, because a neighbouring Russian site accepts exactly that pair and then drops half of it. Drom does not have that defect: all four keys were echoed and the rows conformed.
Drom scores many listings against its own view of the market, and that score is returned as it publishes it. It is on about half the rows, because Drom itself renders no rating for several of its internal codes; those come back null rather than being mapped to a middle value that would look like an opinion we made up.
The engine carries its own price and year cross-check fields, and across eighty live rows both read clean: no price disagreed with the figure Drom printed, no year disagreed with the source's own label, and no row published a zero price. Prices ran from 90,000 to 14,449,000 roubles.
Mileage was on 66 of 80 rows. The rest are new cars, for which Drom publishes no odometer reading at all, and they come back null rather than zero, which would read as a car that has never been driven and sort as one.
Which side the steering wheel is on does not appear on a search row, so it is not published there. It was verified the only honest way available: six cars from each answer were opened and their own advertisement lines read, six of six right-hand and six of six left-hand. It is returned from the detail record, where the source actually publishes it.
Drom publishes 265 make names and ids but no make slugs, and the slugs are what the search surface takes. A handle that returns names you cannot search with is worse than no handle, so the action is not shipped. The model list, which does carry usable slugs, is.
Drom marks some listings as promoted, and on a relevance sort those correlate with the top of the page, but a price sort reorders them, which means the marker's meaning is not settled. It is left out rather than published with a guess at what it means. An unmapped badge code is returned as a raw code for the same reason.
The model list is the cheap lookup, search and the full advertisement carry the real cost. Check the model slug once and cache it; it does not change often and it is what prevents a silently unfiltered search.
What people build with Drom
The jobs this data is most often used for.
endpoints
credit per call
Pricing and assortment teams use Drom to search auto.drom.ru the way its own visitors do.
Brand-protection teams use Drom to read one drom ad in full, by its numeric id or by its URL.
Retail analysts use Drom to list every model auto.drom.ru publishes for one make, with the slug `search` needs and the li….
What Drom data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 321 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/drom/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"make":"toyota","model":"camry"}'import requests
r = requests.post(
"https://api.reefapi.com/drom/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"make": "toyota",
"model": "camry"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Drom.
Get a free key →What is the Drom API?▾
Drom API is a ReefAPI endpoint group for drom It returns live JSON through POST requests under /drom/v1.
Is the Drom API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Drom calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Drom login or account?▾
No login to Drom 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 Drom 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 Drom API use?▾
Drom actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Drom from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call drom actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Drom API a Drom scraper?▾
It is the managed alternative to a DIY Drom scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same drom back as clean JSON.
Why does my Drom scraper keep getting blocked?▾
Most Drom scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.
26 More APIs APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Drom, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 320 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-30.