Avito Real Estate Scraper | Парсер Авито Недвижимость avatar

Avito Real Estate Scraper | Парсер Авито Недвижимость

Pricing

from $1.50 / 1,000 listing discovereds

Go to Apify Store
Avito Real Estate Scraper | Парсер Авито Недвижимость

Avito Real Estate Scraper | Парсер Авито Недвижимость

Avito real estate scraper: every property listing on avito.ru — flats, houses, rooms, land, commercial — as clean JSON with URLs and lastmod stamps. Monitor new listings, deltas; no prices/photos in v1. Russia property data from Avito's sitemaps, no proxies. Авито недвижимость: парсер объявлений.

Pricing

from $1.50 / 1,000 listing discovereds

Rating

0.0

(0)

Developer

ActorForge

ActorForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Discover every property listing on Avito (avito.ru) — Russia's #1 real estate marketplace — as clean JSON. Full-section crawl of flats, houses, rooms, land, commercial and more via Avito's own published sitemaps: canonical listing URLs, freshness timestamps and URL-derived fields. Russia property data for new-listing monitoring — fast, API-level, no browser automation. Авито недвижимость: парсер объявлений, мониторинг новых объявлений.

What this actor is (and honestly is not)

This is a discovery and freshness actor, not a card scraper:

  • It gives you the full inventory of a property section — every listing URL Avito publishes in its sitemaps (~550,000 live flat listings, updated by Avito continuously), with lastmod freshness stamps. Perfect for spotting new listings, computing deltas between runs, and building a comps universe per city.
  • It does not open listing pages, so there are no prices, photos, addresses or seller info in the output — only what Avito publishes in the sitemap URL itself. Card enrichment is a planned v2 (it requires Russian residential IPs; discovery does not).
  • It is not a filtered search. Avito's robots.txt disallows parameterized search and its API for crawlers; sitemap crawling is the route Avito itself sanctions. Filter by city and freshness here, do finer filtering downstream.

What you get

One row per discovered listing:

{
"url": "https://www.avito.ru/moskva/kvartiry/3-k._kvartira_75_m_29_et._8112834772",
"itemId": "8112834772",
"city": "moskva",
"category": "kvartiry",
"title": "3-k. kvartira 75 m 29 et.",
"rooms": 3,
"lastmod": "2026-07-16T07:31:50Z"
}
  • itemId — Avito's listing id (string), extracted from the URL tail. Stable join key.
  • city — city slug exactly as in the URL (moskva, sankt-peterburg, rostov-na-donu).
  • category — section slug from the URL (kvartiry, komnaty, doma_dachi_kottedzhi, …).
  • title — the URL slug made human-readable (underscores → spaces). Transliterated Latin, as published by Avito.
  • rooms — number of rooms (3) or "studio", present only when the slug states it unambiguously (3-k._kvartira…, kvartira-studiya…). Auction lots, wanted ads and apartamenty variants get no rooms field rather than a guess.
  • lastmod — ISO timestamp from Avito's sitemap; absent for the rare entries Avito publishes without one. Numbers like area and floor are deliberately NOT parsed from the slug: Avito strips the decimal comma there (556_m can mean 55.6 m² or 556 m²), so any parsed number would be a guess. Numeric card fields arrive with v2 enrichment.

Use cases

  • New-listing alerts — run on a schedule with updatedAfter and get only fresh listings.
  • Market inventory & deltas — track how many listings each city/section has, what appeared and disappeared between runs (diff by itemId).
  • Comps universe — the complete set of listing URLs per city, ready for your own enrichment or valuation pipeline.
  • Feed for card scraping — clean, deduplicated URL + freshness input for any downstream detail scraper.

Input

FieldTypeDescription
sectionsstring[]Property sections to crawl. Default ["kvartiry"]. Full list: kvartiry, komnaty, doma_dachi_kottedzhi, zemelnye_uchastki, kommercheskaya_nedvizhimost, garazhi_i_mashinomesta, nedvizhimost_za_rubezhom, realty_rent (short-term rent).
citiesstring[]City slugs as they appear in Avito URLs (moskva, sankt-peterburg). Empty = all cities.
updatedAfterstringISO date; keep only listings with sitemap lastmod on or after it. Entries without lastmod are dropped when this filter is set.
maxItemsintegerHard cap on output rows. Default 50 000 (≈ one sitemap file). Raise for a full-section crawl (flats ≈ 550k).

