Avito Seller Listings & Profile Scraper
Get an Avito seller's active listings from their profile link, with price, category and photos, plus the seller's rating, reviews and member-since date.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
sellerUrls,maxItems,sortBy(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. Repeats, and sellers that don't exist or have nothing listed, 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-09-13, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
sellerUrls | Links to Avito seller profiles, up to 10 per run. Any form Avito uses works: www.avito.ru/brands/{shop name}, www.avito.ru/brands/{id} or www.avito.ru/user/{id}/profile, and so do m.avito.ru links or links with /all or ?src=... on the end. A link to a single listing won't work: open the seller's profile from the listing and copy that link. | array |
maxItems | Total listings for the whole run, across every seller. Each listing returned is charged. Avito stops showing a seller's listings after page 100, which is 1,200 or 1,500 listings depending on the seller, so a bigger seller ends there whatever this says. | integer |
sortBy | The order each seller's listings come back in. Avito sorts the seller's grid itself. If Avito will not sort a seller that way, that seller is skipped and nothing is charged for it. | string |
What you get
A structured dataset — each result includes fields like:
profileNametitlepricecategoryNamelocationpublishedAturlprofileAccountTypeprofileRatingprofileReviewCountprofileActiveListingsExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Developer & Research Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
GitHub Scraper
Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.
Stack Overflow / Stack Exchange Scraper
Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.
Package Registry Scraper (npm + PyPI)
Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.
arXiv Scraper
Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.
OpenAlex Scholarly Works Scraper
Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.
Crossref Scholarly Works Scraper
Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.
Where this tool sits
- Categories
- Developer & Research Tools
Avito Seller Scraper: everything one Avito seller has up, plus their profile
Paste up to 10 Avito seller profile links and every active listing comes back as a row: title, price, category, city, photos and the link. The seller's own details ride on every row too, so you never have to join anything: name, private or business, member-since date, rating, review count, subscribers, active and closed listing counts, and their badges.
The ceiling first, because it surprises people. Avito stops showing a seller's grid at page 100. That is 1,200 listings on the 12-per-page layout and 1,500 on the 15-per-page one, and it is Avito's limit, not a setting here. A seller with 7,467 active listings still ends at 1,200. On big sellers whose grid is ranked rather than newest-first, the pages also shuffle while they are read: one measured 1,200-slot walk gave 1,009 unique listings and 191 repeats. The repeats are dropped and never billed, but what they displaced is not reachable.
| Input | Avito seller profile links, up to 10 per run |
| Output | One row per active listing, with the seller's profile on it |
| Ceiling | Page 100 per seller, so 1,200 or 1,500 listings depending on the layout |
| Account needed | None, and nothing to install |
| Price | $0.30 per 1,000 listings, flat on every plan |
🏪 What Avito Seller Scraper does
It opens each profile you give it, reads the seller card, then walks the listing grid page by page until the seller runs out or the run hits your limit.
Every link shape Avito uses is accepted: /brands/<shop name>, /brands/<id>, /user/<id>/profile, m.avito.ru links, and links with /all or a ?src= tail. A link to one listing is the only thing that does not work. Open the seller's profile from it and copy that link.
Listings are de-duplicated by id across the whole run, so a seller pasted twice is walked once and the same listing is never billed twice. Rows are written page by page, so a run that stops early keeps what it had already delivered.
📥 What you give it
{
"sellerUrls": [
"https://www.avito.ru/brands/appledg-store",
"https://www.avito.ru/user/5f0a4e3d9bcf6a2e1d7c8b0a/profile"
],
"maxItems": 100
}
| Field | Default | What it is |
|---|---|---|
sellerUrls | box starts at one example shop | Seller profile links, 1 to 10 per run. Required. |
maxItems | 1000, and the box starts at 100 | Total listings for the whole run across every seller, up to 15,000. A big seller still stops at Avito's own page-100 ceiling whatever you put here. |
sortBy | default | The order listings come back in: default is Avito's own order, price_asc cheapest first, price_desc most expensive first. Avito sorts the grid itself. There is no newest-first choice, because Avito's date order uses a date the rows do not carry. |
maxItems is a run total, not a per-seller figure, so the first seller in a list of ten can use the whole allowance. Split the sellers across runs if you want each one covered.
📤 What you get back
A real row from a recent run, with the description and the photo list trimmed:
{
"listingId": "8282950159",
"title": "iPhone 17 Pro Max, 1 ТБ",
"description": "IPhone 17 Pro Max 512GB.\nCosmic Orange (Космический оранжевый)...",
"price": 107990,
"priceText": "107 990 ₽",
"currency": "RUB",
"categoryName": "Телефоны",
"categorySlug": "telefony",
"location": "Москва",
"address": "Москва",
"latitude": 55.794411,
"longitude": 37.591988,
"sellerName": "Apple UP – бери выше, плати меньше",
"sellerType": "company",
"publishedAt": "2026-09-20T14:09:08.000Z",
"publishedAtText": "20 сентября 17:09",
"images": ["https://80.img.avito.st/image/1/1.jJrwjLaAIHOGIuJ85J6Jg-ssIndCOyRzQlxBd0LvL7FL..."],
"imageCount": 7,
"params": "Новый",
"url": "https://www.avito.ru/moskva/telefony/iphone_17_pro_max_1_tb_8282950159",
"searchQuery": null,
"searchUrl": "https://www.avito.ru/brands/appleup",
"scrapedAt": "2026-09-20T14:29:33.015Z",
"profileId": "8c7654ef974990c2fd8ca738f97f29e1",
"profileUrl": "https://www.avito.ru/brands/appleup",
"profileName": "Apple UP – бери выше, плати меньше",
"profileAccountType": "business",
"profileType": "company",
"profileMemberSince": "2020-05",
"profileMemberSinceText": "На Авито с мая 2020",
"profileRating": 5,
"profileReviewCount": 10413,
"profileSubscribers": 17721,
"profileActiveListings": 471,
"profileClosedListings": 392,
"profileBadges": ["Надёжный продавец", "9090 продаж с Авито Доставкой", "яПомогаю"],
"inputUrl": "https://www.avito.ru/brands/appleup"
}
| Field | What it is |
|---|---|
description | The preview Avito prints on the grid, cut off by Avito itself. Not the full ad body. |
profileAccountType | private or business. profileType keeps Avito's own word, which is person, company or shop. |
profileMemberSince | 2020-05, or a full date like 2026-08-24 when Avito prints the day. The Russian text is in profileMemberSinceText. |
profileRating | null until the seller has any reviews. profileReviewCount is the number as a number. |
profileActiveListings | What Avito says the seller has up. On a large seller this is higher than the rows you get, because of the page-100 ceiling. |
profileBadges | Avito's badge text exactly as printed. |
searchQuery | Always null here, because there was no search. searchUrl holds the seller page the row came from. |
latitude, longitude | Only when the seller added a location. |
| The rest | Same names and meanings as the listings scraper, so rows from both load into one table. |
🧾 Reading the output
The dataset holds listing rows and nothing else. There are no diagnostic rows and no charged field to filter on. Everything about how the run went is in a key-value store record called RUN_REPORT, which you will find on the Storage tab of the run.
It holds the run totals and the stop reason, then one entry per seller: status, profile id and name, how many listings Avito claimed, how many were reachable, how many came back, pages loaded, pages failed, duplicates skipped and why that seller stopped. Links that were not seller profiles are listed separately with a reason.
status | What it means |
|---|---|
ok | The seller was read. |
not-found | No such seller. Avito answers this at HTTP 200, so the run detects it rather than seeing an error. |
no-listings | A real profile with nothing currently up. |
duplicate | The same seller appeared twice in your list. Walked once. |
unreachable | The profile could not be loaded after repeated attempts. |
unreadable | The page loaded but did not contain a profile this could parse. |
sort-not-applied | You asked for a price order and Avito did not return that seller sorted that way. Nothing was charged for it. |
error, skipped | Something else went wrong, or the run had already hit its limit. |
The run ends as FAILED, rather than quietly succeeding, when none of your links was a seller profile and when no seller could be loaded at all.
▶️ How to run it
1. Open Avito Seller Scraper and click Try for free. 2. Paste profile links into Seller profile links, one per line, up to 10. Replace the example. 3. Set Maximum listings. Start at 20 to see what the rows look like. 4. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the Apify API. 5. Open the run's Storage tab and read RUN_REPORT if any seller came back light.
💰 How much does it cost?
$0.30 per 1,000 listings. Flat on every Apify plan, with no volume tiers.
One billed row per listing delivered. A seller that does not exist is not billed, a profile with nothing up is not billed, the same seller pasted twice is not billed twice, and a listing the grid shows again on a later page is dropped before the dataset.
💡 What people use it for
- Pulling a competitor's whole catalogue with prices, then re-running to see what sold and what was
added.
- Qualifying a seller before dealing with them, using rating, review count, member-since and the
active-versus-closed split that rides on every row.
- Building a dealer or agency list for one market, where
profileAccountTypeseparates shops from
private sellers.
- Watching a shop's pricing over time, since
listingIdis stable between runs. - Taking a seller found through a search and getting everything else they have up.
🚧 What it does not do
- It cannot go past Avito's page 100. 1,200 or 1,500 listings per seller depending on the
layout, however many the profile claims.
- Big ranked grids shuffle while they are read. One measured walk of 1,200 slots returned 1,009
unique listings and 191 repeats. Smaller sellers whose grids are time-ordered came back with no repeats at all across three runs.
- No phone numbers, and no reviews. This reads the profile card and the grid.
- No sold or closed listings.
profileClosedListingsgives you the count, not the listings. - A listing link will not work. Only profile links.
descriptionis the grid preview, truncated by Avito.- 10 sellers per run. Run again for more.
- A big run can come back short. Avito rate-limits hard, a page it will not serve is recorded
in RUN_REPORT rather than guessed at, and only delivered listing rows are billed.
🧭 Which Russian-market scraper do you need?
| If you want | Use |
|---|---|
| Everything one seller has up, plus their profile | This one |
| Ads from a search, a category or a city | Avito Listings 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
I pasted a listing link and got nothing. That is expected. Open the seller's profile from the listing page and paste that link instead.
Why did I get fewer rows than profileActiveListings says? Either the run hit your maxItems, or the seller is past Avito's page-100 ceiling. RUN_REPORT tells you which.
Is profileRating ever missing? It is null until the seller has reviews. A brand new seller has no rating to report.
Can I mix sellers from different cities? Yes. Each row carries its own location, and the profile fields identify which seller it came from.
Can I schedule it? Yes. listingId is stable, so diffing runs shows what the seller added and what went.
Is this legal? These are public seller pages and 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 profile link and the run ID, and if you can, the RUN_REPORT record from that run's Storage tab. The per-seller status in it usually names the problem on its own.