Gaspedaal API: het occasionaanbod van de Nederlandse autosites als JSON
Gaspedaal heeft zelf geen auto's te koop. Het bundelt occasions van Nederlandse autosites, dealersites en leaseportals en laat per auto zien waar die overal staat; het idee is dat je zo in één keer in alle autosites zoekt. Deze API geeft dat overzicht als JSON: één regel per auto, met vraagprijs, bouwjaar, kilometerstand, brandstof, de plaats van de verkoper en in `sources[]` elke site die dezelfde auto aanbiedt. Autobedrijven die hun voorraad naar Gaspedaal of de achterliggende portals willen sturen, kunnen hier niets mee: er wordt niets geplaatst of bijgewerkt, alleen het openbare aanbod gelezen. Waar het wel voor dient, is marktonderzoek: hoeveel exemplaren van een model er in een regio te koop staan, in welke prijsklasse, en via welke kanalen.
Endpoints
| endpoint | Wat je terugkrijgt | Verplicht |
|---|---|---|
| search | Zoeken in het gebundelde aanbod, 100 auto's per volle pagina. Filters op merk en model (slug of id), prijs, bouwjaar, kilometerstand, vermogen, cilinderinhoud, zitplaatsen, trekgewicht, wegenbelasting per maand, actieradius en accucapaciteit, brandstof, transmissie, carrosserie, kleur, soort verkoper (particulier, merkdealer, BOVAG-bedrijf, onafhankelijke garage…), BOVAG- of fabrieksgarantie, alleen met NAP, btw- of marge-auto, postcode met straal, en per bronsite (wel op, niet op, of alleen op één site). Zonder parameters blader je door het hele Nederlandse aanbod. | allemaal optioneel |
| listing | Eén auto op het advertentienummer van Gaspedaal (`ad_id` uit search), met alle sites waar hij staat en per site de doorkliklink. Een verwijderd nummer geeft NOT_FOUND, ook al antwoordt de site zelf met HTTP 200 en nul rijen. | ad_id |
| brands | Alle merken met de slug en het id die search verwacht, en het aantal auto's dat Gaspedaal er op dat moment naast zet. | allemaal optioneel |
| models | Alle modellen van één merk, met slug en id. Geef `brand` (slug) of `brand_id` mee. | allemaal optioneel |
| source_sites | Welke sites Gaspedaal op dit moment bundelt, geteld uit een steekproef van de eigen resultaatpagina's: naam, het id voor de bronfilters, het soort site en het aandeel in de steekproef. | allemaal optioneel |
Elke aanroep kost credits. Mislukte en geblokkeerde aanroepen zijn gratis.
Werkend voorbeeld
Binnen 25 km van postcode 5611 (Eindhoven) stonden 17 hybride Yarissen met NAP onder € 18.000, samen goed voor 53 vermeldingen op 11 verschillende sites. De goedkoopste (€ 11.450, bouwjaar 2012) stond op één site, de tweede op drie. `ad_id` is de auto, `sources[]` zijn de plekken waar hij staat; tel je per vermelding, dan telt dezelfde Yaris tot vijf keer mee. `fuel` is de genormaliseerde waarde (`hybrid`), `fuel_source` laat zien hoe Gaspedaal het zelf noemt (`HYBRIDE`).
curl -X POST https://api.reefapi.com/gaspedaal/v1/search \
-H "x-api-key: JOUW_API_SLEUTEL" \
-H "content-type: application/json" \
-d '{"brand": "toyota", "model": "yaris", "fuel": "hybrid", "price_max": 18000, "nap_only": true, "postcode": "5611", "radius_km": 25, "sort": "price_asc"}'{
"ok": true,
"data": {
"total_results": 17,
"page": 1,
"page_size": 100,
"has_more": false,
"count": 17,
"duplicates_dropped": 0,
"sources_total": 53,
"source_sites_seen": 11,
"price_conflicts": 0,
"sort_applied": "price_asc",
"search_url": "https://www.gaspedaal.nl/toyota/yaris?pmax=18000&brnst=HYBRIDE&nap=true&pc=5611&strl=25&srt=pr-a",
"cars": [
{
"ad_id": "141581822",
"title": "Toyota Yaris 1.5 Full Hybrid Dynamic Keyless Camera Cruise Trekhaak Bleut",
"price_eur": 11450,
"currency": "EUR",
"year": 2012,
"mileage_km": 42750,
"fuel": "hybrid",
"fuel_source": "HYBRIDE",
"transmission": "automatic",
"body_type": "hatchback",
"colour": "grey",
"power_kw": 55,
"listed_at": "2026-09-23T12:11:29.000Z",
"seller": { "name": null, "schema_name": "Onbekende dealer", "city": "Boxtel", "province": "Noord-Brabant", ... },
"source_count": 1,
"sources": [
{ "site": "AutoWereld", "site_id": 14, "kind": "free portal", "click_out_url": "https://api.gaspedaal.nl/redirect/vehicle/206403688", "source_url": null, ... }
],
"price_eur_schema": 11450,
"price_conflict": false,
...
},
{
"ad_id": "141572876",
"title": "Toyota Yaris 1.5 Full Hybrid Aspiration",
"price_eur": 13445,
"year": 2014,
"mileage_km": 92130,
"seller": { "name": null, "city": "Eindhoven", "province": "Noord-Brabant", ... },
"source_count": 3,
"sources": [
{ "site": "Dealersite", "site_id": 19, "kind": "dealer", ... },
{ "site": "AutoTrack", "site_id": 2, "kind": "other", ... },
{ "site": "ANWB", "site_id": 94, "kind": "other", ... }
],
...
},
...
]
},
"meta": { "record_count": 17, "charged_credits": 3, "cache_hit": false, "mode": "live" }
}Waarom een eigen Gaspedaal-scraper ongemerkt de verkeerde auto's telt
Gaspedaal spelt de transmissie in één en hetzelfde antwoord op twee manieren: in de lijst en in de filter staat `HANDMATIG`, in de gestructureerde productgegevens van dezelfde auto `Handgeschakeld`. De eerste versie van onze engine filterde met die tweede spelling, en de site negeerde dat zonder foutmelding: 348.966 auto's, tegenover 348.967 zonder filter. Met `HANDMATIG` bleven er 139.378 over. Sindsdien stuurt de engine uitsluitend `HANDMATIG` als filterwaarde.
De gegevens komen niet als gewone HTML binnen maar als RSC-payload van Next.js (React Server Components). Een ontbrekende of herhaalde waarde staat daarin als verwijzing die met een `$` begint, zoals `"$undefined"`. Een eenvoudige parser zet dat letterlijk als kleur of carrosserie in je database: op één pagina van 100 auto's telden we er zes, en in een andere zoekopdracht was het complete `motor`-object zo'n verwijzing. Hier wordt een verwijzing null, en vullen we cilinderinhoud, vermogen, transmissie en carrosserie aan uit de tweede beschrijving van dezelfde auto op de pagina.
Doorbladeren levert herhalingen op. Op drie opeenvolgende pagina's met alle Volkswagens kwamen 26 van de 300 rijen (8,67%) een tweede keer voor; binnen één pagina gebeurde dat nooit. Gaspedaal zet dezelfde auto niet onder twee advertentienummers (op die 300 rijen deelden geen twee `ad_id`'s een bronadvertentie), dus ontdubbelen op `ad_id` is genoeg.
Wie uit deze lijst een dagwaarde wil afleiden, moet ook naar de onderkant kijken. Bij het bouwen van de engine stond na sorteren op prijs oplopend de eerste pagina vol auto's van 250 euro met 360.000 km op de teller. Zo staan ze op Gaspedaal en zo geeft de API ze terug; een gemiddelde zonder ondergrens komt daardoor te laag uit.
Meer documentatie in het Nederlands
Grenzen en eerlijke kanttekeningen
- Gaspedaal biedt deze API niet aan en heeft er niet aan meegewerkt; wij hebben geen afspraak met Gaspedaal of met de sites waar het aanbod vandaan komt.
- Bekend probleem: de echte advertentielink per bronsite (`source_url`) komt op dit moment niet door. Op 26 oktober 2026 bleef die in drie listing-aanroepen voor twee auto's leeg bij 0 van 5, 0 van 5 en 0 van 9 bronnen, terwijl de aanroep 7 tot 19 seconden duurde (een zoekopdracht nam 1,7 tot 2,2 seconden). De doorkliklink van Gaspedaal zelf (`click_out_url`) staat er wel altijd in. Zolang dit niet is opgelost, kun je bij listing `resolve_source_urls` op false zetten; dan worden die extra opvragingen overgeslagen.
- Een dagwaarde of taxatie berekent de API niet. Je krijgt vraagprijzen zoals verkopers ze plaatsen, inclusief symbolische prijzen zoals auto's van 250 euro.
- De naam van het autobedrijf ontbreekt vaak: in de Yaris-zoekopdracht bij 15 van de 17 auto's (`seller.name` null, op de site 'Onbekende dealer'). De plaats (`seller.city`) is er bijna altijd.
- `source_sites` is een steekproef van resultaatpagina's, geen volledige lijst van de partners van Gaspedaal; `sample_cars` zegt hoe groot die steekproef was.
- Het aanbod verandert snel. Neem een `ad_id` vers uit search: een advertentie die inmiddels weg is, geeft bij listing NOT_FOUND.
- search, listing en source_sites kosten 3 credits per aanroep (een volle pagina van 100 auto's is ruim 1 MB), brands en models 2.