autolina.ch API & Scraper
The autolina.ch API turns one of Switzerland's car marketplaces into JSON in six actions.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
search reads about 91,000 cars, vans, campers and classics for sale on 2026-10-14, from roughly 2,300 Swiss dealers and from private sellers, with the filters the marketplace applies itself: make by name or id, model, model group, free text on the version line such as 'golf gti', condition (new, used, ex-demonstrator, classic, pre-registered), fuel with each hybrid type kept apart, gearbox, drive, body type, colour, canton, price in Swiss francs, mileage, year of first registration, horsepower, seats, listing age, photos-only, MFK-inspected and one dealer's stock, sorted by price, mileage, year or make, 1 to 100 rows a page. listing returns one car in full: the asking price and the new-car list price in CHF, the monthly leasing rate, first registration, mileage, power in hp and kW, engine size, doors, seats, weights, consumption, CO2, Euro norm, battery range, warranty, MFK inspection date, standard and optional equipment, the seller's description, every photo and the seller with the contact details the listing page itself shows. makes and models return the ids the filters take, dealer and dealers cover the supply side. Condition is read from the marketplace's own vehicle classification, never from its 'new listing' badge. One ReefAPI key, the standard { ok, data, meta, error } envelope, no autolina.ch account.
Condition versus the 'new' badge — what an autolina.ch listing actually says
autolina.ch marks freshly listed cars with a 'new' badge, and that badge also reaches the page's structured data. These are real listings read on 2026-10-14; the right-hand columns are what the API returns.
| listing | what the page's structured data says | condition | is_new_listing · price (CHF) |
|---|---|---|---|
| Ford Transit Custom van, first registered 07/2017, 171,000 km | NewCondition | used | true · 12500 |
| BMW, 82,000 km, listed the same day | NewCondition | used | true · 40500 |
| Ford E-Transit Courier, listed in June | UsedCondition | used | false · 24900 |
| Rover classic, 58,000 km | UsedCondition | classic | false · 22900 |
Both badged used cars in the table were printed as new in the page's structured data. condition comes from the marketplace's own vehicle classification (new, used, demo, classic, pre-registered); the badge is published separately as is_new_listing, so a 'new cars only' filter never pulls in a 171,000 km van.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/autolina/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"make": "vw",
"model_group_id": "74",
"fuel": "petrol",
"year_min": 2018,
"sort": "price_asc"
}
}{
"ok": true,
"meta": {
"api": "autolina",
"endpoint": "search",
"mode": "live",
"latency_ms": 728,
"record_count": 20,
"bytes": 55786,
"cache_hit": false,
"total": 948,
"total_is_exact": true,
"pagination": {
"page": 1,
"limit": 20,
"last_page": 48,
"has_more": true
},
"filters_applied": {
"make_id": [
52
],
"model_group_id": [
74
],
"fuel": [
"petrol"
],
"year": "2018"
},
"sort": "price_asc",
"upstream_requests": 1,
"charged_credits": 2,
"version": "1.0.0",
"request_id": "b4b234113606400c",
"queue_ms": 1.1,
"fetched_at": "2026-10-14T18:57:17.170Z"
},
"data": {
"listings": [
{
"listing_id": "5021014",
"url": "https://www.autolina.ch/auto/vw-golf-sportsvan/5021014",
"title": "VW Golf Sportsvan 1.0 TSI Comfortline",
"source_title": null,
"make": "VW",
"make_id": 52,
"make_slug": "vw",
"model": "GOLF SPORTSVAN",
"model_id": 827,
"model_slug": "golf-sportsvan",
"version": "Golf Sportsvan 1.0 TSI Comfortline",
"condition": "used",
"condition_code": 1102,
"is_new_listing": false,
"price": 9900,
"currency": "CHF",
"lease_rate_monthly": null,
"lease_type": null,
"first_registration": "2019-03-01",
"year": 2019,
"construction_year": null,
"mileage_km": 119000,
"power_hp": 115,
"power_kw": 85,
"engine_ccm": 999,
"fuel": "petrol",
"fuel_code": 1501,
"transmission": "manual",
"transmission_code": 1202,
"drive": "front_wheel",
"drive_code": 1403,
"body_type": "van",
"body_type_code": 1010,
"exterior_color": "red",
"exterior_color_code": 1313,
"interior_color": "black",
"interior_color_code": 1315,
"location": {
"postcode": "6312",
"city": "Steinhausen",
"canton": "ZG",
"country": "CH"
},
"seller": {
"type": "dealer",
"name": "Lip Automobile GmbH",
"logo": null
},
"is_premium": false,
"quality_seals": [],
"image": "https://api.autolina.ch/auto-bild/vw-golf-sportsvan-van-occasion--gebraucht/52/827/5021014_1.jpg",
"images": [
"https://api.autolina.ch/auto-bild/vw-golf-sportsvan-van-occasion--gebraucht/52/827/5021014_1.jpg",
"https://api.autolina.ch/auto-bild/vw-golf-sportsvan-van-occasion--gebraucht/52/827/5021014_2.jpg",
"https://api.autolina.ch/auto-bild/vw-golf-sportsvan-van-occasion--gebraucht/52/827/5021014_3.jpg"
],
"video_url": null,
"updated_at": "2026-07-29 16:10:25"
},
{
"listing_id": "5080948",
"url": "https://www.autolina.ch/auto/vw-golf-variant/5080948",
"title": "VW Golf Variant 1.5 TSI EVO Highline DSG",
"source_title": "**IM KUNDENAUFTRAG**AB SERVICE**AB MFK",
"make": "VW",
"make_id": 52,
"make_slug": "vw",
"model": "GOLF VARIANT",
"model_id": 8461,
"model_slug": "golf-variant",
"version": "Golf Variant 1.5 TSI EVO Highline DSG",
"condition": "used",
"condition_code": 1102,
"is_new_listing": false,
"price": 9995,
"currency": "CHF",
"lease_rate_monthly": null,
"lease_type": null,
"first_registration": "2018-09-01",
"year": 2018,
"construction_year": null,
"mileage_km": 162100,
"power_hp": 150,
"power_kw": 110,
"engine_ccm": 1498,
"fuel": "petrol",
"fuel_code": 1501,
"transmission": "automatic",
"transmission_code": 1201,
"drive": "front_wheel",
"drive_code": 1403,
"body_type": "estate",
"body_type_code": 1005,
"exterior_color": "white",
"exterior_color_code": 1319,
"interior_color": "black",
"interior_color_code": 1315,
"location": {
"postcode": "4802",
"city": "Strengelbach",
"canton": "AG",
"country": "CH"
},
"seller": {
"type": "dealer",
"name": "Garage Deda GmbH",
"logo": null
},
"is_premium": false,
"quality_seals": [],
"image": "https://api.autolina.ch/auto-bild/vw-golf-variant-kombi-occasion--gebraucht/52/8461/5080948_1.jpg",
"images": [
"https://api.autolina.ch/auto-bild/vw-golf-variant-kombi-occasion--gebraucht/52/8461/5080948_1.jpg",
"https://api.autolina.ch/auto-bild/vw-golf-variant-kombi-occasion--gebraucht/52/8461/5080948_2.jpg",
"https://api.autolina.ch/auto-bild/vw-golf-variant-kombi-occasion--gebraucht/52/8461/5080948_3.jpg"
],
"video_url": null,
"updated_at": "2026-10-14 18:01:34"
},
{
"listing_id": "4695004",
"url": "https://www.autolina.ch/auto/vw-golf/4695004",
"title": "VW GOLF VII 1.0 TSI Trendline",
"source_title": "2 jeux de roues",
"make": "VW",
"make_id": 52,
"make_slug": "vw",
"model": "GOLF",
"model_id": 609,
"model_slug": "golf",
"version": "GOLF VII 1.0 TSI Trendline",
"condition": "used",
"condition_code": 1102,
"is_new_listing": false,
"price": 10200,
"currency": "CHF",
"lease_rate_monthly": null,
"lease_type": null,
"first_registration": "2019-05-01",
"year": 2019,
"construction_year": null,
"mileage_km": 65000,
"power_hp": 85,
"power_kw": 63,
"engine_ccm": 999,
"fuel": "petrol",
"fuel_code": 1501,
"transmission": "manual",
"transmission_code": 1202,
"drive": "front_wheel",
"drive_code": 1403,
"body_type": "saloon",
"body_type_code": 1006,
"exterior_color": "bordeaux",
"exterior_color_code": 1305,
"interior_color": "other",
"interior_color_code": 1320,
"location": {
"postcode": "1937",
"city": "Orsières",
"canton": "VS",
"country": "CH"
},
"seller": {
"type": "dealer",
"name": "Garage du Carrefour Droz SA",
"logo": null
},
"is_premium": false,
"quality_seals": [],
"image": "https://api.autolina.ch/auto-bild/vw-golf-limousine-occasion--gebraucht/52/609/4695004_1.jpg",
"images": [
"https://api.autolina.ch/auto-bild/vw-golf-limousine-occasion--gebraucht/52/609/4695004_1.jpg",
"https://api.autolina.ch/auto-bild/vw-golf-limousine-occasion--gebraucht/52/609/4695004_2.jpg",
"https://api.autolina.ch/auto-bild/vw-golf-limousine-occasion--gebraucht/52/609/4695004_3.jpg"
],
"video_url": null,
"updated_at": "2026-08-03 16:02:40"
}
]
}
}What the autolina.ch API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search autolina.ch's car listings with the filters the source applies natively: make (name or id), model, model group, free text on the version line, condition, fuel, gearbox, drive, body type, colour, canton, price (CHF), mileage, year of first registration, horsepower, seats, listing age, photos-only, MFK-inspected and one dealer's stock. 1-100 rows a page. Every enum is a closed list: an unknown value is rejected instead of silently returning the whole catalogue. | Price-intelligence teams call search to search autolina.ch's car listings with the filters the source applies natively. | make, make_id, model_id, model_group_id, query, ... |
| listing | One listing in full by its id: make, model and version, condition, asking price and the new-car list price in CHF, monthly leasing rate, first registration, mileage, power in hp and kW, engine size, cylinders, gears, doors, seats, weights, fuel consumption, CO2, energy label, Euro norm, battery capacity and range, warranty, MFK inspection date, part-exchange and WIR payment, standard and optional equipment, the seller's description, every photo, views, dates, and the seller (dealer or private) with the address, phone, WhatsApp and e-mail the listing page prints. A removed listing returns NOT_FOUND. | Classifieds aggregators call listing to get one listing in full by its id. | listing_id |
| makes | Every make on autolina.ch with its live listing count — the ids `search` takes as make_id and `models` takes as make. | Resale and arbitrage tools call makes to get every make on autolina.ch with its live listing count. | none |
| models | The models of one make with their model groups — the ids `search` takes as model_id and model_group_id. | Lead-generation teams call models to get the models of one make with their model groups. | make |
| dealer | One dealer's profile: address, canton, phone, WhatsApp, e-mail, website, about text and the makes it has in stock. Its listings: `search` with dealer_id. | Price-intelligence teams call dealer to get one dealer's profile. | dealer_id |
| dealers | The dealer directory (~2,300 Swiss dealers), 1-100 a page, optionally by part of the name, by make sold or by quality seal. | Classifieds aggregators call dealers to get the dealer directory (~2,300 Swiss dealers), 1-100 a page, optionally by part of the name, by…. | query, make_id, quality_seal_id, page, limit |
Call search from your stack
curl -X POST https://api.reefapi.com/autolina/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"make":"vw","model_group_id":"74","fuel":"petrol","year_min":2018,"sort":"price_asc"}'import requests
r = requests.post(
"https://api.reefapi.com/autolina/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"make": "vw",
"model_group_id": "74",
"fuel": "petrol",
"year_min": 2018,
"sort": "price_asc"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/autolina/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"make": "vw",
"model_group_id": "74",
"fuel": "petrol",
"year_min": 2018,
"sort": "price_asc"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.autolina.search with {"make":"vw","model_group_id":"74","fuel":"petrol","year_min":2018,"sort":"price_asc"}.Who uses this API and why
- Price a used car in Switzerland: one make and model, a year window and a mileage band, and compare CHF asking prices from dealers and private sellers side by side.
- Track the electric and hybrid market: count and list cars by exact fuel type, canton and price, and watch new listings with listed_within_days.
- Watch one dealer's stock: pass dealer_id to search and poll for new cars and price changes.
- Build a Swiss car search: makes and models return the live ids and counts the filters take, and every row links back to the original listing.
- Map the dealer network: dealers by name, make sold or quality seal, dealer for the address, contact channels and the makes in stock.
Questions developers ask before integrating
Are the prices in Swiss francs?
Yes. price is the asking price in CHF as a plain whole number, the same figure the listing page prints as CHF 12'500,-. Checked against the listing's own page on one listing from each of eight searches (VW Golf, BMW, Tesla, campers, classics, demonstrators, cars under CHF 3,000 and the newest listings), in two separate runs: the price matched the page's structured data and its title 32 of 32 times, and the mileage 16 of 16. listing also returns new_price, the new-car list price, when the seller gives it, and lease_rate_monthly when a leasing offer is attached.
How do I get only new cars, or only used ones?
Use condition: new, used, demo (ex-demonstrator), classic or pre_registered, one or several. On 2026-10-14 that was 23,821 new, 56,819 used, 8,536 demonstrators, 1,224 pre-registered cars and 817 classics. Do not use the 'new' badge for this: is_new_listing only says the car was listed recently, and used cars with six-figure mileage carry it.
Can I filter by hybrid type?
Yes. fuel keeps every type the marketplace distinguishes: petrol, diesel, electric, cng, lpg, bioethanol, hydrogen, and mild, full and plug-in hybrid, each in a petrol and a diesel version. Pass several at once, for example fuel=plugin_hybrid_petrol,plugin_hybrid_diesel returned 7,208 cars. An unknown value is refused with the list of valid ones instead of quietly returning the whole market.
How many results can I page through?
Every matching car: 1 to 100 per page, and page × limit can reach the total. With any filter the total is exact (VW: 11,189, and the last page held exactly the remainder). Without any filter the marketplace's own headline count is about 4,900 higher than the cars its search actually lists (96,121 against 91,221 when measured), so an unfiltered call says total_is_exact: false.
Who is the seller?
Every search row says whether the seller is a dealer or a private person, with the dealer's name. listing adds the seller's address, phone, WhatsApp and e-mail as the listing page shows them, and for dealers a dealer_id that dealer takes. Private sellers' names appear only in listing, not in search rows. dealers lists about 2,300 dealers, searchable by name, make sold and quality seal.
Which regions are covered?
All of Switzerland and Liechtenstein. Filter with canton as a two-letter code (ZH, BE, VD, GE, TI and so on; FL for Liechtenstein), several at once if you like. Zurich alone had 15,866 cars and Liechtenstein 532 on 2026-10-14. Every row carries the seller's postcode, town and canton.
Which fields can be empty?
Search rows are complete on make, model, version, condition, price, mileage, fuel, gearbox, body type and colour (321 of 321 rows in a mixed sample). First registration is missing on new cars that are not registered yet (17 of 49 new cars had one), power on about 2 % of rows, a photo on about 3 %. In the full listing, consumption, CO2, Euro norm and battery figures appear only when the seller typed them. Numbers the seller left at zero come back as null, and the marketplace's own odd values, such as a placeholder mileage of 999,999 km, are returned as published.
How fast is it?
One upstream request per call. Over two identical runs of 67 calls across all six actions, every call returned what it should; a search took 1.5 seconds at the median and 3.5 seconds at worst, a full listing under a second at the median.
What is the autolina.ch API?
autolina.ch API is a ReefAPI endpoint group for switzerland's car market as json: about 91,000 new and used cars with make, model, condition, first registration, mileage, the asking price in chf, fuel including every hybrid type, and the dealer or private seller behind each one. It returns live JSON through POST requests under /autolina/v1.
Is the autolina.ch API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. autolina.ch calls use the same shared credit balance as every other ReefAPI engine.
Do I need an autolina.ch login or account?
No login to autolina.ch is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the autolina.ch data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the autolina.ch API use?
autolina.ch actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call autolina.ch from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call autolina actions with the same key, credit pool and JSON envelope used by normal REST requests.