Avito Listings Scraper API avatar

Avito Listings Scraper API

Pricing

from $0.30 / 1,000 listing scrapeds

Go to Apify Store
Avito Listings Scraper API

Avito Listings Scraper API

Scrape Avito.ru listings by keyword, category, city or a search URL you paste. Each row has id, title, price, city, seller name and type, publish date and photos. Coordinates come only if the seller added them. If not, that field is empty. $0.30 per 1,000 ads.

Pricing

from $0.30 / 1,000 listing scrapeds

Rating

5.0

(1)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

1

Bookmarked

47

Total users

24

Monthly active users

3 days ago

Last modified

Share

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.

InputRussian search terms, or Avito search and category URLs
OutputOne row per ad
Ceiling5,000 ads per search, Avito's own cap. 50,000 per run across searches
Account neededNone, 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
}
FieldDefaultWhat it is
querybox starts at iphone 15What to search for, in Russian. Leave it empty to browse a whole category.
searchUrlsnoneAvito search or category URLs pasted straight from the site, instead of filling in the fields.
regionnoneRegion or city, by English name, Russian name or URL slug. Empty means the whole of Russia. Several means one search each.
categorynoneCategory, by English name, Russian name or URL slug. Empty means every category.
sellerTypeanyprivate or company to keep only one kind. Mismatched ads are dropped uncharged.
localOnlyonSends Avito's own region flag so a chosen region really is a filter.
sortdefaultAvito's own ordering. default is relevance, which puts promoted ads first. Also newest, cheapest, expensive.
minPrice, maxPricenonePrice bounds in roubles.
maxItemsbox starts at 100Total ads across every search in the run, up to 50,000.
proxyConfigurationleave it aloneOptional, 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"
}
FieldWhat it is
descriptionThe preview Avito prints on the results page, cut off by Avito itself. Not the full ad body.
price / priceTextThe 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, addressOnly when the seller added them. Often null on electronics, usually filled on property and cars.
sellerTypeprivate or company, worked out from the label Avito prints under the seller's name.
sellerRatingThe key is absent, not null, when Avito sends no rating. Check for the key, not for a null.
publishedAtA real ISO timestamp, alongside Avito's own wording in publishedAtText.
imagesEvery photo at the largest size Avito renders. imageCount is how many.
paramsThe spec line Avito prints under the title, like Отличное.
searchQuery, searchUrlWhich of your searches produced this row.

🧾 Reading the output

RowHow to spot itBilled
An adIt has a listingIdyes
The sample row_sample: true and charged: falseno
A diagnostic_diagnostic: true, charged: false and an errorCodeno

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.

CodeWhat it means
NO_RESULTSThat search returned nothing.
BAD_INPUTA URL that is not an Avito search or category link.
BLOCKEDAvito refused a page. The row names which page number it stopped on.
BAD_RESPONSEAvito answered with something this actor could not read.
PROXY_GROUP_IGNOREDPart of the advanced network settings you sent could not be used as given, so the run adjusted them and carried on.

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 publishedAt for what is new.
  • Building a lead list of businesses in a category, using sellerType to keep the shops and dealers and drop private sellers.
  • Property and car research, where latitude and longitude are 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.
  • description is 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 wantUse
Ads from a search, a category or a cityThis one
Everything one seller has listed, plus their profileAvito Seller Listings & Profile Scraper
Reviews for a place on Yandex MapsYandex Maps Reviews Scraper
Businesses and their details from 2GIS2GIS Places Scraper
Reviews from 2GIS2GIS 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.