# Casa.it Scraper — Italy Real Estate Data (`logiover/casa-it-scraper-italy-real-estate`) Actor

Scrape Italian real estate listings from Casa.it (no browser, no API key). Filter by location, sale/rent, property type, price (EUR), area, rooms & seller. Returns price, price/m², GPS, full address, agency phone & website, energy class and image gallery per listing.

- **URL**: https://apify.com/logiover/casa-it-scraper-italy-real-estate.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Real estate, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Casa.it Scraper — Italy Real Estate Listings, Prices & Agent Leads (No API)

![Apify Actor](https://img.shields.io/badge/Apify-Actor-00A67E?logo=apify&logoColor=white) ![No API key](https://img.shields.io/badge/No%20API%20key-required-2ea44f) ![Pay per result](https://img.shields.io/badge/Pricing-Pay%20per%20result-1C7ED6) ![Real Estate](https://img.shields.io/badge/Category-Real%20Estate-8B5CF6) ![Export](https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel-F59E0B)

Scrape property listings from **Casa.it**, one of Italy's largest real-estate portals, with hundreds of thousands of active listings across every region. This **Casa.it scraper** extracts apartments, villas, penthouses, terraced houses, detached houses, farmhouses, lofts and studios — for **sale (vendita)** or **rent (affitto)** — filtered by location, property type, price in **EUR**, surface area (m²), rooms, bathrooms and seller type. Every row carries price and **price per m²**, monthly rent, GPS coordinates, a full Italian address breakdown (street, district, city, province, region), **agency contact details** (phone + website), energy class and image galleries — parsed straight from Casa.it's embedded `__INITIAL_STATE__` JSON, so it runs **fast, with no browser and no API key required.**

> ### 🏆 Why this Casa.it scraper?
> **60+ fields per listing** · **thousands of listings per run** · price + EUR/m² · monthly rent for rentals · full Italian address + GPS · energy class (A4–G) · **agency phone + website** · image gallery · sale & rent · export to JSON / CSV / Excel. The unofficial **Casa.it API alternative** for Italian real-estate data and agency leads.

---

### ✨ What this Actor does / Key features

- 🏠 **Every residential type** — apartments (appartamenti), villas (ville), penthouses/attics (attici e mansarde), terraced houses (villette a schiera), detached houses (case indipendenti), farmhouses (rustici e casali), lofts, studios (monolocali) and 2/3/4-room flats, for sale or rent.
- 📍 **Nationwide location targeting** — scrape any Italian city, province or zone (Roma, Milano, Napoli, Torino, Firenze, Bologna and thousands more) via URL location slugs; pass many in one run.
- 💰 **Powerful filters** — price range (EUR), surface-area range (m²), room range, minimum bathrooms, seller type (agency vs. private) and flexible sort order (relevance, latest, price or area, ascending/descending).
- 🗺️ **Full address & GPS** — street, block, district, city, province and region, plus latitude/longitude for every listing — ready for mapping and heatmaps.
- 🏢 **Agency contact data embedded** — agency name, ID, slug, logo, profile URL, **phone number**, website and postal address, plus the private-vs-agency seller flag for lead gen.
- ⚡ **Energy class, mortgage estimate & media flags** — energy efficiency class (A4–G), estimated monthly mortgage, image count, floorplan count and video / 360° / 3D-tour flags.
- 🖼️ **Image galleries** — main image URL plus the full list of image URLs at your chosen resolution (up to 1280×960).
- 🧩 **Direct HTTP + JSON extraction** — parses Casa.it's `__INITIAL_STATE__` payload; no browser, no DOM walking, no GraphQL token.
- 🛡️ **DataDome-aware proxy handling** — Apify residential proxy with a realistic browser fingerprint, user-agent rotation and automatic IP rotation on blocks.
- 📤 **Export anywhere** — one structured row per listing to **JSON, CSV, Excel or XML**, or pull from the Apify API and webhooks.

---

### 🚀 Quick start (3 steps)

1. **Configure** — set one or more `locationSlugs` (e.g. `["roma", "milano"]`), choose `transaction` (sale/rent) and `propertyType`, then add any price, area, room, bathroom or seller filters. Cap the run with `maxListings`.
2. **Run** — click **Start**. The Actor builds a Casa.it search per slug, fetches each page over residential proxy, parses the embedded `__INITIAL_STATE__` JSON and paginates up to `maxPagesPerTask`.
3. **Get your data** — open the **Output** tab and export as **JSON, CSV, Excel or XML**, or pull it from the Apify API. One clean row per listing, with price, EUR/m², address, agency contact and GPS included.

---

### 📥 Input

The only required field is `locationSlugs` — every other field has a sensible default. Each slug becomes its own scraping task, so you can benchmark several Italian cities in a single run.

**Example 1 — Rome & Milan apartments for sale, filtered**

```json
{
  "locationSlugs": ["roma", "milano"],
  "transaction": "sale",
  "propertyType": "apartment",
  "priceMin": 150000,
  "priceMax": 600000,
  "areaMin": 50,
  "areaMax": 120,
  "roomsMin": 2,
  "bathroomsMin": 1,
  "sort": "price_asc",
  "maxListings": 500,
  "maxPagesPerTask": 10,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "IT" }
}
````

**Example 2 — private-seller (privato) rentals in Naples for lead gen**

```json
{
  "locationSlugs": ["napoli"],
  "transaction": "rent",
  "propertyType": "all",
  "sellerType": "private",
  "sort": "latest",
  "maxListings": 300,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "IT" }
}
```

**Example 3 — villas for sale across multiple cities, largest first**

```json
{
  "locationSlugs": ["firenze", "bologna", "torino"],
  "transaction": "sale",
  "propertyType": "villa",
  "areaMin": 150,
  "sort": "area_desc",
  "imageSize": "1024x768",
  "maxListings": 1000,
  "maxPagesPerTask": 20,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "IT" }
}
```

> **Finding a location slug:** browse casa.it, apply a location filter, and copy the segment that follows `/vendita/residenziale/` (for sale) or `/affitto/residenziale/` (for rent) in the URL. For example, `https://www.casa.it/vendita/residenziale/roma/` → slug `roma`. Use a city, a province or a deeper zone segment.

