Immobiliare.it Scraper - Italy Property Listings & Prices
Pricing
from $0.85 / 1,000 listing delivereds
Immobiliare.it Scraper - Italy Property Listings & Prices
Scrape Immobiliare.it sale and rent listings in Italy: price, price per m², surface, rooms, zone, agency, photos and price cuts. Search by URL or city with filters. Schedule it daily: only new listings and price drops. Error rows are free.
Pricing
from $0.85 / 1,000 listing delivereds
Rating
0.0
(0)
Developer
Scrapewise Data
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
3
Monthly active users
10 hours ago
Last modified
Categories
Share
Immobiliare.it Scraper: Italy property listings, price per m² and price drops
Scrape Immobiliare.it, Italy's largest real estate portal, without an account, cookies or a browser. Paste a search URL with your filters, or give a city, zone, province or region with contract (sale or rent), property type, price, surface and rooms. Every listing comes with price, price per m², surface, rooms, bathrooms, floor, zone and neighbourhood, address as published (agency listings), coordinates, photos, the agency and the price cut Immobiliare.it shows on the listing.
Built for daily monitoring: schedule the same search every morning and get only the listings that are new, or only the ones whose price changed, with the previous price and the drop in euros and percent. A quiet day costs nothing.
At a glance
- Price per 1,000 listings, Free plan: US$ 1.00
- Full listing page (optional): US$ 2.00 per 1,000, on top
- Fee per run start: None
- Search by Immobiliare.it URL or by location + filters: Yes
- Sale, rent and auctions; homes, rooms, offices, shops, warehouses, garages, land: Yes
- Only new listings since the last run (
onlyNew): Yes, free when nothing is new - Price tracking between runs (
trackPriceChanges,onlyChanges): Yes - Price per m²: Yes, on every row
- Advertiser contact data: Never (see below)
- Error rows (bad URL, unknown place, no results): Free, with an
errorCode
One real row
From a test run on 2026-10-06 (location "Milan", rent, apartment, full listing pages on), shortened:
{"type": "listing","id": "133279376","url": "https://www.immobiliare.it/annunci/133279376/","title": "2-room flat via Magolfa 32, Navigli - Darsena, Milan","contract": "rent","propertyType": "2-room flat","price": 1300,"priceText": "€ 1,300/month","currency": "EUR","pricePerSqm": 20.0,"surfaceSqm": 65.0,"rooms": 2,"bedrooms": 1,"bathrooms": 1,"floor": "1°, with lift","isPriceReduced": false,"originalPrice": null,"city": "Milan","zone": "Navigli","neighbourhood": "Navigli - Darsena","address": "via Magolfa","latitude": 45.45,"longitude": 9.1737,"mainPhoto": "https://pwm.im-cdn.it/image/2022965726/xxl.jpg","photoCount": 25,"advertiserType": "agency","agencyName": "Bricks Srl","isNew": true,"energyClass": "B","energyPerformanceIndex": 52,"heating": "central, floor heating, powered by methane","buildingYear": 2015,"floorsInBuilding": 4,"condoFees": "€ 250/month","condoFeesMonthly": 250.0,"deposit": 3900.0,"contractDetails": "Rent, 4+4","features": ["Closet", "External exposure", "Optic fiber", "Security door"],"virtualTourUrls": ["https://my.matterport.com/show/?m=ZgU6MLBZA68"],"createdAt": "2026-10-06T09:47:48Z","updatedAt": "2026-10-06T13:10:15Z","hasDetails": true}
A listing that Immobiliare.it marks as reduced carries the cut too, for example
"isPriceReduced": true, "originalPrice": 1250, "price": 1100, "priceReductionPct": 12.0, "priceReducedAt": "2026-09-17".
What you can do with it
- Investors: watch a city or a zone every morning for new listings under a price per m², and catch every price
drop on what you already saw (
trackPriceChanges+onlyChanges). - Agencies and brokers: follow the competition's new mandates and price cuts in your area, and see which agencies publish the most in each neighbourhood.
- Relocation and rental search: a daily alert of new rentals in Milan, Rome, Bologna or Turin that match budget, size and rooms, straight into Slack, e-mail or Google Sheets.
- Price per m² research: median rent or sale price per m² by zone and neighbourhood, by property type or energy class, for valuation, market reports and dashboards.
- Datasets and AI: clean, typed rows (numbers as numbers, dates as ISO) with coordinates, ready for maps and models.
Input
| Field | What it does |
|---|---|
startUrls | Immobiliare.it search URLs with your filters (every filter in the URL is kept), or listing URLs (/annunci/<id>/, returned with the full page) |
locations | Cities, provinces, regions or neighbourhoods in English or Italian (Milan, Rome, Trastevere, Lombardy); one search each |
contract | rent (default) or sale |
propertyType | homes (all residential, default), apartment, penthouse, villa, detachedHouse, loft, room (rent), office, shop, warehouse, storage, garage, land |
minPrice, maxPrice | Euros (monthly rent for rentals) |
minSurface, maxSurface | Square metres |
minRooms, maxRooms | 1 to 5 (5 = 5 or more) |
sortBy | newest (default), relevance, priceLowToHigh, priceHighToLow |
includeAuctions | Default on. Off = sale searches without judicial auctions |
maxItems | Listings per search, default 50. 0 = up to 2,000, the site's own limit |
includeDetails | Default off. Opens each listing's page (one more request, charged apart) |
onlyNew | Default off. Only listings not delivered by this search before |
trackPriceChanges | Default off. Adds the price from your previous run and the change |
onlyChanges | Default off. Only new or repriced listings (turns on price tracking) |
proxyConfiguration | Apify Proxy, datacenter by default |
Apartments for rent in Milan up to EUR 2,000, at least 2 rooms, newest first:
{ "locations": ["Milan"], "contract": "rent", "propertyType": "apartment", "maxPrice": 2000, "minRooms": 2, "maxItems": 100 }
Rome for sale, straight from a search URL you set up on the site:
{ "startUrls": ["https://www.immobiliare.it/vendita-case/roma/?prezzoMassimo=400000&superficieMinima=70"], "maxItems": 200 }
Schedule it daily: new listings and price drops
Save your search as a Task, attach a daily Schedule and turn on one of these:
onlyNew: each run delivers, and charges, only listings this search has not returned before. The search runs newest first and stops at the first page with nothing new, so a daily run reads one or two pages. The first run delivers up tomaxItemsand marks everything it read as seen.trackPriceChanges: every row getspreviousPrice,priceChange,priceChangePct,isPriceDrop,isNewListing,firstSeenAtandpreviousSeenAt, compared with your previous run of the same search. AddonlyChangesand you receive only new listings and listings whose price moved; unchanged ones are free. HeremaxItemscounts listings checked, so the daily cost stays flat.
{ "locations": ["Rome"], "contract": "sale", "propertyType": "apartment", "maxPrice": 350000, "maxItems": 300, "trackPriceChanges": true, "onlyChanges": true }
The memory lives in a Key-Value Store in your own Apify account (immobiliare-scraper-state), one record per search
and filter set (up to 10,000 listings each), so you can inspect it or delete it to start over. Connect Slack, e-mail,
Google Sheets or a webhook to the Task and each morning's news lands where you read it.
Output fields
Every listing row (type: "listing"): id, url, title, contract (sale, rent or auction), isAuction,
propertyType, category, price, priceText, currency, pricePerSqm, surfaceSqm, rooms, roomsText,
bedrooms, bathrooms, floor, hasElevator, features, city, province, region, zone, neighbourhood,
address, latitude, longitude, description (first 600 characters on search rows), mainPhoto, photos,
photoCount, isPriceReduced, originalPrice, priceReductionPct, priceReducedAt, advertiserType
(agency, builder or private), agencyName, agencyId, agencyUrl, agencyLogo, isNew (Immobiliare.it's
own "new" badge), isLuxury, isProject, unitsCount, listingTier, position, searchUrl, scrapedAt.
With price tracking: isNewListing, previousPrice, priceChange, priceChangePct, isPriceDrop, firstSeenAt,
previousSeenAt.
With full listing pages (hasDetails: true): full description (Immobiliare.it's English translation when it has
one) and descriptionOriginal, features in full, condition, energyClass, energyPerformanceIndex,
energyStatus, heating, airConditioning, buildingYear, floorsInBuilding, condoFees, condoFeesMonthly,
deposit, availability, contractDetails, kitchen, propertyDetails, streetNumber, referenceCode, every
photo in large size, floorPlans, virtualTourUrls, videoUrls, createdAt, updatedAt, listingStatus. If a
listing page cannot be read, the row still comes with hasDetails: false and detailsError, and only the listing
is charged.
No advertiser contact data, by design. For agencies (companies) you get the agency's name, id, page and logo.
For private advertisers you get only advertiserType: "private": never a name, phone, e-mail or photo, and the location stops at zone and neighbourhood (no street or street number, coordinates rounded to about 1 km), because a private listing can be the advertiser's own home. The agent's
name and phone are never returned, and phone numbers and e-mail addresses inside the description text are replaced
with [contact removed]. Use the listing url to contact the advertiser through Immobiliare.it.
Error codes (never charged)
errorCode | Meaning |
|---|---|
INVALID_INPUT | A value the Actor does not understand (minimum above maximum, unknown property type, a URL that is not Immobiliare.it, a map-drawn search with no fixed page) |
NOT_FOUND | Immobiliare.it does not know this place, the search page does not exist, or the listing was removed |
NO_RESULTS | No listing for this search and filters |
BLOCKED | Immobiliare.it's anti-bot check refused every attempt on new IPs; run again or use the RESIDENTIAL proxy group |
NOT_REACHED | The run timeout arrived before this search or listing |
UNEXPECTED | A page came in a shape we did not expect; the rest of the run goes on |
Pricing
| Event | Per 1,000 |
|---|---|
| Listing delivered | US$ 1.00 |
Full listing page (only with includeDetails or listing URLs) | US$ 2.00 |
A daily onlyNew run on a busy Milan search that finds 40 new rentals costs US$ 0.04; with full listing pages,
US$ 0.12. Error rows, duplicates, listings already seen and listings with an unchanged price are free, and there is
no start fee.
Limitations
- Immobiliare.it shows at most 2,000 listings per search (80 pages of 25). Split a big city by zone, price range or property type to go further.
- Immobiliare.it protects the site with an anti-bot service. The Actor drops IPs that get refused and keeps the ones
that pass; it never solves captchas. On a bad day a search may come back as
BLOCKED(free): run it again. - The Actor reads the English version of the site, so labels (property type, features, condition) are in English. Descriptions come in Immobiliare.it's own English translation when there is one, otherwise in the original Italian.
- A search URL with several property types at once is split into one search per type. A search drawn on the map has no fixed page and is not supported: pick a city or zone instead.
- This Actor reads public pages only.
FAQ
Do I need an Immobiliare.it account or an Italian IP? No. No login, no cookies, and the default datacenter proxy works.
Can I paste a search from my browser? Yes, in Italian or English. Price, surface, rooms, zones, property type and sort in the URL are kept.
How is price per m² computed? price / surfaceSqm as published on the listing. For rentals it is the monthly
rent per m².
How do I get an alert only when a price drops? Turn on trackPriceChanges and onlyChanges, schedule the Task
daily and filter on isPriceDrop: true in your integration.
Can I use it from n8n, Make, Zapier or an AI agent? Yes, through the Apify app or the Apify MCP server. Error rows are free, so an agent can explore cheaply.
What if a run is cut by its timeout? The Actor stops shortly before the limit and ends successfully with what it delivered, telling you in the status message how to get the rest.
Changelog
- 0.1 (2026-10-06): first version. Search by Immobiliare.it URL or by location with contract, property type,
price, surface, rooms and sort; sale, rent and auctions; price per m²; the site's own price cuts; optional full
listing pages;
onlyNewand price tracking between runs for daily schedules; free error rows.