CasaDaPrivato Scraper - Italy Private-Seller Homes avatar

CasaDaPrivato Scraper - Italy Private-Seller Homes

Pricing

from $1.32 / 1,000 property searches

Go to Apify Store
CasaDaPrivato Scraper - Italy Private-Seller Homes

CasaDaPrivato Scraper - Italy Private-Seller Homes

Scrape CasaDaPrivato.it, the Italian site where owners sell and let their homes without an agency. Homes for sale, rentals, holiday homes and rooms in 107 provinces, with price, m², rooms, street, GPS and photos.

Pricing

from $1.32 / 1,000 property searches

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

1

Monthly active users

11 days ago

Last modified

Share

CasaDaPrivato Scraper: Italian Homes from Private Sellers 🚀

SIÁN Agency Store Immobiliare.it Scraper Bakeca Scraper Casa.it Scraper

🎉 Case da privati in all 107 Italian provinces: about 39,700 homes for sale and 23,000 rentals, each one posted by its owner

For agencies, investors, analysts and house hunters who want Italy's private-seller listings in a spreadsheet


🔎 What is the CasaDaPrivato Scraper — and when should you use it?

The CasaDaPrivato Scraper turns public CasaDaPrivato.it listings of homes that Italian owners sell or let themselves, from all 107 provinces, into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

Use it when you need: Italian homes for sale, homes for rent, holiday homes and rooms posted by private owners rather than agencies, as rows. Every search row carries the asking price in euros, floor area, rooms, bathrooms, property type, town, area, street and the main photo. Open each listing in full and you also get the owner's full text, every photo, GPS where the owner set it, energy class, floor, heating, parking, lease type, condo fees and the listing date.

Use something else when: you want agency listings from the big Italian portals rather than owner-only listings. Use Immobiliare.it Scraper for Immobiliare.it, mostly agency listings, with full detail. Use Bakeca Scraper for Bakeca.it classifieds: rooms, rentals and homes from owners and agencies. This actor reads live CasaDaPrivato listings only. It returns no phone numbers or owner names, offers no price or size filter on the site's side, and does not return sold prices.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/casadaprivato-property-scraper

Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want homes for sale and rent from private owners on CasaDaPrivato.it in Italy using the Apify Actor `sian.agency/casadaprivato-property-scraper`.
Use it when I need: Italian homes for sale, homes for rent, holiday homes and rooms posted by private owners rather than agencies, as rows. Every search row carries the asking price in euros, floor area, rooms, bathrooms, property type, town, area, street and the main photo. Open each listing in full and you also get the owner's full text, every photo, GPS where the owner set it, energy class, floor, heating, parking, lease type, condo fees and the listing date.
Don't use it when: you want agency listings from the big Italian portals rather than owner-only listings — use immobiliare-property-scraper or bakeca-property-scraper instead.
How to call it: set `province` to a province slug such as `milano`, `roma`, `torino` or `bologna`, optionally `town` (a town inside it, for example `Milano`), `category` to `sale`, `rent`, `holiday` or `rooms`, and optionally `propertyType` (for example `appartamenti`) and `sortBy` (`relevance`, `recent`, `priceLow`, `priceHigh`). `maxResults` sets how many listings come back. `includeDetails` opens each listing for the full text, every photo and GPS, for an extra charge per listing. `searchUrls` takes CasaDaPrivato results pages as [{"url": ...}] objects, which is how to search one area (zona) of a city. To expand listings you already have, set `operation` to `detail` and pass `listingUrls`.
Start with this input:
{
"operation": "search",
"province": "roma",
"town": "Roma",
"category": "sale",
"propertyType": "appartamenti",
"maxResults": 50,
"includeDetails": false
}
Ask me which province or town to cover, and whether I want homes for sale, homes for rent, holiday homes or rooms, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • List flats for sale by private owners in Torino with price per m².
  • Find homes for rent from private landlords in Milano listed most recently.
  • Export holiday homes let by their owners in the province of Sassari.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/casadaprivato-property-scraper.md.

📋 Overview

CasaDaPrivato.it is where Italian owners sell and let their homes without an agency. This actor turns the site into rows: homes for sale, homes for rent, holiday homes and rooms, from all 107 Italian provinces.

