Coches.net Vehicle Listings Scraper
Pricing
Pay per event
Coches.net Vehicle Listings Scraper
Extract public Coches.net used-car listings with prices, mileage, specifications, images, financing, warranty, location, and seller/dealer context.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract public Spanish used-car inventory from Coches.net into clean JSON.
Get vehicle IDs, URLs, cash and finance prices, year, mileage, fuel, power, location, seller context, warranty signals, and images from search pages.
Optionally visit each advertisement for model, body type, color, transmission, doors, seats, engine displacement, description, and full-size images.
What this Actor does
Coches.net Vehicle Listings Scraper accepts public Coches.net search-result URLs and vehicle-detail URLs.
For a search URL, it:
- requests the public page with browser-like headers;
- reads the structured listing state embedded by Coches.net;
- normalizes every vehicle into one dataset record;
- follows consecutive
pgpages within your limit; - deduplicates advertisements by stable Coches.net ad ID;
- optionally enriches every result from its detail page.
For a vehicle URL, it returns one enriched record from the page's structured vehicle data.
No Coches.net account, login, or private API token is required.
Who should use it
Vehicle dealers
Monitor competing inventory, advertised prices, mileage bands, price reductions, finance terms, and professional seller activity.
Automotive analysts
Build repeatable snapshots for market supply, geographic availability, make/model mix, and used-car valuation research.
Marketplaces and pricing tools
Normalize public listings before matching them to internal vehicle catalogs or valuation models.
Lead and sales teams
Discover professional sellers, dealerships, warranty offers, and inventory segments for compliant business research.
Data teams
Schedule recurring runs and send stable JSON records to a warehouse, spreadsheet, webhook, or BI pipeline.
Why use this Actor
- Complete search cards: reads the page's embedded initial results rather than relying only on the first visually rendered cards.
- Two cost profiles: use fast search-only extraction or optional detail enrichment.
- Stable deduplication: every row carries the source ad ID and canonical URL.
- Explicit limits: cap pages and accepted records independently.
- Typed output: prices and mileage are numbers, images are arrays, and timestamps are ISO strings.
- HTTP-first: no browser is launched for ordinary runs, reducing runtime and memory.
- Proxy-ready: an optional Apify proxy configuration is available for challenged or larger runs.
Extracted data
| Field | Meaning |
|---|---|
listingId | Stable Coches.net advertisement ID |
url | Canonical public detail URL |
title | Advertised make, model, and trim |
make, model, trim | Normalized vehicle identity fields |
price, currency | Cash price and EUR currency |
originalPrice, priceLabel | Previous price and Coches.net price-position label |
financingText | Finance price, payment, term, and TAE summary when present |
year | Model or production year |
mileageKm | Odometer mileage in kilometers |
fuel | Fuel or powertrain type |
horsepower | Advertised metric horsepower (CV) |
location | City and province |
sellerType | private or professional |
sellerName, sellerRating | Public seller/dealer context when present |
warrantyText | Advertised warranty signal or duration |
images | Public vehicle image URLs |
bodyType, color | Detail-page vehicle characteristics |
transmission, doors, seats | Detail-page configuration |
engineDisplacementCc | Engine displacement in cubic centimeters |
description | Public advertiser comments |
sourceSearchUrl | Search page that yielded the record |
detailEnriched | Whether a detail page was successfully parsed |
scrapedAt | UTC extraction time |
Fields can be absent when Coches.net does not provide them for an advertisement.
Quick start
- Open the Actor input page.
- Add one or more public Coches.net search or vehicle URLs.
- Set
maxItemsto the maximum number of unique vehicles you need. - Set
maxPagesPerUrlfor each search URL. - Leave
includeDetailsoff for low-cost inventory monitoring. - Enable
includeDetailswhen you need technical specifications or descriptions. - Optionally configure an Apify proxy for larger scheduled workloads.
- Start the run and open the Vehicle listings dataset view.
A useful first input is:
{"startUrls": [{ "url": "https://www.coches.net/toyota/segunda-mano/madrid/" }],"maxItems": 20,"maxPagesPerUrl": 1,"includeDetails": false}
Input parameters
startUrls
Required array of public HTTPS Coches.net URLs.
Supported forms:
- search pages such as
https://www.coches.net/toyota/segunda-mano/madrid/; - paged search URLs such as
...?pg=3; - semantic vehicle detail URLs ending in
-<ad-id>-covo.aspx.
Other domains and non-HTTPS URLs fail validation before any data is saved.
maxItems
Maximum unique vehicle rows across all start URLs.
Range: 1 to 10,000.
The Actor stops scheduling new pages and detail requests when the limit is reached.
maxPagesPerUrl
Maximum consecutive pages requested for each search URL.
Range: 1 to 100.
If a URL already has pg=3, the Actor starts at page 3 and continues from there.
includeDetails
When false, search output already includes prices, finance data, mileage, power, seller context, warranty signals, and image arrays.
When true, the Actor also requests each vehicle page for technical specifications and advertiser comments.
Direct vehicle URLs are always parsed as detail pages.
proxyConfiguration
Optional Apify Proxy configuration.
Start without a proxy for small runs.
For repeated or larger workloads, a residential Spanish proxy session can improve request consistency, but it adds transfer cost.
Output example
A search result resembles:
{"listingId": "70000001","url": "https://www.coches.net/example-hybrid-70000001-covo.aspx","title": "EXAMPLE Model Hybrid Advance","make": "EXAMPLE","model": "Model","trim": "Hybrid Advance","price": 18990,"currency": "EUR","originalPrice": 19990,"priceLabel": "Buen precio","year": 2021,"mileageKm": 48500,"fuel": "Híbrido","horsepower": 150,"location": "Madrid Capital, Madrid","sellerType": "professional","sellerName": "Example Motors Madrid","sellerRating": 4.6,"warrantyText": "24 months","images": ["https://a.ccdn.es/cnet/vehicles/example/photo.jpg"],"sourceSearchUrl": "https://www.coches.net/segunda-mano/madrid/?pg=1","detailEnriched": false,"scrapedAt": "2026-01-15T12:00:00.000Z"}
The example uses anonymized values; live rows contain current public advertisements.
Pagination and limits
Search pagination uses Coches.net's pg query parameter.
Each startUrls entry has its own maxPagesPerUrl allowance.
The global maxItems limit applies after deduplication.
When multiple searches contain the same vehicle, only the first accepted record is charged and saved.
An empty final page ends pagination normally.
An HTTP challenge, invalid content type, or exhausted retry sequence is treated as an error rather than a successful empty result.
Pricing
The Actor uses pay per event pricing.
The current source declares:
- Start: $0.005 once per run.
- Vehicle item: $0.00001 per saved item on every platform tier.
Illustrative Actor charges are:
| Saved vehicles | Estimated Actor charge |
|---|---|
| 1 | $0.00501 |
| 10 | $0.00510 |
| 100 | $0.00600 |
| 1,000 | $0.01500 |
Apify compute and proxy usage can vary with enrichment mode, retries, and proxy selection.
The Console shows the applicable event prices before you start a paid run.
Search-only versus enriched runs
Choose search-only mode for frequent inventory and price snapshots.
It usually provides the best cost and speed because one page contains up to dozens of structured listings.
Choose enriched mode when your workflow needs:
- body type;
- color;
- transmission;
- doors and seats;
- engine displacement;
- advertiser description;
- detail-page full-size images.
A detail page that cannot be enriched after retries is logged clearly, while the useful search record is preserved with detailEnriched: false.
Scheduling and monitoring
Use an Apify schedule for daily or hourly inventory snapshots.
Keep the same search filters between runs to make price and supply comparisons meaningful.
Use listingId as the primary key in downstream storage.
Compare price, originalPrice, and scrapedAt to detect changes.
Store historical snapshots outside the Actor dataset if your workflow needs longitudinal analysis.
Datasets belong to individual runs and do not mix stale records from earlier executions.
Integration patterns
Inventory monitoring
Schedule one search URL per make, model, or province and upsert rows by listingId.
Price intelligence
Group by make, model, year, mileage band, and location, then calculate median asking prices.
Dealer discovery
Filter sellerType to professional, then aggregate inventory by sellerName and rating.
Marketplace enrichment
Run direct detail URLs for records already selected by an upstream matching process.
Alerts
Use a webhook or automation to notify when a new ID appears below a target price.
API with cURL
Replace APIFY_TOKEN with your Apify API token:
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~coches-net-vehicle-listings-scraper/runs?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url":"https://www.coches.net/toyota/segunda-mano/madrid/"}],"maxItems": 20,"maxPagesPerUrl": 1,"includeDetails": false}'
Poll the returned run or use the synchronous dataset endpoint when appropriate for your integration.
API with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/coches-net-vehicle-listings-scraper').call({startUrls: [{ url: 'https://www.coches.net/toyota/segunda-mano/madrid/' }],maxItems: 20,maxPagesPerUrl: 1,includeDetails: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("automation-lab/coches-net-vehicle-listings-scraper").call(run_input={"startUrls": [{"url": "https://www.coches.net/toyota/segunda-mano/madrid/"}],"maxItems": 20,"maxPagesPerUrl": 1,"includeDetails": False,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
MCP setup
Add the Actor to Claude Code through Apify MCP:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/coches-net-vehicle-listings-scraper"
Claude Desktop
Add the following remote server configuration to Claude Desktop.
Cursor
Use the same JSON in Cursor's MCP settings.
VS Code
Add the same remote endpoint through your VS Code MCP configuration.
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/coches-net-vehicle-listings-scraper"}}}
Example prompts:
- “Scrape the first 50 Toyota listings in Madrid and summarize median price by year.”
- “Extract this Coches.net vehicle URL and return its engine, mileage, seller type, and images.”
- “Compare professional and private seller inventory from these two searches.”
Reliability and retries
Requests use Spanish desktop navigation headers and bounded timeouts.
Transient network errors, HTTP 429 responses, and temporary server errors are retried up to three times with backoff.
Deterministic invalid URLs and unsupported domains are not retried.
The Actor validates HTML content types and recognizable vehicle data.
Search results are read from embedded structured state first, with rendered cards as a fallback.
Detail output is read from schema.org Car JSON-LD.
Limitations
Coches.net can change page structure, embedded state, availability, or anti-bot rules without notice.
Search ordering and total inventory can change between paginated requests.
The Actor extracts public asking prices, not completed sale prices.
Finance terms are normalized into text because fields and offers vary by seller.
Seller fields are absent when the public advertisement does not provide them.
Search-only records do not contain every technical field available on the detail page.
Detail enrichment increases runtime and request volume.
A proxy can improve access consistency but cannot guarantee access to every page.
Responsible use
Use the Actor only for data you are authorized to collect and process.
Review Coches.net terms, robots guidance, and applicable Spanish and EU law for your use case.
Do not use public seller information for spam, harassment, discrimination, or unlawful profiling.
Apply an appropriate retention policy to any personal information present in public advertisements.
Respect deletion and correction requests in downstream systems.
This Actor does not bypass login controls or access private account data.
Troubleshooting
“Only Coches.net URLs are supported”
Use an https://www.coches.net/... public search or detail URL.
Remove redirectors, shortened links, and URLs from other Motor sites.
The run returns fewer items than maxItems
The search may have ended, duplicate IDs may have appeared across URLs, or maxPagesPerUrl may be too low.
Check the logs for page counts and upstream response errors.
Detail fields are missing
Confirm includeDetails is enabled for search input.
Inspect warnings for ads whose detail request could not be enriched.
Direct detail URLs are always enriched.
The source returns a challenge
Retry with an Apify proxy configuration and conservative page limits.
For larger workloads, use a stable Spanish residential session rather than rotating identity on every request.
How do I reduce cost?
Use includeDetails: false, request only necessary pages, and avoid downloading data you do not need downstream.
FAQ
Does it require a Coches.net login?
No. The Actor targets public search and vehicle pages.
Can I scrape any make, model, or province?
Yes, when you provide the corresponding public Coches.net search URL.
Can I start from page 3?
Yes. Supply a URL with pg=3; pagination continues from that page.
Are duplicate vehicles charged twice?
No. Duplicate ad IDs within the same run are skipped before charging and saving.
Does it download image files?
No. It extracts public image URLs, which keeps transfer and storage lower.
Is the data real time?
The Actor returns what Coches.net exposes when each page is requested. It does not guarantee that a seller has not changed or removed a vehicle moments later.
Can I use the data for valuation?
Yes as one asking-price input, but combine it with appropriate quality controls and other evidence. Asking prices are not sale prices.
Related Automation Lab Actors
- OTOMOTO Scraper for Polish vehicle-market comparisons.
- Mercado Libre Listing Scraper for broader Latin American marketplace listings.
Use Coches.net Vehicle Listings Scraper when the source-of-truth workflow is Spanish Coches.net inventory.
Support
If a run fails, include the public input URL, run ID, mode, and the first relevant log error in your report.
Do not include Apify tokens, proxy passwords, private datasets, or unrelated personal data.