Avito Listings Scraper
Scrape Avito.ru listings: id, title, price, category, city, seller name and type, publish date, photos. Filter by region, price and seller.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
query,region,category(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Inputs
| Field | What it does | Type |
|---|---|---|
query | What to search for, in Russian — for example "iphone 15", "диван", "велосипед". Leave empty to browse a whole category. | string |
region | Avito region, by English name ("Moscow", "Saint Petersburg", "Kazan"), Russian name ("Москва"), or the slug from an Avito URL ("moskva", "sankt-peterburg", "moskovskaya_oblast"). Leave empty for the whole of Russia. Add several to run one search per region. | array |
category | Avito category by English name ("cars", "phones", "flats", "jobs", "furniture"), Russian name ("автомобили"), or the slug from an Avito URL ("avtomobili", "kvartiry/prodam"). Leave empty to search every category. | array |
searchUrls | Optional. Paste Avito search or category URLs instead of filling in the fields above, e.g. https://www.avito.ru/moskva/avtomobili?cd=1&pmin=500000. The region, category, search text, price range, seller type and sort order in the URL are all read. | array |
maxItems | How many listings to return in total across all searches. Each returned listing is one charged result. Avito caps any single search at 5,000 listings (100 pages of 50) — add regions, price bands or sub-categories to go past that. | integer |
sort | Avito's own ordering. "Default" is its relevance ranking, which puts promoted listings first. | string |
sellerType | Return only private sellers or only businesses (shops, dealers, agencies). Avito ignores its own seller filter in some categories, so the actor also checks every row and drops the ones that do not match — dropped rows are never charged. | string |
minPrice | Optional lower price bound, in roubles. | integer |
maxPrice | Optional upper price bound, in roubles. | integer |
localOnly | On by default. Avito treats a region as a relevance boost rather than a filter: on page 50 of a Moscow search, most listings are actually from Kaluga, Tver and Smolensk. This sends Avito's own localPriority flag so only the chosen region comes back. Turn it off to get Avito's default mixed results. | boolean |
What you get
A structured dataset — each result includes fields like:
listingIdtitlepricepriceTextcategoryNamelocationaddresssellerNamesellerTypepublishedAtimageCounturlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Real Estate & Classifieds
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
Facebook Marketplace Scraper
Scrape Facebook Marketplace listings by keyword and city: title, price, currency, location, link, photo, posted date, sold status. No login or cookies.
Zillow Scraper
Zillow scraper at $0.0008 per property plus a $0.001 run start. Search results and full listing details: price, beds, baths, sqft, photos, price history.
Realtor.com Scraper
Scrape Realtor.com listings as JSON: address, price, beds, baths, sqft, lot size, year built, days on market, agent, broker, photos, coordinates.
Craigslist Scraper
Scrape Craigslist listings by city, category and keyword at $0.85 per 1,000: id, title, price, neighborhood, date, images and URL. No account or API key.
Airbnb Listings Scraper
Scrape Airbnb search results by location, dates and guest count: listing ID, name, room type, price, rating, reviews and host. No account or API key.
Where this tool sits
- Categories
- Real Estate & Classifieds
Avito Listings Scraper API
Scrape classified listings from Avito.ru, Russia's largest classifieds site. Give it a search term, a category, a city, or just paste an Avito search URL, and it returns structured rows: listing id, title, description, price, category, city and street address, coordinates, seller name and seller type, publish date, every photo URL, and the listing link.
$0.30 per 1,000 listings. A flat rate — no volume tiers to unlock and no plan gates, and the same price on your first run as on your millionth.
What you get
One row per listing:
| field | example |
|---|---|
listingId | 8016198496 |
title | Land Rover Range Rover 4.4 AT, 2026 |
description | first ~250 characters of the seller's text |
price / priceText | 38250000 / 38 250 000 ₽ |
currency | RUB |
priceWithoutDiscount, discountPercent | set when Avito shows a markdown |
categoryId / categoryName / categorySlug | 9 / Автомобили / avtomobili |
microCategoryId | 23887 |
locationId / location | 637640 / Москва |
address / addressLocality | Москва, Крылатское / Москва |
latitude / longitude | 55.765888 / 37.403989 |
sellerName | А1 АВТО |
sellerType | private or company |
sellerTypeText | Avito's own words: Автодилер, Компания, Агентство |
sellerUrl | https://www.avito.ru/brands/a1auto |
sellerRating, sellerReviewsText | 4.5, 60 отзывов — when Avito shows them |
publishedAt | 2026-07-31T10:49:16.000Z |
images / imageCount | array of full-size photo URLs / 21 |
isNew, isVerified, isReserved, hasVideo | booleans |
params | 4.4 AT (615 л.с.), внедорожник, полный, бензин |
url | link to the listing |
Not every field is set on every listing, because Avito does not show every field on every ad. Measured on the runs below: publishedAt, images and url were present on 100% of rows; latitude/longitude on 100% of property rows but 57% of phone rows; sellerName on 41% of property rows, because Avito shows no name for most private sellers. Missing values are null, never invented.
Input
Fill in the form, or paste URLs — both end up in the same place.
{
"query": "iphone 15",
"region": ["Moscow"],
"category": ["phones"],
"maxItems": 500,
"sort": "newest",
"sellerType": "private",
"minPrice": 20000,
"maxPrice": 60000
}
{
"searchUrls": ["https://www.avito.ru/sankt-peterburg/kvartiry/sdam?pmin=30000&pmax=60000"],
"maxItems": 120
}
region and category accept English names (Moscow, Saint Petersburg, cars, flats, jobs), Russian names (Москва, автомобили), or the raw slug out of any Avito URL (moskva, kvartiry/prodam). Anything not in the built-in alias table is passed through as a slug, so every one of Avito's thousands of sub-categories works.
Run it with empty input and you get one clearly-labelled sample row, free. Nothing is charged until you ask for a real search.
Real numbers from real runs
Measured on the Apify platform, 2026-08-09:
| run | listings | wall time | platform cost |
|---|---|---|---|
| empty input (sample) | 0 charged | 2.2 s | $0.00018 |
iphone 15, Moscow | 5 | 5.7 s | $0.00040 |
| flats to rent, St Petersburg, from a pasted URL | 120 | 16.2 s | $0.00158 |
| cars, Moscow | 250 | 26.6 s | $0.00284 |
| cars, Moscow | 1000 | 90.7 s | $0.01033 |
About 11 listings per second. Every run above returned exactly the number of rows requested, with zero pages refused.
Two things about Avito worth knowing before you run it
1. A region is a suggestion, not a filter. Search Moscow and read page 1 and you get Moscow. Read page 50 of the same search and most of it is Kaluga, Tver, Smolensk and Bryansk — Avito pads a region search with neighbouring ones and does not tell you. This actor sends Avito's own localPriority flag so you only get the region you asked for. It is on by default; the Stay inside the chosen region checkbox turns it off if you want Avito's mixed behaviour.
2. Any single search stops at 5,000 listings. Avito's pager always ends at page 100 and 50 listings a page, no matter that it reports 81,801 matches. Ask for page 101 and it answers HTTP 200 with a redirect back to page 1 — which is how a naive scraper ends up billing you for the same first 50 rows over and over. This one detects that and stops. To go past 5,000, split the search: by city, by price band (minPrice/maxPrice), or into sub-categories.
What this does not do
- No phone numbers. Avito hides seller phone numbers behind a logged-in click. They are not in
the search results and this actor does not try to get them.
- No full ad text. The description is the preview Avito puts in search results, roughly the
first 250 characters. Opening each ad for the complete text would be a separate request per listing and would cost you many times more.
- Seller type comes from Avito's own labelling. Avito prints a business line ("Компания",
"Автодилер", "Агентство") on business accounts and nothing on private ones, and that is what sellerType reflects. It is also why the actor re-checks every row when you filter by seller type — Avito silently ignores its own user= parameter in some categories, notably cars, so rows that do not match are dropped and never charged.
- No listing history, no price history, no sold-date.
- Not a seller-profile scraper. You get the seller's name and profile URL, not their full
catalogue.
Reliability
Avito sits behind Qrator and rate-limits by IP address. The actor handles this itself: it retries, and falls back from the plain Apify container address to rotating Apify datacentre sessions when an address has been throttled. Not one page was refused across the 29 pages the runs above read. If a run does get refused, it writes uncharged diagnostic rows explaining what happened rather than returning an empty dataset silently — and it stops early instead of spending your money retrying.
You can supply your own proxy in proxyConfiguration if you have Russian exit addresses, but you do not need one.
Pricing
| event | price |
|---|---|
| Actor start | $0.0025 per run |
| Listing scraped | $0.0003 each — $0.30 per 1,000 |
Sample rows, diagnostic rows, duplicates and rows dropped by the seller-type filter are not charged. A 1,000-listing run costs $0.3025.
FAQ
How do I scrape Avito.ru? Run this actor with a search term, a category, or a pasted Avito search URL. It reads Avito's own server-rendered search results and returns structured JSON, CSV or Excel. No account, no API key and no proxy of your own is needed.
Is there an official Avito API? Yes, but not for this. api.avito.ru is an OAuth API for sellers and advertisers to manage their own ads and read their own stats. It does not let you search the public catalogue. This actor reads the public site instead.
How many Avito listings can I get in one run? Up to 5,000 per individual search, which is Avito's own pagination ceiling, and up to 50,000 per run across several searches. Add regions, categories or price bands to widen it: ten cities is ten searches and up to 50,000 listings.
Can I filter by price, city or seller type? Yes — minPrice, maxPrice, region and sellerType. Price and region are applied by Avito; seller type is applied by Avito where it works and re-checked here where it does not.
Can I get sellers' phone numbers? No. Avito requires a logged-in session and a click to reveal a phone number. This actor does not log in and does not collect phone numbers.
Does it work for cars, flats and jobs, or only goods? All of them. avtomobili, kvartiry, vakansii, nedvizhimost, rabota and every other Avito category work, because the actor uses Avito's own URL structure. Cars and property listings also come back with coordinates.
What does it cost to scrape 10,000 Avito listings? $3.00 in listing charges plus $0.0025 for the run — $3.0025 total.
How current is the data? Live. Every run reads Avito at that moment; publishedAt is the listing's own timestamp and scrapedAt is when the row was read.
What if Avito blocks the run? You get uncharged diagnostic rows saying which pages were refused, not an empty dataset. Re-running usually lands on a different address and works. You are never charged for a listing you did not get.