# Subito.it Scraper: Listings, Cars, Real Estate & Price Alerts (`euroscrape/subito-scraper`) Actor

Subito.it scraper for Italy: listings for sale, rentals, cars and real estate by keyword, search URL, region, town or category. Cars with km, fuel and power; homes with m², rooms and price per m²; deal score, shipping cost, price drop alerts.

- **URL**: https://apify.com/euroscrape/subito-scraper.md
- **Developed by:** [EuroScrape](https://apify.com/euroscrape) (community)
- **Categories:** E-commerce, Real estate, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.14 / 1,000 listings

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

## Subito.it Scraper: Listings, Cars, Real Estate & Price Alerts

**Get Subito.it listings from all of Italy as clean data: items for sale, cars with their specs, homes for sale or rent with their price per m², and alerts on new listings and price drops.** Type a search, paste a Subito search URL, or pick a category, a region or a town: the Actor reads Subito's own search API, without a browser.

- 🔎 **Search your way**: plain text (`"iphone 13"`, `"bilocale"`), a `subito.it/annunci-…` search URL, a category, or listing URLs to follow.
- 📍 **Region or town**: all 20 regions, or any town by name or CAP (postal code).
- 🚗 **Cars**: make, model, year, registration, km, fuel, gearbox, kW and hp, Euro class, body type.
- 🏠 **Real estate**: m², rooms, bathrooms, floor, furnished, elevator, balcony, energy class and **price per m²**, for sale or rent.
- 🔔 **Price drop alerts**: schedule it with a monitor name, get only new listings and price drops on Telegram, Discord, Slack or a webhook.

### ✨ Why this Actor

| | |
|---|---|
| 🧩 **One Actor for all of Subito** | Items, cars, motorbikes, homes, rooms, garages: one input, the same clean fields, plus structured car and home details where they apply. |
| 🏠 **Price per m², compared** | Every home gets its price per m², and the deal score compares it with the most similar listings of the same search. Real run, 26 Oct 2026: 100 two-room flats for rent in Milan, median 1,050 € a month and 19 €/m². |
| 💸 **Deal score on every listing** | Each price is compared with its closest look-alikes; the free summary gives the total on Subito, median and quartile prices, share of business sellers and the 5 best deals. |
| 📦 **Shipping cost and seller type** | TuttoSubito shipping cost on each listing, and private or business seller (dealers, agencies, shops) to filter on. |
| 🧹 **Only what you searched** | Text searched in titles (like "Cerca solo nel titolo"), titles checked against your search, accessories and "cerco" ads flagged. |
| 🔒 **Privacy-friendly** | A private seller's first name is never collected; location is the town centre; emails and phone numbers hidden in descriptions. |

### 🎯 Use cases

- **Car buyers and dealers**: every Golf, Panda or 500 under your price and km in your region, with alerts on new ones and price drops.
- **Tenants, buyers and agents**: rentals and sales in a town with m², rooms and price per m², to spot what is cheap for its size.
- **Resellers**: underpriced phones, consoles or bikes with shipping, the minute they are listed.
- **Market studies**: prices, volumes and seller mix of any category, region by region.

### 🚀 Examples

**Two-room flats for rent in Milan** (real run, 26 Oct 2026: 436 listings on Subito; on 100 read, median 1,050 € a month, 19 €/m², 20% from agencies):

```json
{ "searches": ["bilocale"], "category": "7", "adType": "rent", "town": "Milano", "maxItemsPerSearch": 100 }
```

**Volkswagen Golf in Lombardy** (real run, 26 Oct 2026: 1,058 listings under 15,000 €; on 60 read, median 8,350 €, 63% from dealers):

```json
{ "searches": ["golf"], "category": "2", "region": "lombardia", "priceMax": 15000, "maxItemsPerSearch": 100 }
```

**iPhone 13 with shipping, private sellers only:**

```json
{ "searches": ["iphone 13"], "onlyShippable": true, "sellerType": "private", "maxItemsPerSearch": 50 }
```

**A search URL copied from Subito** (e-bikes in Emilia-Romagna, 300 to 1,500 €):

```json
{ "searches": ["https://www.subito.it/annunci-emilia-romagna/vendita/biciclette/?q=bici+elettrica&ps=300&pe=1500"] }
```

**Price drop alerts on Telegram, every hour** (schedule the Actor; the first run is the baseline):

```json
{
  "searches": ["monolocale"],
  "category": "7",
  "adType": "rent",
  "town": "Bologna",
  "priceMax": 800,
  "monitorName": "monolocale-bologna",
  "telegramBotToken": "123456:ABC…",
  "telegramChatId": "123456789"
}
```

### 📦 Output

A home for rent (real data of 26 Oct 2026):

```json
{
  "type": "listing",
  "title": "BILOCALE con BOX, STAZIONE BOVISA, NO AGENZIA",
  "price": 1050,
  "adType": "rent",
  "category": "Appartamenti",
  "town": "Milano",
  "provinceCode": "MI",
  "sellerType": "private",
  "property": { "sizeSqm": 52, "rooms": 2, "bathrooms": 1, "floor": "3", "pricePerSqm": 20, "furnished": true, "elevator": true, "balcony": true, "airConditioning": true },
  "url": "https://www.subito.it/appartamenti/bilocale-con-box-stazione-bovisa-no-agenzia-milano-656015593.htm"
}
```

A car:

```json
{
  "title": "Golf 7.5 Highline",
  "price": 11500,
  "town": "Fenegro'",
  "provinceCode": "CO",
  "sellerType": "private",
  "vehicle": { "make": "VOLKSWAGEN", "model": "Golf 7ª serie", "year": 2018, "registration": "02/2018", "mileageKm": 150000, "fuel": "diesel", "gearbox": "manual", "powerKw": 85, "powerHp": 115, "emissionClass": "Euro 6d-TEMP", "bodyType": "Berlina" }
}
```

Every listing also has its condition, region, province, town and ISTAT code, posting and expiry dates, shipping cost, photos, all attributes as displayed, and the deal score. One free `summary` row per search adds the total on Subito, median and quartile prices, median price per m² for homes, share of business sellers, top towns and the 5 best deals.

Dataset views: **Listings**, **Cars**, **Real estate** and **Deals**. Export as JSON, CSV, Excel or XML.

### 💰 Pricing

| Event | Price |
|---|---|
| Run start | $0.003 |
| Listing | $0.0002 (**$0.20 per 1,000 listings**) |
| Summary rows, deleted listings | free |

A monitoring run that finds nothing new costs only the run start. Apify subscribers get 10 to 30% off.

### ❓ FAQ

**Why does a car cost 297 €?** Dealers sometimes post the monthly payment of a lease or a rent-to-own offer as the price. Those listings get `looksLikeMonthlyPayment: true` and are kept out of the market price, the deal scores and the summary (real run, 27 Oct 2026: two Golf offers at 297 € and 413 € a month on Wallapop near Madrid, same filter). Spare parts, empty boxes and repair services ("Cambio pantalla iPhone 13") are flagged as `looksLikeAccessory` the same way. Token prices (1 €, or under a tenth of the search median: "price to discuss") get `looksLikePlaceholderPrice: true` and are left out of the same figures.

**Can I search a whole category without text?** Yes: leave Searches empty and pick a category (and a region or town). Useful for "all apartments for rent in Turin" or "all cars in Sicily".

**Town or region?** A town (name or CAP) is more precise and takes precedence. Subito has no radius search: for a wider area, use the region.

**Why fewer results than on the website?** Text is searched in titles only by default, and titles are checked against your search. Turn off "Search in titles only" and "Only listings whose title matches the search" to get everything.

**How is the deal score computed?** For each listing, the Actor finds the most similar titles in the same search and takes their weighted median, on the price per m² for homes and on the price otherwise. If the look-alikes are too few or too spread out, no score is given rather than a wrong one.

**Do you collect seller names?** No first name of a private seller is collected. For businesses, the shop or agency name is given as shown on Subito.

**Is it legal?** The Actor reads public listings at a moderate pace through the same API as the website, and collects no personal data about private sellers. You are responsible for how you use the data under the GDPR and Subito's terms.

### 🔌 API, AI agents and integrations

- **API**: one call runs the Actor and returns the results, `POST https://api.apify.com/v2/acts/euroscrape~subito-scraper/run-sync-get-dataset-items` (see the API tab for Python, JavaScript and cURL).
- **AI agents (MCP)**: add `https://mcp.apify.com?tools=euroscrape/subito-scraper` to Claude, Cursor, VS Code or any MCP client, and the Actor becomes a tool your agent can call.
- **No-code automation**: start runs and pass the results on with Apify's integrations for n8n, Make and Zapier, or with a webhook when a run ends.
- **Exports**: every result set downloads as JSON, CSV, Excel or XML, and can be sent to Google Sheets.

### ⭐ Your feedback

If this Actor saves you time, a short review on Apify Store helps other users find it. Missing a filter or a field? Say it in your review: the most requested features are added first.

### 🔗 More from EuroScrape

- [Wallapop Scraper: Listings, Price Alerts & Deals (Spain, Italy)](https://apify.com/euroscrape/wallapop-scraper): Wallapop in Spain, Italy and Portugal, cars included, around a town with distance, deal scores and alerts.
- [Marktplaats Scraper: Listings, Bids & Price Alerts (+ 2dehands)](https://apify.com/euroscrape/marktplaats-scraper): the Netherlands and Belgium (2dehands / 2ememain), with bids, views, deal scores and alerts.
- [willhaben Scraper: Marketplace, Cars & Real Estate (Austria)](https://apify.com/euroscrape/willhaben-scraper): Austria's marketplace, cars and flats with price per m², deal scores and alerts.
- [EU Second-Hand Marketplaces Scraper: Vinted, OLX & More](https://apify.com/euroscrape/eu-marketplace-deals): one search across the top second-hand marketplace of 18 European countries (Subito, Kleinanzeigen, Marktplaats, Wallapop, OLX…), resale margins and cheapest country.
- [Vinted Scraper: Prices, Brands, Sizes & Price Drop Alerts](https://apify.com/euroscrape/vinted-scraper): Vinted listings from 20+ countries with deal scores, sold tracking and alerts.
- [AutoScout24 Scraper: Used Cars in 8 Countries, Deals & Alerts](https://apify.com/euroscrape/autoscout24-scraper): used-car listings from 8 European countries including Italy, cross-country price comparison and alerts.
- [Kleinanzeigen Scraper: Deal Finder & Price-Drop Alerts](https://apify.com/euroscrape/kleinanzeigen-scraper): German classifieds with view counts, full seller details and instant alerts.

# Actor input Schema

## `searches` (type: `array`):

What to look for: plain text ("iphone 13", "bilocale", "golf"), a Subito search URL copied from the site (www.subito.it/annunci-…), or a listing URL (….htm) to follow one listing. Leave empty to browse a category.

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

Optional. Cars and real-estate categories add structured fields (km, fuel, power; m², rooms, price per m²).

## `adType` (type: `string`):

For sale, for rent (homes, rooms), wanted, or given away.

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

Optional. Leave empty for all of Italy.

## `town` (type: `string`):

Optional, e.g. "Milano", "Bologna" or a postal code like "20121". Takes precedence over the region.

## `maxItemsPerSearch` (type: `integer`):

You pay per listing delivered. Up to 1,000 per search.

## `order` (type: `string`):

Order of the site's results: it decides which listings are read first.

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

Optional.

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

Optional (monthly rent for rentals).

## `titleOnly` (type: `boolean`):

On (recommended): the text is searched in titles, like "Cerca solo nel titolo" on the site. Off: also in descriptions (many more, looser results).

## `conditions` (type: `array`):

Optional, one or more (items with a condition field; not cars or homes).

## `onlyShippable` (type: `boolean`):

Keep only listings with Subito shipping (TuttoSubito).

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

Private sellers, businesses (dealers, agencies, shops) or both.

## `strictMatching` (type: `boolean`):

On: the title must contain the model numbers and the words of your search.

## `excludeAccessoriesAndBroken` (type: `boolean`):

Off: they are kept and flagged (looksLikeAccessory, looksBroken, isWantedAd). On: they are left out.

## `dealAnalysis` (type: `boolean`):

Compares each listing with the most similar ones of the same search (price per m² for homes): marketMedianPrice, priceVsMarketPct and a dealScore from 0 to 100.

## `minDealScore` (type: `integer`):

Optional, e.g. 65 keeps listings priced ~15% or more below their market.

## `includeSummary` (type: `boolean`):

One extra free row per search: total on the site, median and quartile prices, median price per m² for homes, share of business sellers, top towns, best 5 deals.

## `monitorName` (type: `string`):

Name this search and schedule the Actor (e.g. every hour): each run then returns only NEW listings and PRICE DROPS since the previous run, and alerts you. The first run is the baseline.

## `alertOnPriceDropPct` (type: `integer`):

Monitoring: a listing comes back when its price falls by at least this percentage.

## `telegramBotToken` (type: `string`):

Alerts on Telegram: create a bot with @BotFather and paste its token.

## `telegramChatId` (type: `string`):

Your chat ID (send a message to your bot, then open api.telegram.org/bot<token>/getUpdates).

## `discordWebhookUrl` (type: `string`):

Channel settings → Integrations → Webhooks.

## `slackWebhookUrl` (type: `string`):

Incoming webhook URL.

## `webhookUrl` (type: `string`):

Receives one POST per run with the new listings and price drops (Make, Zapier, n8n…).

## `maxNotifications` (type: `integer`):

Extra items are summarized in one message.

## Actor input object example

```json
{
  "searches": [
    "iphone 13"
  ],
  "adType": "sale",
  "maxItemsPerSearch": 100,
  "order": "newest",
  "titleOnly": true,
  "onlyShippable": false,
  "sellerType": "any",
  "strictMatching": true,
  "excludeAccessoriesAndBroken": false,
  "dealAnalysis": true,
  "includeSummary": true,
  "alertOnPriceDropPct": 5,
  "maxNotifications": 30
}
```

# Actor output Schema

## `overview` (type: `string`):

Subito listings with price, place, seller type and deal score.

## `cars` (type: `string`):

Vehicles with make, model, year, km, fuel, gearbox and power.

## `homes` (type: `string`):

Homes for sale or rent with m², rooms and price per m².

## `deals` (type: `string`):

Listings compared with their market price.

## `runSummary` (type: `string`):

Counters for this run (items found, output, errors).

# 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 = {
    "searches": [
        "iphone 13"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("euroscrape/subito-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 = { "searches": ["iphone 13"] }

# Run the Actor and wait for it to finish
run = client.actor("euroscrape/subito-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 '{
  "searches": [
    "iphone 13"
  ]
}' |
apify call euroscrape/subito-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,euroscrape/subito-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/S5gSq0ReaQM027aW0/builds/dpuG3dTyMvmpQVac5/openapi.json
