# Coches Net Spain Car Marketplace Scraper (`jungle_synthesizer/coches-net-spain-car-marketplace-scraper`) Actor

Scrapes live car, motorbike, and camper listings from Spain's coches.net vehicle marketplace network. Extracts price, mileage, fuel type, DGT environmental badge, seller and dealer info, and location for every active advert across all three vehicle categories.

- **URL**: https://apify.com/jungle\_synthesizer/coches-net-spain-car-marketplace-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 record scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Coches.net Spain Car Marketplace Scraper

Scrapes live listings from coches.net, Spain's largest vehicle marketplace. Returns price, mileage, fuel type, DGT environmental badge, seller and dealer identity, and location for cars, motorbikes, and campers — the fields a dealer-lead or fleet-policy dataset actually needs, not just a headline price.

***

### Coches.net Spain Car Marketplace Scraper Features

- Covers all three vehicle categories the marketplace publishes: cars (segunda-mano / km-0 / nuevo), motorbikes, and campers/trailers
- Extracts the DGT environmental badge (0 / ECO / B / C) — the field Spanish low-emission-zone and fleet buyers filter on, and one most listing scrapers skip
- Returns dealer identity (name, id, profile URL) alongside every professional listing, turning the output into a dealer-lead source, not just a price feed
- Pulls make, model, version, mileage, power, transmission, doors, seats, and colour per vehicle
- Picks up cash price, financed price, and any price drop on the same record
- Resumable — a run that stops partway through picks back up without re-charging you for records you already have

***

### Who Uses Coches.net Spain Car Marketplace Scraper?

- **Used-car marketplaces and price-comparison sites** — build a Spain price index without visiting every listing by hand
- **Fleet and emissions-policy analysts** — the DGT badge on every record makes low-emission-zone compliance checks a filter, not a manual lookup
- **Cross-border dealers (Portugal, France)** — source Spanish inventory with dealer contact details attached
- **Market researchers** — track pricing, mileage, and depreciation trends across makes and models over time

***

### How Coches.net Spain Car Marketplace Scraper Works

1. Pick one or more vehicle categories (cars, motorbikes, campers) and a `maxItems` cap.
2. The actor walks the category's listing pages, collecting each advert's core details — price, mileage, year, fuel type, location.
3. Each advert's own page is visited for the remaining fields: version, doors/seats, colour, transmission, warranty, and seller/dealer identity.
4. Results land in your dataset as one flat JSON record per advert, ready to export as JSON, CSV, or Excel.

***

### Input

```json
{
  "maxItems": 50,
  "categories": ["cars"]
}
```

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `maxItems` | Integer | `10` | Maximum number of records to return. |
| `categories` | Array | all three | Vehicle categories to scrape — `cars`, `motos`, `campers`. Leave empty to scrape all three. |
| `resumeCursor` | String | — | Cursor from a previous run's Output. Leave empty for a fresh crawl. |

***

### Coches.net Spain Car Marketplace Scraper Output Fields