| Field | Type | Description |
|-------|------|-------------|
| `locationSlugs` | array | Casa.it URL location paths. Each slug becomes its own task (e.g. `roma`, `milano`, `napoli`). **Required.** |
| `transaction` | string | `sale` (vendita) or `rent` (affitto). |
| `propertyType` | string | `all`, `apartment`, `penthouse`, `villa`, `terraced_house`, `detached_house`, `farmhouse`, `loft`, `studio`, `two_room`, `three_room` or `four_room`. |
| `priceMin` / `priceMax` | integer | Min / max price in EUR (or monthly rent for rentals). 0 = no bound. |
| `areaMin` / `areaMax` | integer | Min / max surface area in m². 0 = no bound. |
| `roomsMin` / `roomsMax` | integer | Min / max room count (locali). 0 = no bound. |
| `bathroomsMin` | integer | Minimum number of bathrooms (bagni). 0 = no minimum. |
| `sellerType` | string | `all`, `agency` or `private`. |
| `sort` | string | Result ordering: `relevance`, `latest`, `price_asc`, `price_desc`, `area_asc`, `area_desc`. |
| `imageSize` | string | Image CDN resolution: `360x270`, `800x600`, `1024x768` or `1280x960`. |
| `maxListings` | integer | Total cap across all location tasks. 0 = unlimited. |
| `maxPagesPerTask` | integer | Pagination depth per location (~20–25 listings per page). |
| `requestDelay` | integer | Delay between page requests in milliseconds (keep ≥ 600 ms). |
| `maxRetries` | integer | Retries per page on anti-bot blocks (rotates proxy IP). Casa.it uses DataDome, so 6–10 is recommended. |
| `proxyConfiguration` | object | Apify Proxy settings. **Residential with country=IT strongly recommended** — datacenter proxies are blocked. |

***

### 📤 Output

Each property listing is saved as one structured row in the dataset. Below is a trimmed sample; the full 60+ field reference follows. Export to JSON, CSV, Excel or XML, or pull via the Apify API.

