Coches.net Scraper — Spain Used Cars, Prices & Dealers
Pricing
from $2.00 / 1,000 car listings
Coches.net Scraper — Spain Used Cars, Prices & Dealers
Scrape public used-car listings and dealer profiles from coches.net (Spain). Includes the site's own market-average price and price rank. robots.txt compliant. No login, no session cookies.
Pricing
from $2.00 / 1,000 car listings
Rating
0.0
(0)
Developer
Oswaldo Carabano
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
1.2 hours
Issues response
12 days ago
Last modified
Categories
Share
Coches.net Car Listings & Dealer Scraper
Extract used-car listings and dealer profiles from coches.net, Spain's largest vehicle marketplace — including the site's own market-average price and price rank, which is what tells you whether a car is priced below the market before you build any valuation model of your own.
This actor stays inside what coches.net's robots.txt allows. It never
requests a page the site asks crawlers not to request, it never signs in, and it
never uses session cookies. That is a deliberate design choice, and it is the
reason the actor keeps working: the site publishes a machine-readable set of
rules and this crawler downloads and obeys the live file on every single run.
What you get
One row per car listing, 55 fields. Everything comes from the search results themselves, so a single request returns 35 fully populated cars.
The data is delivered in English. Fuel type and offer type are translated
(Diesel, Petrol, Hybrid, Plug-in hybrid, Electric, LPG, Used,
Km0), and the exact Spanish string coches.net published is kept alongside in
fuel_type_raw and offer_type_raw so you can always verify it against the
source.
Province, city and region stay in Spanish on purpose: they are proper nouns.
"A Coruña" is not "The Corunna", and translating them would break any join
against another Spanish dataset. environmental_label also stays as 0, ECO,
C or B — those are the official Spanish DGT badge codes, not words.
The fill rates are measured, not promised
Measured on 550 listings across 35 makes and 38 provinces, both dealer and private sellers, on 17 August 2026. Nothing is listed here that was not counted.
| Field | Filled |
|---|---|
ad_id, url, title, make, model, year, km, price_eur | 100 % |
fuel_type, province, region, seller_type, photos, published_at | 100 % |
offer_type, is_urgent, includes_taxes, is_certified, has_warranty | 100 % |
city, city_id | 98.2 % |
hp, body_type_id | 97.5 % |
warranty_months | 80.9 % |
environmental_label (Spanish DGT badge) | 79.6 % |
price_average_indicator_eur ⭐ | 77.6 % |
price_rank_indicator ⭐ | 77.6 % |
seller_rating_avg, seller_rating_count | 74.5 % (dealers only) |
financed_price_eur | 68.5 % |
financing_lender, financing_tae_pct, financing_instalment_eur | 54.2 % |
seller_phone — dealer listings only | 100 % of dealers |
Two fields you will not find here because they were measured and found too sparse to promise: video links (20.9 %) and the "featured" flag (17.5 %).
price_average_indicator_eur — what it actually is
Coches.net computes its own estimate of what a given model is worth on the
Spanish market, and publishes it alongside the asking price. price_rank_indicator
places this particular listing against that estimate.
Together they let you do in one query what would otherwise need a pricing model: find every car asking meaningfully less than its own marketplace's valuation.
Be aware of the honest limits: it is filled on 77.6 % of listings, and it is coches.net's estimate, not an independent one. We pass it through unchanged rather than dressing it up as our own valuation. Of the eleven coches.net scrapers currently on Apify, one other exposes it; the rest do not.
Personal data: private sellers' phone numbers are never returned
Roughly 40 % of listings on coches.net are posted by private individuals, and the site exposes their mobile numbers in the page source.
This actor never returns them. When seller_type is private,
seller_phone is null. Always. There is no configuration option to turn this
off, and there will not be one.
The reason is Article 14 of the GDPR: when you collect someone's personal data indirectly, you must inform them within one month. For the ~107,000 private sellers on coches.net that is not achievable by anyone, us or you. A setting that moves the problem to your account would not make it go away — it would just make it yours.
What you do get: every vehicle field for private listings — price, mileage, year, power, environmental badge, province, city, photos and the price rank — plus dealer phone numbers in full, on 100 % of dealer listings. Dealer numbers are published business contact details, and dealers are the segment that buys and sells at volume.
If you need to reach a private seller, the listing URL is in every row and the contact form is on the page.
Data removal requests: privacy@actorstack.dev.
Cache: you always know how old your data is
Rows can be served from a shared cache, which is why runs are cheap and fast. That is never hidden from you — every row carries:
| Field | Meaning |
|---|---|
from_cache | whether this row was fetched fresh or served from cache |
fetched_at | when the data actually came off coches.net |
scraped_at | when your run produced the row |
data_age_hours | how old the data is |
Set maxCacheAgeDays to 0 to force a fresh fetch of everything.
Input
Every field has a default, so a run started with an empty input {} works.
{"maxResults": 1000,"makes": ["bmw", "audi"],"provinces": ["madrid"],"scrapeDealers": true,"maxDealers": 200,"maxCacheAgeDays": 7}
| Field | Default | What it does |
|---|---|---|
maxResults | 100 | How many listings to return. Hard cap 50,000 per run |
makes | all 134 | Limit to specific makes, e.g. bmw, mercedes-benz |
provinces | all 52 | Limit to specific provinces, e.g. madrid, a_coruna. Applies to dealers too — see below |
scrapeDealers | false | Also collect dealer profiles into a dealers dataset |
maxDealers | 0 | How many dealer profiles to return |
maxCacheAgeDays | 7 | 0 forces a fresh fetch |
maxPagesPerUrl | 6 | How deep to paginate per facet. 6 is what robots.txt allows |
Filtering by province
provinces is a dropdown in the console, so you do not have to type the slug.
If you drive the actor through the API, these are the 52 values it accepts —
lowercase, with underscores, exactly as coches.net publishes them:
a_coruna cantabria la_rioja salamancaalava castellon las_palmas segoviaalbacete ceuta leon sevillaalicante ciudad_real lleida soriaalmeria cordoba lugo sta_c_tenerifeasturias cuenca madrid tarragonaavila girona malaga teruelbadajoz granada melilla toledobaleares guadalajara murcia valenciabarcelona guipuzcoa navarra valladolidburgos huelva orense vizcayacaceres huesca palencia zamoracadiz jaen pontevedra zaragoza
The separator is an underscore, not a hyphen: a_coruna, not a-coruna.
A slug the site does not publish is rejected before the run spends a request,
and the run ends green with the valid list in the log — you are not charged for
it.
Province is a URL suffix, so unlike makes, environmentalLabels and
colors — which compete for the single prefix slot and cannot be combined with
each other — it combines with all of them. Measured on A Coruña:
| Input | Listings the site returns |
|---|---|
| no filter | 265,739 |
provinces: ["a_coruna"] | 5,611 |
+ environmentalLabels: ["ECO"] | 523 |
+ automaticOnly and maxPriceEur: 10000 | 238 |
+ km0Only | 52 |
Filtering happens in the URL, not by discarding rows afterwards, so you are never charged for the provinces you did not ask for.
Ask for several provinces and the budget is split between them. With
provinces: ["barcelona", "zaragoza"] and maxResults: 60 you get ~30 of each,
not 60 of whichever comes first. If one province runs out, the remainder is
filled from the others, so you still get the number you asked for.
One honest caveat, measured: about 1.7 % of rows can carry a different
province than the one you asked for. That is coches.net's own classification,
not a filter failure — a dealer with branches in several provinces has its
listings shown under each of them, and the row keeps the province the site
publishes for it. We pass that through rather than second-guessing the source.
makes — 134 of them
A make slug is the brand name in lowercase with spaces and accents turned into hyphens:
bmw, seat, mercedes-benz, alfa-romeo, citroen (no diaeresis), land-rover.
The list is coches.net's own make table, which this actor reads at the start of every run,
so it never goes stale — and the actor normalises what you write before matching.
Leave it empty to sweep all 134, smallest first. That order is deliberate: small makes fit in a single URL, so a run capped at 1,000 listings costs ~30 requests instead of starting with Volkswagen and spending six on 0.08 % of it.
⚠️ A model is not a make. /bmw-serie-3/ is accepted by the site and returns the
entire national catalogue, so the actor validates every facet and skips the ones that do
not narrow. Filter by make and use the model field in the output rather than trying to put
a model in here.
Colours, badges and the single prefix slot
colours takes these 11, which are the colour facets coches.net publishes. The value is
the Spanish name, because that is what goes in the URL:
| Value | Colour | Value | Colour |
|---|---|---|---|
blanco | White | azul | Blue |
negro | Black | verde | Green |
gris | Grey | amarillo | Yellow |
rojo | Red | naranja | Orange |
marron | Brown | violeta | Purple |
beige | Beige |
environmentalLabels takes 0 (zero emissions) or ECO (hybrid and gas) — the official
Spanish DGT badge codes, not words, which is why they are not translated.
⚠️ makes, environmentalLabels and colours cannot be combined with each other.
The site's URL scheme has a single prefix slot and those three compete for it. The actor
warns in the log and uses the first rather than failing or quietly returning something you
did not ask for. Province, price and the on/off filters are suffixes, so they combine with
everything.
Dealers
Turn on scrapeDealers for a second dataset of dealer profiles. Dealer pages are
fetched province by province, so the provinces filter narrows them too: ask for
a_coruna and you get A Coruña dealers, not a national list.
Measured on 60 dealers, these fields were present on 100 %: dealer_id, name,
external_contract_id, phone, province, province_id, postal_code,
pack, is_active. Street address and stock page URL: 96.7 %.
Billing
You are charged per row delivered, immediately as each row is produced —
never in a lump at the end, and never for an error row. If a URL fails, it
goes to the errors dataset with the reason, and you pay nothing for it.
Starting a run costs $0.00001, which is the platform minimum. A run that finds nothing costs you nothing.
How it works, and what it will not do
Coches.net renders its data server-side, so every listing page already contains the full JSON payload. No browser is launched and no JavaScript is executed, which is why runs are fast and cheap.
Discovery works by expanding facets — make, then province, then price band — rather than paginating deep into search results. That is not a workaround: the site's own search stops returning results past roughly page 300, so deep pagination would miss about 96 % of the inventory regardless of what any crawler attempted.
This actor does not: solve CAPTCHAs, spoof TLS or browser fingerprints, use accounts or session cookies, or return private individuals' phone numbers. If coches.net ever makes the public data unreachable without doing one of those, the actor will report the failure rather than work around it.
Limits worth knowing before you buy
- Listing detail pages are not included. The individual advert pages are behind stricter bot protection than the search results, and reaching them would require the fingerprint spoofing this actor refuses to do. Free-text descriptions, colour, transmission and equipment lists therefore are not available. Everything listed in the fill-rate table above comes from the search results and is unaffected.
price_average_indicator_euris filled on 77.6 % of listings, not all.- Results per run are capped at 50,000.
Not affiliated with, endorsed by, or connected to coches.net or Adevinta Spain. This actor collects only publicly accessible information. You are responsible for how you use the data, including compliance with the GDPR where it applies to you.