# Coches.net Scraper — Spain Used Cars & Prices, No Phones (`highbrow_fame/cochesnet-listings`) Actor

Used and km 0 cars from coches.net, Spain's big car marketplace: price and coches.net's price rating, year, km, fuel, gearbox, power, body, province and dealer. No phone numbers.

- **URL**: https://apify.com/highbrow_fame/cochesnet-listings.md
- **Developed by:** [yestrue](https://apify.com/highbrow_fame) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.90 / 1,000 listing delivereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 — Spain Used Cars & Prices, No Phones

Get car listings from coches.net, one of Spain's largest car marketplaces (268,000 used cars on 24 September 2026): price, coches.net's own price rating and the market price it estimates for comparable cars, financing and price drops, make, model and version, year, mileage, fuel, gearbox, power, engine size, body, doors, drive, DGT environmental label, warranty, town and province, and the dealer. Used cars and km 0. Paste your coches.net search links — or just type a make, a model and provinces.

**Why this one**

- 🔗 **Your search, as you set it up.** Set every filter you like on coches.net — make, model, province, price, year, km, fuel, gearbox, body, colour, seller, radius around a place — and paste the link. Or fill in make, model, provinces, price, year, mileage, fuel, gearbox, body and seller here.
- ⚡ **Fast.** A live test run read five searches — VW Golf in Barcelona, private sellers' cars from 2018 up to €15,000, electric cars cheapest first, km 0 cars, and automatic Toyotas in Andalucía newest first — 7,728 cars in 145 seconds.
- 💶 **Price with context.** coches.net's own price rating, from `super-price` to `high-price`: its cards show only `super-price`, `good-price` and `fair-price`, and the `above-market` and `high-price` ratings are read here from coches.net's price filter. In the live test run 5,950 of the 7,728 cars came with a rating, 1,146 of them above market or high. Plus coches.net's market price for comparable cars, the monthly instalment and the last price drop.
- 🔒 **No phone numbers, no names.** coches.net's listing data carries the seller's phone number and a private seller's first name; neither is delivered. Dealers are named by their company; private sellers by nothing but their town. A phone number typed into a title is replaced with `[phone removed]`.
- 💸 **You pay only for cars delivered.** A link that is not a coches.net car search, a word in a link that coches.net does not know, or a province that does not exist comes back as a free record with the reason.

### What you get

For every car:

| Field | What it is |
|---|---|
| `title`, `make`, `model`, `version` | the car as the seller named it |
| `price`, `financedPrice`, `monthlyInstalment`, `instalmentMonths` | the asking price (EUR), the price when financed through the dealer, and the monthly payment offered |
| `priceRating`, `marketPrice` | coches.net's rating of the price (`super-price`, `good-price`, `fair-price`, `above-market`, `high-price`) and its average price for comparable cars |
| `priceDrop`, `priceDropPercent`, `priceDroppedAt` | the last price cut |
| `year`, `mileageKm`, `condition` | age and use; condition is used, km 0, demonstration, ex-management, courtesy car or new |
| `fuel`, `transmission`, `powerHp`, `engineCc`, `drive` | drivetrain (drive: front, rear or 4x4) |
| `bodyType`, `doors`, `environmentalLabel` | body (saloon — coches.net's "berlina", hatchbacks included —, SUV, estate, MPV, coupe, convertible, pick-up, van) and the DGT label (0, ECO, C, B) |
| `warrantyMonths`, `isCertified`, `hasReservation`, `isUrgent` | as listed |
| `city`, `province`, `region` | where the car is |
| `sellerType`, `dealerName`, `dealerId`, `dealerRating`, `dealerReviews` | dealer or private seller; for dealers, the company and its rating on coches.net |
| `firstListed`, `published` | when the listing was created and last published |
| `image`, `imageCount`, `hasVideo`, `url`, `listingId` | the listing |
| `input`, `position`, `scrapedAt`, `status`, `error` | which search it came from, and why a search gave nothing |

#### Example

A real record from a live run — BMW Serie 3 in Madrid, 24 September 2026:

```json
{
  "listingId": "71401107",
  "url": "https://www.coches.net/bmw-serie-3-330e-xdrive-touring-5p-electrico-hibrido-2022-en-madrid-71401107-covo.aspx",
  "title": "BMW Serie 3 330e xDrive Touring",
  "make": "BMW",
  "model": "Serie 3",
  "version": "330e xDrive Touring",
  "price": 25100,
  "financedPrice": 22765,
  "monthlyInstalment": 272.43,
  "instalmentMonths": 108,
  "priceRating": "good-price",
  "marketPrice": 28400,
  "year": 2021,
  "mileageKm": 90000,
  "fuel": "plug-in hybrid",
  "transmission": "automatic",
  "bodyType": "estate",
  "doors": 5,
  "powerHp": 292,
  "engineCc": 1998,
  "drive": "4x4",
  "environmentalLabel": "0",
  "condition": "used",
  "warrantyMonths": 60,
  "city": "Casarrubios del Monte",
  "province": "Madrid",
  "sellerType": "dealer",
  "dealerName": "Auto Back Navalcarnero",
  "dealerRating": 4.1,
  "dealerReviews": 342,
  "firstListed": "2026-08-31T14:27:57Z",
  "imageCount": 20,
  "status": "OK"
}
```

### How to use it

1. Paste **Search links** from coches.net, one per line — or fill in **Make**, **Model**, **Provinces or regions** and the optional filters.
2. Set **Max listings per search**. Leave **Price rating for every car** on unless you need the run to be as quick as possible.
3. Press **Start**, and download the results from the **Output** tab as JSON, CSV or Excel.

To follow prices or new listings for a model, save your input as a task with **Sort by** set to "Newest listings first", and schedule it daily or weekly.

You can also call it from the Apify API, from Make, Zapier or n8n, or from an AI agent through the Apify MCP server.

### Pricing

You are charged **per car delivered** — see the price on this page. The price rating costs nothing extra, only a little time. Links that are not coches.net car searches, words coches.net does not know and provinces that do not exist are free.

### FAQ

**How many cars per search?** Up to 10,000 — coches.net's own limit for one search. For more, split it by province, price band or year.

**Why are a few cars from another province?** A dealer can list one car in several provinces, and coches.net then shows it in each of them; `province` is the car's main province.

**Why is `priceRating` empty for some cars?** coches.net rates only the cars it can compare. In the live test run 4,350 of 4,566 dealers' cars had a rating and 1,600 of 3,162 private sellers' cars. `marketPrice` comes with the ratings coches.net shows on its cards (`fair-price`, `good-price`, `super-price`). With **Price rating for every car** switched off, the `above-market` and `high-price` ratings stay empty.

**Why was my link refused?** The actor reads the filters from the link itself. For a word it does not know, it asks the coches.net page what the word means — and if coches.net ignores the word too (usually a typo in a make or model), the search is refused instead of being run over every car in Spain. A few website filters cannot be applied (engine size in litres, for one); such links are refused with the reason. Links to single listings, vans, motorbikes or caravans are not car searches.

**Why no phone numbers or seller names?** They are personal data. Every listing has its `url`; buyers contact the seller on coches.net.

**Is this affiliated with coches.net?** No. This is an independent tool that reads public coches.net listings.

**Like it?** A short review on the Store page helps other people find this Actor. Something missing or broken? Tell us on the Issues tab — we read every one.

# Actor input Schema

## `searchUrls` (type: `array`):

Set up a search on coches.net with all the filters you want — make, model, province, price, year, km, fuel, gearbox… — and paste the address of the results page. One per line. Used cars (…/segunda-mano/…) and km 0 (…/km-0/…).

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

Or search here without a link: the make as coches.net writes it (BMW, Seat, Volkswagen, Mercedes-Benz).

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

The model as coches.net writes it (Serie 3, Ibiza, Golf, Clase C). Leave empty for every model of the make.

## `provinces` (type: `array`):

Optional, one per line: Madrid, Barcelona, Valencia, Sevilla… or a region such as Andalucía or Catalunya. Empty = all of Spain.

## `priceFrom` (type: `integer`):

Optional.

## `priceTo` (type: `integer`):

Optional.

## `yearFrom` (type: `integer`):

Optional.

## `yearTo` (type: `integer`):

Optional.

## `mileageTo` (type: `integer`):

Optional.

## `fuel` (type: `string`):

Optional.

## `gearbox` (type: `string`):

Optional.

## `bodyType` (type: `string`):

Optional. "Saloon" is coches.net's "berlina", which includes hatchbacks.

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

Dealers, private sellers, or both.

## `kmZeroOnly` (type: `boolean`):

Only km 0 cars (registered by a dealer, practically unused). Otherwise all used cars, km 0 included.

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

For the form search. A link keeps the order it was set up with.

## `includePriceRating` (type: `boolean`):

coches.net rates prices from super-price to high-price, but its cards show only the good ratings (super-price, good-price, fair-price) — those come with every run. This adds above-market and high-price, read from coches.net's price filter by running each search once more per rating (1,146 of 7,728 cars in a test run). A run takes a little longer; it costs nothing extra.

## `maxListingsPerSearch` (type: `integer`):

Stops each search after this many cars. coches.net shows up to 10,000 cars for one search.

## `maxConcurrency` (type: `integer`):

How many searches to work on at the same time.

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

Used only to try again after a network error: the first try goes out directly.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.coches.net/bmw/serie_3/segunda-mano/madrid/"
  ],
  "fuel": "any",
  "gearbox": "any",
  "bodyType": "any",
  "sellerType": "any",
  "kmZeroOnly": false,
  "sortBy": "relevance",
  "includePriceRating": true,
  "maxListingsPerSearch": 30,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Every result as a JSON record, with a status for each input.

## `resultsCsv` (type: `string`):

The same records as CSV, for a spreadsheet.

# 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 = {
    "searchUrls": [
        "https://www.coches.net/bmw/serie_3/segunda-mano/madrid/"
    ],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("highbrow_fame/cochesnet-listings").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 = {
    "searchUrls": ["https://www.coches.net/bmw/serie_3/segunda-mano/madrid/"],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("highbrow_fame/cochesnet-listings").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 '{
  "searchUrls": [
    "https://www.coches.net/bmw/serie_3/segunda-mano/madrid/"
  ],
  "maxListingsPerSearch": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call highbrow_fame/cochesnet-listings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,highbrow_fame/cochesnet-listings"
        }
    }
}
```

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/I6O26LZHHGffCk25S/builds/Ssj4y7DJdHUPJaIBt/openapi.json