```json
{
  "adId": "82715349",
  "detailUrl": "https://www.casa.it/immobili/82715349.html",
  "title": "Trilocale via Nazionale, Centro Storico, Roma",
  "transactionType": "sale",
  "channel": "vendita",
  "propertyType": "appartamento",
  "propertyTypeGroup": "case",
  "price": "395000",
  "priceLabel": "€ 395.000",
  "priceCurrency": "EUR",
  "pricePerSqm": "4938",
  "monthlyRent": null,
  "mortgage": "1420",
  "areaSqm": "80",
  "rooms": "3",
  "bathrooms": "2",
  "energyClass": "C",
  "floor": "3",
  "street": "Via Nazionale",
  "district": "Centro Storico",
  "city": "Roma",
  "province": "Roma",
  "region": "Lazio",
  "fullAddress": "Via Nazionale, Centro Storico, Roma (RM)",
  "latitude": "41.8987",
  "longitude": "12.4901",
  "mainImageUrl": "https://images.immobiliare.it/.../800x600.jpg",
  "imageCount": "18",
  "hasVideo": "true",
  "publisherName": "Roma Immobiliare Srl",
  "publisherType": "Agency",
  "publisherPhone": "+39 06 1234567",
  "publisherWebsite": "https://www.romaimmobiliare.it",
  "publisherUrl": "https://www.casa.it/agenzie/roma-immobiliare",
  "searchLocation": "roma",
  "searchUrl": "https://www.casa.it/vendita/residenziale/roma/",
  "scrapedAt": "2026-07-06T09:15:00.000Z"
}
```

<details><summary><b>📋 Full field reference (click to expand)</b></summary>

| Field | Description |
|-------|-------------|
| `adId` | Casa.it stable listing ID |
| `detailUrl` | Full listing detail URL |
| `title` | Listing title |
| `titleExtra` | Additional title / zone label |
| `description` | Listing description snippet |
| `transactionType` | sale or rent |
| `channel` | Raw channel (vendita / affitto) |
| `category` | Casa.it category (residenziale, …) |
| `propertyType` | Property type slug (appartamento, villa, …) |
| `propertyTypeGroup` | Property type group (case, …) |
| `price` | Asking price for sales (null for rentals) |
| `priceLabel` | Formatted price string as shown on the site |
| `priceCurrency` | Currency code (EUR) |
| `pricePerSqm` | Price per square meter (EUR/m²) |
| `monthlyRent` | Monthly rent for rentals (null for sales) |
| `mortgage` | Estimated monthly mortgage |
| `hasPriceRange` | True if the price is a range |
| `areaSqm` | Surface area in m² |
| `rooms` | Number of rooms (locali) |
| `bathrooms` | Number of bathrooms (bagni) |
| `parkings` | Number of parking spaces / boxes |
| `energyClass` | Energy efficiency class (A4–G) |
| `availability` | Availability status (libero, …) |
| `floor` | Floor / level |
| `isAuction` | Whether the listing is an auction |
| `isNewDevelopment` | Whether it is a new-development project |
| `depth` | Listing prominence tier (platinum, …) |
| `labels` | Listing badge labels (IN ESCLUSIVA, …) |
| `street` | Street name |
| `block` | Block / micro-zone name |
| `district` | District / neighbourhood |
| `city` | City / comune |
| `province` | Province |
| `region` | Region (regione) |
| `fullAddress` | Composed full address string |
| `latitude` | GPS latitude |
| `longitude` | GPS longitude |
| `mainImageUrl` | Main listing image URL |
| `imageUrls` | Array of all image URLs |
| `imageCount` | Number of images |
| `floorplanCount` | Number of floorplan images |
| `hasVideo` | Whether a video is present |
| `has360` | Whether a 360° photo is present |
| `has3dTour` | Whether a 3D virtual tour is present |
| `publisherId` | Agency / publisher ID |
| `publisherName` | Agency / publisher name |
| `publisherType` | Publisher type (Agency, …) |
| `publisherSlug` | Publisher URL slug |
| `publisherPhone` | Agency contact phone number |
| `publisherWebsite` | Agency website |
| `publisherLogoUrl` | Agency logo image URL |
| `publisherUrl` | Agency profile URL on Casa.it |
| `publisherStreet` | Agency street address |
| `publisherTown` | Agency town |
| `publisherProvince` | Agency province |
| `publisherPostcode` | Agency postcode (CAP) |
| `refPublisher` | Publisher-side reference code |
| `searchTransaction` | Transaction type used for this search |
| `searchPropertyType` | Property type used for this search |
| `searchLocation` | Location slug used for this search |
| `searchUrl` | Full search URL used |
| `scrapedAt` | Scrape timestamp (ISO 8601) |

