Avito.ru Listings Scraper avatar

Avito.ru Listings Scraper

Pricing

from $0.24 / 1,000 listings

Go to Apify Store
Avito.ru Listings Scraper

Avito.ru Listings Scraper

Scrape Avito.ru classifieds by keyword, city, category or search URL: price, GPS, metro, seller type and rating, date, photos, promotions. Filter private / company sellers and dates; only new listings. Export to JSON, CSV or Excel.

Pricing

from $0.24 / 1,000 listings

Rating

0.0

(0)

Developer

Nice Dev

Nice Dev

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

0

Monthly active users

16 hours

Issues response

15 hours ago

Last modified

Share

🛒 What is Avito.ru Listings Scraper?

Avito.ru Listings Scraper extracts classified listings from Avito.ru, Russia's largest classifieds site: title, price, address, GPS coordinates, metro stations, seller (private or company, rating, reviews), publication date and photos, for any keyword, city, category or search URL. It works as an Avito API alternative: run it on a schedule, call it from your code, or plug it into Make, Zapier or n8n.

Type a keyword (iphone), pick a city and a category, click Start, and download the listings in JSON, CSV or Excel. No login, no Avito account, nothing to set up. Tick Extract details to also get the full description, every characteristic of the item, views and seller details.

📋 What data can you extract from Avito.ru?

One item per listing, 66 fields:

CategoryWhat you get
🏷️ Listingtitle, link, Avito id, category, rank in the search — iPhone 17, 256 ГБ, SIM + eSIM
💰 Priceprice in roubles and as written, old price and discount, "price lowered" mark, price per square metre — 70990 RUB
📍 Locationcity, street address, GPS latitude and longitude, nearby metro stations with distance and walking time
👤 Sellername, private seller or company / agency / developer, rating out of 5, number of reviews, profile link, logo
📝 Text and photosshort description, photos, number of photos, video or not
✅ Marksverified listing, reserved, new item, Avito Delivery, paid promotion and its names, call button shown
🕒 Datespublication date (ISO) and the date as the site writes it
🔎 With detailsfull description (text and HTML), all characteristics, every photo, views (total and today), status, end date, seller since, badges, shop, masked phone, model rating (the market price estimate is a separate option, see below)

Every field, with an example, is listed in the Output section below.

Fields marked (detail) in the Output tab are filled when Extract details is on (off by default). Left off, the run reads only the results pages: faster and cheaper.

✅ Why use Avito.ru Listings Scraper?

  • 👤 Private or company sellers: keep only private sellers, or only companies, shops, agencies and developers. Checked on every listing, even on a search URL you paste.
  • 📍 Really local results: Avito mixes listings from other cities into a search (a few per page, a whole page for a small town with few matches); tick Searched place only to drop them.
  • 📅 Date filters: postedAfter: "7 days" — filtered-out listings are not saved and never count in maxItems.
  • 🔔 Monitoring built in: tick Only new listings, schedule the Actor, and each run returns (and charges) only what it has never delivered before.
  • 🗺️ GPS, address and metro from the results page, with the seller's rating and number of reviews: no extra page needed.
  • 🗂️ Several searches in one run: keywords × locations, with a cap per search so that one big city cannot eat the whole budget.
  • 🔌 API, scheduling, integrations (Make, Zapier, n8n, Google Sheets…) and JSON/CSV/Excel export via the Apify platform.

🚀 How to scrape Avito.ru

  1. Create a free Apify account.
  2. Open Avito.ru Listings Scraper, type a Search keyword (e.g. iphone), a Location (moskva, Moscow or Москва) and, if you want, a Category.
  3. Or paste your own Avito.ru URLs into Start URLs: any search results page (all filters set on the site are kept, pagination is automatic) or single listing pages.
  4. Set Max listings (100 by default, 0 = no limit) — and Max listings per search when you run several searches — then click Start.
  5. Download the dataset in JSON, CSV, Excel or via API.

💰 How much does it cost to scrape Avito.ru?

This Actor uses pay per event pricing: a price per listing saved, plus a small fee per run start.

Apify planListingListing with full detailsMarket price estimateListing dropped by a filter
Free$0.27$1.79$0.089$0.118
Bronze$0.26$1.69$0.088$0.108
Silver$0.25$1.59$0.087$0.098
Gold$0.24$1.29$0.086$0.088

Prices per 1,000, plus $0.01 per run start ($1 per 100 runs). Example on the Free plan: 1,000 listings ≈ $0.28; 1,000 listings with their full details ≈ $2.50.

