Avito Scraper | Listings, Prices and Sellers
Pricing
from $8.16 / 1,000 listings
Avito Scraper | Listings, Prices and Sellers
Avito scraper that turns avito.ru listings into structured JSON: prices, descriptions, photos, coordinates, seller ratings, and the nearest metro station with walking time. Search by keyword and city, paste a URL, or use listing ids. Detail mode adds vehicle valuation and real estate checks.
Pricing
from $8.16 / 1,000 listings
Rating
0.0
(0)
Developer
SilentFlow
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Avito Scraper
Turn Avito.ru listings into structured Russian classifieds data, prices, seller ratings, photos, and metro distance where Avito has one, delivered as JSON in seconds instead of hours of manual browsing.
How it works

- Tell it what to scrape. A keyword and a city, a pasted Avito search URL, or a list of specific listing URLs or ids.
- The actor fetches the listings. Search results page through the catalog; specific listings are fetched directly.
- Structured JSON lands in your dataset. Every listing as one row, ready to filter, export, or pipe into another tool.
✨ Why teams choose this over other Avito scrapers
Copying listings from Avito one tab at a time? Building a price model for an apartment without knowing how far it sits from the metro? Paying extra just to get coordinates on a search you already ran?
- 📍 Metro distance with no separate step, in cities that have a metro. Search a city with an operating metro system (Moscow is the default) and most of its listings carry the nearest station, the distance, and the walking time, the same data other Avito scrapers on the Store sell as a separate paid detail call. Not every supported city has a metro system; where one exists, you get this data without a paid add-on.
- 🏷️ A full base listing, not a stub. Title, price, description, coordinates, images, category, seller name and rating, badges, and posting date all ship without any paid add-on, before detail mode is even switched on.
- 🚗 Category-specific depth from one page fetch. Turn on detail mode on a car listing and get Avito's own market valuation. On a real estate listing, get the registry ownership check, an independent valuation, rent terms, and floor plan images, all pulled from the same page load, not a separate request per feature.
- 🔍 Three ways in, one actor. Run a keyword and city search, paste an Avito search URL straight from the browser, or hand it a list of specific listing URLs or ids. No separate tool for each workflow.
- 📖 Pagination that actually goes deep. Verified 120 listings collected across 3 catalog pages in testing, against a catalog that reports totalCount above 38,000 for a common search.
- 🔓 No login required. Every field comes from Avito's own public listing data, no account, no API key.
🎯 What you can do with Avito data
| Team | What they build |
|---|---|
| Market research | Track price and listing-volume trends for phones, cars, and apartments across Russian cities |
| Automotive / resale | Benchmark asking prices against Avito's own vehicle market valuation before buying or relisting a car |
| Real estate / prop-tech | Score apartment listings by walking distance to the nearest metro station, no separate geocoding step |
| Real estate diligence | Pull the Rosreestr registry ownership check and Avito's independent valuation for a shortlist of properties |
| Resale / arbitrage | Monitor newly posted, price-dropped, or reserved listings to spot underpriced inventory |
| Lead generation | Collect seller names, ratings, and shop status from active listings in a category |
| Academic / journalism research | Build representative datasets on Russian classifieds pricing and market concentration |
📥 Input parameters
Search
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | "iphone 15" | Keyword to search for |
location | string | moskva | City to search in, for example "Moscow" or "moskva", from a list of 15 supported Russian cities. Setting a city with an operating metro system (7 of the 15 have one: Moscow, Saint Petersburg, Novosibirsk, Yekaterinburg, Kazan, Nizhny Novgorod, Samara) is what makes the nearest station, distance and walking time appear on results. Clear it for a nationwide search, or set a city with no metro system, and metro fields will not be present. |
category | string | (all) | phones, cars, or apartments |
priceMin | integer | none | Minimum price, in Russian rubles |
priceMax | integer | none | Maximum price, in Russian rubles |
sort | string | relevance | relevance, newest, cheapest, expensive |
Or paste a search URL
| Parameter | Type | Default | Description |
|---|---|---|---|
searchUrl | string | "" | A full Avito.ru search URL, for example https://www.avito.ru/moskva/telefony?q=iphone. Any filter it specifies overrides the matching field above; filters it does not specify still come from the fields above. |
Or scrape specific listings
| Parameter | Type | Default | Description |
|---|---|---|---|
listingUrls | array | [] | Full Avito listing URLs or bare listing ids, one per line. When this list is not empty, it replaces search entirely: only these listings are fetched, and each one's own page is always visited (the same data includeDetails unlocks in search mode, turned on automatically here). 10 fields are sourced only from a search result and are not present when a listing is fetched this way: priceWasLowered, priceWithoutDiscount, discountPercent, hasVideo, isVerifiedItem, isMarketplace, hasRealtyLayout, addressId, conditionLabel, contactMethods. |
Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
maxResults | integer | 100 | Maximum number of listings to collect. No fixed limit, set it to what you need. |
Data to collect
| Parameter | Type | Default | Description |
|---|---|---|---|
includeDetails | boolean | true | Visit each listing's own page for specifications, view counts, address, full description, and seller shop status. On the relevant category, this same page fetch also carries vehicle valuation, real estate registry checks, real estate valuation, rent conditions and floor plans. Disable for faster search-only scraping. |
includeReviews | boolean | false | Include the product-review summary for the listing's model, when Avito has one for that model. Turning this on visits each listing's own page to read it, the same page fetch includeDetails uses, even if includeDetails itself is off. |
Advanced
| Parameter | Type | Default | Description |
|---|---|---|---|
debugMode | boolean | false | Verbose logging for troubleshooting. |
📊 Output data
Search-only listing (includeDetails: false)
{"id": 3821904567,"title": "iPhone 15 Pro 256GB, синий","url": "https://www.avito.ru/moskva/telefony/iphone_15_pro_256gb_sinij_3821904567","description": "Продаю телефон в отличном состоянии, полный комплект, гарантия до 2027 года.","price": 79990,"priceFormatted": "79 990 ₽","currency": "RUB","categoryId": 84,"categoryName": "Телефоны","categorySlug": "telefony","images": ["https://40.img.avito.st/image/1/abc123.jpg","https://40.img.avito.st/image/1/def456.jpg"],"imageCount": 8,"locationId": 637640,"locationName": "Москва","latitude": 55.751244,"longitude": 37.618423,"geoReferences": [{"name": "Тверская", "distance": "450 м", "walkingTime": "6–10 мин."}],"seller": {"name": "AppleStorry","profileUrl": "https://www.avito.ru/user/abc123","ratingScore": 4.9,"reviewCount": 214},"badges": [{"id": 2353, "title": "Цена ниже рыночной"}],"postedAt": "2026-08-15T07:22:00Z","postedTimestamp": 1786778520000,"scrapedAt": "2026-08-17T09:00:00Z"}
Full detail listing (includeDetails: true, real estate)
{"id": 4022918734,"title": "2-к. квартира, 54 м², 7/12 эт.","url": "https://www.avito.ru/moskva/kvartiry/2-k._kvartira_54_m_712_et._4022918734","description": "Продается светлая двухкомнатная квартира рядом с метро.","descriptionHtml": "<p>Продается светлая двухкомнатная квартира рядом с метро.</p>","price": 14500000,"priceFormatted": "14 500 000 ₽","currency": "RUB","categoryId": 24,"categoryName": "Недвижимость","address": "Москва, Новочерёмушкинская ул., 14","latitude": 55.679,"longitude": 37.541,"geoReferences": [{"name": "Новые Черёмушки", "distance": "600 м", "walkingTime": "8–12 мин."}],"seller": {"name": "Rustel","ratingScore": 4.7,"reviewCount": 58,"manager": "Pavel","replyTime": "Отвечает около 30 минут","memberSince": "июня 2017","isCompany": true},"isShop": false,"viewsTotal": 1842,"viewsToday": 37,"realtyRegistryReport": {"title": "Проверка по реестру","cadastralNumber": "77:01:0001011:1234","infoList": ["Собственник подтвержден", "Обременений не найдено"]},"realtyValuation": {"estimated": 14200000,"highest": 14800000,"lowest": 13600000,"type": "sale"},"buildingInfo": {"items": [{"title": "Тип дома", "description": "панельный"},{"title": "Год постройки", "description": "2024"},{"title": "Этажей в доме", "description": "31"}]},"layoutImages": ["https://40.img.avito.st/image/1/layout123.jpg"],"postedAt": "2026-08-10T11:05:00Z","scrapedAt": "2026-08-17T09:05:00Z"}
🗂️ Data fields
| Category | Fields |
|---|---|
| Identity | id, title, url, description, conditionLabel |
| Pricing | price, priceFormatted, currency, priceWasLowered, priceWithoutDiscount, discountPercent |
| Category | categoryId, categoryName, categorySlug, categoryRootId, microCategoryId, breadcrumbs (category trail) |
| Media | images, imageCount, imageAlt, hasVideo |
| Location | locationId, locationName, latitude, longitude, addressId, geoReferences (nearest metro, tied to a city with a metro system) |
| Seller | seller (name, profile URL, logo, rating score, review count, review summary; detail mode only: manager name, typical reply time, member since, avatar, is company) |
| Signals | badges, isReserved, isVerifiedItem, isMarketplace, hasRealtyLayout, isSimilarToSearch (true on the similar listings Avito shows after the exact matches) |
| Contact | isDeliveryAvailable, contactMethods |
| Timing | postedAt, postedTimestamp, scrapedAt |
| Detail mode only | descriptionHtml, parameters, address (full address including street, where Avito provides it, falling back to the locality when it does not, e.g. "Москва"), viewsTotal, viewsToday, isShop, shopId, phoneInfo (phone number AVAILABILITY metadata, not a phone number, see below), verticalId, vertical, userType, sellerType, status, hasInstallments |
| Category enrichment (detail mode, same page fetch) | reviews (phones and cars with an established review corpus), vehicleValuation (cars), realtyRegistryReport, realtyValuation, rentConditions, buildingInfo, rentalRules, layoutImages (real estate) |
61 top-level fields per listing (a phone string field exists in the schema for a future feature but is never populated today, so it is left out of this count and never appears in a real row). seller carries 11 fields (name, profile URL, logo, rating score, review count, review summary, plus manager, reply time, member since, avatar and is company, the last five detail mode only). phoneInfo carries 5 more (mask, operatorPrefix, isAnonymous, isAnonymousProfile, isCallTracking), detail mode only. Each geoReferences entry carries 3 fields (name, distance, walking time), each badges entry carries 2 (id, title), each breadcrumbs entry carries 3 (name, title, url). breadcrumbs ships from both search and detail mode; addressId ships from a search result only, and is not present on a listingUrls run. verticalId is the exact numeric marketplace-vertical id, read directly from the listing's own analytics data; vertical, userType, sellerType and status are readable labels this actor builds itself from the listing's own category, seller and reservation data, not raw values copied from anywhere else; hasInstallments is a plain yes/no on whether the listing offers instalment payments. All six are detail mode only. Detail mode additionally adds category-specific blocks: reviews (4 fields), vehicleValuation (5 fields, cars only), realtyRegistryReport (3 fields) and realtyValuation (5 fields) for real estate, rentConditions (2 fields, plus 2 more per rent term) for rentals, buildingInfo (1 field, plus 2 more per item) for real estate, rentalRules (1 field, plus 2 more per item) for rentals.
phoneInfo is what detail mode carries about a listing's phone contact option, not a phone number. Avito never exposes the seller's plaintext number on the listing page itself, only a masked form like "8 981 XXX-XX-XX", alongside flags for whether the number is anonymised and whether calls route through a business call-tracking line. operatorPrefix is the three-digit prefix pulled out of that mask on the listings where Avito reveals it, useful on its own since it identifies the mobile carrier and the region a number was issued in, empty when Avito keeps the whole mask hidden.
url is the permanent listing address. images and layoutImages point at Avito's own CDN and stay reachable for as long as the listing itself stays live. postedAt and scrapedAt are both ISO 8601 UTC timestamps (Z suffix). Coordinates populate for most listings regardless of city. Metro data (geoReferences) populates for most listings only when a search targets a city with an operating metro system, and is absent on a nationwide search or a search in a city with no metro, a separate condition from coordinates. Scraping specific listingUrls always runs the same page fetch includeDetails triggers in search mode, so it carries most of this table too, short of 10 fields that are sourced only from a search result: priceWasLowered, priceWithoutDiscount, discountPercent, hasVideo, isVerifiedItem, isMarketplace, hasRealtyLayout, addressId, conditionLabel, and contactMethods.
🚀 Examples
Get the newest iPhone listings in Moscow
{"query": "iphone 15","location": "moskva","sort": "newest","maxResults": 50}
Find the cheapest apartments in Saint Petersburg
{"query": "квартира","location": "sankt-peterburg","category": "apartments","priceMax": 8000000,"sort": "cheapest","maxResults": 100}
Pull mid-range cars in Moscow with full valuation data
{"location": "moskva","category": "cars","priceMin": 500000,"priceMax": 1500000,"maxResults": 200,"includeDetails": true}
Scrape a pasted search URL at volume
{"searchUrl": "https://www.avito.ru/novosibirsk/nedvizhimost/kvartiry","maxResults": 5000,"includeDetails": true}
Track a specific shortlist of listings with model reviews
{"listingUrls": ["https://www.avito.ru/moskva/telefony/iphone_air_256_gb_esim_7739644389","4022918734"],"includeDetails": true,"includeReviews": true}
💻 Integrations
Build a metro-proximity price index for apartments (Python)
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("silentflow/avito-scraper").call(run_input={"location": "moskva","category": "apartments","priceMax": 15000000,"maxResults": 300,"includeDetails": True,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():refs = item.get("geoReferences") or []if refs:metro = refs[0]print(f"{item['title']}: {item['priceFormatted']}, {metro.get('name')} ({metro.get('walkingTime')})")
Flag underpriced cars against Avito's own valuation (JavaScript)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('silentflow/avito-scraper').call({location: 'moskva',category: 'cars',sort: 'newest',maxResults: 100,includeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const underpriced = items.filter(i => i.vehicleValuation && i.price < i.vehicleValuation.priceLow);underpriced.forEach(i => console.log(`${i.title}: ${i.priceFormatted} vs estimated low ${i.vehicleValuation.priceLow}`));
Export a search to CSV (Python)
import csvfrom apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("silentflow/avito-scraper").call(run_input={"query": "iphone 15","location": "moskva","maxResults": 500,})with open("iphones.csv", "w", newline="") as f:writer = csv.writer(f)writer.writerow(["title", "price", "seller", "rating", "url"])for item in client.dataset(run["defaultDatasetId"]).iterate_items():seller = item.get("seller") or {}writer.writerow([item["title"],item.get("price"),seller.get("name"),seller.get("ratingScore"),item["url"],])
📈 Performance
| Metric | Value |
|---|---|
| Pagination depth | Verified 120 listings collected across 3 catalog pages in testing |
| Catalog scale | Live searches have reported totalCount above 38,000 matching listings for a common query |
| Metro coverage | 39 to 43 of 50 listings carry metro data when the search targets a city with an operating metro system; a nationwide search, or a search in one of the 8 supported cities with no metro, returns none |
| Data freshness | Live, fetched at run time, no caching |
| Max items per run | No fixed limit, set maxResults to what you need |
💡 Tips for best results
- Set a city with an operating metro system in
locationif you want metro data. The default, Moscow, has one; 8 of the 15 supported cities (Krasnodar, Voronezh, Perm, Chelyabinsk, Omsk, Krasnoyarsk, Ufa, Rostov-on-Don) do not, and a nationwide search (an emptylocation) never returns metro stations, distance, or walking time either. - Narrow with
categoryand a price range before scalingmaxResultsup. Confirm the filters return what you expect on a small run first, then scale. - Use
includeDetails: truewhen you need specifications, address, or category-specific enrichment. Vehicle valuation, real estate registry checks, and rent conditions all arrive through this one setting; leave it off for faster search-only scraping. includeReviewsonly returns data when Avito has an established review corpus for that exact model. Expect it populated mostly on phones and popular cars, empty on niche or unusual listings.- Paste an exact Avito search URL when you need a filter this actor's fields don't expose. It overrides only the filters it specifies; every other field still comes from the Search section.
❓ FAQ
What data does the scraper extract? Every listing carries title, price, description, coordinates, images, category, seller name and rating, badges, and posting date. Turning on detail mode adds specifications, view counts, address, full description HTML, the seller's shop status, and a fuller seller profile (manager name, typical reply time, member since, avatar), plus category-specific enrichment: product reviews, vehicle market valuation, real estate registry checks, real estate valuation, rent conditions, building details, and rental rules for real estate, and floor plans. Detail mode also adds phone AVAILABILITY metadata (the masked number, its operator prefix where Avito reveals one, and whether the listing is anonymised or routes through a call-tracking line), not a phone number itself; see the next question.
How do I search Avito with this actor? Three ways: a keyword and city search using the Search fields, a pasted Avito search URL, or a list of specific listing URLs or bare ids. The listing list, when set, replaces search entirely.
How fresh is the data? Live. Every run fetches current listings at scrape time, nothing is cached from a previous run.
Do I need an Avito account? No. The scraper reads publicly available listing data. No login and no API key are required.
Will I always get the nearest metro station?
No, and not merely because of the "city" setting. Metro data appears only in a city that actually has an operating metro system, most reliably 39 to 43 of 50 listings in one. The default city, Moscow, has a metro. 8 of the 15 supported cities (Krasnodar, Voronezh, Perm, Chelyabinsk, Omsk, Krasnoyarsk, Ufa, Rostov-on-Don) do not, so searching one of those, or clearing location for a nationwide search, will not return metro data.
Is there a limit on how many listings I can collect in one run?
No fixed limit. Set maxResults to whatever you need; the catalog itself reports tens of thousands of matches for a common search.
Can I combine a keyword search with specific listing URLs?
listingUrls, when set, replaces search entirely; the two modes are mutually exclusive. A pasted searchUrl can be combined with the Search fields, and only overrides the filters it explicitly specifies.
Does the output include everything another Avito scraper returns? It carries what field-parity work against Avito's real payload confirmed the source actually emits, and that work is disclosed honestly rather than assumed complete. The listing's marketplace vertical ships two ways, in detail mode: the exact numeric id, matched precisely against Avito's own listing data, and a readable label built alongside it for the same fact. A few other fields other listings claim as opaque numeric or coded values, this actor builds itself in readable form instead, listing user type, seller type, listing status, and whether instalments are offered, all derived from the same public listing data this actor already reads for everything else, in detail mode. A handful of fields, like numeric district or metro ids and a seller's aggregate online/listing-count stats, are confirmed absent from Avito's own public data across every payload checked, and are not invented to pad the output. Detailed building info and rental rules, for real estate, are both included after a dedicated check against real listings. A separate realty info block some other listings claim was checked too: no such single block exists in Avito's own data, and the pieces it would plausibly carry (transaction type, category, room and floor specs) already ship under this actor's own category and parameter fields.
Can I get the seller's actual phone number?
No, and this is checked directly rather than assumed. The listing page's own data includes a dedicated field for the seller's plaintext number, and we decoded it on seven different live listings, private sellers and a shop alike: it was null on every single one. What the page does carry, and what this actor exposes as phoneInfo, is availability metadata around that missing number: a masked form like "8 981 XXX-XX-XX", whether the number is anonymised, whether the profile is anonymised, whether the listing routes calls through a business call-tracking line, and the three-digit operator prefix on listings where Avito reveals it inside the mask. None of that is a usable phone number, and it is never presented as one. Other Avito data sources return the same kind of anonymised, masked contact data rather than a plaintext number too, since Avito's own listing page never serves one to any visitor.
What data is missing if I scrape by listingUrls instead of searching?
Most of the schema still populates: fetching a listing by URL or id always runs the same full page fetch that includeDetails triggers in search mode, so coordinates, metro data (city permitting), badges, category ids, image alt text, the seller's logo, rating, review count, review summary and profile URL all populate the same way. 10 fields come only from a search result and stay absent on a listingUrls run: priceWasLowered, priceWithoutDiscount, discountPercent, hasVideo, isVerifiedItem, isMarketplace, hasRealtyLayout, addressId, conditionLabel, and contactMethods.
What happens when nothing matches my search?
The run returns what the Avito search page itself shows in that case: the similar listings nearby and in other cities that Avito places after the exact matches. Every one of those rows carries isSimilarToSearch: true, exact matches never carry the field, so filter it out to keep strict matches only. A thin search works the same way: exact matches always come first, and the similar listings only start once they run out, so a small maxResults fills with exact matches before any similar listing.
What is Avito? Avito is Russia's largest classifieds marketplace, spanning electronics, vehicles, real estate, jobs, and services, comparable in scope to Craigslist or OLX but operating at a much larger scale domestically.
Is this legal to use? Yes. The scraper reads listing data that is publicly visible on avito.ru to any visitor, without bypassing any login. You are responsible for using the collected data in line with applicable law in your jurisdiction and Avito's own terms.
⚖️ Legal
This actor extracts publicly available data from avito.ru. It does not bypass any login or paywall, or circumvent any access restriction placed in front of a page. Users are responsible for complying with Avito's terms of service and applicable data protection laws in their jurisdiction (GDPR, CCPA, and equivalent regimes elsewhere). Listings can include personal data, a seller's display name, rating, and contact availability signals, so handle exported data accordingly. The data returned reflects what Avito published at scrape time; verify accuracy for any regulated or high-stakes use case.
📬 Support
Need something this scraper doesn't do yet? We ship features fast.
- Feature requests go straight to our backlog
- Enterprise needs? We do custom integrations and high-volume plans
- Pricing questions? Check the Monetization tab on the actor page
Response time: usually under 24 hours.
Check out our other scrapers: silentflow on Apify