</details>

***

### 💡 Use cases

- 📊 **Market research** — build EUR/m² heatmaps by region, province, city and district across the Italian property market.
- 💰 **Investment / rental-yield screening** — scrape sale and rent listings for the same area, then compare `monthlyRent` against `price` and `pricePerSqm` to compute gross rental yield per neighbourhood.
- 🎯 **Lead generation** — use `sellerType: private` to find direct-owner (privato) listings, or cluster agency listings by `publisherId` and pull `publisherPhone` / `publisherWebsite` for real-estate agency outreach.
- 📈 **Price tracking** — re-run on a schedule and diff against prior datasets to monitor price changes and new listings over time.
- ⚡ **Energy-efficiency analysis** — filter and aggregate by `energyClass` to study the Italian housing stock and the green-building segment.
- 🗺️ **Cross-city comparison** — pass multiple `locationSlugs` in one run to benchmark prices across Italian cities such as Roma, Milano, Napoli and Torino.

***

### 👥 Who uses it

Italian estate agencies · proptech & portal builders · property investors & flippers · valuation & mortgage analysts · data journalists · market researchers · B2B lead-gen teams targeting agencies and private sellers.

***

### 💰 Pricing

This Actor runs on Apify's **pay-per-result** model: you pay for the listings you extract, with no monthly subscription and no Casa.it API fees. See the **Pricing** tab on the Actor's Apify page for current rates, and use `maxListings` and `maxPagesPerTask` to keep any run inside your budget.

***

### ❓ Frequently Asked Questions

#### Is this a Casa.it API alternative?

Yes. Casa.it has no open public listings API, so this Actor works as an unofficial **Casa.it API alternative** — it reads the site's embedded `__INITIAL_STATE__` JSON and returns structured Italian real-estate data with no API key.

#### Can I scrape Casa.it without an API or login?

Yes. No Casa.it account, login or API key is needed — only an Apify account. The Actor pulls publicly available property listings over direct HTTP, so you can scrape Casa.it without an API.

#### How do I export Casa.it data to CSV or JSON?

Run the Actor, then export the resulting dataset as **CSV, JSON, Excel or XML** from the Apify console or via the Apify API. This makes it easy to export Casa.it property data to CSV or JSON for spreadsheets and BI tools.

#### Is it legal to scrape Casa.it?

The Actor only collects **publicly available** property listing data — the same information any visitor can see. You are responsible for using the data in compliance with Casa.it's terms and applicable laws such as the GDPR, especially when handling agency contact details.

#### How much data can I get?

You can scrape **thousands of listings per run**. Casa.it returns roughly 20–25 listings per page; narrow with price and area filters and raise `maxPagesPerTask` to reach deeper inventory across multiple locations.

**Do I need a proxy?**
Yes. Casa.it is fronted by DataDome bot protection. Datacenter proxies are blocked, so **residential Apify Proxy with country=IT is strongly recommended**. The Actor rotates the IP on every blocked request and retries, so it runs cleanly with a healthy retry budget (6–10) and a ≥ 600 ms request delay.

**Does it handle both rent and sale?**
Yes. Set `transaction` to `sale` (vendita) or `rent` (affitto). For rentals the monthly rent is returned in `monthlyRent`; for sales the asking price is in `price`. `pricePerSqm` is computed from whichever value applies.

**How do I target a specific city or zone?**
Casa.it uses URL location slugs. Browse casa.it, apply a location filter, and copy the segment after `/vendita/residenziale/` or `/affitto/residenziale/` from the URL. Pass one or many slugs — each becomes its own scraping task.

**How do I scrape apartments for sale in Rome?**
Set `locationSlugs` to `["roma"]`, `transaction` to `sale` and `propertyType` to `apartment`. The scraper returns Rome apartments with price, EUR/m², area, rooms, address, energy class and GPS.

### 🔗 More real estate scrapers by logiover

Building a cross-country property dataset? Pair Casa.it with the rest of the suite and benchmark Italy against the rest of Europe and beyond:

