coches APIcoches.net ↗
Search vehicle listings, fetch full details, technical specs, and market price analysis from coches.net — Spain's largest car marketplace.
What is the coches API?
The coches.net API provides 5 endpoints covering vehicle search, listing detail, manufacturer technical specs, and market price analysis from Spain's largest car marketplace. Use search_vehicles to filter across make, model, price, mileage, fuel type, province, and more, then pull structured data including equipment groups, seller contact info, and a 1–5 price tier indicator for any individual listing.
curl -X POST 'https://api.parse.bot/scraper/a99c8bfd-efd4-4a37-ad34-53a2aadec5d1/search_vehicles' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"page": "1",
"size": "5",
"query": "BMW",
"sort_term": "relevance",
"sort_order": "asc",
"fuelTypeIds": "1",
"provinceIds": "28",
"category1Ids": "2500",
"sellerTypeId": "2"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace coches-net-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Coches.net SDK — search vehicles, browse makes, get specs and pricing."""
from parse_apis.coches_net_api import CochesNet, SortTerm, FuelType, Category, Sort, VehicleNotFound
client = CochesNet()
# Browse the full makes catalog and pick the first make's models.
first_make = client.makes.list(limit=3).first()
print(f"Make: {first_make.label}, models: {len(first_make.models)}")
for m in first_make.models[:2]:
print(f" Model: {m.label} (id={m.id})")
# Search used diesel vehicles sorted by price ascending, capped at 5 results.
for vehicle in client.vehiclesummaries.search(
query="BMW",
fuel_type_ids=FuelType.DIESEL,
category_ids=Category.USED,
sort_term=SortTerm.PRICE,
sort_order=Sort.ASC,
limit=5,
):
print(f"{vehicle.title} — {vehicle.year}, {vehicle.km} km, {vehicle.hp} HP, {vehicle.main_province}")
# Drill into one vehicle's full detail and technical specs.
vehicle = client.vehiclesummaries.search(query="Audi", sort_term=SortTerm.YEAR, limit=1).first()
if vehicle:
detail = vehicle.details()
print(f"Detail: {detail.title}, price={detail.price}€, views={detail.views}")
specs = vehicle.technical_specs()
print(f"Specs: {specs.horse_power} HP, {specs.number_of_doors} doors, trim={specs.trim_level}")
pricing = vehicle.price_analysis()
print(f"Price analysis: {pricing.price}€, financed: {pricing.financed_price}, rank: {pricing.rank}")
# Typed error handling for a missing vehicle.
try:
missing = client.vehiclesummary(id="99999999999")
missing.technical_specs()
except VehicleNotFound as exc:
print(f"Not found: {exc.vehicle_id}")
print("Exercised: makes.list / vehiclesummaries.search / details / technical_specs / price_analysis / VehicleNotFound")
Full-text and filter-based search across coches.net vehicle listings. Supports make/model, price range, mileage, horsepower, fuel type, transmission, body type, province, seller type, and category filters. Returns paginated results with items, promoted items, total counts, and aggregation facets for refining searches. Paginates via integer page counter; each page returns up to `size` items.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| size | integer | Number of results per page. |
| hp_to | integer | Maximum horsepower. |
| km_to | integer | Maximum mileage in km. |
| query | string | Search keyword (e.g. 'BMW', 'Audi A4'). |
| makeId | integer | ID of the car make (from get_makes_and_models). |
| hp_from | integer | Minimum horsepower. |
| km_from | integer | Minimum mileage in km. |
| modelId | integer | ID of the car model (from get_makes_and_models). Requires makeId. |
| year_to | integer | Maximum year of manufacture. |
| price_to | integer | Maximum price in euros. |
| sort_term | string | Sort field. |
| year_from | integer | Minimum year of manufacture. |
| contractId | string | Seller contract ID for filtering by a specific dealer. |
| price_from | integer | Minimum price in euros. |
| sort_order | string | Sort order. |
| bodyTypeIds | string | Comma-separated body type IDs. |
| fuelTypeIds | string | Comma-separated fuel type IDs. |
| provinceIds | string | Comma-separated province IDs (e.g. '28' for Madrid). |
| category1Ids | string | Comma-separated category IDs. |
| sellerTypeId | string | Seller type: 1 for Private, 2 for Professional. |
| transmissionTypeId | string | Comma-separated transmission type IDs. |
| environmentalLabelIds | string | Comma-separated environmental label IDs. |
{
"type": "object",
"fields": {
"items": "array of vehicle listing objects with id, title, price, km, year, make, model, fuelType, hp",
"paidItems": "array of promoted vehicle listing objects (same shape as items)",
"totalPages": "integer total number of pages",
"aggregations": "array of facet objects with name and items for filtering refinement",
"totalResults": "integer total number of matching vehicles"
},
"sample": {
"data": {
"items": [
{
"hp": 122,
"id": "57135482",
"km": 142062,
"make": "LAND-ROVER",
"year": 2007,
"model": "Defender",
"price": {
"amount": 53900
},
"title": "LAND-ROVER Defender 90 2.5 TD5 Pick Up S",
"fuelType": "Diésel"
}
],
"paidItems": [],
"totalPages": 51202,
"aggregations": [
{
"name": "make",
"items": [
{
"key": "1",
"totalResults": 1336
}
]
}
],
"totalResults": 256007
},
"status": "success"
}
}About the coches API
Search and Browse Listings
search_vehicles accepts a wide range of filters — makeId, modelId, km_from/km_to, hp_from/hp_to, fuel type, transmission, body type, province, and seller type — and returns paginated results with items and paidItems arrays. Each vehicle object includes id, title, price, km, year, make, model, fuelType, and hp. The aggregations array returns facet counts for refining results dynamically. Make and model IDs used in filtering come from get_makes_and_models, which returns the full hierarchical catalog with numeric IDs and labels.
Listing Detail and Seller Info
get_vehicle_detail returns the complete data for a single listing identified by vehicle_id. The ad object includes title, description, photos, price, vehicle specs, and listing dates. The professionalSeller object contains seller name, contact details, ratings, opening schedule, and location. The statistics object exposes views, favorites, shares, totalContacts, and call stats — useful for gauging listing engagement. A vehicleHistory object indicates whether a vehicle history report is available and provides a reportUrl.
Technical Specs and Price Analysis
get_vehicle_technical_specs returns manufacturer catalog data: horsePower, numberOfDoors, numberOfSeats, manufacturerPrice, trimLevel, and both standard and optional equipment groups with item-level descriptions and prices. Note that very old or rare vehicles may have incomplete catalog coverage. get_price_analysis returns the listing price, an optional financedPrice, and an indicator object with average market price and a rank from 1 (cheapest tier) to 5 (most expensive). The indicator object may be empty for newer or rare vehicles with insufficient comparable listings.
The coches API is a managed, monitored endpoint for coches.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when coches.net changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official coches.net API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a cross-listing car search tool filtering by province, fuel type, and horsepower using search_vehicles aggregations.
- Compare a listing's asking price against the market average using the rank and average fields from get_price_analysis.
- Display full optional and standard equipment groups from get_vehicle_technical_specs to supplement seller-provided descriptions.
- Track listing engagement over time using views, favorites, and call stats from get_vehicle_detail statistics.
- Populate a make/model selector UI using the hierarchical catalog from get_makes_and_models.
- Flag listings where a vehicle history report is available by checking the hasReport field in vehicleHistory.
- Build a dealer research tool using professionalSeller ratings, contact info, and location from get_vehicle_detail.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.