# Subito.it Scraper - Classifieds, Prices, Sellers & Listings (`abotapi/subito-it-scraper`) Actor

Scrape Subito.it classifieds across cars, real estate, jobs, electronics and more. Search by keyword, filters or URL. Extract 60+ fields, including prices, descriptions, photos, specifications, seller details and locations, with optional seller ratings and reputation data.

- **URL**: https://apify.com/abotapi/subito-it-scraper.md
- **Developed by:** [Abot API](https://apify.com/abotapi) (community)
- **Categories:** Real estate, E-commerce, Jobs
- **Features:** Limited permissions
- **Stats:** 15 total users, 1 monthly users, 91.9% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 listing 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/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: Cars, Real Estate, Marketplace and Job Listings

Subito.it Scraper turns Italy's largest classifieds site into clean structured data. Search by keyword with vertical-specific filters, or paste any subito.it search or listing URL, and get cars, real estate, marketplace goods and job listings with price, full description, every photo, vehicle or property specs, seller contact and precise location. Turn on optional seller reputation and full vehicle detail enrichment, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

### Why This Scraper?

- **One actor, four verticals.** Cars & motors, real estate, marketplace goods and jobs each have their own filter set, all sharing one consistent output shape.
- **Two ways in.** Search by keyword and filters, or paste subito.it search and listing URLs and let the actor read the filters straight from them.
- **Region, province and town by name.** Type "Roma" or "Milano" instead of hunting for numeric location ids; the actor resolves the name for you.
- **Seller reputation on demand.** Optionally attach each seller's public reputation, overall score, feedback counts, verification and reply rate, fetched once per unique seller and shared across their listings.
- **Deeper vehicle data on demand.** Turn on full vehicle details to add engine size, power, cylinders, gears, dimensions, weight and the full equipment list for cars. It applies to cars only; other verticals are not affected and are not charged for it.
- **Built for monitoring.** Incremental mode returns only new and changed listings on repeat runs, and a genuinely blocked run fails loudly instead of quietly returning an empty dataset.
- **Resume without re-paying.** Continue one interrupted run from its run or dataset id and skip every listing already collected there.

### Use Cases

- **Car and property market research:** track asking prices, mileage or surface across a region to spot trends.
- **Lead generation for dealers and agents:** collect new listings in a category or area as they are posted.
- **Job market monitoring:** watch a sector or contract type for newly posted openings.
- **Marketplace price tracking:** follow a product category or keyword and catch price drops with Incremental mode.
- **Seller due diligence:** check a seller's public reputation and verification before responding to a listing.
- **Data feeds for apps and dashboards:** pipe structured listings into your own site, bot or alerting tool through the API.

### Data You Get

> Sample shape: values are illustrative placeholders, not from a live listing.

| Field | Example |
| --- | --- |
| `id` | `"655595345"` |
| `url` | `"https://www.subito.it/auto/sample-listing-655595345.htm"` |
| `title` | `"Sample listing title"` |
| `description` | `"Full listing description text appears here."` |
| `price` | `12500` |
| `priceRaw` | `"12.500 €"` |
| `currency` | `"EUR"` |
| `adType` | `"Vendita"` |
| `category` | `"Auto"` |
| `condition` | `"Ottimo"` (marketplace listings) |
| `postedAt` | `"2026-01-01T10:00:00+01:00"` |
| `expiresAt` | `"2026-03-01T10:00:00+01:00"` |
| `region` | `"Lombardia"` |
| `city` | `"Milano"` |
| `town` | `"Milano"` |
| `imageCount` | `8` |
| `images` | `["https://images.example-cdn/655595345/0.jpg"]` |
| `sellerName` | `"Sample Seller"` |
| `sellerType` | `"private"` |
| `isCompany` | `false` |
| `sellerPhone` | `"+390000000000"` |
| `reference` | `"ABC12345"` |

New fields, one line each: `powerKw` and `powerHp` are the engine power split into kilowatts and horsepower numbers; `warrantyMonths` is the seller warranty length in months; `vehicleType` is the vehicle kind the site reports (for example a van); `provinceCode` is the two-letter province code of the listing; `cityIstat` is the ISTAT municipality code; `coverImage` is the first image URL; `searchUrl` is the subito.it search page this row came from (the URL you pasted, or the equivalent search for your keyword and filters); `pageNumber` is the results page it was found on.

Vertical-specific specs travel on the same record. Cars carry `maker`, `model`, `version`, `yearOfRegistration`, `mileage`, `power`, `fuelType`, `transmission`, `bodyType` and `color`, plus (with **Fetch full vehicle details** on) `engineSizeCc`, `horsepower`, `cylinders`, `gears`, `driveWheel`, `lengthM`/`widthM`/`heightM`, `weightKg` and an `equipment` list. Real estate carries `size`, `rooms`, `bathrooms`, `floor`, `heating`, `energyClass`, `buildingCondition`, `parking`, `airConditioning`, `balcony`, `elevator`, `garden` and `furnished`. Jobs carry `jobCategory`, `contractType`, `workHours`, `workLevel` and `educationDegree`. Marketplace listings also carry `shippingAvailable`, `shippingType`, `shippingCost` and `shippingPackageSize`. Fields outside the active vertical come back `null`, and every raw feature the site exposes is kept, keyed by its own code, in a `features` object. Turning on **Fetch seller reputation** attaches a `sellerReputation` block (overall score, feedback counts, verification, member-since year and reply-rate/reply-time text) to every listing from that seller; individual written review texts are not publicly available on subito.it, only the aggregate reputation is returned. In Incremental mode, every record also carries `changeType`, `changedFields`, `firstSeenAt` and `lastSeenAt`.

### How to Use

1. Pick a **vertical**: Cars & motors, Real estate, Marketplace, or Jobs, and add a keyword if you have one.
2. Add the filters for that vertical (price, location, condition, vehicle or property specs, job sector), or paste subito.it search or listing URLs instead of building a keyword search (clear the prefilled Start URL when searching by keyword).
3. Turn on **Fetch seller reputation** and, for vehicles, **Fetch full vehicle details** if you want those extras, then set **Max items** to size and cap the run.
4. Click **Start**, then download the dataset as JSON, CSV or Excel, or read it through the API.

**Search marketplace goods by keyword:**

```json
{
  "category": "marketplace",
  "searchQuery": "iphone 15",
  "condition": ["10", "20"],
  "priceMin": 200,
  "priceMax": 600,
  "maxItems": 100
}
```

**Search cars with vehicle filters:**

```json
{
  "category": "auto",
  "searchQuery": "golf",
  "yearMin": 2017,
  "mileageMax": 100000,
  "fuelType": ["2"],
  "gearbox": "1",
  "sort": "priceasc",
  "maxItems": 200
}
```

**Search real estate to rent, in one province:**

```json
{
  "category": "realestate",
  "adType": "u",
  "city": "Roma",
  "sizeMin": 60,
  "roomsMin": 2,
  "priceMax": 1500,
  "maxItems": 150
}
```

**Search jobs, with seller reputation attached:**

```json
{
  "category": "jobs",
  "searchQuery": "magazziniere",
  "workHours": "fulltime",
  "scrapeReviews": true,
  "maxItems": 100
}
```

#### URL mode

URL mode with the Start URLs field untouched runs one example of each supported shape below (the field is pre-filled with all of them). **Max items** is shared across those searches: each one gets an equal share of what is left of the cap (about five or six listings each at the default of 100), so every shape runs. Raise **Max items**, or set **Max items per search**, for deeper pages. If you change any keyword, location, filter, vertical or enrichment input while leaving the example list untouched, the actor runs that keyword or filter search instead of the examples. Clear the list to run a keyword search with the default inputs. **Changed:** earlier versions ran a plain marketplace browse when Start URLs was omitted and no keyword or filter was set. Such runs (an API call or saved task that sends no Start URLs, for example only a Max items value) now scrape one example of each URL shape instead. Incremental runs set up that way without a State key now track a new baseline, so the first run after the update returns those listings as `NEW`. To get the old behaviour, set a keyword or filter, or clear Start URLs.

| URL shape | Example path | Notes |
| --- | --- | --- |
| Keyword search | `/annunci-italia/vendita/usato/?q=bici` | |
| Paginated search | `...?q=bici&o=2` | Starts at that page; counts as a partial scope for expired detection |
| Filtered and sorted | `...?q=bici&sort=priceasc&ps=10&pe=100` | Price and sort are read from the URL |
| Seller type | `...?q=bici&advt=1` | |
| Shippable | `...?q=bici&shp=true` | |
| Region and town | `/annunci-lombardia/vendita/usato/milano/?q=bici` | Names are resolved to ids |
| Top-level category | `/annunci-italia/vendita/usato/` | |
| Marketplace sub-category | `/annunci-italia/vendita/biciclette/` | Applied as a keyword search |
| Cars, region scoped | `/annunci-lombardia/vendita/auto/` | |
| Cars brand and model | `/annunci-italia/vendita/auto/toyota/corolla/` | Brand and model are applied as keywords |
| Motorbikes | `/annunci-italia/vendita/moto-e-scooter/` | Returns motorbike listings only (the motorbikes category) |
| Commercial vehicles | `/annunci-italia/vendita/veicoli-commerciali/` | Returns commercial vehicle listings only |
| Real estate sale | `/annunci-italia/vendita/immobili/`, `/annunci-italia/vendita/appartamenti/` | `/immobili/` returns all real estate (apartments, garages, offices, villas, land). `/appartamenti/` returns apartment listings only. Other real estate sub-category paths (`garage-e-box`, `uffici-locali-commerciali`, `ville-singole-e-a-schiera`, `terreni-e-rustici`, `loft-mansarde`, `case-vacanza`) return that sub-category only. An unrecognised real estate sub-category path searches all real estate and logs a warning |
| Real estate rent | `/annunci-lazio/affitto/appartamenti/roma/?ps=500&pe=1200`, `/annunci-italia/affitto/appartamenti/`, `/annunci-italia/affitto/camere-posti-letto/` | Returns that sub-category only (apartments, or rooms and beds) |
| Jobs | `/annunci-italia/vendita/offerte-lavoro/` | Searches job offers. A `cerco-lavoro` (job seekers) path also searches job offers and logs a warning |
| Wanted ads | `/annunci-italia/cerco/usato/?q=bici` | |
| Free ads | `/annunci-italia/regalo/usato/` | |
| Listing page | `/<category>/<title>-<id>.htm` (marketplace and cars) | Fetches that single ad |
| Seller profile | `/utente/<id>` | Not supported: skipped with a warning in the log |
| Mobile host | `m.subito.it/...` | Normalised to the www host |

#### Output views

The dataset has seven ready-made tabs: **Listings Overview** (all verticals), **Cars & Motors**, **Real Estate**, **Jobs**, **Sellers & Contacts**, **Changes (incremental)** (change type, changed fields, first and last seen) and **Vehicle details (scrapeDetail)**. Each run also stores a short summary in the `OUTPUT` record of the run's key-value store.

#### Run it from your code

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/subito-it-scraper").call(run_input={"category": "auto", "searchQuery": "golf", "maxItems": 50})
for listing in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(listing["title"], listing["price"])
```

JavaScript:

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

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/subito-it-scraper').call({ category: 'auto', searchQuery: 'golf', maxItems: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the **Integrations** tab.

#### Vertical-specific filters

A filter that does not belong to the selected vertical (for example `fuelType` while `category` is `realestate`) is ignored rather than causing an error. Check the run log for a warning naming the ignored filter, then move it to a run with the matching vertical.

#### Resume and recurring updates

- **Resume** (`resumeFromRunId`) continues one interrupted or previous run: paste its run or dataset id and this run skips every listing already collected there, so you never pay twice for the same listing.
- **Incremental mode** (`incrementalMode`) is for scheduling the same search again and again and getting only what changed. The first run returns everything as `NEW`. Later runs return `NEW` and `UPDATED` by default. Turn on **Emit unchanged** to also get (and pay for) listings that have not changed, and **Emit expired** to also get listings that were tracked before but are no longer found. `EXPIRED` rows are produced only once a run has scanned the tracked search completely, never when Max items capped it or when Resume was used, since neither proves the rest of the search is actually gone. `REAPPEARED` only appears for a listing that an earlier, complete, Emit-expired run had already marked `EXPIRED`, and that has since been seen again; it does not appear on a plain rerun without that history. **Ignore fields when detecting changes** (`ignoreFieldsForChanges`) lets you name fields that must not turn a listing into `UPDATED`; `scrapedAt`, `detailFetched`, `searchUrl` and `pageNumber` are always left out. Editing the list never causes a one-time wave of `UPDATED` rows, because the saved baseline is compared again with your current list. State is tracked automatically, keyed by the vertical, query, filters, URLs and enrichment settings you used, or by **State key** if you set one.
- Resume and Incremental mode can be combined only to start a new monitoring campaign: when the state key has no tracked listings yet, the resumed run's listings seed the baseline. The actor refuses Resume when that state key already holds tracked listings. Use a different **State key**, or drop Resume, to avoid the conflict.

### Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step **after** the scrape: the Apify dataset is never changed.

**What gets written to the connector:** a condensed, human-readable **summary** of up to the first 50 listings pushed in the run, not the full JSON. Each item becomes one entry with a **title** and its key fields flattened to plain text. The **complete record always stays in the Apify dataset**.

1. Authorize a connector once under **Apify → Settings → Integrations**.
2. Select it in the **"Pipe results into your apps"** input field. If the picker is empty, you haven't authorized a connector yet.
3. For **Notion**, also set `notionParentPageUrl` to the page where items should be created. `maxNotifyListings` (default 50) caps how many listings are written to each connector; the dataset is never affected.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

### Input Parameters

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| `category` | string | `marketplace` | Vertical to scrape: `auto`, `realestate`, `marketplace`, or `jobs`. |
| `searchQuery` | string | none (empty) | Free-text keyword. Empty browses all listings in the vertical. Ignored as a separate search when Start URLs are given (it only fills in search URLs that carry no keyword of their own). |
| `subjectOnly` | boolean | `false` | Match the keyword against the ad title only, not the description. |
| `region` | string | none (empty) | Region name or numeric region id. Leave empty for all of Italy. |
| `city` | string | none (empty) | Province (provincia) name or numeric id. |
| `town` | string | none (empty) | Town (comune) name or numeric id; only applied once its region and province are resolved. |
| `priceMin` | integer | none | Minimum price in euro. |
| `priceMax` | integer | none | Maximum price in euro. |
| `sellerType` | string | `any` | `any`, `private`, or `company`. |
| `sort` | string | `datedesc` | Newest first. `relevance` and price options work for every vertical; year, mileage, power and length options apply to cars only. |
| `adType` | string | `s` | Offer (vendita). Wanted applies broadly; Rent and Holiday rental apply to real estate; Free applies to marketplace; cars and jobs only support Offer. |
| `condition` | array | none | Marketplace only. Item condition, one or more of new, like new, excellent, good, damaged. |
| `shippableOnly` | boolean | `false` | Marketplace only. Show only ads offering shipping. |
| `brand` | string | none (empty) | Cars only. Numeric brand id; a non-numeric value is folded into the keyword search instead. |
| `model` | string | none (empty) | Cars only. Numeric model id, same fallback as brand. |
| `yearMin` | integer | none | Cars only. Earliest registration year. |
| `yearMax` | integer | none | Cars only. Latest registration year. |
| `mileageMin` | integer | none | Cars only. Minimum kilometres. |
| `mileageMax` | integer | none | Cars only. Maximum kilometres. |
| `fuelType` | array | none | Cars only. One or more fuel types. |
| `gearbox` | string | none | Cars only. Transmission type. |
| `bodyType` | array | none | Cars only. One or more body styles. |
| `vehicleStatus` | array | none | Cars only. Used, zero km, or new. |
| `sizeMin` | integer | none | Real estate only. Minimum surface in m². |
| `sizeMax` | integer | none | Real estate only. Maximum surface in m². |
| `roomsMin` | integer | none | Real estate only. Minimum rooms. |
| `roomsMax` | integer | none | Real estate only. Maximum rooms. |
| `bathroomsMin` | integer | none | Real estate only. Minimum bathrooms. |
| `buildingCondition` | array | none | Real estate only. One or more property conditions. |
| `jobCategory` | array | none | Jobs only. One or more job sectors. |
| `contractType` | array | none | Jobs only. One or more contract types. |
| `workHours` | string | none | Jobs only. Full time, part time, shift, or other. |
| `educationDegree` | string | none | Jobs only. Required education level. |
| `startUrls` | array | one example of every supported URL shape (see the URL mode table) | subito.it search URLs, or listing URLs ending in `.htm`. When any URL is given, the keyword search is not run separately: each search URL runs with its own filters, falling back to the keyword/filter fields for anything the URL does not set. A listing URL fetches that single ad. **Changed:** earlier versions ran a plain marketplace browse when this field was omitted and no keyword or filter was set; such runs now scrape one example of each URL shape, and incremental runs without a State key track a new baseline (the first run returns those listings as `NEW`). Clear the list for a plain keyword search; any changed keyword, location, filter, vertical or enrichment input with the untouched example list also runs as a keyword or filter search. With the untouched list, **Max items** is split across the example searches. |
| `scrapeDetail` | boolean | `false` | Vehicles only (category `auto`). Fetch each vehicle's page for full technical specs and the equipment list. Adds one request per vehicle. |
| `scrapeReviews` | boolean | `false` | Fetch each unique seller's public reputation once and attach it to their listings. Adds one request per unique seller. |
| `maxItems` | integer | `100` (maximum `100000`) | Hard cap on the total number of listings across all searches and URLs. The cap always applies, so a run cannot grow without bound. **Changed:** earlier versions treated an empty Max items as unlimited; it now defaults to 100. Incremental users who want `EXPIRED` detection must set it high enough to cover the whole search, because a run that stops at the cap never reports `EXPIRED`. |
| `maxItemsPerQuery` | integer | none (unbounded, still capped by Max items) | Per-search / per-URL cap for multi-search runs. |
| `resumeFromRunId` | string | none | Continue one specific previous run or dataset without re-collecting or re-charging listings already gathered there. |
| `incrementalMode` | boolean | `false` | Turn on for recurring monitoring of the same search; later runs return only new and changed listings by default. |
| `stateKey` | string | none (auto-derived from the search scope) | Name or share a monitoring campaign's state. |
| `emitUnchanged` | boolean | `false` | Also return (and bill) listings that have not changed since the last run. |
| `emitExpired` | boolean | `false` | Also return (and bill) listings that were tracked before but are no longer found; only produced after a complete scan of the tracked search. |
| `ignoreFieldsForChanges` | array | none | Incremental mode only: field names (or dotted paths such as `sellerReputation.replyTime`) left out of change detection and `changedFields`. They still appear in the output. |
| `proxyConfiguration` | object | Apify Proxy, Residential group, country IT | Connection settings. Required. See Plan Requirement for what happens when the selected connection is unavailable. |
| `mcpConnectors` | array | none | Optional: send a summary of each listing to apps you authorized under Integrations (Notion, Linear, Airtable, Apify). |
| `notionParentPageUrl` | string | none | Notion connector only: URL or id of the parent page for the item pages. |
| `maxNotifyListings` | integer | `50` | Cap on listings written to each connector per run (1 to 1000). Does not affect the dataset. |

### Output Example

> Sample shape: values are illustrative placeholders, not from a live listing.

```json
{
  "id": "655595345",
  "url": "https://www.subito.it/auto/sample-listing-655595345.htm",
  "title": "Sample listing title",
  "description": "Full listing description text appears here.",
  "price": 12500,
  "priceRaw": "12.500 €",
  "currency": "EUR",
  "adType": "Vendita",
  "category": "Auto",
  "categorySlug": "auto",
  "reference": "ABC12345",
  "postedAt": "2026-01-01T10:00:00+01:00",
  "expiresAt": "2026-03-01T10:00:00+01:00",
  "region": "Lombardia",
  "city": "Milano",
  "town": "Milano",
  "imageCount": 8,
  "images": ["https://images.example-cdn/655595345/0.jpg"],
  "sellerId": "00000000",
  "sellerName": "Sample Seller",
  "sellerType": "private",
  "isCompany": false,
  "sellerPhone": "+390000000000",
  "sellerVat": null,
  "shopId": null,
  "shopName": null,
  "condition": null,
  "shippingAvailable": null,
  "maker": "Volkswagen",
  "model": "Golf",
  "version": "1.6 TDI",
  "yearOfRegistration": "2019",
  "mileage": 65000,
  "power": "85 kW",
  "fuelType": "Diesel",
  "transmission": "Manuale",
  "bodyType": "Berlina",
  "size": null,
  "rooms": null,
  "bathrooms": null,
  "energyClass": null,
  "jobCategory": null,
  "contractType": null,
  "features": {
    "/color": { "label": "Colore", "type": "single", "values": [{ "key": "1", "value": "Bianco" }] }
  },
  "sellerReputation": {
    "overallScore": 4.9,
    "receivedCount": 120,
    "sellerFeedbackCount": 95,
    "buyerFeedbackCount": 25,
    "verified": true,
    "memberSince": "2018",
    "replyRateText": "Risponde quasi sempre",
    "replyTimeText": "Risponde in poche ore",
    "profileUrl": "https://www.subito.it/utente/00000000"
  }
}
```

### Plan Requirement

This actor needs proxy access, and **Connection & proxy** is required. It defaults to Apify Proxy's Residential group with the country set to Italy. The search pages themselves were also readable through the standard Apify Proxy pool in our measurements, so if your plan does not include residential proxies the actor falls back to a backup connection instead of stopping.

What you will see in the run log and status:

- **Selected connection unavailable** (for example a free plan without residential access): the log prints "The selected connection is unavailable to this run. Apify free plans do not include residential proxies. Continuing on a backup connection; some pages may still be unavailable." and, when pages are then served, "Served over the backup connection (the default connection was unavailable)."
- **No page could be read, plan has no proxy access:** the run fails with "The proxy connection was refused for this account, so no page could be read. Your Apify plan does not include proxy access; a paid plan is required". If you entered your own proxy URLs, check their credentials.
- **Backup connection also failed:** the run fails with "No results: residential proxies are unavailable on this run (Apify free plans do not include them), and the backup connection could not load the requested Subito pages." Upgrade your plan or supply your own proxy URLs.
- **Ordinary request failures:** the run fails with "Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search. Please try again later."

A failed run pushes nothing to the dataset and is not billed per listing.

#### Pricing

You pay per event, shown on the **Pricing** tab of the actor page (rates are not repeated here so they never go stale). The actor charges four events:

| Event | Unit | When it is charged |
| --- | --- | --- |
| Actor start | one per run | Once when the run starts. |
| Result (`apify-default-dataset-item`) | one per listing row written to the dataset | Per row pushed, including `NEW`/`UPDATED` rows in Incremental mode. Unchanged and expired rows are charged only when you turn on **Emit unchanged** / **Emit expired**. |
| Vehicle detail enrichment (`detail-enrichment`) | one per car whose full technical details were fetched | Only with **Fetch full vehicle details** on, only for cars (`category` `auto`), and only for rows that are pushed. Other verticals are never charged this event. |
| Seller reputation (`seller-reputation-scraped`) | one per unique seller | Only with **Fetch seller reputation** on, once per seller per run, and only when the row carrying it is pushed. |

Use **Max items** to cap the size and cost of a run.

### FAQ

#### How much does it cost?

See the Pricing section above: each run has a start event, each listing row is a result event, and vehicle details and seller reputation are separate events charged only where you turned them on. The **Pricing** tab shows the current rates. Use **Max items** to cap the cost of any run.

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

This actor collects only publicly available classifieds data. You are responsible for how you use it: follow subito.it's terms and the laws that apply to you, take particular care with personal data such as seller names and phone numbers, and get legal advice if you plan commercial redistribution.

#### Can I get only new or changed listings on a schedule?

Yes. Schedule the actor from the **Schedules** tab and turn on **Incremental mode**. Later runs then return only `NEW` and `UPDATED` listings by default; unchanged ones are not billed unless you turn on **Emit unchanged**.

#### What is the difference between Resume and Incremental mode?

**Resume** continues one specific interrupted or previous run, using its run or dataset id, so a large crawl does not restart from scratch. **Incremental mode** is for a recurring schedule against the same search: it remembers its own baseline and classifies each listing as new, updated, unchanged, reappeared or expired. They can combine, but the actor refuses to start Incremental mode with Resume when that state key already holds tracked listings, since resuming does not prove a complete scan.

#### Why did my run fail instead of returning an empty dataset?

The run fails with a clear message when it returned no listings and at least one page could not be read, so "no listings match" is never confused with "nothing could be read". If some listings were collected before pages started failing, the run succeeds with the listings it got. See Plan Requirement for the exact messages. If a search genuinely has no matching listings, the run still succeeds with an empty dataset.

#### Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push a summary of the first 50 listings into the apps you authorized under Integrations.

### 🔗 Want more classifieds data?

Pair this actor with these related scrapers from the same team:

<table>
<tr><td>🏷️ <a href="https://apify.com/abotapi/mudah-my-scraper"><b>Mudah.my Cars, Property, Jobs &amp; Marketplace Scraper</b></a><br>Scrape Mudah.my listings across every category: cars, motorcycles, property, mobiles...</td><td>🚗 <a href="https://apify.com/abotapi/trademe-co-nz-scraper"><b>Trade Me NZ Scraper</b></a><br>Scrape trademe.co.nz across all five sections: Marketplace goods and auctions, Property...</td></tr>
<tr><td>🏷️ <a href="https://apify.com/abotapi/leboncoin-fr-scraper"><b>Leboncoin FR</b></a><br>Pull public leboncoin.fr listings across cars, property, jobs, electronics, furniture...</td><td>🏷️ <a href="https://apify.com/abotapi/gumtree-uk-scraper"><b>Gumtree.com Scraper</b></a><br>Scrape Gumtree.com classifieds across motors, property, jobs, services, pets and goods...</td></tr>
<tr><td>🚗 <a href="https://apify.com/abotapi/willhaben-at-scraper"><b>Willhaben.at Scraper</b></a><br>From $1/1K. Scrape Willhaben.at listings into clean JSON with 40+ structured fields...</td><td>🚗 <a href="https://apify.com/abotapi/craigslist-classifieds-scraper"><b>Craigslist Scraper</b></a><br>Scrape Craigslist postings in any of 700+ cities worldwide: price, title, posting text...</td></tr>
</table>

👉 [Browse all abotapi scrapers](https://apify.com/abotapi)

### 💬 Support

- 🐞 **Found a bug or a missing field?** Open a ticket on the [Issues tab](https://apify.com/abotapi/subito-it-scraper/issues/open). We usually reply within hours.
- 🛠️ **Need another site, extra fields or a private build?** Email <contact@abotapi.com>.
- ⭐ **Enjoying it?** A quick review on the actor page helps other users find it.

# Actor input Schema

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

Which Subito.it vertical to scrape. This drives the default landing section and decides which vertical-specific filters below apply. Cars, real estate and jobs each expose their own filter set; marketplace covers all the consumer-goods categories.

## `searchQuery` (type: `string`):

Free-text keyword. Leave empty to browse all listings in the chosen vertical. Used together with the filters below. If a Start URL is also given, the URL takes precedence for that entry.

## `subjectOnly` (type: `boolean`):

Match the keyword only against the ad title (not the description).

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

Region name or region id. Leave empty for all of Italy.

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

Province (provincia) name or id to narrow results.

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

Town (comune) name or id to narrow results further.

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

Minimum price in euro. For jobs this maps to the advertised salary when present.

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

Maximum price in euro.

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

Filter by advertiser. Any = both, Private = individuals, Company = businesses/dealers.

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

Result ordering. Relevance / newest / price options work for every vertical; the year, mileage, power and length options only apply to cars & motors.

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

Transaction type. Offer (vendita) and Wanted (cercasi) apply broadly; Rent and Holiday rental apply to real estate; Free (in regalo) applies to marketplace. Cars and jobs only support Offer.

## `condition` (type: `array`):

Marketplace only. Filter by item condition. Choose one or more.

## `shippableOnly` (type: `boolean`):

Marketplace only. Show only ads that offer shipping.

## `brand` (type: `string`):

Cars only. Brand id (e.g. 000101 = Volkswagen).

## `model` (type: `string`):

Cars only. Model id (depends on the chosen brand).

## `yearMin` (type: `integer`):

Cars only. Earliest registration year.

## `yearMax` (type: `integer`):

Cars only. Latest registration year.

## `mileageMin` (type: `integer`):

Cars only. Minimum kilometres.

## `mileageMax` (type: `integer`):

Cars only. Maximum kilometres.

## `fuelType` (type: `array`):

Cars only. Filter by fuel. Choose one or more.

## `gearbox` (type: `string`):

Cars only. Transmission type.

## `bodyType` (type: `array`):

Cars only. Filter by body style. Choose one or more.

## `vehicleStatus` (type: `array`):

Cars only. Used, zero-km or new. Choose one or more.

## `sizeMin` (type: `integer`):

Real estate only. Minimum surface in square metres.

## `sizeMax` (type: `integer`):

Real estate only. Maximum surface in square metres.

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

Real estate only. Minimum number of rooms.

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

Real estate only. Maximum number of rooms.

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

Real estate only. Minimum number of bathrooms.

## `buildingCondition` (type: `array`):

Real estate only. Filter by property condition. Choose one or more.

## `jobCategory` (type: `array`):

Jobs only. Filter by job sector. Choose one or more.

## `contractType` (type: `array`):

Jobs only. Filter by contract type. Choose one or more.

## `workHours` (type: `string`):

Jobs only. Filter by working hours.

## `educationDegree` (type: `string`):

Jobs only. Filter by required education level.

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

Paste subito.it search URLs (/annunci-italia/...) or listing detail URLs (ending in .htm). Search URLs are parsed into search parameters; a detail URL enriches that single ad. Can be combined with a keyword search — the URL wins for each entry it covers. Left untouched, this runs one example of every supported URL shape, sharing Max items between them; changing any keyword or filter input instead runs that search. Clear the list to use keyword search. Seller profile (/utente/) URLs are skipped with a warning.

## `scrapeDetail` (type: `boolean`):

Vehicles only (category Cars & motors). When on, opens each vehicle's page to add full technical specs (engine size, kW/HP, cylinders, gears, drive, dimensions, weight) and the complete equipment/optionals list. Adds one request per vehicle. Other categories already return their full data from search and are unaffected.

## `scrapeReviews` (type: `boolean`):

When on, fetch each unique seller's public reputation once and attach it to their listings. Adds one request per unique seller. Individual written review texts are not publicly available; only the aggregate reputation is returned.

## `maxItems` (type: `integer`):

Hard cap on the total number of listings across all searches and URLs. Defaults to 100; the maximum is 100000.

## `maxItemsPerQuery` (type: `integer`):

Per-search / per-URL cap for multi-search runs. Leave empty for no per-search limit (still bounded by Max items).

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

Defaults to Apify Proxy Residential with country Italy. If the selected connection is unavailable to your plan, the actor continues on a backup connection instead of stopping.

## `resumeFromRunId` (type: `string`):

Paste a previous run ID or dataset ID to continue an interrupted crawl without re-collecting or re-charging for listings already gathered there. For recurring daily/weekly monitoring of the same search instead, use Incremental mode below.

## `incrementalMode` (type: `boolean`):

Turn this on for daily or recurring monitoring of the same search. The first run returns all matching listings as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED listings. Turn on "Emit unchanged" or "Emit expired" only when you also want those returned (and billed). State is kept separately per vertical/query/filter/URL/enrichment setup; use State key to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above.

## `stateKey` (type: `string`):

Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the vertical/query/filters/URLs/enrichment settings -- different searches then never mix state with each other.

## `emitUnchanged` (type: `boolean`):

Off by default. Turn on to also return listings that have not changed since the last run, marked UNCHANGED. This returns -- and bills -- extra rows you already have, so leave it off unless you specifically want the full snapshot every run.

## `emitExpired` (type: `boolean`):

Off by default. Turn on to also return listings that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search -- not when Max items capped it or when Resume was used. This returns -- and bills -- extra synthetic rows, so leave it off unless you need expiry tracking.

## `ignoreFieldsForChanges` (type: `array`):

Optional. Field names that must not make a listing count as UPDATED, e.g. a field that changes on every fetch. Use a dotted path for a nested field (for example sellerReputation.replyTime). Ignored fields still appear in the output; they are only left out of the comparison and of changedFields.

## `mcpConnectors` (type: `array`):

Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion, Linear, Airtable, Apify.

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "category": "marketplace",
  "searchQuery": "",
  "subjectOnly": false,
  "region": "",
  "city": "",
  "town": "",
  "sellerType": "any",
  "sort": "datedesc",
  "adType": "s",
  "shippableOnly": false,
  "brand": "",
  "model": "",
  "startUrls": [
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&o=2"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&sort=priceasc&ps=10&pe=100"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&advt=1"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&shp=true"
    },
    {
      "url": "https://www.subito.it/annunci-lombardia/vendita/usato/milano/?q=bici"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/biciclette/"
    },
    {
      "url": "https://www.subito.it/annunci-lombardia/vendita/auto/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/auto/toyota/corolla/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/moto-e-scooter/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/immobili/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/appartamenti/"
    },
    {
      "url": "https://www.subito.it/annunci-lazio/affitto/appartamenti/roma/?ps=500&pe=1200"
    },
    {
      "url": "https://www.subito.it/annunci-italia/affitto/appartamenti/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/offerte-lavoro/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/cerco/usato/?q=bici"
    },
    {
      "url": "https://www.subito.it/annunci-italia/regalo/usato/"
    },
    {
      "url": "https://www.subito.it/bambini-giocattoli/seggiolino-bici-con-morsetto-di-attacco-arezzo-665060654.htm"
    },
    {
      "url": "https://www.subito.it/auto/mercedes-benz-b200-treviso-664945738.htm"
    },
    {
      "url": "https://www.subito.it/utente/106698735"
    },
    {
      "url": "https://m.subito.it/annunci-italia/vendita/usato/?q=bici"
    }
  ],
  "scrapeDetail": false,
  "scrapeReviews": false,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IT"
  },
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "ignoreFieldsForChanges": [],
  "maxNotifyListings": 50
}
```

# Actor output Schema

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

No description

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

No description

## `realEstate` (type: `string`):

No description

## `jobs` (type: `string`):

No description

## `sellers` (type: `string`):

No description

## `changes` (type: `string`):

No description

## `detail` (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 = {
    "category": "marketplace",
    "searchQuery": "",
    "region": "",
    "city": "",
    "town": "",
    "brand": "",
    "model": "",
    "startUrls": [
        {
            "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici"
        },
        {
            "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&o=2"
        },
        {
            "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&sort=priceasc&ps=10&pe=100"
        },
        {
            "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&advt=1"
        },
        {
            "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&shp=true"
        },
        {
            "url": "https://www.subito.it/annunci-lombardia/vendita/usato/milano/?q=bici"
        },
        {
            "url": "https://www.subito.it/annunci-italia/vendita/usato/"
        },
        {
            "url": "https://www.subito.it/annunci-italia/vendita/biciclette/"
        },
        {
            "url": "https://www.subito.it/annunci-lombardia/vendita/auto/"
        },
        {
            "url": "https://www.subito.it/annunci-italia/vendita/auto/toyota/corolla/"
        },
        {
            "url": "https://www.subito.it/annunci-italia/vendita/moto-e-scooter/"
        },
        {
            "url": "https://www.subito.it/annunci-italia/vendita/immobili/"
        },
        {
            "url": "https://www.subito.it/annunci-italia/vendita/appartamenti/"
        },
        {
            "url": "https://www.subito.it/annunci-lazio/affitto/appartamenti/roma/?ps=500&pe=1200"
        },
        {
            "url": "https://www.subito.it/annunci-italia/affitto/appartamenti/"
        },
        {
            "url": "https://www.subito.it/annunci-italia/vendita/offerte-lavoro/"
        },
        {
            "url": "https://www.subito.it/annunci-italia/cerco/usato/?q=bici"
        },
        {
            "url": "https://www.subito.it/annunci-italia/regalo/usato/"
        },
        {
            "url": "https://www.subito.it/bambini-giocattoli/seggiolino-bici-con-morsetto-di-attacco-arezzo-665060654.htm"
        },
        {
            "url": "https://www.subito.it/auto/mercedes-benz-b200-treviso-664945738.htm"
        },
        {
            "url": "https://www.subito.it/utente/106698735"
        },
        {
            "url": "https://m.subito.it/annunci-italia/vendita/usato/?q=bici"
        }
    ],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IT"
    },
    "incrementalMode": false,
    "emitUnchanged": false,
    "emitExpired": false,
    "ignoreFieldsForChanges": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/subito-it-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 = {
    "category": "marketplace",
    "searchQuery": "",
    "region": "",
    "city": "",
    "town": "",
    "brand": "",
    "model": "",
    "startUrls": [
        { "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici" },
        { "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&o=2" },
        { "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&sort=priceasc&ps=10&pe=100" },
        { "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&advt=1" },
        { "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&shp=true" },
        { "url": "https://www.subito.it/annunci-lombardia/vendita/usato/milano/?q=bici" },
        { "url": "https://www.subito.it/annunci-italia/vendita/usato/" },
        { "url": "https://www.subito.it/annunci-italia/vendita/biciclette/" },
        { "url": "https://www.subito.it/annunci-lombardia/vendita/auto/" },
        { "url": "https://www.subito.it/annunci-italia/vendita/auto/toyota/corolla/" },
        { "url": "https://www.subito.it/annunci-italia/vendita/moto-e-scooter/" },
        { "url": "https://www.subito.it/annunci-italia/vendita/immobili/" },
        { "url": "https://www.subito.it/annunci-italia/vendita/appartamenti/" },
        { "url": "https://www.subito.it/annunci-lazio/affitto/appartamenti/roma/?ps=500&pe=1200" },
        { "url": "https://www.subito.it/annunci-italia/affitto/appartamenti/" },
        { "url": "https://www.subito.it/annunci-italia/vendita/offerte-lavoro/" },
        { "url": "https://www.subito.it/annunci-italia/cerco/usato/?q=bici" },
        { "url": "https://www.subito.it/annunci-italia/regalo/usato/" },
        { "url": "https://www.subito.it/bambini-giocattoli/seggiolino-bici-con-morsetto-di-attacco-arezzo-665060654.htm" },
        { "url": "https://www.subito.it/auto/mercedes-benz-b200-treviso-664945738.htm" },
        { "url": "https://www.subito.it/utente/106698735" },
        { "url": "https://m.subito.it/annunci-italia/vendita/usato/?q=bici" },
    ],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IT",
    },
    "incrementalMode": False,
    "emitUnchanged": False,
    "emitExpired": False,
    "ignoreFieldsForChanges": [],
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/subito-it-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 '{
  "category": "marketplace",
  "searchQuery": "",
  "region": "",
  "city": "",
  "town": "",
  "brand": "",
  "model": "",
  "startUrls": [
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&o=2"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&sort=priceasc&ps=10&pe=100"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&advt=1"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/?q=bici&shp=true"
    },
    {
      "url": "https://www.subito.it/annunci-lombardia/vendita/usato/milano/?q=bici"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/usato/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/biciclette/"
    },
    {
      "url": "https://www.subito.it/annunci-lombardia/vendita/auto/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/auto/toyota/corolla/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/moto-e-scooter/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/immobili/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/appartamenti/"
    },
    {
      "url": "https://www.subito.it/annunci-lazio/affitto/appartamenti/roma/?ps=500&pe=1200"
    },
    {
      "url": "https://www.subito.it/annunci-italia/affitto/appartamenti/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/vendita/offerte-lavoro/"
    },
    {
      "url": "https://www.subito.it/annunci-italia/cerco/usato/?q=bici"
    },
    {
      "url": "https://www.subito.it/annunci-italia/regalo/usato/"
    },
    {
      "url": "https://www.subito.it/bambini-giocattoli/seggiolino-bici-con-morsetto-di-attacco-arezzo-665060654.htm"
    },
    {
      "url": "https://www.subito.it/auto/mercedes-benz-b200-treviso-664945738.htm"
    },
    {
      "url": "https://www.subito.it/utente/106698735"
    },
    {
      "url": "https://m.subito.it/annunci-italia/vendita/usato/?q=bici"
    }
  ],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IT"
  },
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "ignoreFieldsForChanges": []
}' |
apify call abotapi/subito-it-scraper --silent --output-dataset

```

## MCP server setup

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