What you get:

  • ✅ Private sellers: the site is built for owners selling or letting their own home, and agencies cannot charge commission through it
  • 🧭 Homes the big portals mostly don't have: matching photos, we found 8% of Bergamo and 10-12% of Padova sale listings on Subito's private section, and 0 of 38 in a 550-listing Immobiliare sample
  • ⚡ 15 listings per results page: price, floor area, rooms, bathrooms, town, area, street, highlights and the main photo on every search row
  • 💰 Pay per listing: $1.50 per 1,000 listings on the Starter plan, and a listing is billed once per run
  • 💎 Full listing on demand: one switch adds the description, every original photo, GPS, energy class, floor, heating, kitchen, parking, condo fees and dates
  • ✨ NEW: search one district (zona) of a big city by pasting its results page

✨ Features

  • 🏡 Four sections: homes for sale, homes for rent, holiday homes, and rooms and beds
  • 📍 107 provinces or one town: read a whole province such as Milano or Roma, or narrow it to one comune
  • 🏢 12 property types: flats, penthouses, detached houses, villas, farmhouses, lofts, buildings, new builds, garages, shops and offices, land and other residential
  • ↕️ Four sort orders: most relevant, most recent first, cheapest first or most expensive first
  • 📐 Price per m²: worked out on every sale listing that has both a price and a floor area
  • 🖼️ Original photos: full-size images rather than the site's cropped thumbnails, when you open the full listing
  • 🔗 Paste any results page: districts and other CasaDaPrivato searches work as input
  • 🔁 Fair billing: each listing is charged once per run, and "similar listings nearby" filler cards are never returned or billed

🎬 Quick Start

Pick a province and a section, press Start, and the listings land in your dataset. A run with no input returns 50 homes for sale in the Milano province. Turn on the full listing when you need the description, every photo and GPS.

curl -X POST "https://api.apify.com/v2/acts/sian.agency~casadaprivato-property-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"province": "roma", "category": "sale", "propertyType": "appartamenti", "maxResults": 50}'

🚀 Getting Started (3 Simple Steps)

Step 1: Pick where

Choose a province from the list. Type a town if you only want one, or paste a district's results page.

Step 2: Pick what

Choose the section (for sale, for rent, holiday homes or rooms), a property type if you like, and the order.

Step 3: Run and export

Set how many listings you want and press Start. Download the result as JSON, CSV or Excel.

That's it! A few minutes at most, and you'll have:

  • Owner asking prices in euros, with floor area and price per m²
  • Town, area and street for every listing
  • A link to each listing, so you can contact the owner through CasaDaPrivato

📥 Input Configuration

FieldTypeRequiredDescription
operationstringNosearch (default) reads results pages, detail opens listings you paste
provincestringNoProvince slug, such as milano (default), roma, torino, la_spezia or monza_brianza
townstringNoOne town (comune) inside the province. Leave empty for the whole province
categorystringNosale (default), rent, holiday or rooms. rent covers every rental, holiday homes and rooms included
propertyTypestringNoall (default) or one of 12 types, such as appartamenti, case-indipendenti or terreni. Ignored for holiday homes and rooms
sortBystringNorelevance (default), recent, priceLow or priceHigh
maxResultsintegerNoHow many listings to return (default 50, up to 10,000). One results page holds 15
includeDetailsbooleanNoOpen each listing for the full record (billed per listing)
searchUrlsarrayNoCasaDaPrivato results pages to read instead of the fields above
listingUrlsarrayNoCasaDaPrivato listing pages for the detail operation

Example: flats for sale in Roma, newest first, with the full listing

{
"province": "roma",
"town": "Roma",
"category": "sale",
"propertyType": "appartamenti",
"sortBy": "recent",
"maxResults": 100,
"includeDetails": true
}

Example: rooms from private landlords in the Bologna province

{
"province": "bologna",
"category": "rooms",
"maxResults": 200
}

Example: paste a district's results page

{
"searchUrls": [
{ "url": "https://www.casadaprivato.it/annunci-vendita/appartamenti/roma-zona-bravetta" }
],
"maxResults": 100
}

Example: open listings you already have

{
"operation": "detail",
"listingUrls": [
{ "url": "https://www.casadaprivato.it/appartamenti/grazioso-bilocale-in-corte-privata-bergamo-423133" }
]
}

CasaDaPrivato's price, size and room filters are not offered here. Collect the town or province, then filter the dataset by price, sizeSqm or rooms.


📤 Output

Results are saved to the Apify dataset with 53 fields, including:

