Subito.it Scraper at a glance
Subito.it Scraper is a ready-to-run Apify actor from abotapi for collecting real estate data. Its documented output includes id, title, change type (incremental mode), price and cur, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.00 per 1,000 results on the Apify Free plan and from $0.70 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Real Estate, Ecommerce, Jobs
- Region
- Europe
- Pricing
- $1.00 per 1,000 results (Free plan), from $0.70 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 47 options
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.
What Subito.it Scraper can do
- 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.
Choose what to collect
These inputs let you configure Subito.it Scraper - Classifieds, Prices, Sellers & Listings. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
categorystring · required | 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. |
searchQuerystring | 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. |
subjectOnlyboolean | Match the keyword only against the ad title (not the description). |
regionstring | Region name or region id. Leave empty for all of Italy. |
citystring | Province (provincia) name or id to narrow results. |
townstring | Town (comune) name or id to narrow results further. |
priceMininteger | Minimum price in euro. For jobs this maps to the advertised salary when present. |
Show 40 more inputs
| Input | What it controls |
|---|---|
priceMaxinteger | Maximum price in euro. |
sellerTypestring | Filter by advertiser. Any = both, Private = individuals, Company = businesses/dealers. |
sortstring | Result ordering. Relevance / newest / price options work for every vertical; the year, mileage, power and length options only apply to cars & motors. |
adTypestring | 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. |
conditionarray | Marketplace only. Filter by item condition. Choose one or more. |
shippableOnlyboolean | Marketplace only. Show only ads that offer shipping. |
brandstring | Cars only. Brand id (e.g. 000101 = Volkswagen). |
modelstring | Cars only. Model id (depends on the chosen brand). |
yearMininteger | Cars only. Earliest registration year. |
yearMaxinteger | Cars only. Latest registration year. |
mileageMininteger | Cars only. Minimum kilometres. |
mileageMaxinteger | Cars only. Maximum kilometres. |
fuelTypearray | Cars only. Filter by fuel. Choose one or more. |
gearboxstring | Cars only. Transmission type. |
bodyTypearray | Cars only. Filter by body style. Choose one or more. |
vehicleStatusarray | Cars only. Used, zero-km or new. Choose one or more. |
sizeMininteger | Real estate only. Minimum surface in square metres. |
sizeMaxinteger | Real estate only. Maximum surface in square metres. |
roomsMininteger | Real estate only. Minimum number of rooms. |
roomsMaxinteger | Real estate only. Maximum number of rooms. |
bathroomsMininteger | Real estate only. Minimum number of bathrooms. |
buildingConditionarray | Real estate only. Filter by property condition. Choose one or more. |
jobCategoryarray | Jobs only. Filter by job sector. Choose one or more. |
contractTypearray | Jobs only. Filter by contract type. Choose one or more. |
workHoursstring | Jobs only. Filter by working hours. |
educationDegreestring | Jobs only. Filter by required education level. |
startUrlsarray | 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. |
scrapeDetailboolean | 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. |
scrapeReviewsboolean | 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. |
maxItemsinteger | Hard cap on the total number of listings across all searches and URLs. Defaults to 100; the maximum is 100000. |
maxItemsPerQueryinteger | Per-search / per-URL cap for multi-search runs. Leave empty for no per-search limit (still bounded by Max items). |
resumeFromRunIdstring | 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. |
incrementalModeboolean | 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. |
stateKeystring | 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. |
emitUnchangedboolean | 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. |
emitExpiredboolean | 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. |
ignoreFieldsForChangesarray | 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. |
mcpConnectorsarray | 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. |
notionParentPageUrlstring | URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
idID (text)titleTitle (text)changeTypeChange type (incremental mode) (text)pricePrice (number)currencyCur (text)adTypeAd type (text)categoryCategory (text)conditionCondition (text)regionRegion (text)cityProvince (text)townTown (text)imageCountImages (number)Show 61 more fields
sellerNameSeller (text)sellerTypeSeller type (text)postedAtPosted (text)urlURL (link)changedFieldsChanged fields (incremental mode) (array)firstSeenAtFirst seen (incremental mode) (date)lastSeenAtLast seen (incremental mode) (date)makerMake (text)modelModel (text)versionVersion (text)yearOfRegistrationYear (text)mileageKm (number)fuelTypeFuel (text)transmissionGearbox (text)bodyTypeBody (text)powerPower (text)powerKwPower kW (number)powerHpPower hp (number)vehicleTypeVehicle type (text)warrantyMonthsWarranty (months) (number)provinceCodeProvince code (text)sizem² (number)roomsRooms (text)bathroomsBaths (text)floorFloor (text)energyClassEnergy (text)buildingConditionCondition (text)jobCategorySector (text)contractTypeContract (text)workHoursHours (text)workLevelLevel (text)educationDegreeEducation (text)sellerIdSeller ID (text)isCompanyCompany (boolean)sellerPhonePhone (text)sellerVatVAT (text)shopIdShop ID (text)shopNameShop (text)sellerReputation.overallScoreRep: Overall score (number)sellerReputation.receivedCountRep: Received count (number)sellerReputation.sellerFeedbackCountRep: Seller feedback count (number)sellerReputation.buyerFeedbackCountRep: Buyer feedback count (number)sellerReputation.verifiedRep: Verified (boolean)sellerReputation.memberSinceRep: Member since (text)sellerReputation.replyRateTextRep: Reply rate text (text)sellerReputation.replyTimeTextRep: Reply time text (text)sellerReputation.profileUrlRep: Profile url (text)engineSizeCcEngine cc (number)enginePowerKwPower kW (number)horsepowerHP (number)cylindersCylinders (number)gearsGears (number)driveWheelDrive (text)powerToWeightRatioPower/weight (text)fuelConsumptionConsumption (text)lengthMLength m (number)widthMWidth m (number)heightMHeight m (number)weightKgWeight kg (number)wheelbaseMWheelbase m (number)equipmentEquipment (array)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"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"
}
}Ways to use this data
- 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.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Subito.it Scraper return?
The documented output for Subito.it Scraper includes id, title, change type (incremental mode), price, cur, ad type, category and condition. Availability of each field depends on the source page and the selected mode.
How much does Subito.it Scraper cost?
It costs $1.00 per 1,000 results on the Apify Free plan and from $0.70 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
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.
