Avito (Авито) Scraper - Russian Classifieds Listings + Prices avatar

Avito (Авито) Scraper - Russian Classifieds Listings + Prices

Pricing

$1.49 / 1,000 listings

Go to Apify Store
Avito (Авито) Scraper - Russian Classifieds Listings + Prices

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

Lantern Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

8 days ago

Last modified

Security

Limited permissions

Share

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, priceText as 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 back null.
  • sellerType: company when the card carries Avito's shop block (then shopUrl, sellerRating and sellerReviewsText come with it), unknown otherwise — 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. maxListings is the run's total; maxListingsPerInput shares it out so input one does not spend what input two needed.
  • A hard request ceiling. maxUpstreamRequests caps 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
}
FieldDefaultMeaning
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.
cityall of RussiaAvito region slug (moskva, sankt-peterburg, ekaterinburg). It also replaces the region of every URL above, so one URL can be run across several cities.
maxListings100Listing rows for the whole run. One Avito page carries up to 50, so this also decides how deep the Actor pages.
maxListingsPerInputwhole budgetShare of the budget one keyword or URL may spend. Set it when you give several inputs and want each of them collected.
maxUpstreamRequestsderivedHard ceiling on requests to Avito, counting pages, retries and firewall exchanges (derived as four per page the run may need, at least 8).
proxyConfigurationApify ProxyDatacenter 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" — try proxyConfiguration with 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 needs cd=1 to render, which the Actor adds for you.
  • Dates are as coarse as the card. Avito writes "7 часов назад" or "Вчера" on a result list, so publishedAt is derived from that wording; use publishedAtPrecision before 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.