| Country | Actor |
|---------|-------|
| 🇮🇹 Italy | [Subito.it Property Scraper](https://apify.com/logiover/subito-it-property-scraper) |
| 🇪🇸 Spain | [Habitaclia Scraper](https://apify.com/logiover/habitaclia-com-spain-scraper) · [Pisos.com Scraper](https://apify.com/logiover/pisos-com-property-scraper) |
| 🇳🇱 Netherlands | [Funda Scraper](https://apify.com/logiover/funda-scraper) |
| 🇩🇪 Germany | [ImmobilienScout24 Scraper](https://apify.com/logiover/immobilienscout24-de-scraper-germany-real-estate) · [WG-Gesucht Scraper](https://apify.com/logiover/wg-gesucht-scraper) |
| 🇵🇹 Portugal | [Imovirtual Scraper](https://apify.com/logiover/imovirtual-pt-scraper-portugal-real-estate) |
| 🇫🇷 France | [Bien'ici Scraper](https://apify.com/logiover/bien-ici-fr-scraper-france-real-estate) |
| 🇷🇴 Romania | [Storia.ro Scraper](https://apify.com/logiover/storia-ro-scraper-romania-real-estate) |
| 🇩🇰 Denmark | [Boliga.dk Scraper](https://apify.com/logiover/boliga-scraper) |
| 🇬🇷 Greece | [Spitogatos Scraper](https://apify.com/logiover/spitogatos-gr-real-estate-scraper-greece-properties-data) · [XE.gr Scraper](https://apify.com/logiover/xe-gr-real-estate-scraper-greece-property-data) |
| 🇮🇪 Ireland | [Daft.ie Scraper](https://apify.com/logiover/daft-ie-scraper) · [MyHome.ie Scraper](https://apify.com/logiover/myhome-ie-scraper) |
| 🇸🇬 Singapore | [EdgeProp.sg Scraper](https://apify.com/logiover/edgeprop-sg-scraper) |
| 🇺🇸 USA | [Realtor.com Scraper](https://apify.com/logiover/realtor-com-scraper) · [Redfin Scraper](https://apify.com/logiover/redfin-scraper) |

👉 Browse all **[logiover scrapers on Apify Store](https://apify.com/logiover)** — 180+ actors across real estate, jobs, crypto, social media & B2B data.

***

### ⏰ Scheduling & integration

Schedule this Actor on Apify to track the Italian property market daily or weekly. Export results to JSON, CSV or Excel, sync to Google Sheets, or push to your database, BI tools and webhooks through the Apify API. Wire it into **Make, n8n or Zapier** to trigger CRM syncs, price-drop alerts and dashboards, and combine multiple location slugs and property types to build a nationwide Italian real-estate dataset that stays fresh automatically.

### ⭐ Support & feedback

Found a bug or need a new field or filter? Open an issue on the Actor's **Issues** tab. If this scraper saves you time, please leave a ★★★★★ review on the Apify Store — it genuinely helps and guides the roadmap.

### ⚖️ Legal

This Actor collects **publicly available** property listing data only — the same information any visitor can see without logging in. You are responsible for using the data in compliance with **Casa.it's terms of use**, applicable Italian and EU law, and data-protection rules including the **GDPR** when handling any personal or agency contact details.

***

### 📝 Changelog

#### 2026-07-06

- ✨ README overhaul: richer output sample, ready-to-run example scenarios, cross-country real-estate suite links, and clearer quick-start.

#### 2026-07-06 — Initial release

- First public release: Casa.it real estate scraper with direct HTTP + embedded `__INITIAL_STATE__` JSON extraction (no browser).
- Filters for location, sale/rent, property type, price (EUR), area (m²), rooms, bathrooms, seller type and sort order.
- Rich output: price, price/m², monthly rent, energy class, GPS, full Italian address, agency contact (phone + website), image gallery and labels.
- DataDome-aware residential-proxy handling with user-agent rotation and per-page IP-rotating retries.
- Verified end-to-end on live data within the 5-minute quality window on the default input.

# Actor input Schema

## `locationSlugs` (type: `array`):

Casa.it URL location paths (comuni, provinces or zones). Each slug becomes its own scraping task. Use a city like `roma`, `milano`, `napoli`, `torino`, a province, or a deeper zone segment. Find one by browsing casa.it, applying a location filter, and copying the segment that follows `/vendita/residenziale/` (or `/affitto/residenziale/`) in the URL. Common slugs are listed in the README.

## `transaction` (type: `string`):

Sale (`vendita`) or rent (`affitto`).

## `propertyType` (type: `string`):

Residential property category. `All` returns every residential type. Maps to the Casa.it `propertyTypes` filter.

## `priceMin` (type: `integer`):

Minimum price in euro. For rentals this is the minimum monthly rent. 0 = no minimum.

## `priceMax` (type: `integer`):

Maximum price in euro. For rentals this is the maximum monthly rent. 0 = no maximum.

## `areaMin` (type: `integer`):

Minimum surface area in square meters. 0 = no minimum.

## `areaMax` (type: `integer`):

Maximum surface area in square meters. 0 = no maximum.

## `roomsMin` (type: `integer`):

Minimum room count (locali). 0 = no minimum.

## `roomsMax` (type: `integer`):

Maximum room count (locali). 0 = no maximum.

## `bathroomsMin` (type: `integer`):

Minimum number of bathrooms (bagni). 0 = no minimum.

## `sellerType` (type: `string`):

Filter by who is listing the property.

## `sort` (type: `string`):

Result ordering. Maps to the Casa.it `sortType` query parameter.

## `imageSize` (type: `string`):

Resolution segment used to build image CDN URLs (Casa.it serves multiple sizes from the same path).

## `maxListings` (type: `integer`):

Total cap across all location tasks (0 = unlimited).

## `maxPagesPerTask` (type: `integer`):

Pagination depth per location (Casa.it returns ~20-25 listings per page). Narrow with price/area filters to reach deeper inventory.

## `requestDelay` (type: `integer`):

Delay between sequential page requests. Casa.it is fronted by DataDome — keep ≥ 600 ms.

## `maxRetries` (type: `integer`):

Retries per page on anti-bot blocks or HTTP errors. Each retry rotates the proxy IP. Casa.it uses DataDome, so a generous budget (6-10) is recommended.

## `proxyConfiguration` (type: `object`):

Apify Proxy is required. Casa.it is fronted by DataDome bot protection — RESIDENTIAL with country=IT is strongly recommended; datacenter proxies are blocked.

## Actor input object example

```json
{
  "locationSlugs": [
    "roma"
  ],
  "transaction": "sale",
  "propertyType": "all",
  "priceMin": 0,
  "priceMax": 0,
  "areaMin": 0,
  "areaMax": 0,
  "roomsMin": 0,
  "roomsMax": 0,
  "bathroomsMin": 0,
  "sellerType": "all",
  "sort": "relevance",
  "imageSize": "800x600",
  "maxListings": 60,
  "maxPagesPerTask": 3,
  "requestDelay": 900,
  "maxRetries": 8,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IT"
  }
}
```

# Actor output Schema

## `adId` (type: `string`):

Casa.it listing ID

## `detailUrl` (type: `string`):

Full URL to the listing page

## `title` (type: `string`):

Listing title

## `titleExtra` (type: `string`):

Additional title / zone label

## `description` (type: `string`):

Listing description snippet

## `transactionType` (type: `string`):

sale / rent

## `channel` (type: `string`):

Raw channel (vendita / affitto)

## `category` (type: `string`):

Casa.it category (residenziale, ...)

## `propertyType` (type: `string`):

Property type slug (appartamento, villa, ...)

## `propertyTypeGroup` (type: `string`):

Property type group (case, ...)

## `price` (type: `string`):

Asking price for sales (null for rentals)

## `priceLabel` (type: `string`):

Formatted price string as shown on the site

## `priceCurrency` (type: `string`):

Currency code (EUR)

## `pricePerSqm` (type: `string`):

Price per square meter

## `monthlyRent` (type: `string`):

Monthly rent for rentals (null for sales)

## `mortgage` (type: `string`):

Estimated monthly mortgage shown by Casa.it

## `hasPriceRange` (type: `string`):

True if the price is a range

## `areaSqm` (type: `string`):

Surface area in square meters

## `rooms` (type: `string`):

Number of rooms (locali)

## `bathrooms` (type: `string`):

Number of bathrooms (bagni)

## `parkings` (type: `string`):

Number of parking spaces / boxes

## `energyClass` (type: `string`):

Energy efficiency class (A4-G)

## `availability` (type: `string`):

Availability status (libero, ...)

## `floor` (type: `string`):

Floor / level

## `isAuction` (type: `string`):

True if the listing is an auction

## `isNewDevelopment` (type: `string`):

True if a new-development project profile

## `depth` (type: `string`):

Listing prominence tier (platinum, ...)

## `labels` (type: `string`):

Listing badge labels (IN ESCLUSIVA, ...)

## `street` (type: `string`):

Street name

## `block` (type: `string`):

Block / micro-zone name

## `district` (type: `string`):

District / neighbourhood

## `city` (type: `string`):

City / comune

## `province` (type: `string`):

Province

## `region` (type: `string`):

Region (regione)

## `fullAddress` (type: `string`):

Composed full address string

## `latitude` (type: `string`):

GPS latitude

## `longitude` (type: `string`):

GPS longitude

## `mainImageUrl` (type: `string`):

Cover photo URL

## `imageUrls` (type: `string`):

All listing image URLs

## `imageCount` (type: `string`):

Total number of images

## `floorplanCount` (type: `string`):

Number of floorplan images

## `hasVideo` (type: `string`):

True if a video is present

## `has360` (type: `string`):

True if a 360° photo is present

## `has3dTour` (type: `string`):

True if a 3D virtual tour is present

## `publisherId` (type: `string`):

Agency / publisher ID

## `publisherName` (type: `string`):

Agency / publisher display name

## `publisherType` (type: `string`):

Publisher type (Agency, ...)

## `publisherSlug` (type: `string`):

Publisher URL slug

## `publisherPhone` (type: `string`):

Agency contact phone number

## `publisherWebsite` (type: `string`):

Agency website

## `publisherLogoUrl` (type: `string`):

Agency logo image URL

## `publisherUrl` (type: `string`):

Agency profile URL on Casa.it

## `publisherStreet` (type: `string`):

Agency street address

## `publisherTown` (type: `string`):

Agency town

## `publisherProvince` (type: `string`):

Agency province

## `publisherPostcode` (type: `string`):

Agency postcode

## `refPublisher` (type: `string`):

Publisher-side reference code for the listing

## `searchTransaction` (type: `string`):

Transaction used in search

## `searchPropertyType` (type: `string`):

Property type used in search

## `searchLocation` (type: `string`):

Location slug used in search

## `searchUrl` (type: `string`):

Full search URL used

## `scrapedAt` (type: `string`):

ISO timestamp

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locationSlugs": [
        "roma"
    ],
    "maxListings": 60,
    "maxPagesPerTask": 3,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IT"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/casa-it-scraper-italy-real-estate").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "locationSlugs": ["roma"],
    "maxListings": 60,
    "maxPagesPerTask": 3,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IT",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/casa-it-scraper-italy-real-estate").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locationSlugs": [
    "roma"
  ],
  "maxListings": 60,
  "maxPagesPerTask": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IT"
  }
}' |
apify call logiover/casa-it-scraper-italy-real-estate --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=logiover/casa-it-scraper-italy-real-estate",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Casa.it Scraper — Italy Real Estate Data",
        "description": "Scrape Italian real estate listings from Casa.it (no browser, no API key). Filter by location, sale/rent, property type, price (EUR), area, rooms & seller. Returns price, price/m², GPS, full address, agency phone & website, energy class and image gallery per listing.",
        "version": "1.0",
        "x-build-id": "x52j1VL486f0kg0hL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~casa-it-scraper-italy-real-estate/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-casa-it-scraper-italy-real-estate",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/logiover~casa-it-scraper-italy-real-estate/runs": {
            "post": {
                "operationId": "runs-sync-logiover-casa-it-scraper-italy-real-estate",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/logiover~casa-it-scraper-italy-real-estate/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-casa-it-scraper-italy-real-estate",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "locationSlugs"
                ],
                "properties": {
                    "locationSlugs": {
                        "title": "Location Slugs",
                        "type": "array",
                        "description": "Casa.it URL location paths (comuni, provinces or zones). Each slug becomes its own scraping task. Use a city like `roma`, `milano`, `napoli`, `torino`, a province, or a deeper zone segment. Find one by browsing casa.it, applying a location filter, and copying the segment that follows `/vendita/residenziale/` (or `/affitto/residenziale/`) in the URL. Common slugs are listed in the README.",
                        "default": [
                            "roma"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "transaction": {
                        "title": "Transaction Type",
                        "enum": [
                            "sale",
                            "rent"
                        ],
                        "type": "string",
                        "description": "Sale (`vendita`) or rent (`affitto`).",
                        "default": "sale"
                    },
                    "propertyType": {
                        "title": "Property Type",
                        "enum": [
                            "all",
                            "apartment",
                            "penthouse",
                            "villa",
                            "terraced_house",
                            "detached_house",
                            "farmhouse",
                            "loft",
                            "studio",
                            "two_room",
                            "three_room",
                            "four_room"
                        ],
                        "type": "string",
                        "description": "Residential property category. `All` returns every residential type. Maps to the Casa.it `propertyTypes` filter.",
                        "default": "all"
                    },
                    "priceMin": {
                        "title": "Min Price (EUR)",
                        "minimum": 0,
                        "maximum": 1000000000,
                        "type": "integer",
                        "description": "Minimum price in euro. For rentals this is the minimum monthly rent. 0 = no minimum.",
                        "default": 0
                    },
                    "priceMax": {
                        "title": "Max Price (EUR)",
                        "minimum": 0,
                        "maximum": 1000000000,
                        "type": "integer",
                        "description": "Maximum price in euro. For rentals this is the maximum monthly rent. 0 = no maximum.",
                        "default": 0
                    },
                    "areaMin": {
                        "title": "Min Area (m²)",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Minimum surface area in square meters. 0 = no minimum.",
                        "default": 0
                    },
                    "areaMax": {
                        "title": "Max Area (m²)",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum surface area in square meters. 0 = no maximum.",
                        "default": 0
                    },
                    "roomsMin": {
                        "title": "Min Rooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Minimum room count (locali). 0 = no minimum.",
                        "default": 0
                    },
                    "roomsMax": {
                        "title": "Max Rooms",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum room count (locali). 0 = no maximum.",
                        "default": 0
                    },
                    "bathroomsMin": {
                        "title": "Min Bathrooms",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Minimum number of bathrooms (bagni). 0 = no minimum.",
                        "default": 0
                    },
                    "sellerType": {
                        "title": "Seller Type",
                        "enum": [
                            "all",
                            "agency",
                            "private"
                        ],
                        "type": "string",
                        "description": "Filter by who is listing the property.",
                        "default": "all"
                    },
                    "sort": {
                        "title": "Sort Order",
                        "enum": [
                            "relevance",
                            "latest",
                            "price_asc",
                            "price_desc",
                            "area_asc",
                            "area_desc"
                        ],
                        "type": "string",
                        "description": "Result ordering. Maps to the Casa.it `sortType` query parameter.",
                        "default": "relevance"
                    },
                    "imageSize": {
                        "title": "Image Size",
                        "enum": [
                            "360x270",
                            "800x600",
                            "1024x768",
                            "1280x960"
                        ],
                        "type": "string",
                        "description": "Resolution segment used to build image CDN URLs (Casa.it serves multiple sizes from the same path).",
                        "default": "800x600"
                    },
                    "maxListings": {
                        "title": "Max Listings",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Total cap across all location tasks (0 = unlimited).",
                        "default": 60
                    },
                    "maxPagesPerTask": {
                        "title": "Max Pages per Task",
                        "minimum": 1,
                        "maximum": 80,
                        "type": "integer",
                        "description": "Pagination depth per location (Casa.it returns ~20-25 listings per page). Narrow with price/area filters to reach deeper inventory.",
                        "default": 3
                    },
                    "requestDelay": {
                        "title": "Request Delay (ms)",
                        "minimum": 0,
                        "maximum": 30000,
                        "type": "integer",
                        "description": "Delay between sequential page requests. Casa.it is fronted by DataDome — keep ≥ 600 ms.",
                        "default": 900
                    },
                    "maxRetries": {
                        "title": "Max Retries",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Retries per page on anti-bot blocks or HTTP errors. Each retry rotates the proxy IP. Casa.it uses DataDome, so a generous budget (6-10) is recommended.",
                        "default": 8
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify Proxy is required. Casa.it is fronted by DataDome bot protection — RESIDENTIAL with country=IT is strongly recommended; datacenter proxies are blocked."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
