Auto.ru Scraper at a glance
Auto.ru Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes listing, year, price (rub), mileage (km) and gearbox, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.20 per 1,000 results on the Apify Free plan and from $1.80 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Other
- Region
- Europe
- Pricing
- $2.20 per 1,000 results (Free plan), from $1.80 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 43 options
Scrape Auto.ru car listings: search by make, model, year, price, mileage, body, engine, gearbox, drive, seller and region, or paste result, dealer and listing links. Get price history, vehicle checks, owners, valuation, dealer details and photos, plus price-change tracking.
What Auto.ru Scraper can do
- Filters applied by the site itself. Make, model, generation, region and radius, year, price, mileage, engine volume and power, body, fuel, gearbox, drive, seller type, steering wheel, number of owners, damaged and customs-cleared cars, new or used, and nine sort orders are sent to the site, so you read only the pages you need instead of downloading everything and filtering afterwards.
- One scope, stated out loud. The site quietly narrows a search without a region to the region of whoever is connecting. This actor always sends an explicit region (all of Russia when you name none), so the same input returns the same listings whatever address the run uses.
- Price history, valuation and checks in every row. Each row carries the price changes since the listing went up, the site's market-price range and trade-in range, the owner count, the title type, customs status and the results of the site's vehicle-number, owner, legal and accident checks.
- Dealers handled properly. Dealer rows carry the dealer name, id, address, map position, opening hours, rating and the business phone numbers the dealer page prints; a dealer id or a dealer page link returns that dealer's whole stock.
- Honest about what the site hides. The site masks the vehicle number after the first three characters and every seller phone behind a call-back flow; both stay masked here. A private seller's name, street address and map position are not collected at all.
- Built for monitoring. Incremental mode returns only new, changed and, optionally, delisted listings on a schedule, a price-and-availability mode keeps description edits out of your bill, and a run that could not read the site fails loudly instead of returning an empty dataset.
Choose what to collect
These inputs let you configure Auto.ru Scraper - Car Listings, Prices, Checks & Dealers. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | Choose 'search' to find listings with the filters below, 'url' to scrape pasted links, or 'listing' to read listings by their key. |
vehiclesarray | Write the make, and optionally the model, the way they appear in auto.ru web addresses: bmw, bmw x5, vaz vesta, land_rover discovery. A generation number from the address may follow the model. One search per entry. Leave empty for every make. Read only in search mode. |
conditionstring | New cars, used cars, or both. |
regionsarray | Cities or regions to search, one search each, for example Moscow, Saint Petersburg, Kazan or Sverdlovsk oblast. Latin names work for the biggest places; any other place can be written in Russian, for example Тверь. Leave empty for all of Russia (the site would otherwise pick the region of the connecting address). |
regionRadiusKminteger | How far around each city in Regions to look, from 0 (the city itself) to 1000. Leave empty for the site's own default (200 km for most cities). Ignored for regions that are whole oblasts or republics. |
dealerIdsarray | Return the stock of these dealers (the numeric dealer id is a field of every dealer row, and a dealer page link works in URL mode). A dealer search ignores the region, radius and make settings. |
yearFrominteger | Earliest model year. |
Show 36 more inputs
| Input | What it controls |
|---|---|
yearTointeger | Latest model year. |
priceFrominteger | Lowest asking price in Russian roubles. |
priceTointeger | Highest asking price in Russian roubles. |
mileageFrominteger | Lowest mileage in kilometres. |
mileageTointeger | Highest mileage in kilometres. |
engineVolumeFrominteger | Smallest engine displacement in cubic centimetres, for example 2000. The site compares it rounded to a tenth of a litre, so 1995 counts as 2000. |
engineVolumeTointeger | Largest engine displacement in cubic centimetres. The site compares it rounded to a tenth of a litre. |
powerFrominteger | Lowest engine power in horsepower. |
powerTointeger | Highest engine power in horsepower. |
bodyTypesarray | Only these body types. Leave empty for all. |
engineTypesarray | Only these fuel types. 'Gas equipment' returns cars fitted with a gas system (LPG). Leave empty for all. |
transmissionsarray | Only these gearboxes. Leave empty for all. |
driveTypesarray | Only these drive layouts. Leave empty for all. |
sellerTypesarray | Private sellers, dealers, or both (leave empty). |
steeringWheelstring | Left-hand or right-hand drive. |
maxOwnersinteger | Only cars with at most this many owners in the vehicle title (1, 2 or 3). Leave empty for any number. |
includeDamagedboolean | Off by default, like the site: cars the seller marks as damaged or not running are left out. Turn on to include them. |
includeNotClearedboolean | Off by default, like the site. Turn on to include cars whose customs clearance is missing. |
sortBystring | Order of the results. A sort order written into a pasted result link wins over this setting. |
urlsarray | auto.ru links to scrape directly. A result link carries its own make, model, region and filters, and they win over the settings above. A dealer link returns that dealer's stock. A listing link reads that listing. Read only in url mode. |
listingIdsarray | Listing keys as they appear at the end of a listing link (the number, a dash and eight characters, for example 1160165890-6216410f), or whole listing links. Read only in listing mode. |
fetchDetailsboolean | Search and url scopes: also read every listing's own page for the seller's description, the view and favourite counters and the site's condition grade. This is one extra request per listing and carries a per-listing surcharge. Listing mode always reads the page. |
maxItemsinteger | Maximum number of listings to return across the whole run, EXPIRED rows from Incremental mode included. This is the run's cap. Use 0 for the maximum of 100000 listings per run. The site shows at most 99 result pages (3663 listings) per search, so use several makes, models or regions to go beyond that. |
maxPagesinteger | Maximum number of result pages to read per make, region or link. Each page carries up to 37 listings. 0 means as many as the search has, up to the site's limit of 99. |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue a large pull without returning or charging for listings already collected there. Use this after an interrupted run. For recurring monitoring of the same scope, use Incremental mode below instead. |
incrementalModeboolean | Turn this on for daily or recurring monitoring. The first run returns every matching listing as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED listings, which makes it a cheap way to watch price drops. What is compared: price, discount, availability, status, specification, ownership and vehicle-check fields, seller, description, equipment and price history. What is excluded by default (still returned in the row, never a change): scrape timestamps, the listing's rank and page, where it was found, view and favourite counters, days on sale and the last-edited time, exchange-rate conversions (price in dollars and euros), the site's own market-price estimates, dealer rating and condition grade, the rotating labels and badges, and photo links. Equipment and phone lists are compared regardless of order. 'Changes to watch' narrows this to price and availability only. Turn on 'Emit unchanged' or 'Emit expired' only when you also want those rows returned (and billed). State is kept separately for each scope and filter setup; use State key to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to derive a key automatically from the scope and filter settings, so two different scopes never mix state. |
emitUnchangedboolean | Off by default. Turn on to also return listings that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want a full snapshot every run. |
emitExpiredboolean | Off by default. Turn on to also return listings that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked scope without a page that could not be read, never when Max listings or the site's 99-page limit capped it, and never when Resume was used. A sold or removed listing counts as missing; consider 'Expire after missed scans' above 1 so a brief gap does not expire a listing. EXPIRED rows count against Max listings: a run returns at most the room left under it, and the rest are returned on a later complete run. This returns, and bills, extra rows, so leave it off unless you need expiry tracking. |
changeScopestring | All fields (default): any change to the compared listing data marks a listing UPDATED. Price and availability only: just the asking price, the dealer discount, the availability, the status and the price history, so description, equipment or ownership edits never produce a billable UPDATED row. Changing this never starts a new baseline: the existing saved state is kept (under an automatic or a named State key) and each stored listing is simply compared under the new setting. |
compactUpdatesboolean | Off by default. When on, UPDATED and EXPIRED rows are slim: ids, link, title, current price and availability, plus priceChanges (old and new value of each field that moved) and variantChanges (price-history entries ADDED, REMOVED or CHANGED). NEW rows stay full. A compact row does not carry listing-page detail fields, so no detail charge applies to it. |
expireAfterMissedScansinteger | Used with 'Emit expired'. A listing is marked EXPIRED only after it was missing from this many CONSECUTIVE complete scans (default 1). Listings come and go as sellers publish and sell, so a value of 2 or more avoids false expiries. |
ignoreFieldsForChangesarray | Field names that must not count as a change, for example description or equipment. Use a dotted path to ignore a key inside every element of a list, for example priceHistory.price. Ignored fields are still returned in the row. Rank, where the listing was found, counters, exchange-rate conversions, the site's estimates and photo links are already ignored by default. Changing this list never starts a new baseline: the saved state is kept and each stored listing is re-compared under the new list, so no listing comes back as NEW. |
mcpConnectorsarray | Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a page per listing; other connectors get a best-effort write or digest. Each connector receives a condensed summary per listing, not the full record; the complete record always stays in the dataset. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL or id of the Notion page under which listing pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on listings written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
titleListingyearYearpricePrice (RUB) (number)mileageKmMileage (km) (number)transmissionGearboxengineTypeEnginedriveTypeDrivesellerTypeSellercityCityurlLink (link)listingIdKeychangeTypeChangeShow 50 more fields
bodyTypeBodyengineNameEngineengineVolumeCcVolume (cm³) (number)enginePowerHpPower (hp) (number)steeringWheelSteeringcolorColouracceleration0to1000-100 km/h (s) (number)clearanceMmClearance (mm) (number)trunkVolumeLBoot (l) (number)equipmentEquipment (array)firstPriceFirst price (number)priceChangeChange since listed (number)priceHistoryPrice history (array)marketPriceFromMarket from (number)marketPriceToMarket to (number)tradeInPriceFromTrade-in from (number)tradeInPriceToTrade-in to (number)maxDiscountMax discount (number)ownersCountOwners (number)ptsTitlecustomsClearedCustoms cleared (boolean)damagedDamaged (boolean)vinMaskedVIN (masked)vinCheckVIN checkownersCheckOwners checklegalCheckLegal checkaccidentsCheckAccidents checkpurchaseYearBought in (number)warrantyTypeWarrantysellerNameDealerdealerIdDealer idisOfficialDealerOfficial (boolean)dealerAddressAddressdealerPhonesPhones (array)dealerRatingRating (number)sellerSinceSeller sincedescriptionDescriptionviewsViews (number)viewsTodayViews today (number)favoritesFavourites (number)conditionGradeCondition gradecreatedAtListedupdatedAtEditeddaysOnSaleDays on sale (number)photoCountPhotos (number)changedFieldsChanged fields (array)priceChangesPrice changes (object)variantChangesHistory changes (array)firstSeenAtFirst seenlastSeenAtLast seenExample output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"recordType": "listing",
"listingId": "1000000001-0a1b2c3d",
"offerId": "1000000001",
"url": "https://auto.ru/cars/used/sale/samplemake/model/1000000001-0a1b2c3d/",
"title": "Sample Make Model II",
"condition": "used",
"status": "ACTIVE",
"damaged": false,
"make": "SAMPLEMAKE",
"makeName": "Sample Make",
"model": "MODEL",
"modelName": "Model",
"generation": "II",
"complectation": "Comfort",
"year": 2021,
"mileageKm": 45000,
"bodyType": "Sedan",
"bodyTypeCode": "SEDAN",
"doors": 4,
"seats": 5,
"engineType": "GASOLINE",
"engineVolumeCc": 1998,
"enginePowerHp": 150,
"transmission": "AUTOMATIC",
"driveType": "ALL_WHEEL_DRIVE",
"steeringWheel": "LEFT",
"colorHex": "040001",
"color": "черный",
"equipment": [
"abs",
"esp",
"climate-control-2"
],
"price": 2100000,
"currency": "RUB",
"priceUsd": 26000,
"priceEur": 23500,
"firstPrice": 2200000,
"priceChange": -100000,
"priceHistory": [
{
"date": "2026-10-01T00:00:00Z",
"price": 2200000
},
{
"date": "2026-10-20T00:00:00Z",
"price": 2100000
}
],
"marketPriceFrom": 2000000,
"marketPriceTo": 2300000,
"marketPriceUncertaintyPercent": 40,
"ownersCount": 2,
"pts": "ORIGINAL",
"ptsOriginal": true,
"customsCleared": true,
"vinMasked": "XXX**************",
"licensePlateRegion": "77",
"vinCheck": "OK",
"ownersCheck": "OK",
"legalCheck": "OK",
"accidentsCheck": "OK",
"sellerType": "COMMERCIAL",
"sellerName": "Sample Dealer",
"dealerId": "100000",
"dealerCode": "sample_dealer",
"isOfficialDealer": false,
"dealerAddress": "Sample Street 1",
"dealerPhones": [
"+7 000 000-00-00"
],
"dealerOpenHours": "daily 9:00-21:00",
"city": "Moscow",
"photoCount": 12,
"photos": [
"https://example.invalid/photo/1200x900"
],
"createdAt": "2026-10-01T00:00:00Z",
"daysOnSale": 31,
"description": "Sample seller text.",
"views": 120,
"viewsToday": 3,
"favorites": 4,
"conditionGrade": "B",
"position": 3,
"page": 1,
"sourceLabel": "SAMPLEMAKE MODEL in all of Russia",
"changeType": "NEW",
"changedFields": [],
"firstSeenAt": "2026-11-01T12:00:00Z",
"lastSeenAt": "2026-11-01T12:00:00Z",
"scrapedAt": "2026-11-01T12:00:00Z"
}Ways to use this data
- Dealers and resellers: watch competitors' stock and price drops for a make, a model or a whole region on a schedule.
- Price analysts and valuation teams: build market-price series from asking prices, price history and the site's own estimates.
- Importers and exporters: screen the Russian market by make, year, mileage, owners and customs status before buying.
- Lead and inventory teams: pull a dealer's complete stock with addresses and opening hours into your CRM.
- Researchers and journalists: study the used-car market by region, body type, fuel and age.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Auto.ru Scraper return?
The documented output for Auto.ru Scraper includes listing, year, price (rub), mileage (km), gearbox, engine, drive and seller. Availability of each field depends on the source page and the selected mode.
How much does Auto.ru Scraper cost?
It costs $2.20 per 1,000 results on the Apify Free plan and from $1.80 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Can I get seller phone numbers or the full vehicle number?
No. The site masks every seller phone behind a call-back flow and shows the vehicle number only up to the first three characters; both stay masked in the output. Dealer rows do carry the business phone numbers the dealer page itself prints.
Which vehicles and countries are covered?
Passenger-car listings on auto.ru, in Russian roubles. Motorcycles, trucks and other vehicle categories are not covered. The connection does not need to be in Russia.
Why do I get fewer listings than the site says it has?
The site shows at most 99 result pages (3663 listings) per search. The log says when a search was cut off that way. Split the search by make, model, region, year or price to reach the rest.
Can I get only new or changed listings on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated listings, and unchanged ones are not billed unless you turn on Emit unchanged.