With Extract details, each listing whose page is opened costs the Listing with full details price instead of the Listing price (it replaces it, it is not added to it). Tick Include market price (off by default; needs Extract details or a listing URL) to also get Avito's market price estimate on the listings that show one (some cars and real estate): it is billed per listing that has an estimate, on top of the listing price, and never for a listing without one. Filters the site does not offer are applied by the Actor on every listing it reads: a listing you keep costs its normal price, a listing a filter drops is not saved and costs only the filter fee shown in the Pricing tab. Platform usage (compute, Russian proxy) is included in the price.

⚙️ Input

{
"query": "iphone",
"location": "moskva",
"category": "telefony",
"maxItems": 200
}

Several searches, a cap per search, private sellers only, only recent listings, only the ones not delivered before:

{
"searchQueries": ["iphone 15", "iphone 16"],
"locations": ["moskva", "sankt-peterburg"],
"maxItemsPerQuery": 50,
"sellerType": "private",
"postedAfter": "7 days",
"onlyNew": true,
"stateKey": "iphones-ru"
}

Or with your own URLs:

{
"startUrls": [
{ "url": "https://www.avito.ru/moskva/telefony?q=iphone&s=104" },
{ "url": "https://www.avito.ru/moskva/telefony/iphone_17_256_gb_sim_esim_8214878882" }
],
"extractDetails": true,
"maxItems": 500
}
FieldNotes
query, searchQueriesFree-text search, exactly as typed on the site (iphone, диван); searchQueries adds more keywords (one search each). Give a keyword, a category or start URLs: Avito shows no listings for a place alone, so a run with none of them is refused.
location, locationsCity or region: the Avito slug (moskva, sankt-peterburg, kazan, all = the whole of Russia) or a known name (Moscow, Москва). Empty = the whole of Russia. Every keyword is searched in every location (max 500 searches per run).
categoryOne of 59 Avito categories, as in the site address after the city (telefony, kvartiry/prodam, avtomobili). Any other category: paste its search URL in startUrls. A department without a keyword (transport, zhivotnye) in the default order is read sorted by date (Avito shows a showcase page there, not listings); with a sort chosen it is read in that order.
startUrlsSearch results pages (filters kept, pagination automatic) or single listing pages, up to 1,000. They replace the search fields, the sort and the price and delivery filters; seller type and searched-place filters, the Filters section, caps and monitoring still apply. A single listing page is always read in full and billed at the with-details price.
extractDetailsOpen each listing page for the full description, all characteristics, all photos, views and seller details (default off; a listing read this way is billed at the with-details price instead of the base price, see Pricing).
includeMarketPricePaid option, off by default: Avito's market price estimate (some cars and real estate), read on the listing page, so it needs extractDetails or a listing URL in startUrls (otherwise it is ignored and said so in the log). Billed per listing that has an estimate, on top of its price, see Pricing. Unticked, the market price column stays empty.
maxItemsStop after this many listings for the whole run (0 = unlimited).
maxItemsPerQueryCap for EACH search (keyword × location, or search URL). 0 = no per-search cap.
sortOrder of the results: relevance (site default), newest, cheapest, expensive, discount. With postedAfter or onlyNew, the default order becomes newest first (a URL pasted in startUrls keeps its own order).
sellerType, priceMin, priceMax, withDeliveryOnly, localOnlySite filters: private sellers or company (companies, shops, agencies, developers); price range in roubles; Avito Delivery only; only listings located in the searched city (a region keeps all its listings).
postedAfter, postedBeforePublication date range: 2026-10-01, or a period before now (7 days, 2 weeks, 1 month, 24 hours).
excludeKeywordsDrop the listings whose title or description contains one of these words (case and accents ignored), e.g. case, broken.
verifiedOnly, withPhotosOnly, minRatingOnly listings Avito marks as verified; only listings whose search result shows at least one photo; only sellers rated at least this (0-5 stars), sellers without a rating dropped.
onlyNew, stateKey, resetStateMonitoring: only the listings never delivered under this memory key; resetState forgets the memory.
AdvancedproxyConfiguration (Russian IPs included in the price, keep the default), maxConcurrency, maxRequestsPerMinute, minRequestIntervalMs, maxRequestRetries, debugLog.

📦 Output

A listing read with Extract details on (shortened: some fields and photos left out):

