# Coches.net Scraper (`parsebird/coches-net-scraper`) Actor

Scrape Coches.net and Motos.net used car listings in Spain: price, mileage, year, fuel, VIN, equipment, dealer or private seller, phone, location and photos. Filters, search URLs and incremental tracking.

- **URL**: https://apify.com/parsebird/coches-net-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.39 / 1,000 vehicle listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Coches.net Scraper

**Coches.net Scraper** extracts used car listings from [Coches.net](https://www.coches.net), the Spanish car marketplace, and motorcycle listings from its sister site [Motos.net](https://motos.coches.net): price, mileage, year, fuel, gearbox, power, VIN, full equipment, dealer or private seller, phone, location and photos, as clean JSON, CSV or Excel.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Search cars, vans, motorhomes, classic cars, microcars and motorcycles by keyword, make, model, price, year, mileage, fuel, gearbox, body type, province, power and DGT label, or paste any Coches.net search URL, and get 100+ fields per vehicle, with incremental tracking of new, changed and sold listings.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Apify Actor: parsebird/coches-net-scraper. Scrapes vehicle listings from Coches.net (Spain's car classifieds: cars, vans, motorhomes, classic cars, microcars) and Motos.net (motorcycles). Call via ApifyClient: client.actor("parsebird/coches-net-scraper").call(run_input={"vehicleType": "cars", "make": "BMW", "model": "Serie 3", "priceMax": 30000, "yearMin": 2018, "province": "Madrid", "maxResults": 100}). Inputs: vehicleType (string: cars | vans | motorhomes | classics | microcars | motorcycles | all, default cars), query (string keyword, or JSON array of keywords run as separate searches), startUrls (array of Coches.net / Motos.net search-results or listing URLs; filters are read from the URL), make (string), model (string), listingCondition ("" used site default | km0 | new | all), priceMin, priceMax, yearMin, yearMax, kmMin, kmMax, powerMin, powerMax (integers), fuelType (gasolina | diesel | electrico | hibrido | hibrido-enchufable | glp | cng), transmission (automatic | manual), bodyType (array: sedan, coupe, convertible, estate, minivan, suv, pickup, van), sellerType (all | professional | private), province (comma-separated Spanish provinces), environmentalLabel (array: 0, ECO, C, B), onlyWithWarranty, onlyCertified (booleans), sortBy ("" relevance | newest | price_asc | price_desc | km_asc | km_desc | year_desc | year_asc), maxResults (integer, total listings, default 100, 0 = no limit), includeDetails (boolean, default true: description, VIN, equipment, specs, views, dealer address), descriptionMaxLength (integer), compact (boolean), excludeEmptyFields (boolean), incrementalMode (boolean), stateKey (string), emitUnchanged, emitExpired, skipReposts (booleans). Output: one record per listing with listingId, url, title, vehicleType, make, model, version, year, kilometers, fuelType, transmission, power, cubicCapacity, bodyType, environmentalLabel, priceValue, priceCurrency, financedPrice, marketPriceAverage, marketPriceRank, priceDropAmount, financingMonthlyFee, warrantyMonths, listingType, sellerName, sellerType, sellerId, sellerRatingAverage, phone, city, province, region, imageUrl, galleryUrls, publishedAt; with details also vin, description, color, numberOfDoors, numberOfSeats, trimLevel, topSpeed, acceleration, consumptionMixed, tankCapacityLiters, trunkCapacityLiters, equipment, optionalEquipment, viewCount, favoriteCount, sellerAddress, sellerLatitude, sellerLongitude, sellerWebsite; in incremental mode also changeType (NEW | UPDATED | UNCHANGED | REAPPEARED | EXPIRED), firstSeenAt, previousPrice, isRepost, repostOfId. Pricing: pay per listing saved. Full API spec: https://apify.com/parsebird/coches-net-scraper/api. Get your token: https://console.apify.com/settings/integrations.
```

### What is Coches.net Scraper?

**Coches.net Scraper** turns [Coches.net](https://www.coches.net) and [Motos.net](https://motos.coches.net) listings into a structured dataset. At the time of writing (October 2026), Coches.net lists about **270,000 second-hand cars** plus vans, motorhomes, classic cars and microcars, and Motos.net about **37,000 motorcycles**.

Pick a vehicle type, add a keyword, a make and model or any of the filters, and click **Start**. You can also set up your search on Coches.net in your browser, copy the URL and paste it into the actor. It works as a **Coches.net API alternative**: no account, API key or browser needed.

### What can Coches.net Scraper do?

- 🔎 **Search like on the site.** Keyword, make, model, price, year, mileage, fuel, gearbox, body type, seller type, province, power, DGT environmental label, warranty and certification filters, with 8 sort orders.
- 🔗 **Paste search URLs.** Every filter in a Coches.net or Motos.net search-results URL is applied. Single listing URLs work too.
- 🚐 **Every section.** Cars, vans and commercial vehicles, motorhomes and caravans, classic and competition cars, microcars (sin carnet) and motorcycles, or all of them in one run.
- 📋 **Full vehicle details.** Seller description, VIN, standard and optional equipment, version and trim, doors, seats, top speed, 0-100 km/h, fuel consumption, dimensions, weight, tank and trunk size, original manufacturer price, views and favorites.
- 🏢 **Dealer data.** Dealer name, phone, rating, address, postal code, coordinates, website, opening hours, services and stock page.
- 💶 **Price insight.** Price, financed price, Coches.net's market price average and price rank, recent price drops, financing fee, term, APR and lender.
- 🔁 **Incremental monitoring.** Tag listings NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED against earlier runs, spot price changes and relisted vehicles.
- 📅 **Scheduling.** Run daily or hourly with [Apify Schedules](https://docs.apify.com/platform/schedules) to watch new stock or price drops.
- 🔌 **API and integrations.** Use the [Apify API](https://docs.apify.com/api/v2), or send results to Google Sheets, Zapier, Make, Slack or webhooks with [Apify integrations](https://docs.apify.com/platform/integrations). Export as JSON, CSV, Excel, XML or HTML.

### What data can you extract from Coches.net?

| Field | Description |
|-------|-------------|
| `title`, `make`, `model`, `version` | Listing title, brand, model and exact version (e.g. "2.0 D4 AWD Momentum Auto") |
| `year`, `kilometers` | Registration year and mileage |
| `fuelType`, `transmission`, `power`, `cubicCapacity` | Fuel, gearbox, horsepower (CV) and engine size (cc) |
| `bodyType`, `drivenWheels`, `environmentalLabel` | Body style, drive (4x4 / front / rear) and DGT label (0, ECO, C, B) |
| `priceValue`, `financedPrice`, `hasTaxes` | Cash price in EUR, price when financed, VAT included |
| `marketPriceAverage`, `marketPriceRank` | Coches.net's average market price for similar cars and its price rating |
| `priceDropAmount`, `priceDropPercent`, `priceDropDate` | Most recent price reduction |
| `financingMonthlyFee`, `financingTermMonths`, `financingApr` | Financing offer shown on the listing |
| `warrantyMonths`, `listingType` | Warranty and offer type (Ocasión, Km0, Nuevo, Demostración...) |
| `sellerName`, `sellerType`, `sellerRatingAverage`, `phone` | Dealer or private seller, rating and phone number |
| `city`, `province`, `region` | Where the vehicle is |
| `imageUrl`, `galleryUrls`, `imageCount` | Main photo and all photo URLs |
| `vin`, `description`, `color` | VIN (when the seller provides it), seller description, color |
| `equipment`, `optionalEquipment` | Standard and optional equipment lists, also grouped by category |
| `topSpeed`, `acceleration`, `consumptionMixed` | Top speed (km/h), 0-100 km/h (s), consumption (l/100 km) |
| `numberOfDoors`, `numberOfSeats`, `trunkCapacityLiters` | Doors, seats, tank and trunk size, dimensions and weight |
| `viewCount`, `favoriteCount` | How many times the listing was viewed and saved |
| `sellerAddress`, `sellerLatitude`, `sellerLongitude` | Dealer address and map coordinates, website, opening hours |
| `publishedAt`, `createdAt` | When the listing was (re)published and first created (UTC) |
| `changeType`, `previousPrice`, `isRepost` | Incremental mode: what changed since the last run |

### How to scrape Coches.net

1. Open [Coches.net Scraper](https://apify.com/parsebird/coches-net-scraper) in Apify Console and sign in (or create a free account).
2. Choose the **Vehicle type**, for example *Cars (coches)* or *Motorcycles (Motos.net)*.
3. Type a **Keyword**, or fill in **Make**, **Model** and any of the **Filters** (price, year, mileage, fuel, province...).
4. Or paste one or more **Search URLs** copied from your browser on Coches.net or Motos.net.
5. Set **Max listings**. Leave **Include full details** on for descriptions, VIN, equipment and specs.
6. Click **Start** and wait for the run to finish.
7. Download the results from the **Output** tab as JSON, CSV or Excel, or read them through the API.

### How much does it cost to scrape Coches.net?

Coches.net Scraper uses **pay-per-event** pricing: you pay for each listing saved to the dataset. Compute and proxy costs are included in the event price, and **Include full details** has no extra charge.

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| `listing` (per listing saved) | $0.00299 | $0.00279 | $0.00259 | $0.00239 |
| Per 1,000 listings | **$2.99** | **$2.79** | **$2.59** | **$2.39** |

For example, 1,000 used cars with full details cost $2.99 on the Free plan. In incremental mode you pay only for the listings that are saved (by default the new, updated and reappeared ones), so a daily monitoring run that finds 40 new cars costs about $0.12. You can set a maximum cost per run in Apify Console, and the actor stops when it's reached.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `vehicleType` | string | No | `cars` | `cars`, `vans`, `motorhomes`, `classics`, `microcars`, `motorcycles` or `all` |
| `query` | string | No | — | Keyword, or a JSON array of keywords such as `["gti","cupra"]` (one search each) |
| `startUrls` | array | No | — | Coches.net / Motos.net search-results or listing URLs |
| `make` | string | No | — | Brand, e.g. `BMW`, `Seat`, `Mercedes-Benz` |
| `model` | string | No | — | Model of that make, e.g. `Serie 3`, `Ibiza` |
| `listingCondition` | string | No | `""` | `""` used (site default, includes Km 0), `km0`, `new` or `all` |
| `priceMin` / `priceMax` | integer | No | — | Price range in EUR |
| `yearMin` / `yearMax` | integer | No | — | Registration year range |
| `kmMin` / `kmMax` | integer | No | — | Mileage range |
| `fuelType` | string | No | `""` | `gasolina`, `diesel`, `electrico`, `hibrido`, `hibrido-enchufable`, `glp`, `cng` |
| `transmission` | string | No | `""` | `automatic` or `manual` |
| `bodyType` | array | No | — | `sedan`, `coupe`, `convertible`, `estate`, `minivan`, `suv`, `pickup`, `van` |
| `sellerType` | string | No | `all` | `all`, `professional` (dealers) or `private` |
| `province` | string | No | — | Spanish province(s), comma-separated, e.g. `Barcelona, Girona` |
| `powerMin` / `powerMax` | integer | No | — | Engine power range in hp (CV) |
| `environmentalLabel` | array | No | — | DGT labels: `0`, `ECO`, `C`, `B` |
| `onlyWithWarranty` | boolean | No | `false` | Only listings with a warranty |
| `onlyCertified` | boolean | No | `false` | Only certified vehicles |
| `sortBy` | string | No | `""` | `""` relevance, `newest`, `price_asc`, `price_desc`, `km_asc`, `km_desc`, `year_desc`, `year_asc` |
| `maxResults` | integer | No | `100` | Total listings to save across all searches, `0` = no limit |
| `includeDetails` | boolean | No | `true` | Add description, VIN, equipment, specs, views and dealer details |
| `descriptionMaxLength` | integer | No | `0` | Cut descriptions to this many characters (`0` = full text) |
| `compact` | boolean | No | `false` | Only the core fields |
| `excludeEmptyFields` | boolean | No | `false` | Drop empty fields from each record |
| `incrementalMode` | boolean | No | `false` | Compare with earlier runs and tag changes |
| `stateKey` | string | No | — | Name of the tracked search (auto-generated from the filters if empty) |
| `emitUnchanged` | boolean | No | `false` | Incremental mode: also save unchanged listings |
| `emitExpired` | boolean | No | `false` | Incremental mode: also save listings that disappeared |
| `skipReposts` | boolean | No | `false` | Incremental mode: skip relisted vehicles |
| `proxyConfiguration` | object | No | — | Optional proxy; not needed in most cases |

When `startUrls` are given, the search fields are taken from each URL. Price, year, mileage, power and seller type from the input still narrow every URL, and `sortBy` (if set) overrides the URL's order. With several searches, `maxResults` is shared between them.

### Output example

One record per listing. Lists are shortened here.

```json
{
  "listingId": "71764123",
  "url": "https://www.coches.net/volvo-xc40-20-d4-awd-momentum-auto-5p-diesel-2019-en-granada-71764123-covo.aspx",
  "title": "VOLVO XC40 2.0 D4 AWD Momentum Auto",
  "vehicleType": "cars",
  "make": "VOLVO",
  "makeId": 48,
  "model": "XC40",
  "modelId": 1233,
  "version": "2.0 D4 AWD Momentum Auto",
  "year": 2019,
  "kilometers": 88671,
  "fuelType": "Diésel",
  "bodyType": "SUV / 4x4",
  "transmission": "Automático",
  "drivenWheels": "4x4",
  "power": 190,
  "cubicCapacity": 1969,
  "environmentalLabel": "C",
  "priceValue": 22990,
  "priceCurrency": "EUR",
  "financedPrice": 20345,
  "hasTaxes": true,
  "taxType": "IVA",
  "marketPriceAverage": 24400,
  "marketPriceRank": 3,
  "financingMonthlyFee": 375,
  "financingTermMonths": 84,
  "financingApr": 11.84,
  "hasReservation": true,
  "warrantyMonths": 12,
  "warranty": "12 meses (1 año)",
  "listingType": "Ocasión",
  "sellerName": "Crestanevada",
  "sellerType": "professional",
  "sellerId": "130371",
  "sellerRatingAverage": 4.1,
  "sellerRatingCount": 77,
  "location": "Cúllar Vega, Granada",
  "city": "Cúllar Vega",
  "province": "Granada",
  "provinceId": 18,
  "region": "Andalucía",
  "phone": "858211088",
  "imageUrl": "https://a.ccdn.es/cnet/vehicles/20979360/c9f5497b-aaa7-499b-8fa8-ce98f0aa2b00.jpg",
  "imageCount": 25,
  "galleryUrls": [
    "https://a.ccdn.es/cnet/vehicles/20979360/c9f5497b-aaa7-499b-8fa8-ce98f0aa2b00.jpg",
    "https://a.ccdn.es/cnet/vehicles/20979360/13b50033-76a4-428c-8c1a-92d0abdf0881.jpg"
  ],
  "publishedAt": "2026-10-16T15:08:34Z",
  "createdAt": "2026-10-16T15:08:34Z",
  "source": "coches.net",
  "scrapedAt": "2026-10-16T15:11:48.785Z",
  "vin": "YV1XZA6VCL2264733",
  "description": "El Volvo XC40 2.0 D4 AWD Momentum Auto es un SUV premium que combina diseño escandinavo, confort y rendimiento…",
  "status": "active",
  "color": "Rojo",
  "numberOfDoors": 5,
  "numberOfSeats": 5,
  "trimLevel": "Momentum",
  "topSpeed": 210,
  "acceleration": 7.9,
  "consumptionMixed": 5,
  "tankCapacityLiters": 54,
  "trunkCapacityLiters": 432,
  "lengthMm": 4425,
  "widthMm": 1863,
  "heightMm": 1652,
  "weightKg": 1823,
  "manufacturerPrice": 42166,
  "equipment": [
    "Acabado MOMENTUM (clasificación JATO: mediano M1)",
    "Cuatro frenos de disco siendo cuatro ventilados"
  ],
  "optionalEquipment": ["Asistencia de Aparcamiento", "Pack Business Pro", "Pack Climate"],
  "viewCount": 0,
  "favoriteCount": 0,
  "sellerAddress": "C/ Ramal de Corpas, 7, nave 11, 18195",
  "sellerPostalCode": "18195",
  "sellerLatitude": 37.158571,
  "sellerLongitude": -3.678796,
  "sellerWebsite": "https://www.crestanevada.es/",
  "sellerStockUrl": "https://www.coches.net/concesionario/concesionariocrestanevada/",
  "sellerServices": ["Certificación del vehículo", "Financiación personalizada", "Seguros de coche"]
}
```

In incremental mode each record also has `changeType`, `firstSeenAt`, `isRepost`, `repostOfId` and `repostDetectedAt`, plus `previousPrice` when the price changed. Download the dataset in JSON, CSV, Excel, XML or HTML from the **Output** tab.

### Use the Coches.net Scraper API

Start the actor and read its results from your own code with the Apify API clients. Find your token in [Apify Console → Settings → Integrations](https://console.apify.com/settings/integrations).

**Python** ([apify-client](https://docs.apify.com/api/client/python/)):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/coches-net-scraper").call(run_input={
    "vehicleType": "cars",
    "make": "Seat",
    "model": "Ibiza",
    "priceMax": 15000,
    "province": "Barcelona",
    "maxResults": 200,
})
for car in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(car["title"], car["priceValue"], car["kilometers"], car["url"])
```

**JavaScript** ([apify-client](https://docs.apify.com/api/client/js/)):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/coches-net-scraper').call({
    startUrls: [{ url: 'https://www.coches.net/segunda-mano/?MakeIds%5B0%5D=7&MaxPrice=30000' }],
    sortBy: 'newest',
    maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((car) => console.log(car.title, car.priceValue, car.province));
```

### Monitor new Coches.net listings and price changes

Turn on **Incremental mode** and run the same search on a [schedule](https://docs.apify.com/platform/schedules):

1. The first run saves every listing and remembers them under the **State key** (or a key made from your filters).
2. Later runs save only listings that are **NEW**, **UPDATED** (price, financed price, mileage, year, title, photo count, reservation, seller, description or status changed) or **REAPPEARED**. Add `emitUnchanged` to get the rest too.
3. With `emitExpired`, listings that disappeared since the last run are saved as **EXPIRED** (sold or removed). This is only checked when the whole search is read, so keep `maxResults` above the search size (or 0).
4. A new listing that matches an expired one (same VIN, or same seller, model, year and mileage) is flagged with `isRepost` and `repostOfId`. Turn on `skipReposts` to leave those out.

Keep the same filters and options between runs of one state key, so the comparison stays meaningful.

### Use cases

- **Car dealers and buyers:** track the stock of a make, model or province and get new listings every morning.
- **Price monitoring:** follow price drops and compare asking prices with Coches.net's own market price average.
- **Market research:** analyse used car prices by make, model, year, mileage, fuel and region across Spain.
- **Lead generation:** collect dealer names, phones, addresses, websites and ratings.
- **Valuation models:** build datasets of prices with mileage, year, version, equipment and specs.
- **Motorcycle market:** the same data for motorcycles from Motos.net.

### How it works

1. The actor builds a Coches.net search from your filters, or reads the filters of each pasted URL.
2. It pages through the results (100 listings per page) and removes duplicates across searches.
3. With **Include full details** on, it reads each listing's detail data (description, VIN, equipment, specs, statistics, dealer).
4. Records are saved to the dataset as they come in. Each listing is charged once, when it's saved.
5. If Coches.net starts refusing requests, the actor switches to Apify Proxy by itself.

### FAQ

**How many listings can I scrape?**
There's no fixed cap: set `maxResults` to `0` to read a whole search. In our tests on Apify, 3,000 cars with full details took about 1.5 minutes, and without details it's faster still.

**Can I scrape motorcycles?**
Yes. Choose *Motorcycles (Motos.net)* or paste a Motos.net URL. On Motos.net the model is matched as a keyword, because Motos.net doesn't filter by model id.

**Why do keyword results include near matches?**
The keyword goes to Coches.net's own search, which also matches similar words (for example "gti" also finds some "GTD" cars). Combine the keyword with make, model or other filters for tighter results.

**Why is the phone empty for some listings?**
Some sellers, mostly private ones, hide their number on Coches.net. The actor returns the phone only when the listing shows it.

**Why is the VIN missing for some cars?**
The VIN is filled in only when the seller adds it to the listing.

**Which time zone are dates in?**
All timestamps (`publishedAt`, `createdAt`, `scrapedAt`) are UTC.

**Can I schedule runs and connect them to other tools?**
Yes. Use [Apify Schedules](https://docs.apify.com/platform/schedules) for recurring runs and [integrations](https://docs.apify.com/platform/integrations) for Google Sheets, Slack, Zapier, Make, n8n or webhooks. Results are also available through the [API](https://apify.com/parsebird/coches-net-scraper/api).

**Something doesn't work or a field is missing?**
Open an issue on the actor's **Issues** tab with the input you used, and we'll look into it.

### Is it legal to scrape Coches.net?

This actor collects publicly available vehicle listing data from Coches.net and Motos.net. Seller names and phone numbers can be personal data, so if you process them, make sure you have a lawful basis under the GDPR and Spain's data protection law, and respect the sites' terms. Scraping public data is generally lawful, but you are responsible for how you use it. Read more in Apify's blog post [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/), and ask a lawyer if you're unsure.

### Other vehicle and Spain scrapers

| Actor | What it does |
|-------|-------------|
| [Milanuncios Scraper](https://apify.com/parsebird/milanuncios-scraper) | Classified ads from Milanuncios, Spain's general marketplace |
| [Fotocasa Scraper](https://apify.com/parsebird/fotocasa-scraper) | Spanish property listings from Fotocasa |
| [Habitaclia.com Scraper](https://apify.com/parsebird/habitaclia-scraper) | Spanish property listings from Habitaclia |
| [AutoTrader.co.uk Scraper](https://apify.com/parsebird/autotrader-scraper) | UK used and new car listings |
| [AutoTrader Canada Scraper](https://apify.com/parsebird/autotrader-ca-scraper) | Canadian car listings from AutoTrader.ca |
| [Cars.com Scraper with Contacts](https://apify.com/parsebird/cars-com-scraper) | US car listings with dealer phone numbers |
| [IAAI Vehicles Scraper](https://apify.com/parsebird/iaai-vehicles-scraper) | Salvage and insurance auction vehicles from IAAI |
| [Turo Scraper](https://apify.com/parsebird/turo-scraper) | Car rental listings, prices and hosts from Turo |

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/coches-net-scraper/changelog.md

# Actor input Schema

## `vehicleType` (type: `string`):

Pick the marketplace section to search. Motorcycles come from Motos.net (same company). 'All sections' runs every section one after another.

## `query` (type: `string`):

Search the listings by keyword, as in the Coches.net search box (e.g. "4x4", "automático", "gti"). Leave empty to browse everything that matches the filters. To run several keywords as separate searches, enter a JSON array such as \["gti", "cupra"].

## `startUrls` (type: `array`):

Paste search-results URLs from Coches.net or Motos.net (filter the site in your browser, then copy the address). Each URL runs as its own search with the make, model, province, fuel, seller and other filters from the URL. Single listing URLs work too. When URLs are given, the Search and Filters fields above are ignored, except price, year, mileage, power and seller type, which narrow every URL further.

## `make` (type: `string`):

Brand to search, e.g. "BMW", "Seat", "Mercedes-Benz". Not case-sensitive.

## `model` (type: `string`):

Model of the make above, e.g. "Serie 3", "Ibiza", "Clase C". Needs a make. On Motos.net the model is matched as a keyword.

## `listingCondition` (type: `string`):

Which offers to include. 'Used (site default)' is what the Coches.net second-hand section shows, which also contains Km 0, demo and ex-company cars.

## `priceMin` (type: `integer`):

Lowest price to include.

## `priceMax` (type: `integer`):

Highest price to include.

## `yearMin` (type: `integer`):

Earliest registration year to include.

## `yearMax` (type: `integer`):

Latest registration year to include.

## `kmMin` (type: `integer`):

Lowest mileage to include.

## `kmMax` (type: `integer`):

Highest mileage to include.

## `fuelType` (type: `string`):

Fuel or engine type.

## `transmission` (type: `string`):

Automatic or manual transmission.

## `bodyType` (type: `array`):

Body styles to include (cars, vans and microcars only).

## `sellerType` (type: `string`):

Dealers, private sellers or both.

## `province` (type: `string`):

Spanish province(s) to search, separated by commas, e.g. "Madrid" or "Barcelona, Girona". Leave empty for all of Spain.

## `powerMin` (type: `integer`):

Lowest engine power in horsepower (CV).

## `powerMax` (type: `integer`):

Highest engine power in horsepower (CV).

## `environmentalLabel` (type: `array`):

Spanish DGT emissions labels to include.

## `onlyWithWarranty` (type: `boolean`):

Include only listings that come with a warranty.

## `onlyCertified` (type: `boolean`):

Include only vehicles certified through a Coches.net certification programme.

## `sortBy` (type: `string`):

Order of the results. Use 'Newest first' for monitoring new listings. For search URLs, the URL's own order is kept when this is left on 'Relevance'.

## `maxResults` (type: `integer`):

Maximum number of listings to save in total across all searches. Set 0 for no limit.

## `includeDetails` (type: `boolean`):

Add each listing's seller description, VIN, full equipment list, technical specs (version, trim, doors, seats, top speed, 0-100, consumption, dimensions, tank and trunk size), view and favorite counts, and the dealer's address, coordinates, website and opening hours. Turn off for faster, slimmer records.

## `descriptionMaxLength` (type: `integer`):

Cut each seller description to this many characters. 0 keeps the full text.

## `compact` (type: `boolean`):

Return only the core fields (title, make, model, year, km, fuel, price, seller, location, phone, photo, URL). Handy for AI agents and spreadsheets.

## `excludeEmptyFields` (type: `boolean`):

Remove fields that are empty (null, empty text or empty list) from each record.

## `incrementalMode` (type: `boolean`):

Compare with earlier runs of the same search and tag each listing NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED. By default only NEW, UPDATED and REAPPEARED listings are saved.

## `stateKey` (type: `string`):

Name of the tracked search, e.g. "bmw-madrid". Runs with the same key share history. Leave empty to derive it from the search filters.

## `emitUnchanged` (type: `boolean`):

In incremental mode, also save listings that didn't change since the last run.

## `emitExpired` (type: `boolean`):

In incremental mode, also save listings that disappeared since the last run (sold or removed), tagged EXPIRED. Only detected when the whole search is read (no result limit hit).

## `skipReposts` (type: `boolean`):

In incremental mode, leave out new listings that are the same vehicle as one that expired earlier (relisted under a new id).

## `proxyConfiguration` (type: `object`):

Not needed in most cases: the actor switches to Apify Proxy by itself if Coches.net refuses requests.

## Actor input object example

```json
{
  "vehicleType": "cars",
  "query": "4x4",
  "listingCondition": "",
  "fuelType": "",
  "transmission": "",
  "sellerType": "all",
  "onlyWithWarranty": false,
  "onlyCertified": false,
  "sortBy": "",
  "maxResults": 20,
  "includeDetails": true,
  "descriptionMaxLength": 0,
  "compact": false,
  "excludeEmptyFields": false,
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "skipReposts": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "vehicleType": "cars",
    "query": "4x4",
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/coches-net-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "vehicleType": "cars",
    "query": "4x4",
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/coches-net-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "vehicleType": "cars",
  "query": "4x4",
  "maxResults": 20
}' |
apify call parsebird/coches-net-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/coches-net-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/tiJu5GpmEmQIlSir0/builds/ayaPER9Fnhz7VCfEe/openapi.json
