L logiover
real-estate · May 21, 2026 · 6 min read

How to Scrape Subito.it Real Estate Listings in 2026

Extract Italian property listings from Subito.it — apartments, villas, land, commercial — by region, province or city, with price in EUR, surface area in m², rooms, GPS and seller type.

Subito.it is Italy’s number-one classifieds portal, and its Immobili (real estate) vertical is where a huge share of the country’s private and agency property listings live — apartments in Rome, villas in Tuscany, agricultural land, garages, commercial space, and seasonal vacation rentals. If you want a broad, fresh view of the Italian property market without paying for an MLS feed, Subito is the source. This guide covers what the listings expose, how the search and pagination work, how the site’s anti-bot behaves, and how to pull clean EUR-normalized inventory at scale.

What’s worth extracting

Each Subito real-estate listing carries a fairly rich, consistent record once parsed:

  • Identity — listing ID, permalink, title, short excerpt.
  • Transaction type — sale (vendita), rent (affitto), or vacation rent (affitto vacanze).
  • Property type — standardized classification: apartment, villa, land (terreno), garage (box/posto auto), loft, commercial (locale commerciale), room (stanza), vacation home.
  • Pricing — price in EUR, plus a computed price per square meter when both price and area are present.
  • Dimensions — surface area in m² (superficie), plot/land area, rooms (locali), bathrooms (bagni), floor (piano) when present.
  • Building attributes — energy class (classe energetica) and other feature flags when available.
  • Location hierarchy — country → region → province → city → micro-location → street.
  • Geo — GPS latitude/longitude when the listing provides it.
  • Seller — private (privato) vs agency (agenzia), plus seller metadata.
  • Media — image URLs from the Subito images CDN, and an image count.
  • Signals — listing badges (featured, urgent, labels), posting date, scrape timestamps.

locali (the Italian “rooms” count) is the field foreign teams most often misread — it’s the number of habitable rooms, not bedrooms, and it’s the standard the whole Italian market prices against.

How search and pagination work

Subito’s real-estate search is geography-first. You target a level of the location hierarchy — all of Italy, a single region (e.g. Lazio), a province (e.g. Milano province), or a city (e.g. Roma) — and the portal returns paged result lists of roughly 30 listings per page. A well-built scraper carries canonical slug vocabularies for regions, provinces, and cities so you can target Italian geography precisely without guessing URL fragments.

The important architectural detail: filters are applied after fetching, not encoded into the target URL. Rather than trying to express “three-room rentals under €1,200 in Milano province” as URL parameters (which Subito’s front-end handles inconsistently), the scraper pulls the list-endpoint results and then validates each parsed listing against your numeric and categorical filters — price range, area range, room count, property type, seller type, transaction type. This is more robust because Subito’s URL filter scheme changes more often than the underlying listing payload.

Pagination proceeds page by page and stops on an empty page or on repeated listing IDs — Subito will sometimes recycle results past the real end of a search, so a dedup-and-stop guard is what keeps you from looping.

The anti-bot reality

Subito’s defenses are lighter than the big international portals, but not absent. For modest volumes — a city or a province, a few thousand listings — you can often pull cleanly from datacenter IPs. As you scale up to nationwide sweeps or run frequently, you’ll hit intermittent blocks, and the fix is a residential proxy pool for stable access. There’s no heavy JavaScript challenge wall the way Booking or the airlines run; the listing data comes back from list endpoints, so a browser isn’t required for the bulk of the work. Per-listing detail pages can fill in a few extra feature flags and the total-floors field when you need them.

Run the Subito.it Property Scraper — target any Italian region, province or city; filter by price (EUR), area, rooms, transaction and property type. Returns address hierarchy, GPS, seller type, badges and price-per-m². Residential proxy support included.

Schema design for downstream use

A clean per-listing row for a warehouse or analytics pipeline:

{
  "listing_id": "583920114",
  "permalink": "https://www.subito.it/immobili/...",
  "title": "Trilocale Via Brera, Milano",
  "transaction": "affitto",
  "property_type": "apartment",
  "seller_type": "agenzia",
  "price_eur": 1450,
  "area_sqm": 78,
  "price_per_sqm": 18.6,
  "locali": 3,
  "bagni": 1,
  "piano": 2,
  "energy_class": "C",
  "region": "Lombardia",
  "province": "Milano",
  "city": "Milano",
  "street": "Via Brera",
  "lat": 45.4720,
  "lon": 9.1880,
  "image_count": 12,
  "is_featured": false,
  "posted_at": "2026-05-18",
  "scraped_at": "2026-05-21T10:00:00Z"
}

Choices worth making early:

  • Always keep both price_eur and price_per_sqm. Price-per-m² is the only honest way to compare a 45 m² studio against a 110 m² flat, and it’s the metric Italian agents quote.
  • Store seller_type. Private-seller listings and agency listings behave very differently on price and freshness — you almost always want to filter on this.
  • Keep region/province/city as separate columns, not one address string, so you can roll up to province- and region-level analytics.
  • Stamp scraped_at and keep posted_at. Time-on-market (today minus posting date) is one of the most valuable derived signals in classifieds data.

Typical use cases

  • Property market analysis — nationwide apartment-for-sale price distributions, or province-level rent benchmarks, refreshed on a schedule.
  • Lead collection — assemble private-seller or agency listings in a target city for outreach (mind local rules on contacting advertisers).
  • Inventory monitoring — track how listings in a neighborhood change week over week: new entries, price drops, disappearances.
  • Vacation-rental supply mapping — pull nationwide affitto vacanze inventory to size seasonal supply by region.
  • Valuation / comps — feed price-per-m² by micro-location into an automated valuation model.

The value is in geographic breadth plus freshness: a province snapshot today is useful, but a weekly refresh across every region of Italy is the kind of feed you can build a product on.

Cost math

This actor is pay-per-event with per-result pricing set to zero — you pay the small per-run start fee (about $0.00005) plus Apify compute, and nothing per listing. A nationwide apartments-for-sale sweep can be tens of thousands of rows for the cost of the compute time, not the row count. Against running your own crawler, you’re skipping the residential-proxy bill you’d need once you scale, the VPS, and the maintenance every time Subito tweaks its list payload or filter scheme.

Common pitfalls

  • locali is rooms, not bedrooms. Don’t mislabel it in your schema — Italian buyers and renters search on locali.
  • Price-per-m² needs both inputs. Land listings (terreno) and garages often lack a clean habitable area; treat price_per_sqm as nullable for those types.
  • Vacation rent is a third category, not a rent sub-type. affitto vacanze pricing is per-period and not comparable to monthly rent — keep it separate.
  • Dedup by listing ID. Subito recycles results near the end of a search; without a repeated-ID stop you’ll over-count and loop.
  • Energy class is frequently missing. Italian listings are inconsistent about classe energetica; don’t assume it’s always present.
  • Scale gently before reaching for proxies. Small geographic slices often work proxy-free; add residential IPs only when you start seeing intermittent blocks on nationwide or high-frequency runs.

Wrapping up

Subito.it is the broadest open window into the Italian property market, and its anti-bot stack is mild enough that you don’t need a full browser farm to read it. The real work is the geography vocabularies, the after-fetch filtering, the dedup-and-stop pagination, and the EUR/price-per-m² normalization — all of which a managed actor already handles. If you need a fresh, filterable Italian property feed by region, province, or city, run the actor and skip the plumbing.

Open the Subito.it Property Scraper on Apify — region, province or city targeting; EUR-normalized prices with price-per-m²; GPS, seller type and badges. Per-result pricing is zero. Start with Apify’s free monthly credit.

Related guides