Subito.it Scraper avatar

Subito.it Scraper

Pricing

from $1.59 / 1,000 results

Go to Apify Store
Subito.it Scraper

Subito.it Scraper

Extract Subito.it listings as clean JSON with zero seller personal data - euro prices, descriptions, categories, condition, shipping flag, municipality-level locations. Newest-first monitoring, pay per result. Built for deal watching, market research and AI pipelines.

Pricing

from $1.59 / 1,000 results

Rating

0.0

(0)

Developer

Lowland Data

Lowland Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Categories

Share

Subito.it Scraper — privacy-safe Italian listings data

Extract listings from Subito.it — Italy's largest classifieds marketplace — as clean, structured JSON. Prices, descriptions, categories, conditions, shipping availability, municipalities and photos, ready for price monitoring, market research and data pipelines.

No seller personal data, ever. This scraper is built GDPR-first: seller names, user IDs and contact routes never appear in the output — not as an option you have to remember to switch off, but by design. The only seller information included is whether the listing comes from a business or a private seller.

Quick start (30 seconds)

  1. Put what you'd type in the Subito search box into searchQuery — e.g. bici da corsa.
  2. Click Start. That's the whole minimum setup.
  3. When the run finishes, open the dataset's Overview tab for a clean table, or Export it as CSV/Excel/JSON.

Optional knobs: a price band in euros and newest-first sorting for monitoring — and any input works on a daily Schedule.

What you can build with it

  • Watch a niche for underpriced listings. Run searchQuery: "vespa" with priceMaxEur: 2000 and sortBy: "date" hourly — every new listing arrives with the price already parsed.
  • Filter by condition and shipping. condition and shippable come structured — analysis without reading Italian descriptions.
  • Map second-hand prices by region. Every listing carries its municipality, province and region — compare what the same bike costs in Lombardia versus Sicilia.
  • Feed an AI agent clean data. Every field is structured, predictable and free of personal data, so an assistant or pipeline can consume it directly — no scrubbing, no compliance review before you store it.

What you get

Each listing is one dataset item:

{
"listingId": "657990001",
"url": "https://www.subito.it/biciclette/bici-da-donna-vintage-ancona-657990001.htm",
"title": "Bici da donna vintage",
"description": "Bici da donna anni 50, completa di cestino e campanello.",
"priceEur": 100,
"currency": "EUR",
"category": "Biciclette",
"condition": "Buone condizioni",
"shippable": false,
"town": "Jesi",
"province": "Ancona",
"region": "Marche",
"sellerType": "private",
"postedAt": "2026-08-22 20:14:32",
"imageUrls": ["https://images.sbito.it/api/v1/sbt-ads-images-pro/images/63/example"]
}

Field notes, so you know exactly what you are buying:

  • priceEur is in euros; listings without a price carry null honestly.
  • town, province and region are locality-level — no addresses, no coordinates.
  • sellerType separates professional sellers from private ones. Seller identity is never collected.
  • condition and shippable come from the site's structured attributes, not text parsing.

How much does it cost to scrape Subito?

$1.99 per 1,000 listings delivered, pay-as-you-go — no subscription, no charge for empty or failed runs. In plain euros:

  • 100 listings ≈ $0.20 — a daily niche watch.
  • 500 listings ≈ $1.00 — a solid market snapshot.

The price is all-inclusive — your runs' platform usage is covered by it, with no separate compute or proxy charges. Runs are fast — a scoped few-hundred-item run typically finishes in under ten seconds. Datacenter proxies are sufficient — no residential proxy surcharge needed.

Free-plan runs are limited to a sample of 25 items, enough to evaluate the output format against your real query.

Not technical? Let your AI assistant set it up

Copy this into ChatGPT, Claude or any AI assistant, fill in the one line, and follow the conversation:

