Immobiliare.it All-in-One Scraper — Italy Buy & Rent Listings avatar

Immobiliare.it All-in-One Scraper — Italy Buy & Rent Listings

Pricing

from $5.00 / 1,000 property scrapeds

Go to Apify Store
Immobiliare.it All-in-One Scraper — Italy Buy & Rent Listings

Immobiliare.it All-in-One Scraper — Italy Buy & Rent Listings

Scrape immobiliare.it Italy real estate by city or search URL. Sale & rent. Price, m², locali, GPS, agency phone, images. Unblocker HTTP, MCP-ready, no login.

Pricing

from $5.00 / 1,000 property scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Immobiliare.it All-in-One Scraper is an Apify Actor for collecting public Italy real-estate listings from Immobiliare.it. It accepts a city or area slug such as milano or roma, or a pasted Immobiliare search or detail URL, and returns one structured record per listing. Each record can include asking price, surface in m², locali (mapped to rooms), city, province, macrozone, GPS coordinates, agency name, agency phone, images, and the canonical listing URL. It runs over HTTP with Apify Unblocker Italy and is usable through Apify MCP.

Best fit and connected workflows

This Actor fits workflows centered on Italian residential inventory from Immobiliare.it:

  • Buy-side research from vendita searches, with price, m², locali, and agency contact fields
  • Rental research from affitto searches, with monthly rent and size fields
  • URL-driven collection when you already filtered on Immobiliare.it and want the Actor to follow that search
  • Location-driven collection when you want the Actor to slugify a city such as Milano or Roma and run sale or rent filters
  • CRM and spreadsheet import where one flat row per listing is the next step

If your workflow centers on another property market, these verified related Actors provide natural routing options:

  • Then use Fotocasa All-in-One Scraper to extend Immobiliare.it All-in-One Scraper with a neighboring Spain buy/rent source when the brief calls for Fotocasa data
  • Then use Idealista Scraper to extend Immobiliare.it All-in-One Scraper with a neighboring ES/IT/PT Idealista source when the brief calls for Idealista data
  • Then use Rightmove All-in-One Scraper to extend Immobiliare.it All-in-One Scraper with a neighboring UK BUY/RENT/SOLD source when the brief calls for Rightmove data

Immobiliare.it All-in-One Scraper — Italy Buy & Rent Listings is designed as a focused standalone workflow for Immobiliare.it Italy.

Practical scenario

Marco is screening Milano apartments for sale under €400k for a relocation client. He sets location to milano, operation to sale, maxPrice to 400000, and maxItems to 10. The dataset returns fields such as price, surfaceSqm, rooms, city, agencyPhone, and url. Marco sorts by €/m², shortlists three macrozones, and opens each url to review photos before sharing a shortlist with the client. Auction listings stay out of the sample because excludeAuctions defaults to true.

Input

Use either an Immobiliare.it URL in startUrls or a location-based search with location and operation.

FieldTypePurpose
startUrlsarrayImmobiliare search (/vendita-case/…, /affitto-case/…) or detail (/annunci/{id}/) URLs. Search URLs are paginated until maxItems.
locationstringItalian city or area when startUrls is empty (for example milano, roma, torino).
operationstringsale or rent for location mode.
propertyTypestringCategory such as home, commercial, land, or rooms.
minPrice / maxPriceintegerEUR filters (monthly rent for rent mode).
minSurface / maxSurfaceintegerFloor-area filters in m².
minRooms / maxRoomsintegerLocali filters (Italian room count, not US bedrooms).
excludeAuctionsbooleanDefault true — keep judicial auction inventory out of comps.
fetchDetailsbooleanOptional detail-page enrich for energy and bathroom attempts when present.
maxItemsintegerCap on returned rows and property event charges.
proxyConfigurationobjectPrefer Apify Unblocker Italy for stable yield past DataDome.

Focused input example:

{
"location": "milano",
"operation": "sale",
"maxItems": 10,
"excludeAuctions": true,
"fetchDetails": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["UNBLOCKER"],
"apifyProxyCountry": "IT"
}
}

URL-mode input example:

{
"startUrls": [
{ "url": "https://www.immobiliare.it/vendita-case/milano/" }
],
"maxItems": 10
}

Output

Each dataset item is one flat JSON record per listing. Download JSON, HTML, CSV, or Excel from the Dataset tab.

FieldTypeMeaning
listingIdstringImmobiliare numeric listing identifier.
urlstringCanonical /annunci/{id}/ listing URL.
contractstringsale or rent.
titlestring or nullPublic listing title.
pricenumber or nullAsking price in EUR (monthly for rent).
surfaceSqmnumber or nullFloor area in square metres.
roomsinteger or nullLocali count when published.
city / province / macrozonestring or nullLocation labels.
latitude / longitudenumber or nullGPS coordinates when published.
agencyNamestring or nullAgency or advertiser name.
agencyPhonestring or nullPublic agency phone when shown.
imagesarrayPhoto URLs when published.
scrapedAtstringCollection timestamp for the row.

Illustrative JSON record:

{
"listingId": "131616220",
"url": "https://www.immobiliare.it/annunci/131616220/",
"contract": "sale",
"title": "Appartamento via Example",
"price": 285000,
"surfaceSqm": 78,
"rooms": 3,
"city": "Milano",
"province": "Milano",
"macrozone": "Città Studi",
"latitude": 45.46,
"longitude": 9.18,
"agencyName": "Agenzia Example",
"agencyPhone": "02 1234567",
"scrapedAt": "2026-09-22T09:00:00.000Z"
}

