Subito.it 🧡 Scraper⚡ avatar

Subito.it 🧡 Scraper⚡

Pricing

from $1.59 / 1,000 results

Go to Apify Store
Subito.it 🧡 Scraper⚡

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

Nogards

Maintained by Community

Actor stats

1

Bookmarked

61

Total users

13

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

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 isCompany to 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.

FieldDescriptionDefault
Search KeywordWhat to search for, e.g. iphone 15, divano, bicicletta—
CategorySubito.it category to search in. Leave empty to search all used items.all used items
ProvinceItalian 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 PagesHow 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

FieldTypeDescription
titlestringListing title
pricenumber | nullPrice as a number. null when the seller did not set one.
priceRawstring | nullPrice as shown on Subito, e.g. "280 €"
currencystringAlways "EUR"
linkstringListing URL
locationstring"Town (PR)", e.g. "Milano (MI)"
imagesarrayImage URLs
idstringSubito listing id
descriptionstringFull listing description
publishedAtstringWhen the listing was published
categorystringCategory name, e.g. "Telefonia"
categorySlugstringCategory slug, e.g. "telefonia"
townstringTown
provincestringProvince name
provinceCodestringTwo-letter province code
regionstringRegion
conditionstring | nullItem condition as stated by the seller
shippablebooleanWhether the seller offers shipping
sellerIdstringSeller id
isCompanybooleanWhether the seller is a business

Pricing

You pay per listing added to your dataset:

Apify planPrice 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

  1. Save your input as a task in the Apify Console.
  2. Add a schedule, for example every morning at 7:00.
  3. Each run writes a new dataset. Compare id values between runs to find new listings, and price values 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 ApifyClient
client = 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 id if 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 keeps medio-campidano, gallura, ogliastra and sulcis-iglesiente. Legacy names such as monza-brianza and sud-sardegna are accepted and mapped automatically.
  • minPrice/maxPrice are 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.