Help me set up the "Subito.it Scraper" actor on Apify
(https://apify.com/lowlanddata/subito-scraper). Guide me one step at a time.
What I want to watch: [E.G. "road bikes under 500 euros"]
Guide me to:
1. Propose my input values: searchQuery (what I'd type in the Subito search box),
an optional priceMinEur/priceMaxEur band, sortBy "date" for newest-first
monitoring, and maxItems.
2. Create a free Apify account (apify.com), open the actor page, paste the values
into the Input form, and start a run.
3. Set up a daily Schedule in the Apify Console with the same input, plus an email
or Slack integration so new results reach me automatically.
4. Show me how to export results as CSV/Excel, or read them from the API if I code.
5. If the results are what I wanted, remind me at the end to leave a quick rating on the actor page, and to report anything broken or missing on its Issues tab.

Input

FieldDescription
searchQueryWhat you'd type in the Subito search box. Required. Searches all of Italy.
priceMinEurOnly listings costing at least this many euros.
priceMaxEurOnly listings costing at most this many euros.
sortBydate (newest first, default) or relevance.
postedAfterOnly listings posted on or after this date (YYYY-MM-DD). Stops early with newest-first sorting.
postedBeforeOnly listings posted on or before this date (YYYY-MM-DD).
maxItemsStop after this many listings (default 500).
proxyConfigurationProxy settings; keep Apify proxy enabled.

A run minimally needs a searchQuery; invalid combinations (like an inverted price band) fail immediately with the reason in the run's status message.

Use it from your code

Run the actor and get items straight back with one HTTP call (fine for scoped runs up to ~5 minutes):

curl "https://api.apify.com/v2/acts/lowlanddata~subito-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-X POST -H "Content-Type: application/json" \
-d '{"searchQuery": "bici da corsa", "maxItems": 100}'

Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('lowlanddata/subito-scraper').call({
searchQuery: 'bici da corsa',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lowlanddata/subito-scraper").call(
run_input={"searchQuery": "bici da corsa", "maxItems": 100})
items = client.dataset(run["defaultDatasetId"]).list_items().items

Schedules, webhooks and the Make/Zapier/n8n integrations all work out of the box — this is a standard Apify actor.

Use it with AI agents (MCP)

Claude, Cursor and other MCP-capable agents can run this scraper as a tool through Apify's hosted MCP server: the agent fills in the search itself, starts the run and reads the results — no glue code.

Claude Code:

$claude mcp add apify --transport http "https://mcp.apify.com?actors=lowlanddata/subito-scraper"

Cursor or Claude Desktop (add a custom connector / MCP server with this URL):

https://mcp.apify.com?actors=lowlanddata/subito-scraper

Sign in with your Apify account when prompted — runs are billed to it. Setup details per client: Apify MCP docs.

Prompts that work once connected:

  • "Search Subito for 'vespa' under 2000 euros and summarize prices by region."
  • "Get the 100 newest 'iphone 15' listings from Subito and flag anything below the median price."
  • "Watch Subito for 'bici da corsa' and tell me when something shippable under 300 euros appears."

Public listing data — prices, descriptions, municipalities — is public commercial information, and this scraper is built so that the hard part of the question never arises: no personal data enters your dataset in the first place. The GDPR and Italy's Garante set strict rules on personal data; an output that carries none of the seller's identity is the point of this actor, not an afterthought.

Structurally, the extractor maps a fixed whitelist of fields out of the site's search data. The advertiser block — names, user IDs, contact routes — is never read into the output. Requests are paced, load on the site is kept negligible, and no anti-bot protection is bypassed.

One honest limit: titles and descriptions are the seller's own words, delivered as-is. If a seller chooses to type contact details into their listing text, that text is not rewritten — the guarantee covers the data fields, not the content sellers publish about themselves.

Is there a Subito API alternative?

Subito publishes no public API for listings. This actor is the practical alternative: the same listings as structured JSON through one HTTP call (run-sync-get-dataset-items), on a schedule, or as an MCP tool for AI agents — with the privacy question already answered in the data itself.

Does Subito block scrapers?

Subito serves its listings openly to ordinary requests — and this actor stays inside that welcome: paced requests, standard datacenter proxies, load kept negligible. No CAPTCHA fights, no bot-wall cat-and-mouse — which is also why runs are fast and reliable enough for daily schedules.

How do I monitor Subito prices?

Set sortBy: "date" with your query and price band, cap maxItems to a page or two, and add a daily (or hourly) Schedule in the Apify Console with an email/Slack integration on the runs — every new listing lands in your inbox with the price already parsed. The AI-assistant prompt above walks a non-technical user through exactly this setup. Even tighter: set postedAfter to yesterday's date — the dataset then contains only the new listings, nothing to dedupe on your side.

FAQ

Can I get seller names or phone numbers? No — by design. That is the product: data you can store, share and process without a privacy review.

Can I search one region only? v1 searches all of Italy; every listing carries region, province and town, so filter the dataset. Location-scoped search is a planned refinement.

Can I get only the newest listings? Yes — set postedAfter to a date (yesterday, say) and the dataset contains only listings posted since then. With newest-first sorting the run stops paging as soon as it provably reaches older listings, so a daily watch stays fast and cheap.

How fresh is the data? Live at run time — every run queries Subito directly. For continuous freshness, schedule the actor.

Can I export to Excel or CSV? Yes — every dataset exports as CSV, Excel, JSON or XML from the Apify Console or API.

Does it work with Make, Zapier or n8n? Yes — it is a standard Apify actor; all platform integrations, webhooks and schedules apply.

Do I need to search in Italian? Use the words Italian sellers use — the query goes straight into Subito's own search, so bici da corsa finds what "road bike" would miss.

Can I compare second-hand prices between northern and southern Italy? Yes, from a single run: every listing carries region, province and town, so grouping prices by Lombardia versus Sicilia is one pivot table away.

How do I find only items that can be shipped to me? Filter on the shippable boolean — it comes from Subito's structured attributes, so you can drop pickup-only listings on the other side of the country without reading a word of the ad.

Can I tell professional dealers from private sellers? Yes — sellerType marks each listing as business or private. That flag is the only seller information collected; identity never is.

How do I judge condition without reading Italian descriptions? The condition field is a structured site attribute (e.g. Buone condizioni), not text parsing — filter on it directly.

What happens when a listing has no price? priceEur is null, honestly — nothing is guessed or imputed, and you can drop or keep those rows as you like.

How do I get alerted when a cheap Vespa appears? Put vespa and a priceMaxEur on an hourly Schedule with sortBy: "date" and an email or Slack integration — each run delivers only what is new, especially with postedAfter set to yesterday.

Can I sort results by price? Not at the source — Subito ordering here is date or relevance only. Set a price band with priceMinEur/priceMaxEur instead, or sort the exported table.

Is scraping Subito allowed under Italian privacy law? The output is built for the rules the GDPR and Italy's Garante enforce: a fixed whitelist keeps names, user IDs and contact routes out of the dataset entirely. What you store is public commercial listing data.

Does Subito.it have an official API? No public one exists. This actor stands in for it — the same listings as structured JSON over one HTTP call, on a schedule, or as an MCP tool.

What does it cost to pull Subito listings? $1.99 per 1,000 delivered listings; a 100-listing daily watch is roughly $0.20, and you pay nothing for failed or empty runs.

Why did I receive only 25 listings? Free-plan runs return a 25-item sample so you can check the fields against your query. Full results come with any paid Apify plan.

Can I get a seller's address from a listing? No — location data stops at town, province and region. No street addresses, no coordinates, ever.

Can an AI assistant run Subito searches for me? Yes — through Apify's hosted MCP server, agents such as Claude or Cursor can launch a search like "newest iphone 15 listings below the median price" and read the dataset themselves.

The same clean-output guarantee across Europe's biggest marketplaces:

Troubleshooting

The actor fails fast with the reason in the run's status message:

  • "priceMinEur must not be higher than priceMaxEur." — swap the two values.
  • "Subito blocked the run before any results could be fetched. This is usually temporary - retry in a few minutes." — a temporary block on the first request; a retry usually lands on a clean proxy session.
  • Fewer items than requested on a free plan — the 25-item free sample cap; run on a paid Apify plan for full results.

Support

Found an issue or missing a field you need? Open an issue on the actor's Issues tab — reports get fixed, this actor is actively maintained.

Working well for you? A rating on this page takes ten seconds and helps other buyers find a privacy-clean option among the lookalikes — it is also the clearest signal of what we should build next.