{
"id": "8214878882",
"url": "https://www.avito.ru/moskva/telefony/iphone_17_256_gb_sim_esim_8214878882",
"title": "iPhone 17, 256 ГБ, SIM + eSIM",
"price": 70990,
"currency": "RUB",
"priceText": "70 990",
"priceWasLowered": false,
"categoryName": "Телефоны",
"categorySlug": "telefony",
"city": "Москва",
"address": "Москва, ул. Земляной Вал, 14/16",
"latitude": 55.760894,
"longitude": 37.656946,
"images": [
"https://30.img.avito.st/image/1/1.Hamq87a_p0C8VXNBnKs4rZFTs0ASShNH3FNNQeJTTUEcUA.CNckJNL5GBh9G6HeNjWdt9sR-KsnhleCl9TQOJfii2Q"
],
"sellerName": "BAZA",
"sellerType": "company",
"sellerTypeText": "Компания",
"sellerUrl": "https://www.avito.ru/brands/bazaplay",
"sellerRating": 5,
"position": 3,
"sellerSince": "апреля 2021",
"sellerBadges": ["Данные подтверждены", "Есть сообщество ВК"],
"badges": ["Рыночная цена"],
"sellerReviewsCount": 15703,
"hasPhone": true,
"isPromoted": false,
"publishedAt": "2026-10-10T16:15:00.000Z",
"publishedAtText": "10 октября в 19:15",
"searchQuery": "iphone",
"searchUrl": "https://www.avito.ru/moskva/telefony?q=iphone",
"attributes": [{ "name": "Производитель", "value": "Apple", "attributeId": 110618 }],
"viewsTotal": 20344,
"viewsToday": 120,
"shopName": "BAZA",
"isCompany": true,
"status": "active",
"expiresAt": "2026-11-09T16:15:36.000Z",
"breadcrumbs": ["Электроника", "Телефоны", "Apple", "Мобильные телефоны"],
"phoneMask": "8 958 XXX-XX-XX",
"modelRating": 4.7,
"modelReviewsCount": 39,
"scrapedAt": "2026-10-15T16:24:50.135Z"
}

You can download the dataset in various formats such as JSON, HTML, CSV or Excel.

All 66 fields

Texts are in Russian, as the site writes them.

