Subito.it Classifieds Scraper - Italy Marketplace
Pricing
from $1.75 / 1,000 results
Subito.it Classifieds Scraper - Italy Marketplace
Scrapes subito.it, Italy's largest classifieds marketplace: cars, property, electronics, jobs and 38 more categories across all 20 regions. Returns price, location, seller type, images and every category attribute, with honest reporting of subito's 9,000-item paging wall.
Pricing
from $1.75 / 1,000 results
Rating
0.0
(0)
Developer
Ibnu Adzim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Subito.it Classifieds Scraper — Italy's Largest Marketplace
Every listing on subito.it: cars, motorbikes, property, electronics, furniture, jobs and 36 more categories, across all 20 Italian regions.
Price, location down to the town, seller type, images and every category-specific attribute upstream publishes. No API key, no login.
The number subito shows you is mostly out of reach
Search "auto" nationwide and subito reports 530,881 listings across 17,697 pages. It will serve you 300 of them.
Page 300 returns rows; page 301 is a hard HTTP 404. That is 9,000 items — 1.7% of what the page's own counter advertises — and the cap is fixed, not proportional: a region with 114 real pages hits the same wall.
A scraper that trusts totalPages walks into that 404 at page 301 and either
crashes or stops quietly while still reporting half a million results. This
one reports the gap on every query:
| Field | Meaning |
|---|---|
totalAvailable | what subito says exists |
reachableItemCeiling | 9,000 — what any single query can actually page to |
itemsUnreachableByPaging | the difference, per query |
reachableCeilingHit | whether this run hit the wall |
The way past it is to partition, not to page harder. Region and category are path segments and both genuinely filter, so twenty regions × forty-two categories is 840 independent 9,000-item windows rather than one.
What you get
Three record types share one dataset, told apart by recordType:
LISTING— title, description, price in euro, publication timestamp, region / province / town, listing URL, every image URL, the advertiser (dealer trading name, shop id, private-vs-dealer flag), andfeatures: upstream's own attribute set for that category, kept verbatim. A car carries/fuel,/gearbox,/mileage,/power,/year,/car(make, model, trim); a flat carries entirely different ones. Nothing is renamed, so a category this actor's author never opened still comes through whole.SEARCH_SUMMARY— one per region × category: filters applied, upstream's echo of what it actually searched, the totals above, and every honesty flag.ERROR— one per input that failed, so every input maps to at least one row.
Every row carries _input, _source, _scrapedAt, recordType.
Filters, and only the ones that work
Every offered filter was verified twice: the result total had to move by far more than churn (subito's baseline is perfectly stable — three identical requests returned 530,881 every time), and every returned row had to satisfy it.
| Input | Verified |
|---|---|
categories / regions | path segments; upstream echoes both back, checked before paging |
query + titleOnly | a real keyword narrows 530,881 → 37,118 and 30/30 rows match; nonsense returns an honest zero |
advertiserType | private 290,112 + dealer 240,815 ≈ the 530,881 baseline — the two halves partition the catalogue |
minPrice / maxPrice | 30/30 rows inside the range |
sortOrder | priceasc returns €1 listings, pricedesc returns €9,999,999 ones |
Parameters that subito accepts and silently ignores (t, urg, ndo —
each moves the total by under 100 out of 530,881, and upward) are refused
with an explanation rather than offered as no-ops.
For category-specific attributes there is extraFilters, a raw
passthrough — and because unknown parameters are ignored in silence, supplying
it makes the run fetch the same search without them and report both totals
in extraFiltersChangedTotal. Whether your filter did anything is a field,
not a guess.
Known limits
- 9,000 items per query, however large the total. Partition by region, category or price.
- No seller names for private sellers.
advertiser.nameis empty for everyone on the search surface; dealers are named via their shop, private sellers are not named at all. No phone numbers are exposed here either. - Listing detail pages are not fetched — the search rows already carry the full description and every image, so a detail pass would multiply requests for almost nothing.
- Only
vendita(for sale) listings; subito's/acquisto/path does not exist. - DataDome is on this domain. It never fired during recon and rarely fires
in normal use, but it triggers on request rate: the actor backs off 8 s /
20 s / 45 s and tells you to raise
minRequestIntervalor lowermaxConcurrency. A residential proxy is the next step if it persists.