OUTPUT and RUN_SUMMARY in the default key-value store hold outcome, itemsPushed, and charge counts. Outcomes include COMPLETE, VALID_EMPTY, INVALID_INPUT, and UPSTREAM_FAILED.

How it works

The Actor builds a vendita or affitto search path from location, or follows pasted Immobiliare.it URLs. It pages the public listings API (/api-next/search-list/listings/) until maxItems is reached, maps locali to rooms, and optionally enriches detail pages from __NEXT_DATA__ when fetchDetails is on. Default Unblocker Italy keeps DataDome from emptying the run. Every terminal path writes OUTPUT and RUN_SUMMARY with an explicit outcome.

Pricing

This Actor uses Apify Pay per event plus standard Apify platform usage (passed through to the caller, including Unblocker). Charged events:

  • Actor start — $0.00005
  • Property scraped — $0.005 per returned search listing
  • Property detailed — $0.008 per detail-enriched listing when fetchDetails is on

Open the live Pricing tab in the Apify Console for the current source of truth. A run that returns ten search listings charges the start event once and the property-scraped event ten times, plus platform usage for compute and Unblocker.

Use with AI agents (MCP)

This Actor is available through Apify MCP as apify--immobiliare-it-all-in-one-scraper. Exact Actor identity: khadinakbar/immobiliare-it-all-in-one-scraper.

Tool shape: resolve an Italy city or Immobiliare.it URL, return flat listing rows with price, size, locali, agency phone, GPS, and URL for CRM or agent reasoning.

Search Immobiliare.it for homes for sale in Milano, return price, surfaceSqm, rooms, city, agencyPhone, and url for each listing. Cap at 10 rows and keep auctions excluded.

Agent readback guidance:

  • Dataset rows are the primary result store
  • OUTPUT / RUN_SUMMARY carry the run outcome and counts
  • url plus scrapedAt keep provenance inspectable
  • maxItems bounds both yield and PPE charges
  • Cost maps one returned search row to one property-scraped event; check the Pricing tab for live amounts alongside platform usage
  • Invalid-only URLs finish INVALID_INPUT; empty niche inventory can finish VALID_EMPTY with zero property charges

Apify API example

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("khadinakbar/immobiliare-it-all-in-one-scraper").call({
location: "roma",
operation: "rent",
maxItems: 10,
excludeAuctions: true,
fetchDetails: false,
proxyConfiguration: {
useApifyProxy: true,
apifyProxyGroups: ["UNBLOCKER"],
apifyProxyCountry: "IT",
},
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Best results and outcome guidance

Prefer Unblocker Italy (the default). Segment large cities by macrozone or price band instead of one oversized cap. Paste a ready-made Immobiliare.it search URL when filters are already set on the site. Leave fetchDetails off unless you specifically need detail-page energy or bathroom attempts. Treat rooms as Italian locali. Empty niche inventory can finish as VALID_EMPTY with zero property charges; paste-only non-Immobiliare URLs finish as INVALID_INPUT.

Design note

I found that bare Residential and datacenter HTTP against Immobiliare.it serves DataDome challenge pages before any listing JSON appears, so Unblocker Italy is the durable default for complete listing runs. Geography autocomplete also needs browser cookies, so location mode slugifies the city into /vendita-case/{slug}/ or /affitto-case/{slug}/ and pages the listings API — that is what keeps Milano sale and Roma rent canaries complete on the private release build.

Troubleshooting and recovery

SymptomLikely causeRecovery
Empty dataset with DataDome challenge pages in logsProxy group still set to Residential or datacenterSet proxyConfiguration to Unblocker Italy and rerun
INVALID_INPUT with zero chargesstartUrls contain only non-Immobiliare hostsPaste a /vendita-case/, /affitto-case/, or /annunci/{id}/ URL, or set location
VALID_EMPTY on a niche filterNo public inventory for that city/filter bandWiden price/surface/locali, try a larger city, or paste a known search URL
Detail energy/baths missing with fetchDetailsField omitted on that public listing pageKeep search-card fields; treat detail enrich as best-effort
Deep pagination returns fewer pages than expectedPortal page-depth ceiling for that searchSegment by macrozone or price band instead of one large maxItems

FAQ

How do I scrape rentals instead of sales?
Set operation to rent, or paste an affitto-case search URL into startUrls.

How do I scrape a single listing?
Paste a detail URL ending in /annunci/{id}/ into startUrls.

How do I keep agency outreach fields?
Use the default search path; agencyName and agencyPhone are returned when Immobiliare.it publishes them on the card.

How do I bound cost?
Set maxItems to the number of listings you need; each accepted search row maps to one property-scraped event.

Responsible use

Use this Actor on public Immobiliare.it listing data you are authorized to process, follow applicable law and Immobiliare.it terms, and keep the output in your own compliance workflow. Keep returned phones inside lawful, consented outreach workflows. Immobiliare.it is a trademark of its respective owners. This independent Actor is not affiliated with, associated with, or endorsed by Immobiliare.it or Idealista Group.

Issues and feature requests: use the Actor Issues tab on Apify.