FieldsWhat you get
id, url, title, positionListing: Avito id, link without tracking parameters, title, rank in its search (1 = first result of page 1; null for a pasted listing URL)
price, currency, priceTextPrice: 70990, RUB, 70 990 as written (null price: negotiable, free)
priceWithoutDiscount, discountPercent, priceWasLowered, normalizedPriceold price and discount when shown, "price lowered" mark, price per unit as written (per m² in real estate)
categoryId, categoryName, categorySlug, microCategoryId84, Телефоны, telefony, Avito's sub-category id
locationId, city, address, latitude, longitudeLocation: Avito id of the city or region, city, street address, GPS coordinates
metroStations[{ "name": "Горный институт", "distance": "700 м", "walkTime": "11–15 мин." }], empty when none
description, images, imageCount, hasVideoText and photos: short preview (the full text with details), photos of the results card (largest size), number of photos, video or not
sellerName, sellerType, sellerTypeText, sellerUrl, sellerLogoSeller: name, private / company / agency / developer (from the site's own word), that word in Russian, profile link, logo
sellerRating, sellerReviewsCount4.8 out of 5, 50 reviews
isVerified, isReserved, isNew, deliveryAvailable, hasPhone, isPromoted, promotionsMarks: true / false; promotions = names of the paid promotions (Продвинуто)
attributesTextshort parameters line of the card (Новый, year, area, rooms…)
publishedAt, publishedAtTextDates: 2026-10-10T16:15:00.000Z (date of the last publication or renewal on Avito, what the date filters read), 10 октября в 19:15 as written
searchQuery, searchUrl, scrapedAtkeyword and results page that found the listing (null for a pasted listing URL), extraction time
descriptionHtml, attributes, allImages(detail) full description with its formatting, all characteristics (name, value, attributeId), every photo
viewsTotal, viewsToday, status, expiresAt, breadcrumbs(detail) 20344 views, 120 today, active / closed / archived, end of display, category path
sellerId, sellerUserKey, sellerSince, sellerBadges, badges, shopId, shopName, isCompany(detail) seller ids, member since (апреля 2021), seller and listing badges, shop, company or not
phoneMask, phoneIsCallTracking(detail) masked number as shown before calling (8 958 XXX-XX-XX), call tracking number or not — the full number is not given
modelRating, modelReviewsCount, marketPrice(detail) rating and reviews of the item model, Avito's market price estimate (some cars and real estate), with Include market price; null otherwise

💡 Tips

How to get more results

Avito serves at most 30 pages of 50 listings (about 1,500) for a search in one city or region, and 100 pages (about 5,000) for the whole of Russia, even when it counts many more. The Actor reads every page Avito gives; to go past that, split the search: several cities in More locations, price ranges with priceMin / priceMax (one run or one search URL per range), or narrower categories. Set maxItems to 0 for no limit.

How to reduce costs

The price is per listing, so the levers are maxItems, maxItemsPerQuery, the filters (a filtered-out listing costs only the filter fee) and onlyNew for recurring runs (you never pay twice for the same listing). Leave extractDetails off when the results-page fields are enough (a listing read with its page is billed at the with-details price): GPS, address, metro, seller rating and the publication date are already there.

Several searches in one run

Fill searchQueries and / or locations: the Actor runs one search per keyword × location (3 keywords × 4 cities = 12 searches, up to 500 per run). The single query and location fields still work and are added to the lists. A listing found by several searches is saved — and charged — once. Set maxItemsPerQuery to give every search its own cap: without it the first searches can use up the whole maxItems budget. You can also paste several search URLs into startUrls: each one is a search of its own, with the same cap.

Monitoring: only the new listings

Tick Only new listings (onlyNew) and schedule the Actor. The first run returns everything; each later run skips the listings already delivered: they are not saved, not charged, and their page is not even opened. The memory lives in a named key-value store of your account (avito-listings-scraper-seen, up to 150,000 listings per key) and is only updated with listings that really reached the dataset, so a failed run never hides anything. Give each schedule its own stateKey (two schedules sharing a key would hide each other's listings), and tick resetState once to start over. Searches built from the search fields are then sorted by newest (unless you chose another order). A newest-first search stops once it meets 250 listings in a row you already have; under a cap below 250 (Max listings or maxItemsPerQuery), once 80% of that cap are listings you already have (or 80% of what your earlier runs delivered for that search, if fewer). Promoted listings are not counted. A search URL pasted in startUrls keeps its own order: choose «По дате» (by date) on Avito before copying it, or add s=104 to it, to get this early stop.

Filter by publication date

postedAfter and postedBefore take a date (2026-10-01, the whole day is included, Moscow time) or a period before now (7 days, 2 weeks, 1 month; via the API also 24 hours or a full ISO date-time). The filter reads publishedAt, the date of the last publication or renewal on Avito, which moves forward when the seller republishes or renews the listing; it works on a pasted listing URL too. A listing without a publication date is dropped as soon as a date bound is set. Filtered-out listings are not saved and do not count in maxItems (each listing dropped costs the filter fee, see Pricing); the run summary tells how many were filtered. With postedAfter, searches built from the search fields are sorted by newest (unless you chose another order) and stop at the first page that is entirely too old; a search URL pasted in startUrls does so only if it is sorted by date (choose «По дате» on Avito before copying it, or add s=104).

Private or company sellers

sellerType: "private" keeps the private sellers, "company" the companies, shops, agencies and developers. The type comes from the word Avito writes on the listing card (Компания, Агентство, Застройщик, Автодилер); a seller without such a word is a private person, except in rubrics whose cards never write that word (services: their second line is the specialty), where the type stays empty unless the search itself was limited to one type or the listing page is opened (extractDetails). The Actor checks it on every listing, so the filter also works on a search URL you paste; a listing whose card shows no seller at all is kept.

🔌 Integrations and API

Call the Actor via the Apify API, the JavaScript or Python clients, or connect it with integrations and webhooks (Make, Zapier, n8n, Google Sheets, Slack, Airtable…). The dataset can be fetched as JSON or CSV from any tool.

🤖 Use with AI agents (MCP)

AI agents (Claude, ChatGPT, Cursor…) can find and run this Actor through the Apify MCP server, billed to their Apify account like any run. It returns one item per Avito.ru listing. Actor id: nice_dev/avito-listings-scraper; MCP server with this Actor only: https://mcp.apify.com/?tools=fetch-actor-details,nice_dev/avito-listings-scraper.

Smallest input, for a cheap first call:

{
"query": "iphone",
"location": "moskva",
"maxItems": 10
}

Key output fields: url, title, price, address, sellerType, sellerRating, publishedAt, and description in full with extractDetails.

Cost: pay per event, per listing saved plus a fee per run start, see the pricing section above. Cap each call with maxItems and, through the API, with the run option maxTotalChargeUsd.

❓ FAQ

The Actor only reads what Avito.ru shows publicly to any anonymous visitor in Russia. It logs in to nothing and needs no account or cookie from you. Results contain personal data (the names private sellers show, their ratings), which is protected by the Russian personal data law (Federal Law No. 152-FZ) and, for some users, by GDPR: do not store or use it without a legitimate reason. You are responsible for using the data in compliance with Avito.ru's Terms of Use and applicable law. This Actor is not affiliated with Avito.

Does it need a login or a proxy?

No login. Avito.ru opens only to Russian IP addresses: the Actor uses Russian IPs, included in the price — leave the default proxy setting (a proxy group, a country or No proxy chosen in the form is ignored). If you use your own proxies, they must be Russian. A request the site turns away is retried on a new proxy session, up to 10 times on top of the retries (outside the Apify platform without any proxy, after a pause of 5 seconds, doubled at each retry up to 150 seconds).

Apify free plan: the included proxy is for paying Apify plans only. On the free plan, add your own proxy URLs in Proxy configuration; without them the run stops at once with a message saying so.

Is the data safe to open in Excel or to show on a web page?

Titles and descriptions are the sellers' own words, copied as they are. A text can begin with -, +, = or @ (a title such as -20% today): Excel and Google Sheets may read such a cell of a CSV file as a formula or as a number. The Actor leaves the text as it is, so that the JSON and the API give the real value: when you open a CSV, import these columns as text. On a web page, escape every field like any text written by a stranger; descriptionHtml is the seller's formatted text without its scripts, not a sanitized HTML: clean it before showing it.

Known limitations

  • Avito serves at most about 1,500 listings per search in a city or region (about 5,000 for the whole of Russia): split big searches by location, price range or category (see Tips).
  • Site filters that are not in the input can still be used by pasting a filtered search URL into startUrls.
  • The full description, all characteristics, every photo, views and the seller's details come from the listing page: they are null (or empty) when extractDetails is off.
  • The phone number is not given: only whether the seller shows a call button (hasPhone) and, with details, the masked number.
  • publishedAtText is empty on most listings read from the results page (the site hides the relative date there); publishedAt is filled from the results page for every listing a search finds, and for a listing URL pasted in startUrls from the listing page (null in the rare case the page does not let the date be told). It is the date of the last publication or renewal on Avito, not always the first publication.
  • onlyNew remembers listing ids, not their content: a listing whose price changed is not returned again.
  • Two runs sharing the same stateKey at the same time may both return the same new listing.

A run that reaches its timeout stops itself about 45 seconds before it: no new page is asked, what it read is saved and, with onlyNew, remembered, and the run ends Succeeded with "Stopped before the run's timeout". Resurrect it to go on from there, or give the next run a longer timeout (Run options).

A run the platform stops without warning (out of memory)

  • Resurrect it: it goes on from where it stood at most a minute before the stop. What it had read since is read again, and the listings already saved are skipped: none is delivered or charged twice, and maxItems still counts them.
  • With onlyNew, the memory is saved after each write (at most once every 2 seconds): resurrect the stopped run and the listings it had saved meanwhile join the memory; leave it stopped for good, and the next run may return the listings of its last 2 seconds once more.

Something doesn't work?

The last line of the log counts the listings saved, filtered out and no longer on Avito.ru (removed while the run was reading them), and the requests that failed after every retry. Those requests and the removed listings are listed, with the reason, in the FAILED_REQUESTS record of the run's key-value store. A run that saved nothing and had failed requests fails, and its last message gives the cause (a location slug or a search URL that does not exist says so, instead of "run it again").

If Avito.ru changes its pages, you are told instead of paying for blank rows. A results page that counts listings but gives none the Actor can read is an error (listed in FAILED_REQUESTS), never a quiet "No listings found". If the first 20 listings read all lack their title, price (a hidden price such as "negotiable" or "free" does not count), publication date or — with extractDetails — description, the run saves nothing more, stops and fails, and its last message names the missing field: at most those first listings are charged. A listing that postedAfter / postedBefore drops because it has no date at all counts among those 20. A run of fewer listings (a scheduled onlyNew run that finds a few new ones, a small Max listings) is checked at its end, from 5 listings: its listings are already saved, and the run fails with the missing field instead of ending green.

🛟 Support

Open an issue in the Issues tab with a link to your run: the run log and the FAILED_REQUESTS record of the key-value store show exactly which URLs failed and why.