FieldTypeDescription
listingIdstringCasaDaPrivato's listing ID, stable across runs
listingUrlstringLink to the listing
propertyTitle / headlinestringThe listing title, and the owner's own headline
contractstringsale or rent
propertyTypestringTrilocale, Bilocale, Box/Garage/Posto auto and so on
pricenumberAsking price in euros for sales, monthly rent for rentals. Empty for private-negotiation listings
priceLabelstringThe price exactly as the site shows it, such as "Trattativa Riservata"
sizeSqm / pricePerSqmnumberFloor area in m², and price divided by area
rooms / bedrooms / bathroomsintegerRoom counts as the owner listed them
town / zone / address / provincestringTown, area, street and province
latitude / longitudenumberGPS from the full listing, where the owner set it
energyClass / heating / floor / parking / conditionstringFrom the full listing
leaseType / availableFrom / condoFeesstringRental terms and condo fees, from the full listing
imageUrls / photoCountarray / integerOriginal photo links and how many there are
descriptionTextstringThe owner's full description
publishedDate / updatedDatestringListed and updated dates (YYYY-MM-DD)

Example: a Roma flat for sale with the full listing opened (long fields shortened)

{
"listingId": "423375",
"listingUrl": "https://www.casadaprivato.it/appartamenti/trilocale-luminoso-con-2-balconi-e-veranda-roma-423375",
"propertyTitle": "Trilocale in vendita a Roma, Zona Romanina, Via Paolo Ferrari 66",
"headline": "Trilocale luminoso con 2 balconi e veranda",
"contract": "sale",
"section": "appartamenti",
"propertyType": "Trilocale",
"price": 175000,
"currency": "EUR",
"priceLabel": "€ 175.000,00",
"sizeSqm": 90,
"pricePerSqm": 1944,
"rooms": 3,
"bedrooms": 2,
"bathrooms": 1,
"town": "Roma",
"zone": "Romanina",
"address": "Via Paolo Ferrari 66",
"province": "roma",
"latitude": 42.01289,
"longitude": 12.36803,
"highlights": ["Climatizzazione", "Secondo piano", "Balcone", "Box"],
"features": ["Balcone", "Semi-arredato"],
"floor": "2 °",
"totalFloors": "3",
"kitchen": "Abitabile",
"parking": "No",
"condition": "Abitabile",
"heating": "Autonomo",
"airConditioning": "Si",
"energyClass": "F",
"thumbnail": "https://static.casadaprivato.it/images/properties/423375/2d3f7d97ad7c425b8fd8e31b3e3bfe46.jpg",
"imageUrls": [
"https://static.casadaprivato.it/images/properties/423375/2d3f7d97ad7c425b8fd8e31b3e3bfe46.jpg",
"https://static.casadaprivato.it/images/properties/423375/42cde92a072246799b916c397c16f080.jpg"
],
"photoCount": 8,
"descriptionText": "Appartamento molto luminoso, situato in una zona tranquilla di Roma, con una piacevole vista e ambienti ben distribuiti. …",
"updatedDate": "2026-10-04",
"searchUrl": "https://www.casadaprivato.it/annunci-vendita/immobili/roma-roma",
"searchPage": 1,
"hasDetail": true,
"status": "success"
}

Example: a private-negotiation listing (no price, the label is kept)

{
"listingId": "423311",
"propertyTitle": "Appartamento in vendita a Roma, Zona Portuense, Via Torrita di Siena 26",
"contract": "sale",
"propertyType": "Appartamento",
"currency": "EUR",
"priceLabel": "Trattativa Riservata",
"sizeSqm": 80,
"rooms": 5,
"bathrooms": 2,
"town": "Roma",
"zone": "Portuense",
"yearBuilt": 1978,
"energyClass": "A3",
"publishedDate": "2026-10-01",
"hasDetail": true,
"status": "success"
}

Each run also writes a report.html summary to the run's key-value store, with your rows, anything that needs a fix and what you were charged.


💼 Use Cases & Examples

1. Private-seller lead lists for agencies

Estate agents find owners who are selling on their own.

Input: province and town, category sale Output: Homes for sale with street, price, floor area and a link to each listing Use: A list of owners to approach through CasaDaPrivato's message form, town by town

2. Homes the big portals mostly don't have

Investors and analysts add a pool of homes they can't see on Immobiliare.

