Marketplaces
Subito Scraper: Scrape Subito.it Annunci and Real Estate Data
Scrape Subito.it annunci by URL or keyword: prices, descriptions, location, seller info and optional phone numbers, plus a dedicated real estate scraper.
Marketplaces
Scrape Subito.it annunci by URL or keyword: prices, descriptions, location, seller info and optional phone numbers, plus a dedicated real estate scraper.
Subito.it is Italy’s largest classifieds site: used cars, phones, furniture, bikes, jobs and a huge number of private property ads. There’s no public developer API, and copying annunci by hand doesn’t scale past a few pages.
Epic Scrapers has two Subito actors on Apify:
surface, rooms and energy_class in the output.Both can optionally add seller phone numbers, shop details for professional sellers, and seller account reputation.
Every listing includes:
| Field | What it holds |
|---|---|
title, description, page_url |
Ad title, full text and link |
price |
value (number) and formatted ("429 €") |
category, sub_category, type |
Category and ad type, e.g. vendo |
geo |
city, province, province_code, region |
publication_date |
iso, date, time, timestamp, local |
advertiser_type, advertiser_name |
privato or azienda, and display name |
features |
Category attributes: condition and shipping for goods, mileage and fuel for cars, rooms and surface for homes |
images, mainImage |
Image URLs |
Optional enrichment adds phone_number, an expanded advertiser_shop_data (address, website, logo, listing_count, shop page), and advertiser_account (first_ad_insertion_date, total_num_approved_ads, badges). Each enrichment is a separate toggle and is billed only when it returns data.
The fastest route: set up the search on Subito.it with the region, category, keyword and price filters you want, copy the URL, and paste it into Start URLs in the Subito Scraper. Filters in the URL are kept.
{
"startUrls": [
"https://www.subito.it/annunci-lazio/vendita/elettronica/?q=iphone+13"
],
"maxItemsPerQuery": 50
}
Start URLs are plain strings, not { "url": ... } objects. You can also paste a single listing URL (ending in -123456789.htm) to fetch just that ad.
Keywords let you build searches without visiting the site. Each keyword runs as its own search, and the category, location, sort and price filters apply to all of them:
{
"searchKeywords": ["ps5", "nintendo switch oled"],
"category": "videogiochi",
"location": "regione Lombardia",
"sortOrder": "datedesc",
"minPrice": 100,
"maxPrice": 400,
"maxItemsPerQuery": 100,
"enrichUserAccount": true
}
A few input details:
location takes free text: a comune (Genova), a province (provincia di Genova) or a region (regione Liguria).sortOrder is relevance (default), datedesc (newest first), priceasc or pricedesc.category uses Subito’s slugs, such as auto, moto-e-scooter, elettronica, telefonia, informatica, biciclette, arredamento-casalinghi, abbigliamento-accessori, immobili or offerte-lavoro. Leave it empty for all categories.maxItemsPerQuery defaults to 100 per URL or keyword; 0 means no limit.{
"request_url": "https://www.subito.it/annunci-lazio/vendita/elettronica/?q=iphone+13",
"title": "Apple iPhone 13 128GB Nuovo",
"description": "Vendo iPhone 13 128GB nero, mai usato, ancora sigillato...",
"page_url": "https://www.subito.it/elettronica/apple-iphone-13-128gb-nuovo-roma-123456789.htm",
"price": { "value": 429, "formatted": "429 €" },
"category": "Elettronica",
"type": "vendo",
"geo": { "city": "Roma", "province": "Roma", "province_code": "RM", "region": "Lazio" },
"publication_date": { "iso": "2026-07-08T09:14:00.000Z", "date": "2026-07-08" },
"advertiser_type": "privato",
"advertiser_name": "Marco R.",
"features": { "item_condition": "nuovo", "shippable": "spedizione disponibile" },
"advertiser_account": {
"first_ad_insertion_date": "2021-03-14",
"total_num_approved_ads": 18,
"badges": [{ "name": "verified", "description": "Verificato", "is_active": true }]
}
}
Values come back in Italian, as Subito shows them: nuovo/usato, privato/azienda, and attribute names like Km, Carburante or Superficie inside features.
You can scrape the Immobili category with the general scraper, but the Subito Real Estate Scraper is the better tool for property data. It adds real-estate filters and returns property features as typed fields: features.price, features.surface (value and unit), rooms, bathrooms, floor, energy_class, heating, building_condition, elevator, balcony, furnished and more.
This input collects up to 200 apartments for sale in Tuscany, 60 to 120 m², three to four rooms, from private sellers only:
{
"propertyType": "appartamenti",
"adType": "s",
"advertiserType": "private",
"region": "toscana",
"minPrice": 150000,
"maxPrice": 350000,
"minSurface": 60,
"maxSurface": 120,
"minRooms": 3,
"maxRooms": 4,
"maxItemsPerQuery": 200
}
| Input | Options |
|---|---|
propertyType |
appartamenti (default), camere-posti-letto, ville-singole-e-a-schiera, terreni-e-rustici, garage-e-box, loft-e-mansarde, case-vacanza, uffici-locali-commerciali, or "" for all |
adType |
s sale, u rent, h holiday rental, "" all |
advertiserType |
private, professional, "" both |
region |
All 20 regions, e.g. lombardia, lazio, sicilia, emilia-romagna, valle-d-aosta |
floor |
"1" (ground floor) to "7" (6th floor or higher) |
energyClass |
Free text, e.g. A4, B, D |
Subito treats price as a soft filter, so check features.price.value if you need a strict range. For city-level searches, paste a Subito URL that already has the comune selected, or use keywords like "trilocale navigli milano".
Trimmed output for one apartment:
{
"sub_category": "Appartamenti",
"type": "In vendita",
"advertiser_type": "privato",
"title": "Monolocale in zona Parioli",
"geo": { "city": "Roma", "province": "Roma", "province_code": "RM", "region": "Lazio" },
"features": {
"price": { "value": 185000, "formatted": "185.000 €" },
"surface": { "value": 55, "unit": "mq", "formatted": "55 mq" },
"rooms": 2,
"bathrooms": 1,
"floor": "3",
"energy_class": "D",
"heating": "Autonomo",
"elevator": true,
"balcony": true
}
}
With the JavaScript apify-client:
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('epicscrapers/subito-realestate-scraper').call({
propertyType: 'appartamenti',
adType: 'u',
region: 'lombardia',
maxPrice: 1200,
maxItemsPerQuery: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const ad of items) {
console.log(ad.title, ad.features?.price?.formatted, ad.geo?.city);
}
Or cURL for the general scraper:
curl -X POST "https://api.apify.com/v2/acts/epicscrapers~subito-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchKeywords": ["bici da corsa"], "location": "regione Veneto", "sortOrder": "datedesc", "maxItemsPerQuery": 50}'
datedesc keyword search for phones, consoles or bikes under a price cap and catch underpriced annunci as soon as they’re posted. If you also sell abroad, compare prices with the Vinted scraper.auto listings for a model across regions and compare price against mileage and fuel from features.advertiserType: "professional" and enable shop details to see which agencies and dealers are most active and how many listings each has.first_ad_insertion_date, total_num_approved_ads and badges flag brand-new accounts and unverified sellers before you get in touch.There’s no public developer API for searching Subito annunci. These actors give you the same data as structured JSON through the Apify API.
The actors collect publicly visible ads and don’t log in. Many sellers are private individuals, so names and especially phone numbers are personal data under GDPR. Only enable phone enrichment when you have a lawful reason, don’t use private sellers’ numbers for cold marketing, store as little as you need, and follow Subito’s terms. This isn’t legal advice.
Subito caps how many pages a single search returns. For large categories, split the job into narrower queries by region, property type or price band.
The Subito Real Estate Scraper. It has property filters (surface, rooms, floor, energy class, seller type) and returns those fields as typed values. Use the general Subito Scraper for everything else.
Yes. Export any run from the Output tab as CSV, Excel or JSON, or pull it from the API.
Paste one Subito search URL, keep the limit at 50, and check the output. Then add keywords, enrichment or a schedule. Run the Subito Scraper for general annunci, or the Subito Real Estate Scraper for property listings.