---
title: "Sources & site slugs"
description: "The `site` slug vocabulary, what each source publishes, and why the classifieds network is not one of them."
canonical: "https://thecarapi.com/docs/sources"
contract_version: "2026-08-19"
api_base: "https://api.thecarapi.com"
source: "https://thecarapi.com/docs/sources.md"
---

# Sources & site slugs

The `site` slug vocabulary, what each source publishes, and why the classifieds network is not one of them.

A `site` slug identifies which auction source a listing came from. It is the value you pass to `/api/search?site=`, the first path segment of `/api/auction/{site}/{id}`, the `site` parameter of `/api/car-details`, and the `site_name` fee-model selector on the import calculator.

> **Read the slug list, do not hardcode it** — Fetch the live set and counts from `/api/sites`. An unknown slug is a `400` naming the offender, not an empty result — a hardcoded list turns a new source into a broken deploy.

| Slug | Upstream | Origin | Inventory | Detail payloads |
| --- | --- | --- | --- | --- |
| `auto1` | Auto1 (EU) | Per-listing | Live auctions | Full + normalized `vehicle_details` |
| `openlane` | OpenLane (EU) | Per-listing | Live auctions | Full + normalized `vehicle_details` |
| `ecarstrade` | eCarsTrade (EU) | Per-listing | Live auctions | Full + normalized `vehicle_details` |
| `schadeautos` | Schadeautos (NL) | NL | Live listings | Full |
| `copart` | Copart Germany | DE | Live auctions | Full |
| `encar` | Encar (South Korea) | KR | Live listings | Full |
| `japanauction` | Japanese auctions — USS, ARAI, AUCNET, BAYAUC, CAA | JP | Live listings | Full |

## eCarsTrade

eCarsTrade behaves like every other source — there is no special code path and no separate endpoint. It is a valid value everywhere a source is accepted:

```http
GET  /api/search?site=ecarstrade
GET  /api/auction/ecarstrade/{auction_id}
GET  /api/auction/ecarstrade/{auction_id}/price-history
GET  /api/auction-images/ecarstrade/{auction_id}
GET  /api/car-details?site=ecarstrade&id={id}
POST /api/calculator/calculate   { "site_name": "ecarstrade" }
```

The one source-specific detail worth knowing: an eCarsTrade gallery arrives under the `ImageUrls` key of `car_identification` on the auction detail payload. You do not normally need it — `/api/auction-images/ecarstrade/{id}` returns the same gallery already ordered, vaulted and CDN-served with `served_url`, `width` and `height`, and the identical body rides on the detail response as `vault_gallery`. Reach for the raw key only when you want exactly what the source published.

## Japanese auctions

Japanese export inventory pooled from the major domestic auction houses — USS, ARAI, AUCNET, BAYAUC and CAA — addressed by the slug `japanauction`, which is a valid value everywhere a source is accepted. Two things differ from the EU sources: its listings carry the `JP` origin country, and `/api/car-details?site=japanauction` takes the offer id/UUID rather than the numeric auction id — the same as `auto1`. It publishes less detail than the three EU auction houses, so expect `vehicle_details` to be sparse or absent.

> **A Japanese price is an opening bid, not a cost** — Roughly a quarter of lots publish no opener at all, and some of the rest are nominal starters. Read `current_price` on this source as a floor the lot will bid up from — not as what it will sell for — and expect best-value ranking to flag some of them optimistically. `buy_now_price` is never set.

> **`country=europe` is an exclusion, not a list** — It means "every origin that is not overseas", so a source shipping from outside Europe has to be named for it to be excluded. It currently excludes `KR` (Encar) and `JP` (Japanese auctions); rows with no recorded country are treated as European and are included. If you need strict membership, pass explicit ISO codes instead.

## Not a source: the European classifieds network

The classifieds network is retail market-reference data, not auction inventory: 9,808,689 live listings gathered from 681 origin portals across 39 European countries. It is stored in its own tables, is never merged into the auction feed, and is deliberately a light dataset — no detail fetch, no image vault, no per-listing detail payload. It therefore never appears in `/api/sites` and is **not** a valid `site` value; passing it returns `400`. Query it through its own `/api/theparking/*` endpoints under the `theparking` scope — that slug is the scope name, not a source name.

|  | Auction sources | Classifieds network |
| --- | --- | --- |
| Queried through | `/api/search?site=…` | `/api/theparking/listings` |
| Scope | `search`, `auctions`, `details` | `theparking` |
| Price meaning | Bid / buy-now / public EUR | Retail asking price |
| Bidding & end date | Yes | No |
| Detail payload | Full, source-aware | None — the listing row is the whole record |
| Images | Vaulted CDN gallery | One remote thumbnail, hotlinked |
| Appears in `/api/sites` | Yes | No |