```json
{
  "ad_id": "70900827",
  "url": "https://www.coches.net/bmw-x6-xdrive40d-5p-diesel-2018-en-murcia-70900827-covo.aspx",
  "title": "BMW X6 xDrive40d",
  "subtitle": "xDrive40d",
  "price_amount": 27500,
  "price_currency": "EUR",
  "make": "BMW",
  "model": "X6",
  "version": "xDrive40d",
  "year": 2017,
  "mileage_km": 200000,
  "fuel_type": "Diésel",
  "power_cv": 313,
  "gearbox": "Automático",
  "body_type": "4x4",
  "doors": 5,
  "seats": 5,
  "colour": "Gris",
  "environmental_badge": "C",
  "warranty": "Con garantía",
  "condition": "segunda-mano",
  "seller_type": "profesional",
  "dealer_name": "Car Lovers PREMIUM",
  "dealer_id": "118235",
  "dealer_url": "https://www.coches.net/concesionario/carlovers/",
  "location_province": "Murcia",
  "location_city": "Murcia",
  "category": "cars",
  "photo_count": 84,
  "thumbnail_url": "https://a.ccdn.es/cnet/vehicles/20263292/c65bbb9f-cdef-40af-bef1-c1626b7a0289.jpg",
  "is_certified": false,
  "is_promoted": true,
  "published_at": "2026-07-10T19:00:22+02:00"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `ad_id` | String | Source-native advert id |
| `url` | String | Canonical detail-page URL |
| `title` | String | Advert title |
| `subtitle` | String | Trim/version line |
| `price_amount` | Number | Cash price (EUR) |
| `price_currency` | String | Always `EUR` |
| `price_financed` | Number | Financed price, when the advert shows one |
| `price_previous` | Number | Pre-drop price, when the advert shows a price cut |
| `make` | String | Vehicle make |
| `model` | String | Vehicle model |
| `version` | String | Trim/version |
| `year` | Number | Model year |
| `mileage_km` | Number | Odometer reading (km) |
| `fuel_type` | String | Fuel type |
| `power_cv` | Number | Engine power (CV) |
| `gearbox` | String | `Manual` or `Automático` |
| `body_type` | String | Body style |
| `doors` | Number | Door count |
| `seats` | Number | Seat count |
| `colour` | String | Exterior colour |
| `environmental_badge` | String | DGT badge: `0`, `ECO`, `B`, or `C` |
| `warranty` | String | Warranty note, when present |
| `condition` | String | `segunda-mano`, `km-0`, or `nuevo` |
| `seller_type` | String | `particular` or `profesional` |
| `dealer_name` | String | Dealer name, for professional sellers |
| `dealer_id` | String | Dealer id |
| `dealer_url` | String | Dealer profile page |
| `location_province` | String | Province |
| `location_city` | String | City |
| `category` | String | `cars`, `motos`, or `campers` |
| `photo_count` | Number | Number of photos on the advert |
| `thumbnail_url` | String | Main photo URL |
| `is_certified` | Boolean | Certified-vehicle flag |
| `is_promoted` | Boolean | Featured/promoted-listing flag |
| `published_at` | String | ISO-8601 publish timestamp |

***

### Resuming a large crawl

Every run emits a `resumeCursor` in its Output. If a large crawl stops before it finishes — because it hit `maxItems`, your spend cap (`maxTotalChargeUsd`), or was aborted — start a new run with **the same input** plus that `resumeCursor` to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.

- You are **not re-charged** for records the earlier run already delivered.
- Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its `resumeCursor` is no longer valid.
- `resumeCursor` is opaque — supply it unmodified.

***

### FAQ

#### How do I scrape coches.net?

Point Coches.net Spain Car Marketplace Scraper at the categories you want and set a `maxItems` cap. No account, login, or manual navigation required — the actor handles pagination on its own.

#### What data can I get from coches.net?

Everything a listing shows: price, mileage, year, fuel type, transmission, doors, seats, colour, the DGT environmental badge, and — for professional sellers — the dealer's name, id, and profile URL.

#### Can I filter by vehicle category?

Yes. Set `categories` to any combination of `cars`, `motos`, and `campers`. Leave it empty to pull all three in one run.

#### How much does Coches.net Spain Car Marketplace Scraper cost to run?

Billed per record collected plus a small run-start fee, standard Apify pay-per-event pricing. Check the Pricing tab on the actor's Apify Store page for current rates.

***

### Need More Features?

Need custom fields, filters, or a different target site? [File an issue](https://console.apify.com/actors/issues) or get in touch.

### Why Use Coches.net Spain Car Marketplace Scraper?

- **Wide coverage** — cars, motorbikes, and campers in one actor, not three separate scrapers to stitch together.
- **Dealer-ready output** — dealer name, id, and profile URL ride along with every professional listing, so the dataset works as a lead list, not just a price feed.
- **The field others skip** — the DGT environmental badge is on every car record, which matters the moment you need to filter by low-emission-zone eligibility.

# Actor input Schema

## `sp_intended_usage` (type: `string`):

What will this data feed? E.g. lead lists, KYB checks, price tracking.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

We'll personally help with your use case. No spam.

## `resumeCursor` (type: `string`):

Leave empty for a fresh crawl. To CONTINUE a previous run where it stopped — without paying again for records you already received — paste the `resumeCursor` value from that run's Output (the run's OUTPUT key). Resume promptly: the previous run's data expires with your account's retention window (free tier: your ~10 most recent runs).

## `maxItems` (type: `integer`):

Maximum number of records to scrape

## `categories` (type: `array`):

Vehicle categories to scrape. Leave empty to scrape all three.

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10,
  "categories": [
    "cars"
  ]
}
```

# Actor output Schema

## `results` (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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10,
    "categories": [
        "cars"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/coches-net-spain-car-marketplace-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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10,
    "categories": ["cars"],
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/coches-net-spain-car-marketplace-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 '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10,
  "categories": [
    "cars"
  ]
}' |
apify call jungle_synthesizer/coches-net-spain-car-marketplace-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jungle_synthesizer/coches-net-spain-car-marketplace-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/bevH6oAnioahU5CLF/builds/VFGIqQQw55gcNjeDg/openapi.json