Input: The same town you already track on Immobiliare or Subito Output: Private listings that rarely show up there (8-12% overlap with Subito's private section in Bergamo and Padova, none found in an Immobiliare sample) Use: Count the owner-listed homes your usual portal data misses

3. Price checks without agency mark-ups

Valuers and buyers compare owner asking prices across a city.

Input: A province, or a district pasted into searchUrls Output: Asking price, floor area and pricePerSqm on every row Use: Price per m² before any commission, town by town or area by area inside big cities

4. New listing alerts

House hunters and investors catch new listings early.

Input: One town with sortBy recent, on an Apify schedule Output: Stable listing IDs with price and dates Use: New listings and price changes show up as a daily diff

5. Rentals and rooms from private landlords

Students, relocation services and housing offices look for rentals without agency fees.

Input: category rent or rooms in Roma, Milano, Bologna or Padova Output: Monthly rent, floor area, town and area, plus lease type and availability with the full listing Use: A shortlist of rooms and flats let directly by their owners

6. Holiday homes let by owners

Holiday-rental analysts look at owner-let homes in Sardinia, Puglia or Sicily.

Input: category holiday in provinces such as sassari, lecce or palermo Output: Beds, floor area, town and the price as posted Use: A map of owner-let holiday homes by town, with beds and floor area. CasaDaPrivato shows no prices for holiday homes, so price stays empty there


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/casadaprivato-property-scraper').call({
province: 'bergamo',
town: 'Bergamo',
category: 'sale',
sortBy: 'recent',
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/casadaprivato-property-scraper').call(
run_input={
'province': 'padova',
'category': 'rooms',
'maxResults': 100,
'includeDetails': True,
}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item.get('price'), item.get('zone'), item['listingUrl'])

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~casadaprivato-property-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "detail", "listingUrls": [{"url": "https://www.casadaprivato.it/appartamenti/grazioso-bilocale-in-corte-privata-bergamo-423133"}]}'

Automation Workflows (n8n / Zapier / Make)

  1. Trigger: a daily schedule, or a webhook from your CRM
  2. HTTP Request: call the actor's run endpoint with your province, town and section
  3. Process: read the dataset items as JSON
  4. Action: add new listings to Google Sheets, Airtable or your CRM, or send an alert when a price drops

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 25 listings per run, every field included
  • No credit card required
  • Good for checking a town or section before a bigger run
  • Up to 10,000 listings per run (the "Properties to collect" limit)
  • Pay per listing returned: $1.50 per 1,000 listings on the Starter plan, less on higher Apify plans
  • The full listing is an optional extra at $3 per 1,000, charged only when you switch it on or use Property Detail
  • A start fee of $0.005 per run on the Starter plan

💰 Only listings you receive are charged. A search that matches nothing costs nothing beyond the start fee, and so do "similar listings nearby" filler cards and listing pages that no longer exist. A listing is billed once per run.

🔗 View current pricing


❓ Frequently Asked Questions

Q: Are these really private sellers? A: Almost always. CasaDaPrivato is built for owners, and its terms forbid anyone from asking for commission on a deal made through the site. Now and then an agent posts anyway; the listing text usually gives it away.

Q: Do I get the owner's phone number or name? A: No. Owners are contacted through CasaDaPrivato's message form, and the actor does not collect personal details. For room ads that includes the advertiser's gender, age and job. Each row links to the listing so you can contact the owner there.

Q: How many listings are there? A: On 2026-10-04 the site held about 39,700 homes for sale and 23,000 rentals, holiday homes and rooms included. That is fewer than the big agency portals, so a small town may have only a handful.

Q: Can I search one district of a big city? A: Yes. Open the area (zona) on casadaprivato.it, for example Bravetta in Roma, and paste the results address into Search page URLs.

Q: Can I filter by price, size or rooms? A: Not on the site's side. Collect the town or province and filter the dataset by price, sizeSqm or rooms afterwards.

Q: Why is a price missing? A: Owners can choose a private-negotiation price (Trattativa Riservata). Those rows keep price empty and show the label in priceLabel. Holiday homes carry no price on CasaDaPrivato at all; owners quote by period on request.

Q: How fresh is the data? A: Every run reads the live site. Nothing is cached between runs.

Q: What output formats are available? A: JSON, CSV, Excel, XML and HTML, straight from the Apify dataset.


🐛 Troubleshooting

A town search returns nothing

  • Check the town is inside the province you picked, for example Sesto San Giovanni in milano
  • Small towns may have no listings in that section. Try the whole province, or the For rent section, which covers every rental

A pasted URL is skipped

Fewer rows than "Properties to collect"

  • The search ran out of listings, or the FREE tier stopped at 25
  • "Similar listings nearby" cards at the end of a short result are left out on purpose

A listing has no GPS or photos

  • GPS appears only when the owner set a location, and only with the full listing switched on
  • Some owners post no photos. photoCount is 0 on those rows

A page failed to load

  • This is nearly always temporary. Run the same input again a few minutes later. You pay only for listings that reach your dataset

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

CasaDaPrivato is a trademark of its owner. This actor is not affiliated with, endorsed by, or sponsored by CasaDaPrivato or LaboWeb.


🤝 Support

Join our active support community


Built by SIÁN Agency | More Tools