Avito (Авито) Scraper - Russian Classifieds Listings + Prices
Pricing
$1.49 / 1,000 listings
Avito (Авито) Scraper - Russian Classifieds Listings + Prices
Collect public Avito listings from any category, filter or keyword page: title, price in RUB, place, category, specs, photos, publish time and the listing URL. No login, no cookies. Rows are deduplicated; empty and partial inputs are reported separately and never charged.
Pricing
$1.49 / 1,000 listings
Rating
0.0
(0)
Developer
Lantern Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Security
Limited permissionsShare
Avito (Авито) Scraper — Listings, Prices & Sellers from Any Category
A Lantern Lab Actor. Give it Avito keywords or any result-list URL you can open in a browser — flats, cars, jobs, electronics, a shop's filter page — and get back every listing on it: title, price in roubles, place, category, specs, photos, publish time and the listing URL, plus whether the seller is a shop or a private person. No Avito login, no cookies of your own, no account.
Price: you pay per listing row. Inputs that find nothing, pages Avito refused, status rows and the run summary are free, and there is no run-start fee.
What you get
- Listings from a keyword (
searchQueries+ a region) or from any Avito result-list URL (searchUrls) — the URL's own filters, sorting and category are kept, and a URL copied from page 3 starts at page 3. - price in RUB out of the card's own microdata,
priceTextas the page prints it ("от 2 530 000 ₽"),null— never 0 — when the ad names no price. - title, category, params (
"1.5 AMT (181 л.с.), лифтбек, передний, бензин"), description, location, and street / metro where the card links them. - publishedAt computed from the wording Avito shows, with publishedAtPrecision (
minute,hour,day,month) and the original publishedAtText, so an estimate is never passed off as an exact time. Cards Avito shows no date on come backnull. - sellerType:
companywhen the card carries Avito's shop block (thenshopUrl,sellerRatingandsellerReviewsTextcome with it),unknownotherwise — Avito labels a business seller and says nothing about the rest, and this Actor does not guess. No seller name and no phone number is collected. - imageUrls — every photo the card carries, full size, in card order.
- Clear status for every input. An empty result list, a page Avito would not render, a refused request and an input cut short by a limit are four different, labelled records — never confused, never reported as "0 results".
- No duplicates. A listing that shows up under several inputs or on two pages is written and charged once — Avito does repeat promoted listings across pages, and those repeats are free.
- A budget per input, if you want one.
maxListingsis the run's total;maxListingsPerInputshares it out so input one does not spend what input two needed. - A hard request ceiling.
maxUpstreamRequestscaps the whole run; leave it empty and the Actor derives one from your input.
Input example
{"searchQueries": ["iphone 13"],"searchUrls": ["https://www.avito.ru/sankt-peterburg/avtomobili","https://www.avito.ru/moskva/kvartiry/prodam-ASgBAgICAUSSA8YQ"],"city": "moskva","maxListings": 200,"maxListingsPerInput": 50}
| Field | Default | Meaning |
|---|---|---|
searchQueries | — | One keyword per line, in Russian. Searched in city, or across Russia when it is empty. |
searchUrls | — | Avito result-list URLs copied from the browser. Use this, searchQueries, or both. |
city | all of Russia | Avito region slug (moskva, sankt-peterburg, ekaterinburg). It also replaces the region of every URL above, so one URL can be run across several cities. |
maxListings | 100 | Listing rows for the whole run. One Avito page carries up to 50, so this also decides how deep the Actor pages. |
maxListingsPerInput | whole budget | Share of the budget one keyword or URL may spend. Set it when you give several inputs and want each of them collected. |
maxUpstreamRequests | derived | Hard ceiling on requests to Avito, counting pages, retries and firewall exchanges (derived as four per page the run may need, at least 8). |
proxyConfiguration | Apify Proxy | Datacenter is the default and what the Actor is measured on. |
Output example
A listing row (recordType: "listing"):
{"recordType": "listing","listingId": "7926941211","title": "Changan UNI-V 1.5 AMT, 2026","price": 3445101,"currency": "RUB","priceText": "от 2 530 000 ₽","location": "Санкт-Петербург, Автово","street": null,"metro": null,"category": "avtomobili","categoryTitle": "Купить автомобиль в Санкт-Петербурге","params": "1.5 AMT (181 л.с.), лифтбек, передний, бензин","publishedAt": null,"publishedAtPrecision": null,"publishedAtText": null,"imageCount": 5,"imageUrls": ["https://b40.img.avito.st/image/1/..."],"url": "https://www.avito.ru/sankt-peterburg/avtomobili/changan_uni-v_1.5_amt_2026_7926941211","sellerType": "company","shopUrl": "https://www.avito.ru/brands/avtostyl_changan","sellerRating": 4.8,"sellerReviewsText": "28 отзывов","badges": ["В наличии", "Новый", "Официальный дилер"],"query": null,"sourceUrl": "https://www.avito.ru/sankt-peterburg/avtomobili","page": 1,"rank": 2,"partial": false,"partialReason": null,"collectedAt": "2026-10-24T06:12:44.001Z"}
One free input_status row per keyword or URL, with listingsReturned, duplicatesSkipped, pagesFetched, Avito's own result count (totalText), partial, partialReason and a plain-English statusText. The last row of the dataset — and the RUN_SUMMARY key in the run's store — totals the run: listings collected and charged, duplicates, pages read, inputs that were empty, inputs that are incomplete and why, requests sent to Avito and firewall challenges solved.
Limits worth knowing
- One Avito result page carries up to 50 listings, and the site stops offering pages at a depth of its own choosing (commonly 30 pages ≈ 1 500 listings per URL). Narrow the filter — or run several cities — to go deeper than that, rather than asking for more pages than Avito offers.
- Avito's firewall asks new IPs for a proof of work. The Actor solves that public challenge in-process, with no browser and no login; a refused IP (HTTP 429/403) is retried from another proxy session. An input Avito refused from every session is written with
partialReason: "blocked"— tryproxyConfigurationwith residential if that happens often. - Avito does not server-render every page it serves. For the few it answers with the bare page shell, the Actor writes
partialReason: "page_not_rendered"instead of pretending the result list was empty. A keyword page needscd=1to render, which the Actor adds for you. - Dates are as coarse as the card. Avito writes "7 часов назад" or "Вчера" on a result list, so
publishedAtis derived from that wording; usepublishedAtPrecisionbefore treating it as a timestamp. - Public card data only. This Actor reads what a logged-out visitor sees on the result list. It does not open a listing page, call a login-only API, or collect a private seller's name or phone number.