Avito.ru Scraper at a glance
Avito.ru Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes id, title, price, currency and category, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.70 per 1,000 results on the Apify Free plan and from $1.00 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
- Ecommerce, Real Estate, Developer Tools
- Region
- Europe
- Pricing
- $1.70 per 1,000 results (Free plan), from $1.00 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 23 options
- Run success
- 97.9% of completed public runs in the last 30 days
Scrape Avito.ru classifieds across real estate, cars, jobs, services and more. Extract 42 fields including prices, addresses, GPS, photos, descriptions and seller details. Supports optional phone reveal, keyword and URL search, incremental tracking, resume and API export.
What Avito.ru Scraper can do
- Up to 42 fields per listing: price, full address, metro station and walking distance, photo gallery, posting date, seller type and verification badges.
- Two ways to find listings. Build a search from region, category and filters, or paste Avito URLs and the actor walks pagination forward from wherever the URL starts.
- Every category on Avito. Apartments, houses, rooms, garages, commercial property, land, cars, motorcycles, trucks, boats, auto parts, jobs, services, resumes, electronics, home and garden, hobbies, animals, clothing and more.
- Rich results with no extra fetch. The default lean mode returns the search-results card fields: title, price, full description, photo gallery, address, metro and seller badges, with no detail-page visit.
- Optional detail-page enrichment. Turn on fetchDetails for the full attribute table, GPS coordinates, seller stats, view counts, a price-change signal and the category breadcrumb path.
- Optional seller phone reveal. Turn on fetchPhones to also reveal each pushed listing's seller phone number, the same phone panel a visitor opens.
Choose what to collect
These inputs let you configure Avito.ru Scraper - Classifieds, Prices, Sellers & Contacts. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | Pick how you want to find listings. 'Search by filters' resolves a region + category + filters into a search URL automatically. 'Direct URLs' takes one or more avito.ru URLs you have already copy-pasted from your browser. |
regionsarray | Region slugs (Search mode only). Examples: 'moskva', 'sankt-peterburg', 'rossiya' (all of Russia). Multiple regions are scraped sequentially. Default: moskva. |
categorystring | Top-level category. Pick the kind of listings you want. |
dealTypestring | Sale or Rent. Only applies to property categories (apartments, houses, rooms, garages, commercial, land). Ignored for other categories. Avito only exposes two top-level deal types per category; the slugs are 'prodam' (sale) and 'sdam' (rent, long-term). |
querystring | Optional text query (matches titles and descriptions). E.g. 'tesla', 'iPhone 15', 'студия у метро'. |
minPriceinteger | Minimum price in rubles. Leave empty for no minimum. |
maxPriceinteger | Maximum price in rubles. Leave empty for no maximum. |
Show 16 more inputs
| Input | What it controls |
|---|---|
sortBystring | How to order results. |
ownerOnlyboolean | If true, exclude agency / professional sellers, return only private (С/Собственник) postings. |
urlsarray | Avito.ru search/category URLs to scrape (URL mode only). Multi-URL supported; left untouched, the field scrapes one example per URL shape (category listing, paginated listing, free-text search). Single-listing, seller-profile and non-avito URLs are skipped with a warning; m.avito.ru links are accepted. Filter-mode fields are ignored. Pagination starts at the page in the URL and walks forward. |
maxPagesinteger | Optional bound on result pages walked per region/URL. Avito returns ~50-60 listings per page. Leave empty to walk every result page (the run size is controlled by Max listings, which this field defers to). |
maxListingsinteger | Hard global cap on total listings written to the dataset across ALL searches (every region in search mode, every URL in URL mode). The actor stops as soon as this number is reached. Set 0 for unlimited (subject to maxPages); values above 1,000,000 are not accepted. |
fetchDetailsboolean | Lean mode is the default (false): the SERP card alone already returns 27 of 42 fields, full description, address, metro, photos, badges, rooms, area, floor, and runs ~8x faster and far cheaper. Enable (true) to additionally fetch each listing's detail page for the 21-key attributes dict (floor, ceilings, balcony type, parking, etc.), full photo gallery, view counts, seller stats, GPS coordinates, price-change signal, and category breadcrumb path, the remaining 15 fields, for 42 total. Enrichment fetches one extra page per listing, so it is much slower and more expensive on high-volume scrapes. |
fetchPhonesboolean | Off by default. Turn on to also try to reveal each pushed listing's seller phone number. Works by loading the same phone panel a visitor would open, so roughly every second exit IP serves about two numbers before that exit's per-IP limit, and the actor rotates exits on its own. Private sellers and agency/developer listings carry a rotating temporary number (the kind Avito shows logged-out visitors, disclosed per row in the phone note); numbers for company shops require a login at the source and return empty. The source's phone panel exposes mobile numbers only, so other number shapes return empty. Delivered numbers bill the Detail page enrichment event in blocks of ten delivered (see the Pricing tab). |
resumeFromRunIdstring | Optional. ID of a previous run of this actor (or a dataset ID). Listings already in that dataset are skipped, so this run returns only NEW listings (a delta). Combine both runs' datasets for the full set. Max listings then counts only the new listings. For recurring monitoring of the same search, use Incremental mode below instead. |
incrementalModeboolean | Turn this on for daily or recurring monitoring. The first run returns all matching listings as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED listings. A listing counts as UPDATED when a real listing field changes (price, title, description, address, seller, photo count, attributes and similar); the view counters (viewsCount, todayViews), sellerReviewsCount, the relative posting dates (postedDate, postedDateFull), photoUrls, layoutImageUrls (floor-plan images on the same rotating image servers) and marketValuation (the site recalculates its own price estimate) never count as changes, though they are still returned. Add more in "Ignore fields when detecting changes" below (nested paths such as attributes.floor work too). Turn on "Emit unchanged" or "Emit expired" only when you also want those listings returned (and billed). State is kept separately for each mode/region/category/filter setup; use State key when you want 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 let the actor derive a key automatically from the mode, regions/URLs, category, and filter settings -- different searches then never mix state with each other. |
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 specifically want the 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 every tracked region/URL to a confirmed end of results -- not when Max listings capped it or when Resume was used. This returns -- and bills -- extra synthetic rows, so leave it off unless you need expiry tracking. |
ignoreFieldsForChangesarray | Output field names that should NOT make a listing count as UPDATED. Always ignored: photoUrls (avito serves the same photos from rotating image-server addresses; photoCount still catches added or removed photos), viewsCount, todayViews, sellerReviewsCount, postedDate, postedDateFull, layoutImageUrls and marketValuation (live counters, relative date text, rotating image-server addresses and the site's recalculated price estimate; postedAt holds the stable timestamp). Add fields such as badges or description here if changes to them are not relevant to you. Use a dotted path (for example attributes.floor) to ignore a field inside a nested object or list. Ignored fields are still returned in the output. |
mcpConnectorsarray | Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON, the complete record stays in the dataset. Leave empty to skip. 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 item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items 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.
idID (text)titleTitle (text)pricePrice (number)currencyCurrency (text)categoryCategory (text)subcategorySubcategory (text)regionRegion (text)cityCity (text)metroMetro (text)addressAddress (text)postedDatePosted (text)sellerTypeSeller (text)Show 40 more fields
sellerPhoneSeller phone (text)sellerPhoneTypePhone type (text)isVerifiedVerified (boolean)changeTypeChange type (incremental mode) (text)changedFieldsChanged fields (incremental mode) (array)firstSeenAtFirst seen (incremental mode) (date)lastSeenAtLast seen (incremental mode) (date)urlURL (link)photoCountCount (number)photoUrlsPhotos (array)descriptionDescription (text)attributesAttributes (object)viewsCountViews Count (number)todayViewsToday Views (number)postedDateFullPosted Date Full (text)badgesBadges (array)categoryPathCategory Path (array)sellerNameSeller Name (text)sellerPhoneNotePhone note (text)sellerRatingSeller Rating (number)sellerReviewsCountSeller Reviews Count (number)sellerSinceSeller Since (text)latLat (number)lngLng (number)postedAtPosted At (ISO, Moscow time) (date)priceHistoryCountPrice Records (number)priceWasLoweredPrice Lowered (boolean)pricePreviousPrevious Price (text)normalizedPricePrice per Unit (text)categoryIdCategory ID (number)locationIdLocation ID (number)hasVideoHas Video (boolean)videoUrlVideo URL (link)geoReferencesNearby Stations (array)isDeliveryAvailableDelivery Available (boolean)sellerKeySeller Key (text)sellerUrlSeller URL (link)layoutImageUrlsFloor Plans (array)marketValuationMarket Valuation (object)priceIncreasedPrice Increased (boolean)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"id": "0000000000",
"url": "https://www.avito.ru/moskva/kvartiry/listing-title-slug_0000000000",
"title": "Sample listing title in Russian",
"price": 12345678,
"currency": "RUB",
"priceText": "12 345 678 ₽",
"category": "kvartiry",
"subcategory": "prodam",
"region": "moskva",
"city": "moskva",
"address": "Sample building, Sample street 4",
"street": "Sample street",
"metro": "Sample metro station",
"metroDistanceMin": 10,
"postedDate": "1 января",
"description": "Full listing description text.",
"photoUrls": [
"https://img.avito.st/sample/1.jpg"
],
"photoCount": 1,
"badges": [
"Sample badge text"
],
"isVerified": true,
"sellerName": "Sample Agent",
"sellerType": "agency",
"sellerRating": null,
"sellerReviewsCount": null,
"sellerSince": "февраля 2011",
"viewsCount": 0,
"attributes": {
"Sample attribute key": "Sample value"
},
"lat": 55.75201,
"lng": 37.54841,
"priceIncreased": false,
"categoryPath": [
"Главная",
"Недвижимость",
"Квартиры",
"Купить"
],
"postedAt": "2026-10-10T22:44:00+03:00",
"priceHistoryCount": 3,
"priceWasLowered": false,
"pricePrevious": "",
"normalizedPrice": "368 056 ₽ за м²",
"categoryId": 24,
"locationId": 637640,
"hasVideo": false,
"videoUrl": "",
"geoReferences": [
{
"name": "Sample station",
"distance": "400 м",
"walkTime": "6-10 мин."
}
],
"isDeliveryAvailable": false,
"layoutImageUrls": [],
"marketValuation": {
"estimated": 5300000,
"lowest": 4808100,
"highest": 5531900,
"verdict": "good"
},
"sellerKey": "4d07885f1fffd48ca6a8dc0e159bec5c",
"sellerUrl": "https://www.avito.ru/brands/sample-agency"
}Ways to use this data
- Real estate market research: track apartment and house prices, availability and days-on-market across regions.
- Car marketplace analysis: monitor used-car listings, pricing and model availability by region.
- Job market research: collect vacancy and resume postings across categories and regions.
- Classifieds aggregation and price comparison: mirror or compare listings across categories for a resale or comparison tool.
- Lead generation: turn on Incremental mode to catch new or price-changed listings on every scheduled run.
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 Avito.ru Scraper return?
The documented output for Avito.ru Scraper includes id, title, price, currency, category, subcategory, region and city. Availability of each field depends on the source page and the selected mode.
How much does Avito.ru Scraper cost?
It costs $1.70 per 1,000 results on the Apify Free plan and from $1.00 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 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, updated and reappeared listings, and unchanged ones are not billed unless you turn on Emit unchanged.
Why does dealType have no effect on some categories?
dealType only applies to property categories: apartments, houses, rooms, garages, commercial property and land. It is ignored for cars, jobs, electronics and every other category.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
