Avito Listings Scraper
Scrape Avito.ru listings by keyword, category or city. Get id, title, price, seller name and type, publish date and photos. $0.30 per 1,000 listings.
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,searchUrls,sellerType(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.
Pricing
$0.0003 per listing = $0.3 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Listing scraped | One Avito listing returned in the dataset. Sample rows, diagnostics, and listings dropped because they did not match the seller-type filter are never charged. | $0.0003 |
Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-09, and they are what you are actually charged.
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 |
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 |
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 |
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 |
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 |
sort | Avito's own ordering. "Default" is its relevance ranking, which puts promoted listings first. | string |
minPrice | Optional lower price bound, in roubles. | integer |
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 |
maxPrice | Optional upper price bound, in roubles. | integer |
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.
1 ready-to-run use cases
Avito Cheapest Private-Seller Listings
Search Avito for private-seller listings sorted cheapest first. Get price, title, location, date and link.
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. Rows carry title, price, currency, location, link, posted date, sold status.
Zillow Scraper
Scrape Zillow search results and full listing details: price, beds, baths, sqft, photos, price history, schools. No login or API key. $0.0008 per property.
Realtor.com Scraper
Realtor.com listings as JSON, by city, ZIP or county. Fields: address, price, beds, baths, sqft, year built, days on market, agent, broker. $0.68/1k.
Craigslist Scraper
Scrape Craigslist listings by city, category and keyword: id, title, price, neighborhood, date, images and URL. No account or API key. $0.85 per 1,000.
Airbnb Listings Scraper
Scrape Airbnb listings by location, dates and guests. Get listing ID, name, room type, price, rating, reviews and host. No account, no API key.
Where this tool sits
- Categories
- Real Estate & Classifieds
Avito Listings Scraper: ads from Avito.ru by search, category, city or a URL you paste
Type a Russian search term, or paste an Avito search URL, and each ad comes back as a row: id, title, price in roubles, category, city and address, seller name and whether they are private or a business, publish date, photos and the link. No account, no cookies, nothing to install.
The awkward part first. Avito treats a region as a relevance nudge, not a filter. On page 50 of a Moscow search, most of what Avito returns is actually from Kaluga, Tver and Smolensk. This actor sends Avito's own localPriority flag so a chosen region really is a region, and that is what Stay inside the chosen region does. Turn it off and you get Avito's mixed results back.
| Input | Russian search terms, or Avito search and category URLs |
| Output | One row per ad |
| Ceiling | 5,000 ads per search, Avito's own cap. 50,000 per run across searches |
| Account needed | None, and nothing to install |
| Price | $0.30 per 1,000 ads, flat on every plan |
🏷️ What Avito Listings Scraper does
There are two ways in and they mix freely. Fill in the form, which is a search term plus any combination of region, category, seller type, price band and sort order. Or paste URLs you already have, and the region, category, search text, price range, seller type and sort inside each one are read straight off the link.
Regions and categories both take an English name, the Russian name, or the slug out of an Avito URL, so Moscow, Москва and moskva all work, and so do cars, автомобили and avtomobili. Put several regions in and you get one search per region, with duplicate ads counted only once.
One thing to watch with pasted URLs: the form's Sort order wins over a sort inside the URL. If your link already carries one, set the sort field to match it.
The seller filter is checked twice, because Avito ignores its own user= filter in some categories, cars among them. Ads that do not match your choice are dropped before they reach the dataset and never billed.
📥 What you give it
{
"query": "iphone 15",
"region": ["Moscow"],
"category": ["phones"],
"sellerType": "private",
"localOnly": true,
"sort": "newest",
"minPrice": 20000,
"maxItems": 100
}
| Field | Default | What it is |
|---|---|---|
query | box starts at iphone 15 | What to search for, in Russian. Leave it empty to browse a whole category. |
searchUrls | none | Avito search or category URLs pasted straight from the site, instead of filling in the fields. |
region | none | Region or city, by English name, Russian name or URL slug. Empty means the whole of Russia. Several means one search each. |
category | none | Category, by English name, Russian name or URL slug. Empty means every category. |
sellerType | any | private or company to keep only one kind. Mismatched ads are dropped uncharged. |
localOnly | on | Sends Avito's own region flag so a chosen region really is a filter. |
sort | default | Avito's own ordering. default is relevance, which puts promoted ads first. Also newest, cheapest, expensive. |
minPrice, maxPrice | none | Price bounds in roubles. |
maxItems | box starts at 100 | Total ads across every search in the run, up to 50,000. |
proxyConfiguration | leave it alone | Optional, under Advanced. Only if you want the run to go out through a particular network of your own. |
maxItems is a total, not a per-search figure, so the first region in a long list can use the whole allowance before the others get a turn.
📤 What you get back
A real row from a recent run, with the description, images and long links trimmed:
{
"listingId": "8403263007",
"title": "iPhone 15, 128 ГБ, SIM + eSIM",
"description": "IPhone 15 128Gb Blue.\n\nУстройство после сервисного обслуживания...",
"price": 26990,
"priceText": "26 990 ₽",
"currency": "RUB",
"priceWithoutDiscount": null,
"discountPercent": null,
"categoryId": 84,
"categoryName": "Телефоны",
"categorySlug": "telefony",
"microCategoryId": 1104365,
"locationId": 621630,
"location": "Барнаул",
"address": "Алтайский край, Барнаул",
"addressLocality": "Барнаул",
"latitude": 53.356916,
"longitude": 83.696808,
"sellerName": "Скупка Store",
"sellerType": "company",
"sellerTypeText": "Компания",
"sellerUrl": "https://www.avito.ru/brands/6aa30742c61b481f75171d9173cf0c2f",
"sellerRating": 5,
"sellerReviewsText": "5 отзывов",
"publishedAt": "2026-09-18T12:01:59.000Z",
"publishedAtText": "3 дня назад",
"images": ["https://20.img.avito.st/image/1/1.3TfI5raAcd6GTIvV_t3_b9NGc9p6UXXeejYQ2nq9eiR3..."],
"imageCount": 4,
"hasVideo": false,
"isNew": false,
"isVerified": false,
"isReserved": false,
"params": "Отличное",
"url": "https://www.avito.ru/barnaul/telefony/iphone_15_128_gb_sim_esim_8403263007",
"searchQuery": "iphone 15",
"searchUrl": "https://www.avito.ru/all?q=iphone%2015",
"scrapedAt": "2026-09-21T13:00:55.530Z"
}
| Field | What it is |
|---|---|
description | The preview Avito prints on the results page, cut off by Avito itself. Not the full ad body. |
price / priceText | The number of roubles, and Avito's own formatted string. price is null on ads with no price, and currency goes null with it. |
latitude, longitude, address | Only when the seller added them. Often null on electronics, usually filled on property and cars. |
sellerType | private or company, worked out from the label Avito prints under the seller's name. |
sellerRating | The key is absent, not null, when Avito sends no rating. Check for the key, not for a null. |
publishedAt | A real ISO timestamp, alongside Avito's own wording in publishedAtText. |
images | Every photo at the largest size Avito renders. imageCount is how many. |
params | The spec line Avito prints under the title, like Отличное. |
searchQuery, searchUrl | Which of your searches produced this row. |
🧾 Reading the output
| Row | How to spot it | Billed |
|---|---|---|
| An ad | It has a listingId | yes |
| The sample row | _sample: true and charged: false | no |
| A diagnostic | _diagnostic: true, charged: false and an errorCode | no |
Ad rows carry no charged field at all. The flag exists only on the sample and diagnostic rows, to mark them as not real results. Filter on listingId being present.
| Code | What it means |
|---|---|
NO_RESULTS | That search returned nothing. |
BAD_INPUT | A URL that is not an Avito search or category link. |
BLOCKED | Avito refused a page. The row names which page number it stopped on. |
BAD_RESPONSE | Avito answered with something this actor could not read. |
PROXY_GROUP_IGNORED | Part of the advanced network settings you sent could not be used as given, so the run adjusted them and carried on. |
TIME_LIMIT | The run got close to its time limit, so it stopped searching and delivered the ads found up to then. Give it more time to get the rest. If none had come back yet, the run ends as failed. |
One bad search never stops the others.
▶️ How to run it
1. Open Avito Listings Scraper and click Try for free. 2. Type your Russian search into Search terms, or paste links into Avito search URLs. 3. Open Narrow it down to set a region, a category, the seller type or a price band. 4. Set Maximum listings under Limits. Start around 20 to see what the rows look like. 5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the Apify API.
💰 How much does it cost?
$0.30 per 1,000 ads. Flat on every Apify plan, with no volume tiers.
One billed row per ad delivered. The sample row is not billed, diagnostic rows are not billed, an ad that fails your seller-type choice is dropped before the dataset, and the same ad found under two regions is counted once.
💡 What people use it for
- Watching prices for one model in one city, on a schedule, with
publishedAtfor what is new. - Building a lead list of businesses in a category, using
sellerTypeto keep the shops and dealers
and drop private sellers.
- Property and car research, where
latitudeandlongitudeare usually filled and you can map
the results directly.
- Comparing the same search across several regions in one run, since every row says which search
produced it.
- Tracking how long stock sits, by re-running and diffing on
listingId.
🚧 What it does not do
- No phone numbers. Avito keeps them behind an interaction this does not perform.
descriptionis the preview, not the ad. Avito truncates it on the results page and that is
what comes back.
- Coordinates depend on the seller. No seller-supplied location means no
latitude,
longitude or street address.
- 5,000 per search is Avito's ceiling, not ours. Past page 100 Avito sends you back to page 1.
Split by region, price band or sub-category to get more.
- Seller type is read off a label, so an unfamiliar label is treated as a business.
- Rows arrive at the end. Everything is collected first and written when the searches finish,
so a very large run has nothing in the dataset until it is done.
- A big run can come back short. Avito rate-limits hard, and a page it will not serve becomes an
uncharged diagnostic rather than a gap passed off as a complete result. Only delivered ad rows are billed.
🧭 Which Russian-market scraper do you need?
| If you want | Use |
|---|---|
| Ads from a search, a category or a city | This one |
| Everything one seller has listed, plus their profile | Avito Seller Listings & Profile Scraper |
| Reviews for a place on Yandex Maps | Yandex Maps Reviews Scraper |
| Businesses and their details from 2GIS | 2GIS Places Scraper |
| Reviews from 2GIS | 2GIS Reviews Scraper |
❓ Questions people ask
Can I search in English? The search text goes to Avito as you typed it, and Avito's index is Russian, so English terms return little. Region and category names do accept English.
Why are listings from other cities in my Moscow search? They are not, if Stay inside the chosen region is on. If you turned it off, that is Avito's own behaviour: it ranks your region higher rather than restricting to it.
How do I get more than 5,000 for one search? Split it. Several regions, several price bands, or narrower categories, all in the same run.
Why is sellerRating missing rather than null? Because Avito sent no rating for that seller. Test for the key rather than for a null value.
Can I schedule it? Yes. listingId is stable, so diffing one run against the next shows what appeared and what sold.
Is this legal? These are public ads. They carry personal data, which GDPR and similar laws cover, so have a reason for collecting it. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the search or the URL you used and the run ID. The errorCode on the diagnostic row usually names the problem on its own.