Subito.it 🧡 Scraper⚡
Pricing
from $1.59 / 1,000 results
Subito.it 🧡 Scraper⚡
Scrape Subito.it listings at scale. Extract titles, prices, locations, seller info, images and URLs from Italy's largest classifieds marketplace. Supports keyword search, category and price filters, pagination.
Pricing
from $1.59 / 1,000 results
Rating
5.0
(1)
Developer
Nogards
Maintained by CommunityActor stats
1
Bookmarked
61
Total users
13
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
Subito.it Scraper — Listings, Prices & Sellers
Who is this for
Resellers, used-car and equipment dealers, price researchers and lead-gen teams who need Italian classifieds data on a schedule. Search Subito.it, Italy's largest classifieds site, by keyword, category, province and price range, and get every listing as structured data.
What you get
- Every listing on the pages you scrape: title, price, location, link, images, full description, condition, publication date, and whether the seller is a private person or a business.
- Filters that map to real searches: keyword, category, province, minimum and maximum price, number of pages.
- Ready for your tools: export to JSON, CSV, Excel or XML, call it from the API, or run it on a schedule to track new listings and price changes.
Sample output
{"title": "Iphone 15 256gb LEGGE BENE MILANO","price": 280,"priceRaw": "280 €","currency": "EUR","link": "https://www.subito.it/telefonia/iphone-15-256gb-legge-bene-milano-milano-658616636.htm","location": "Milano (MI)","images": ["https://images.sbito.it/api/v1/sbt-ads-images-pro/images/31/31ce9019-d313-4486-bdc6-526b2bfe6383?rule=vertical-mini-card-1x-auto"],"id": "658616636","description": "Vendo iPhone 15 da 256GB, guasto e da riparare. Il telefono è caduto…","publishedAt": "2026-08-28 13:28:57","category": "Telefonia","categorySlug": "telefonia","town": "Milano","province": "Milano","provinceCode": "MI","region": "Lombardia","condition": "Buono - usato ma ben conservato","shippable": false,"sellerId": "111734348","isCompany": false}
Use cases
- Reselling and arbitrage: find underpriced phones, consoles, bikes or furniture in a province every morning, before other buyers do.
- Dealer sourcing: list every car, van or piece of equipment for sale in a
price band, and filter by
isCompanyto separate private sellers from dealers. - Second-hand price research: collect prices and conditions for a product across Italy to set your own prices or value stock.
- Market monitoring: run the same search daily and compare datasets to see new listings and price drops.
Input
The form has three sections: Search, Price filters and Limits.
| Field | Description | Default |
|---|---|---|
| Search Keyword | What to search for, e.g. iphone 15, divano, bicicletta | — |
| Category | Subito.it category to search in. Leave empty to search all used items. | all used items |
| Province | Italian province to filter by. The region is resolved automatically. | all Italy |
| Minimum Price (€) | Lowest price to include. Enforced by Subito for category-specific searches; in the generic "all used items" search Subito may still include some listings outside this range. | none |
| Maximum Price (€) | Highest price to include. Same category note as above. | none |
| Maximum Pages | How many result pages to scrape, roughly 30 listings each (max 50) | 3 |
Provide a keyword, a category, or both.
Examples
Cheapest iPhone 15 in Milan under €500:
{ "keyword": "iphone 15", "province": "milano", "maxPrice": 500 }
Cars between €1,000 and €5,000:
{ "category": "auto", "minPrice": 1000, "maxPrice": 5000, "maxPages": 10 }
Sofas across Italy, 20 pages:
{ "keyword": "divano", "maxPages": 20 }
Output fields
| Field | Type | Description |
|---|---|---|
title | string | Listing title |
price | number | null | Price as a number. null when the seller did not set one. |
priceRaw | string | null | Price as shown on Subito, e.g. "280 €" |
currency | string | Always "EUR" |
link | string | Listing URL |
location | string | "Town (PR)", e.g. "Milano (MI)" |
images | array | Image URLs |
id | string | Subito listing id |
description | string | Full listing description |
publishedAt | string | When the listing was published |
category | string | Category name, e.g. "Telefonia" |
categorySlug | string | Category slug, e.g. "telefonia" |
town | string | Town |
province | string | Province name |
provinceCode | string | Two-letter province code |
region | string | Region |
condition | string | null | Item condition as stated by the seller |
shippable | boolean | Whether the seller offers shipping |
sellerId | string | Seller id |
isCompany | boolean | Whether the seller is a business |
Pricing
You pay per listing added to your dataset:
| Apify plan | Price per 1,000 listings |
|---|---|
| Free | $2.00 |
| Bronze | $1.99 |
| Silver | $1.79 |
| Gold and above | $1.59 |
A small start fee applies per run ($0.001 on the Free plan). Example: the default 3 pages return about 90 listings, which costs about $0.18 on the Free plan. Use Maximum Pages to cap the cost of each run.
Scheduling and monitoring
- Save your input as a task in the Apify Console.
- Add a schedule, for example every morning at 7:00.
- Each run writes a new dataset. Compare
idvalues between runs to find new listings, andpricevalues to find price drops.
You can send results to Google Sheets, Slack, a webhook or your own database with Apify integrations.
Use it from the API
Node.js (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('nogards95/subito-scraper').call({keyword: 'iphone 15',province: 'milano',maxPrice: 500,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("nogards95/subito-scraper").call(run_input={"keyword": "iphone 15", "province": "milano", "maxPrice": 500})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["price"])
cURL, run and get the results in one call:
curl -X POST "https://api.apify.com/v2/acts/nogards95~subito-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keyword": "iphone 15", "province": "milano", "maxPrice": 500}'
AI agents can call this Actor through the Apify MCP server with the same input.
Limits and troubleshooting
- Repeated listings: Subito repeats some featured listings across result
pages of the same search. Each page is scraped and billed independently, so
deduplicate on
idif you need unique listings. - Price range not strict: in the generic "all used items" search Subito
does not always apply
minPrice/maxPrice. Pick a category for a strict price range. - Few or no results: try a shorter keyword, remove the province, or check the same search on subito.it.
- Invalid province or category: the run fails immediately with the list of valid values, so a typo never costs you a full run.
Technical notes
- HTTP-only scraper, no headless browser, so runs start fast and use little memory.
- Province slugs follow Subito.it's own naming, which occasionally differs from
the administrative name: Monza e della Brianza is
monza, and Sardinia keepsmedio-campidano,gallura,ogliastraandsulcis-iglesiente. Legacy names such asmonza-brianzaandsud-sardegnaare accepted and mapped automatically. minPrice/maxPriceare sent to Subito as search filters and enforced server-side inside category-specific searches (e.g.auto).
Support
Found a bug or need a field that isn't here? Open an issue on the Actor's Issues tab.