# Immobiliare.it Scraper & API: Listings, Price Drops | $0.4/1K (`epicscrapers/immobiliare-scraper`) Actor

Immobiliare.it scraper and API: paste a search, agency or listing URL and get price, price drop, price per m², size, rooms, GPS, photos and the agency's name and phone. No 2,000-result cap. Track new, repriced and removed listings on a schedule. From $0.40/1K.

- **URL**: https://apify.com/epicscrapers/immobiliare-scraper.md
- **Developed by:** [Epic Scrapers](https://apify.com/epicscrapers) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 25.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.40 / 1,000 listing saveds

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

![Immobiliare.it Scraper: median price per m² in Milan, Florence, Rome, Bologna and Naples, and 1,000 listings from $0.40](https://api.apify.com/v2/key-value-stores/pDdxaXt9jQOsoZMaf/records/banner.png)

### Immobiliare.it Scraper and API: Italian property listings, price per m², price drops and agency phones

> 🇮🇹 **Italiano:** [leggi la guida in italiano](#in-italiano-immobiliareit-api-e-scraper) (API, prezzo al metro quadro, elenco agenzie immobiliari).

Immobiliare.it Scraper turns any Immobiliare.it search into a spreadsheet of property listings: price, price drop, price per m², size, rooms, floor, condition, full address, GPS coordinates, photos, and the agency's name and phone number. It is built for investors, agents, analysts and proptech teams who track asking prices, rents and new stock in Italy. Paste a search URL, an agency page or a single listing, and get one clean row per property.

- **Your own search, every filter.** Set up the search on immobiliare.it (city, zone, province, sale or rent, auctions, new builds, price, size, rooms, sort order), copy the address and paste it. The Actor reads every filter from the URL.
- **No 2,000-result cap.** The website stops at 80 pages. This Actor reads the whole search, so even all homes for sale in Rome or Milan come back in one run.
- **Price drops built in.** When an agency cuts the price, the row has `originalPrice` and `priceDropPercent`. `pricePerSqm` is filled for every listing with a surface.
- **Agency phone included.** `agencyName`, `agencyId` and `agencyPhone` come with the search data whenever the agency publishes a phone, at no extra cost.
- **Only what changed.** Turn on monitoring, schedule the task, and each run saves only listings that are new, repriced or removed since the last run, with the previous price.
- **Full records on demand.** Turn on `includeDetails` for the description, energy class, year built, condo fees, availability, agent name and every characteristic Immobiliare.it lists.
- **Your own Immobiliare.it API.** Call it over HTTP from any language and get JSON back, no Immobiliare.it contract needed. Or export to CSV, Excel or Google Sheets.
- **From $0.40 per 1,000 listings.** Pay per listing, no subscription, proxy included.

**Scope:** Immobiliare.it in Italy. For Idealista (Italy, Spain, Portugal, France) use [Idealista Scraper](https://apify.com/epicscrapers/idealista-scraper). For Italian classifieds, including private sellers, use [Subito Real Estate Scraper](https://apify.com/epicscrapers/subito-realestate-scraper).

### What can you do with Immobiliare.it Scraper?

| Goal | How |
| --- | --- |
| Find motivated sellers | Search a city, then filter rows where `priceDropPercent` is set and sort by it. |
| Get alerts for new listings | Save the search as a task with **Only new listings and price changes** on and schedule it daily. |
| Measure time on market | Keep monitoring on: removed listings come back with `firstSeenAt` and `removedAt`. |
| Compare zones | Group by `macrozone` or `microzone` and take the median `pricePerSqm`. |
| Build a rental yield model | Run the same city for `vendita` and `affitto` and compare median `pricePerSqm` per zone. |
| Generate agency leads | Count listings per `agencyName`, with `agencyPhone`, or paste an agency page to get its whole portfolio. |
| Find renovation projects | Filter on `condition` = `Da ristrutturare` and a maximum `price`. |
| Map a market | Plot `latitude` and `longitude`. |

### How it compares

| | Immobiliare.it Scraper | Typical Immobiliare.it scrapers |
| --- | --- | --- |
| Price per 1,000 listings | From $0.40, no start fee | $0.50–$2.00, often plus a start fee |
| Searches over 2,000 listings | Read in full | Varies; the website itself stops at 80 pages |
| Input | Search, agency and listing URLs, as many as you like | Often one search URL per run |
| Price drop fields | `originalPrice`, `priceDropPercent` | Rarely |
| New, repriced and removed listings | Built in, removals checked against Immobiliare.it | Separate tools, extra cost or none |
| Agency phone | Included with the search data | Varies |
| Failed URLs | Logged, never charged | Sometimes saved as paid rows |

### Quick start

1. Click **Try for free** and sign in to Apify.
2. Open [immobiliare.it](https://www.immobiliare.it), set up your search and copy the address from the browser.
3. Paste it into **Immobiliare.it URLs**. Set **Maximum results** to `100` for a first run.
4. Click **Start**, then open the **Output** tab and export the data.

```json
{
    "startUrls": ["https://www.immobiliare.it/vendita-case/milano/?prezzoMassimo=300000"],
    "maxResults": 100
}
```

### What URLs can you paste?

| URL | Example | What you get |
| --- | --- | --- |
| Search for sale | `https://www.immobiliare.it/vendita-case/roma/` | Every listing of the search, with all its filters |
| Search for rent | `https://www.immobiliare.it/affitto-case/milano/?prezzoMassimo=1200` | Rentals; `price` is the monthly rent |
| Zone or province | `https://www.immobiliare.it/vendita-case/genova-provincia/` | Everything in the area |
| Sorted search | `https://www.immobiliare.it/vendita-case/roma/?criterio=data&ordine=desc` | Newest first (any sort the site offers) |
| Auctions | `https://www.immobiliare.it/aste-immobiliari/torino/` | Auction listings |
| New builds | `https://www.immobiliare.it/nuove-costruzioni/milano/` | New developments |
| Agency page | `https://www.immobiliare.it/agenzie-immobiliari/183304/` | All of the agency's listings |
| Single listing | `https://www.immobiliare.it/annunci/130722394/` | One row with full details |

Searches drawn on the map (`search-list/?vrt=…`) are not supported; the run logs a message and moves on. Use the city or zone search instead.

### Use it as an Immobiliare.it API

Immobiliare.it has no public API for reading listings: its APIs are for agencies publishing their ads and for its paid Insights market data. This Actor works as a listings API: send the input, get the listings back as JSON in the same HTTP call.

```bash
curl -X POST "https://api.apify.com/v2/acts/epicscrapers~immobiliare-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": ["https://www.immobiliare.it/vendita-case/milano/?prezzoMassimo=300000"], "maxResults": 100}'
```

The same works from Python or JavaScript with the [Apify client](https://docs.apify.com/api/client/python), from Make, Zapier or n8n, or from an AI agent through the [Apify MCP server](https://mcp.apify.com). Build search URLs with the website's filters: `prezzoMassimo`, `prezzoMinimo`, `superficieMinima`, `localiMinimo`, `criterio=data&ordine=desc` (newest first).

### Input reference

| Field | Type | Default | Effect |
| --- | --- | --- | --- |
| `startUrls` | Array of URLs | Required | Immobiliare.it search, agency or listing URLs. Strings or `{ "url": "…" }` objects. |
| `maxResults` | Integer | `100` | Maximum listings saved in the run, across all URLs. Set it to the search's total to get everything. |
| `includeDetails` | Boolean | `false` | Opens each listing for the description, energy class, year built, condo fees, availability, agent and all characteristics. Extra event per listing. |
| `monitoringMode` | Boolean | `false` | Saves only new, repriced and removed listings since the last run of the same URL. |
| `proxyConfiguration` | Object | Apify Proxy | Datacenter proxy works and is included. The Actor changes IP by itself when one is blocked. |

The Actor requests Italian texts, prices in EUR and surfaces in m², like the Immobiliare.it app. The same listing found by two URLs is saved once.

### Output

Each listing is one row in the run's dataset. Export it as JSON, CSV, Excel, XML or HTML. A real row from a Genoa search with `includeDetails` on, photos and description shortened, phone masked:

```json
{
    "id": 133099264,
    "url": "https://www.immobiliare.it/annunci/133099264/",
    "title": "Appartamento",
    "contract": "Vendita",
    "typology": "Appartamento",
    "category": "Residenziale",
    "price": 99900,
    "priceFormatted": "€ 99.900",
    "currency": "EUR",
    "pricePerSqm": 1816,
    "originalPrice": null,
    "priceDropPercent": null,
    "surface": 55,
    "rooms": "2",
    "bedrooms": 1,
    "bathrooms": 1,
    "floor": "4",
    "elevator": false,
    "heating": "Autonomo",
    "condition": "Buono / Abitabile",
    "isLuxury": false,
    "isNewConstruction": false,
    "features": ["fibra ottica", "porta blindata", "armadio a muro"],
    "address": "Via delle Casette, 80",
    "zipcode": "16132",
    "city": "Genova",
    "province": "Genova",
    "provinceCode": "GE",
    "region": "Liguria",
    "macrozone": "Albaro, Sturla",
    "microzone": "Sturla",
    "latitude": 44.4021,
    "longitude": 8.9843,
    "advertiserType": "agency",
    "agencyName": "Casa Gold Immobiliare",
    "agencyId": 434097,
    "agencyPhone": "+39010…",
    "images": ["https://pwm.im-cdn.it/image/2047873025/xxl.jpg"],
    "imageCount": 33,
    "createdAt": "2026-09-30T15:07:36.000Z",
    "updatedAt": "2026-11-03T21:11:00.000Z",
    "visibility": "Sky",
    "description": "In una zona strategica del quartiere di Sturla, in Via delle Casette, proponiamo in vendita un accogliente appartamento di circa 55 mq…",
    "energyClass": "F",
    "energyConsumption": "≥ 175 kWh/m² anno",
    "yearBuilt": 1920,
    "condoFees": "€ 60/mese",
    "availability": "libero",
    "agentName": "Laura Bertazzo",
    "featureTags": ["Armadio a muro", "Esposizione esterna", "Fibra ottica", "Porta blindata"],
    "characteristics": {
        "Tipologia": "Appartamento | Intera proprietà | Classe immobile media",
        "Cucina": "Cucina angolo cottura",
        "Balcone": "No",
        "Cantina": "No",
        "Piani edificio": "4 piani",
        "Riscaldamento": "Autonomo, a radiatori, alimentato a gas"
    }
}
```

With monitoring on, rows also have `changeType` (`new` or `priceChanged`), `previousPrice` and `firstSeenAt`. A listing that was taken down comes back as a short row like this:

```json
{
    "id": 128455012,
    "url": "https://www.immobiliare.it/annunci/128455012/",
    "changeType": "removed",
    "previousPrice": 245000,
    "firstSeenAt": "2026-10-01T06:00:12.000Z",
    "removedAt": "2026-11-08T06:00:41.000Z"
}
```

#### Notes on fields

- `price` is a number in EUR; for rentals it is the monthly rent. For auctions it is the starting bid, and `priceFormatted` reads `da € …`.
- `originalPrice` and `priceDropPercent` are set only when the agency has cut the price.
- `pricePerSqm` is `price` divided by `surface`, rounded.
- `rooms` is text because Immobiliare.it uses values like `"5+"`. `bedrooms` and `bathrooms` are numbers.
- `createdAt` and `updatedAt` are ISO dates (UTC).
- The fields from `description` to `characteristics` are present only with `includeDetails` on, or for listing URLs.
- Missing values are `null`.

### Track Immobiliare.it over time with scheduled runs

Most of the value comes from running the same search again. Apify can run the Actor for you on a schedule and send the results wherever you need them.

#### 1. Save your input as a task

Set your URLs, turn on **Only new listings and price changes**, set **Maximum results** at least as high as the search's total, and click **Save as a new task**. Monitoring remembers each URL separately, so one task can watch several searches.

#### 2. Schedule the task

In Apify Console, go to **Schedules**, click **Create new**, choose how often to run and add your task. See [Schedules](https://docs.apify.com/platform/schedules).

https://www.youtube.com/watch?v=GRFW_Loo2dk

| Use case | Frequency | Cron expression |
| --- | --- | --- |
| New listing alerts | Daily at 06:00 | `0 6 * * *` |
| Price drop watch | Twice a day | `0 6,18 * * *` |
| Market report by zone | Weekly, Monday | `0 6 * * 1` |

#### 3. Send the results to a spreadsheet or your inbox

Connect Google Sheets, Slack, email or a webhook in the task's **Integrations** tab, so each run's new listings land where you work:

https://www.youtube.com/watch?v=IFTeKdj6ZGM

#### 4. Read the changes

- **New listings:** `changeType` = `new`.
- **Price cuts and raises:** `changeType` = `priceChanged`, compare `price` with `previousPrice`.
- **Sold or withdrawn:** `changeType` = `removed`; `removedAt` minus `firstSeenAt` is the time on market.

The first monitored run saves everything as new. Later runs save only changes.

### Ready-to-run examples

Homes under €300,000 in Milan, newest first:

```json
{
    "startUrls": ["https://www.immobiliare.it/vendita-case/milano/?prezzoMassimo=300000&criterio=data&ordine=desc"],
    "maxResults": 500
}
```

Every rental in Bologna, with full details:

```json
{
    "startUrls": ["https://www.immobiliare.it/affitto-case/bologna/"],
    "maxResults": 5000,
    "includeDetails": true
}
```

Daily watch of Turin auctions and one agency:

```json
{
    "startUrls": [
        "https://www.immobiliare.it/aste-immobiliari/torino/",
        "https://www.immobiliare.it/agenzie-immobiliari/183304/"
    ],
    "maxResults": 5000,
    "monitoringMode": true
}
```

### For AI agents

Call `epicscrapers/immobiliare-scraper` with a list of immobiliare.it URLs. Minimal input:

```json
{ "startUrls": ["https://www.immobiliare.it/vendita-case/roma/"], "maxResults": 50 }
```

Key output fields: `id`, `url`, `price`, `pricePerSqm`, `priceDropPercent`, `surface`, `rooms`, `bedrooms`, `bathrooms`, `city`, `macrozone`, `latitude`, `longitude`, `agencyName`, `agencyPhone`, `createdAt`. Add `"includeDetails": true` for `description`, `energyClass`, `yearBuilt` and `condoFees`. To build a search URL, use the immobiliare.it path pattern `/{vendita|affitto}-case/{city}/` with filters such as `prezzoMassimo`, `superficieMinima` and `localiMinimo`.

### FAQ

#### Why did I get fewer results than my limit?

The search has fewer listings than `maxResults`, or the same listing appeared under several of your URLs and was saved once. The run log shows the total for each URL.

#### Can I get a whole city?

Yes. Set `maxResults` to the search's total (the log prints it). There is no 2,000-result cap, so a whole city fits in one run.

#### How fast is it?

Search data comes in at thousands of listings per minute. With `includeDetails` on, each listing needs one more request, so runs take a few times longer.

#### Should I turn on `includeDetails`?

Search rows already have the price, price drop, surface, rooms, floor, condition, address, coordinates, photos and agency phone. Turn it on when you need the description, energy class, year built, condo fees or the full characteristics list.

#### How does it know a listing was removed?

At the end of a complete monitored scan, every listing that the search no longer returns is checked with Immobiliare.it. Only listings Immobiliare.it no longer has are reported as removed; listings that just moved out of your filters (for example above your maximum price) are not.

#### Do I need proxies, an account or an API key?

No. Apify Proxy is used by default and included in the price.

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

The Actor collects publicly visible listing data. You are responsible for how you use it, including Immobiliare.it's terms and laws such as GDPR, especially for phone numbers and agent names.

### Cost

Pay per event, no subscription. Platform usage and proxy are included.

| Event | Free plan | Starter | Scale | Business and up |
| --- | --- | --- | --- | --- |
| Listing saved | $0.80 / 1,000 | $0.60 / 1,000 | $0.50 / 1,000 | $0.40 / 1,000 |
| Full listing details (`includeDetails` or listing URL) | $0.80 / 1,000 | $0.70 / 1,000 | $0.60 / 1,000 | $0.50 / 1,000 |
| Monitoring scan, per 1,000 listings checked | $0.01 | $0.01 | $0.01 | $0.01 |

| Run (Free plan) | Cost |
| --- | --- |
| 1,000 listings | $0.80 |
| 1,000 listings with full details | $1.60 |
| Daily monitoring of a 1,000-listing search, about 15 changes a day | about $0.66 per month |

Set a spending limit on the run and the Actor stops cleanly when it is reached, keeping what it saved.

### Related Actors

- [Idealista Scraper](https://apify.com/epicscrapers/idealista-scraper): Idealista listings in Italy, Spain, Portugal and France.
- [Subito Real Estate Scraper](https://apify.com/epicscrapers/subito-realestate-scraper): Italian property classifieds, including private sellers.

### In italiano: Immobiliare.it API e scraper

Immobiliare.it Scraper trasforma qualsiasi ricerca di Immobiliare.it in un foglio di calcolo di annunci immobiliari: prezzo, ribasso, prezzo al metro quadro, superficie, locali, piano, stato, indirizzo, coordinate GPS, foto, nome e telefono dell'agenzia. È pensato per investitori, agenzie, analisti e aziende proptech che seguono prezzi di vendita, affitti e nuovi annunci in Italia.

#### Un'API per gli annunci di Immobiliare.it

Immobiliare.it non ha un'API pubblica per leggere gli annunci: le sue API servono alle agenzie per pubblicare e ai dati a pagamento di Insights. Questo Actor funziona come un'**API di Immobiliare.it**: invii l'URL di una ricerca e ricevi gli annunci in JSON nella stessa chiamata HTTP, senza contratto e senza account Immobiliare.it.

```bash
curl -X POST "https://api.apify.com/v2/acts/epicscrapers~immobiliare-scraper/run-sync-get-dataset-items?token=<IL_TUO_TOKEN_APIFY>" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": ["https://www.immobiliare.it/vendita-case/milano/?prezzoMassimo=300000"], "maxResults": 100}'
```

Funziona anche da Python, JavaScript, Make, Zapier, n8n o da un agente AI tramite il [server MCP di Apify](https://mcp.apify.com).

#### Cosa ottieni

- **Le tue ricerche, con tutti i filtri.** Imposta la ricerca su immobiliare.it (città, zona, provincia, vendita o affitto, aste, nuove costruzioni, prezzo, superficie, locali, ordinamento), copia l'indirizzo e incollalo.
- **Nessun limite di 2.000 risultati.** Il sito si ferma a 80 pagine; l'Actor legge tutta la ricerca, anche un'intera città come Roma o Milano.
- **Prezzo al metro quadro e ribassi.** `pricePerSqm` è calcolato per ogni annuncio con superficie; `originalPrice` e `priceDropPercent` indicano quando l'agenzia ha abbassato il prezzo.
- **Elenco agenzie immobiliari con telefono.** `agencyName`, `agencyId` e `agencyPhone` sono inclusi nei dati di ricerca. Incolla la pagina di un'agenzia (`immobiliare.it/agenzie-immobiliari/…`) per avere tutti i suoi annunci.
- **Solo le novità.** Con il monitoraggio attivo e un'esecuzione pianificata, ogni esecuzione salva solo gli annunci nuovi, quelli con il prezzo cambiato e quelli rimossi, con il prezzo precedente.
- **Scheda completa su richiesta.** Con `includeDetails` aggiungi descrizione, classe energetica, anno di costruzione, spese condominiali, disponibilità, nome dell'agente e tutte le caratteristiche.

#### A cosa serve

| Obiettivo | Come |
| --- | --- |
| Prezzo al mq per zona | Raggruppa per `macrozone` o `microzone` e calcola la mediana di `pricePerSqm`. Ad esempio, i prezzi delle case a Milano o a Roma quartiere per quartiere. |
| Trovare venditori motivati | Filtra gli annunci con `priceDropPercent` e ordinali per ribasso. |
| Avvisi sui nuovi annunci | Salva la ricerca come task con **Only new listings and price changes** e pianificala ogni giorno. |
| Tempo sul mercato | Con il monitoraggio, gli annunci rimossi hanno `firstSeenAt` e `removedAt`. |
| Rendimento degli affitti | Esegui la stessa città per vendita e affitto e confronta il prezzo al metro quadro per zona. |
| Lead per agenzie | Conta gli annunci per `agencyName` con `agencyPhone`, oppure scarica il portafoglio di un'agenzia. |
| Immobili da ristrutturare | Filtra `condition` = `Da ristrutturare` e un `price` massimo. |

#### Come iniziare

1. Clicca **Try for free** e accedi ad Apify.
2. Apri [immobiliare.it](https://www.immobiliare.it), imposta la ricerca e copia l'indirizzo dal browser.
3. Incollalo in **Immobiliare.it URLs** e, per la prima prova, imposta **Maximum results** a `100`.
4. Clicca **Start**, poi apri la scheda **Output** ed esporta in Excel, CSV, JSON o Google Sheets.

#### Quanto costa

Paghi per annuncio, senza abbonamento, proxy incluso: da $0,80 per 1.000 annunci con il piano Free fino a $0,40 con i piani a pagamento più alti. La scheda completa costa da $0,50 a $0,80 per 1.000 annunci in più. I prezzi aggiornati sono nella scheda **Pricing** e nella sezione [Cost](#cost).

#### Domande frequenti

**Posso scaricare tutti gli annunci di una città?** Sì. Imposta **Maximum results** al totale della ricerca (lo trovi nel log). Non c'è il limite di 2.000 risultati.

**Funziona per affitti, aste e nuove costruzioni?** Sì, con qualsiasi URL di ricerca di immobiliare.it. Le ricerche disegnate sulla mappa non sono supportate: usa la ricerca per città, zona o provincia.

**Serve un account o una chiave API?** No. Serve solo un account Apify; il proxy è incluso.

**È legale?** L'Actor raccoglie dati pubblicamente visibili. Sei responsabile dell'uso che ne fai, inclusi i termini di Immobiliare.it e il GDPR, soprattutto per numeri di telefono e nomi degli agenti.

### Support

Report problems or request features in the **Issues** tab. Include the run ID, the input and what you expected.

This Actor is not affiliated with or endorsed by Immobiliare.it or Immobiliare.it Insights. "Immobiliare.it" is a trademark of its owner. Questo Actor non è un prodotto di Immobiliare.it né di Immobiliare.it Insights.

# Actor input Schema

## `startUrls` (type: `array`):

Search result pages (any city, zone, province, sale, rent, auctions or new builds, with any filters and sorting), agency pages (immobiliare.it/agenzie-immobiliari/…) or single listings (immobiliare.it/annunci/…). Set up the search on Immobiliare.it and copy the address. Searches drawn on the map are not supported.

## `maxResults` (type: `integer`):

Maximum number of listings saved in this run, across all URLs. There is no 2,000-result cap: set it to the search's total to get the whole search.

## `includeDetails` (type: `boolean`):

Also open each listing to add the description, energy class, year built, condo fees, availability, agent name and the full list of characteristics. Charged as an extra event per listing. Listing URLs always include details.

## `monitoringMode` (type: `boolean`):

Remembers what earlier runs saw for each URL and saves only listings that are new or whose price changed since then, with the previous price. The first run saves everything. Use it in a scheduled task, with Maximum results at least as high as the search's total.

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

Apify Proxy (datacenter) works and is included in the price. The Actor switches IP on its own when one is blocked.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.immobiliare.it/vendita-case/milano/?prezzoMassimo=300000"
  ],
  "maxResults": 100,
  "includeDetails": false,
  "monitoringMode": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "startUrls": [
        "https://www.immobiliare.it/vendita-case/milano/?prezzoMassimo=300000"
    ],
    "maxResults": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("epicscrapers/immobiliare-scraper").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 = {
    "startUrls": ["https://www.immobiliare.it/vendita-case/milano/?prezzoMassimo=300000"],
    "maxResults": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("epicscrapers/immobiliare-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.immobiliare.it/vendita-case/milano/?prezzoMassimo=300000"
  ],
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call epicscrapers/immobiliare-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,epicscrapers/immobiliare-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/YDYamggzWbEeCfHUK/builds/v5zrpRyehS90LN1Ix/openapi.json
