
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape immobiliare.it property listings in Italy from search URLs, place names or listing IDs: price, size, rooms, address, coordinates, energy class, condo fees, HD photos, floor plans, agency and phone numbers.
Scrape property listings from immobiliare.it, Italy's largest real estate portal. Paste any search URL (with your filters), type a place name, or give listing IDs, and get clean rows with price, size, rooms, full address and coordinates, energy class, condominium fees, HD photos, floor plans, agency and phone numbers. No login, no browser, and fast: a 20-listing run with full details finishes in about 10 seconds, and 1,000 listings in about a minute.
| Field | What it does |
|---|---|
startUrls | Search results URLs or listing URLs from immobiliare.it. Filters in the URL are kept. |
locations | Place names (region, province, city, district, neighbourhood). |
listingIds | Listing IDs to load directly. |
maxItems | Total listings to save (0 = no limit). |
contract, propertyType | For Locations: sale, rent or auction; homes, apartments, villas, offices, land... |
minPrice … minBathrooms | Optional filters, applied to URLs and Locations. |
sortBy | Relevance, price, size, newest, rooms. |
fetchDetails | Full details for every listing (default on). |
includeAgencyDetails | Adds the agency profile to each row. |
language | Italian, English, French, German, Spanish, Portuguese, Russian or Greek. |
{
"startUrls": [{ "url": "https://www.immobiliare.it/vendita-case/milano/?prezzoMassimo=500000" }],
"locations": ["Trastevere"],
"contract": "rent",
"propertyType": "apartments",
"maxItems": 100,
"minRooms": 2,
"fetchDetails": true
}
One row per listing. Main fields:
| Field | Example |
|---|---|
id, url, title | 133212744, listing link, "Trilocale via Bernardino Verro, Vigentino - Fatima, Milano" |
contract, propertyType, category | Vendita, Appartamento, Residenziale |
priceAmount, priceFormatted, pricePerSqm | 598000, "€ 598.000", 5339 |
surfaceSqm, rooms, bedrooms, bathrooms | 112, "3", 2, "1" |
floor, totalBuildingFloors, elevator, balcony, terrace, garden, cellar | "1", 5, true, false, false, "Giardino comune", false |
condition, heating, airConditioning, yearBuilt | "Ottimo / Ristrutturato", "Centralizzato, a radiatori", ..., 2012 |
energyClass, energyConsumption, condominiumFees | "A", "≥ 175 kWh/m² anno", "€ 2/mese" |
address, zipcode, city, province, region, macrozone, microzone, latitude, longitude | full location |
description, features, amenities | text and feature lists |
photos, floorPlans, virtualTourUrl | HD image URLs |
advertiserType, agencyName, agencyAddress, agentName, phones | agency or private seller |
createdAt, updatedAt | listing dates |
details | every labelled value on the listing page |
agency | agency profile (with includeAgencyDetails) |
{
"id": 133212744,
"url": "https://www.immobiliare.it/annunci/133212744/",
"title": "Trilocale via Bernardino Verro, Vigentino - Fatima, Milano",
"contract": "Vendita",
"propertyType": "Appartamento",
"priceAmount": 598000,
"priceFormatted": "€ 598.000",
"pricePerSqm": 5339,
"surfaceSqm": 112,
"rooms": "3",
"bedrooms": 2,
"bathrooms": "1",
"floor": "1",
"totalBuildingFloors": 5,
"elevator": true,
"condition": "Ottimo / Ristrutturato",
"yearBuilt": 2012,
"energyClass": "A",
"condominiumFees": "€ 2/mese",
"address": "Via Bernardino Verro",
"zipcode": "20141",
"city": "Milano",
"province": "Milano",
"region": "Lombardia",
"macrozone": "Ripamonti, Vigentino",
"microzone": "Vigentino - Fatima",
"latitude": 45.4349,
"longitude": 9.196,
"photoCount": 36,
"photos": ["https://pwm.im-cdn.it/image/2021584926/xxl.jpg"],
"floorPlans": ["https://pic.im-cdn.it/plan/135549880/xxl.jpg"],
"advertiserType": "agency",
"agencyName": "Example Immobiliare Milano",
"agentName": "Mario Rossi",
"phones": ["+390200000000"],
"createdAt": "2026-05-14T17:50:10Z",
"updatedAt": "2026-10-03T17:08:09Z",
"detailsScraped": true,
"scrapedAt": "2026-10-15T20:51:41.907Z"
}
You pay $0.50 per 1,000 listings saved ($0.0005 per listing), with or without full details, plus a small amount of platform usage (compute and datacenter proxy traffic, usually one or two cents per 1,000 listings). Example: 1,000 listings with full details ≈ $0.50 in listing fees plus about $0.01–0.02 of usage. Failed or not-found listings are never charged.
Is it legal to scrape immobiliare.it? The actor only reads public listing pages that anyone can open without an account. Check that your use of the data complies with the site's terms and with data protection law (GDPR), especially for personal data such as phone numbers of private sellers.
Do I need a login or my own proxy? No. No account is used. Datacenter proxies are included and work; residential exits are pinned to Italy if you choose them.
How many listings can I get? As many as a search has. The site shows 2,000 per search, so larger searches are split into price bands automatically. Listings without a visible price only appear in the first 2,000.
Why is a field empty? The advertiser did not fill it in. For example, many listings have no energy class, zip code or condo fees.
Can I monitor prices? Yes. Schedule the actor and compare priceAmount and updatedAt between runs, or use the API and webhooks.
What does "Full listing details" change? Off, each row holds what the results page shows (price, size, rooms, location, photos, agency). On, it adds energy class, year built, fees, floor plans, phone numbers and all labelled features.
unitsInProject and subProperties describing the units.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalImmobiliare.it URLs
Search results pages or listing pages from immobiliare.it, such as https://www.immobiliare.it/vendita-case/milano/ or https://www.immobiliare.it/annunci/131616220/. Filters, zones, map polygons and sort order in a results URL are kept, so you can set any filter on the site and paste the link.
locationsarrayOptionalLocations
Place names to search instead of (or as well as) URLs: a region, province, city, district or neighbourhood, such as Milano, Trastevere or Toscana. Each uses Contract, Property type and the filters below.
listingIdsarrayOptionalListing IDs
Immobiliare.it listing IDs to load directly, such as 131616220.
maxItemsintegerOptionaldefault 20Max listings
How many listings to save in total across all inputs. 0 means no limit. The site shows 2,000 listings per search; bigger searches are split into price bands automatically.
What to search for in Locations.
contractenumOptionaldefault "sale"Contract
Sale, rent or auction. Used for Locations; URLs keep their own contract.
propertyTypeenumOptionaldefault "homes"Property type
Kind of property for Locations. Rooms are rent only.
sortByenumOptionaldefault "auto"Sort by
Order of results. Auto keeps the URL's order (or relevance).
Optional filters. They apply to every URL and Location and replace the same filter in a URL.
minPriceintegerOptionalMin price (EUR)
Minimum price in euros (monthly rent for rentals). Applies to URLs and Locations; empty means no limit.
maxPriceintegerOptionalMax price (EUR)
Maximum price in euros (monthly rent for rentals). Applies to URLs and Locations; empty means no limit.
minSizeintegerOptionalMin size (m²)
Minimum surface in square metres. Applies to URLs and Locations; empty means no limit.
maxSizeintegerOptionalMax size (m²)
Maximum surface in square metres. Applies to URLs and Locations; empty means no limit.
minRoomsintegerOptionalMin rooms
Minimum number of rooms (locali). Applies to URLs and Locations; empty means no limit.
maxRoomsintegerOptionalMax rooms
Maximum number of rooms (locali). Applies to URLs and Locations; empty means no limit.
minBedroomsintegerOptionalMin bedrooms
Minimum number of bedrooms. Applies to URLs and Locations; empty means no limit.
maxBedroomsintegerOptionalMax bedrooms
Maximum number of bedrooms. Applies to URLs and Locations; empty means no limit.
minBathroomsintegerOptionalMin bathrooms
Minimum number of bathrooms (4 means more than 3). Applies to URLs and Locations; empty means no limit.
conditionenumOptionaldefault "any"Condition
Property condition.
elevatorbooleanOptionaldefault falseElevator
Only listings with an elevator.
gardenbooleanOptionaldefault falseGarden
Only listings with a private or shared garden.
terraceOrBalconybooleanOptionaldefault falseTerrace or balcony
Only listings with a terrace or balcony.
cellarbooleanOptionaldefault falseCellar
Only listings with a cellar.
poolbooleanOptionaldefault falsePool
Only listings with a pool.
furnishedbooleanOptionaldefault falseFurnished
Only furnished listings.
luxurybooleanOptionaldefault falseLuxury
Only luxury listings.
virtualTourbooleanOptionaldefault falseVirtual tour
Only listings with a virtual tour.
excludeAuctionsbooleanOptionaldefault falseExclude auctions
Leave out auction listings.
privateSellersOnlybooleanOptionaldefault falsePrivate sellers only
Only listings from private sellers, no agencies.
keywordstringOptionalKeyword
Only listings whose text contains this word, such as mansarda or piscina.
What each row contains.
fetchDetailsbooleanOptionaldefault trueFull listing details
Load each listing's full details: energy class, year built, condominium fees, all photos in HD, floor plans, phone numbers, every labelled feature. Off saves only what the results page shows, which is faster.
includeAgencyDetailsbooleanOptionaldefault falseAgency details
Add the agency profile to each row: address, website, phones, description, agents and number of listings. Loaded once per agency.
languageenumOptionaldefault "it"Language
Language of titles, descriptions and labels where the site has a translation.
maxConcurrencyintegerOptionaldefault 10Max concurrency
How many listings load in parallel.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for immobiliare.it and are the cheapest. Residential exits are pinned to Italy unless you pick a country.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | number | null | |
| url | string | null | |
| title | string | null | |
| contract | string | null | |
| propertyType | string | null | |
| category | string | null | |
| priceAmount | number | null | |
| priceFormatted | string | null | |
| pricePerSqm | number | null | |
| surfaceSqm | number | null | |
| rooms | string | null | |
| bedrooms | number | null | |
| bathrooms | string | null | |
| floor | string | null | |
| elevator | boolean | null | |
| condition | string | null | |
| energyClass | string | null | |
| yearBuilt | number | null | |
| condominiumFees | string | null | |
| address | string | null | |
| zipcode | string | null | |
| city | string | null | |
| province | string | null | |
| region | string | null | |
| macrozone | string | null | |
| microzone | string | null | |
| latitude | number | null | |
| longitude | number | null | |
| description | string | null | |
| thumbnail | string | null | |
| photoCount | number | null | |
| photos | array | null | |
| features | array | null | |
| advertiserType | string | null | |
| agencyName | string | null | |
| agentName | string | null | |
| phones | array | null | |
| createdAt | string | null | |
| updatedAt | string | null | |
| error | string | null | |
| scrapedAt | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One immobiliare.it listing saved (with or without full details). Not-found or failed listings are free. | $0.0005 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/immobiliare-scraper').call({
"startUrls": [
{
"url": "https://www.immobiliare.it/vendita-case/milano/"
}
],
"locations": [],
"listingIds": [],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/immobiliare-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/immobiliare-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Listings from an Immobiliare search link with details.
Rental apartments by city.
Listings including the agency's details.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.