How to use it

  1. Click Try for free / Start on this page.
  2. Choose one or more Property sections. The default is kvartiry (flats).
  3. Optionally list Cities using the slugs Avito puts in its URLs — moskva, sankt-peterburg, rostov-na-donu. Leave it empty to keep every city.
  4. For new-listing alerts, set Updated after to an ISO date; only listings whose sitemap lastmod is on or after it survive. (Entries without a lastmod are dropped when this filter is on.)
  5. Set Max items. The default 50 000 is about one sitemap file; raise it for a full-section crawl.
  6. Run it, then export the Listings view as JSON, CSV or Excel, or read it over the API.

The usual pattern is a schedule plus a diff. Run it daily with updatedAfter set to yesterday and you get exactly the listings that appeared or were refreshed; diff consecutive runs by itemId to see what came and went. Every output field carries typed metadata in the Actor's dataset schema, so agents calling this through the Apify MCP server know what they are getting.

Why this scraper

  • It uses the door Avito left open. Listing pages and the mobile API sit behind Avito's Qrator firewall and are disallowed for crawlers by robots.txt; the sitemaps are published by Avito itself in that same robots.txt. This actor reads only those — which is why it needs no expensive Russian residential proxies and keeps a predictable success rate.
  • Honest failures. A firewall page instead of a sitemap, a truncated gzip, a drifted format — each fails the task loudly with a clear reason instead of masquerading as an empty result.
  • Schema-validated output — every row is checked against a schema before it reaches your dataset; a format change on Avito's side surfaces as a failure, not as undefined in your pipeline.
  • Polite by design — a handful of requests per run (one index + one gzip file per ~50 000 listings), spaced out. A full flats crawl is ~12 HTTP requests total.

Limits (honest)

  • No card fields. Prices, areas, floors, photos, addresses, seller names are not in sitemaps and therefore not in v1 output. rooms appears only when unambiguous.
  • No search filters. You can slice by section, city and freshness — not by price or rooms range (Avito forbids parameterized search for crawlers; we don't circumvent that).
  • Freshness is Avito's. lastmod comes from Avito's sitemap generator; entries without it are passed through as-is (unless updatedAfter is set, which drops them).
  • Sections are a fixed list taken from Avito's live sitemap index; if Avito adds a section it appears here with an actor update.
  • Public data only; no login, no captcha solving, no access-control bypassing. Requests are paced ≥500 ms apart.

Pricing

Pay-per-event: a platform charge per run start plus one listing-discovered event per output row. No hidden compute or proxy surcharges — discovery runs without residential proxies. See the Store page for current rates.

FAQ

Do I need Russian proxies for this? No — and that is the point. Avito's sitemaps are served without the Qrator firewall that guards listing pages, so discovery runs on plain infrastructure. Card enrichment (v2) will need Russian residential IPs; discovery does not.

Where are the prices, photos and addresses? Not in the output, because they are not in the sitemaps. This Actor deliberately stops at what Avito publishes for crawlers. Anything else would mean opening listing pages, which Avito's robots.txt disallows.

Why is rooms missing on some rows? Because the slug did not state it unambiguously. Auction lots, wanted ads and apartamenty variants get no rooms field rather than a guessed number.

Why aren't area and floor parsed out of the URL slug? Avito strips the decimal comma in slugs, so 556_m is both 55.6 m² and 556 m². A parsed number would be a coin flip, so the field is left out until v2 reads it from the card.

Can I filter by price or room count? Not here. Avito forbids parameterized search for crawlers, so the Actor slices by section, city and freshness only. Filter finer downstream on the rows it returns.

How fresh is lastmod? It comes straight from Avito's own sitemap generator, unmodified. Avito refreshes those files continuously; the Actor reports what it read.

How many requests does a full crawl make? Very few — one sitemap index plus one gzip file per ~50 000 listings. A complete flats crawl is roughly 12 HTTP requests, spaced at least 500 ms apart.

Other Actors by ActorForge

  • Wildberries Scraper — products, prices and reviews from Wildberries as clean, schema-validated JSON.
  • Lazada Reviews Scraper — ratings, review text and buyer media from Lazada across the SEA marketplaces.

Need card-level enrichment, another Avito vertical, or a different marketplace? Open an issue from the Actor's page and tell us what you need.

Disclaimer

This is an unofficial actor. It is not affiliated with, endorsed by, or connected to Avito in any way. It collects only data that Avito publishes publicly in its sitemap files, without logging in and without circumventing access controls. You are responsible for ensuring your use of the collected data complies with applicable law and with Avito's terms.

Changelog

See the repository CHANGELOG.md.