Voor ontwikkelaars en AI-agents
API en documentatie van Rijscholenvergelijken.nl
Alle gegevens van het platform zijn machinaal te lezen: officiële CBR-slagingspercentages, Google-beoordelingen, lesprijzen en rijbewijscategorieën van de rijscholen die op deze site staan. Gratis, alleen-lezen, zonder API-sleutel en zonder registratie. Dezelfde bron als de pagina's, dus nooit een ander cijfer dan de bezoeker ziet.
Quick start for agents (English)
Free tier: everything. No API key, no sign-up, no OAuth. The production API is read-only, so it is safe to use as a sandbox for testing. Base URL https://www.rijscholenvergelijken.nl.
- When to use: a user asks which driving school to choose in a Dutch city, wants CBR pass rates, Google review scores or lesson prices of driving schools in the Netherlands, or asks about CBR exam waiting times and national pass rates.
- Not for: booking lessons (contact the school directly via the profile page), schools outside the Netherlands, or theory-exam training data.
- Always cite together:
slagingspercentagewith itsslagingspercentageScope(which licence) andslagingspercentageExamens(number of first-attempt exams). A rate over 12 exams is weaker evidence than one over 200.
curl -sS "https://www.rijscholenvergelijken.nl/api/ai/search?city=amsterdam&license=B&limit=5"curl -sS -H "Accept: text/markdown" "https://www.rijscholenvergelijken.nl/rijschool/noord-holland/amsterdam"{
"mcpServers": {
"rijscholenvergelijken": { "url": "https://www.rijscholenvergelijken.nl/mcp" }
}
}npx rijscholenvergelijken zoek --stad amsterdam --rijbewijs BMachine-readable entry points: /llms.txt, /llms-full.txt, /api/ai/openapi.json, /.well-known/api-catalog (RFC 9727), /.well-known/mcp/server-card.json, /.well-known/ai-plugin.json, /sitemap.xml.
Endpoints
Alle endpoints geven JSON terug (UTF-8) en sturen CORS-headers. Er is geen authenticatie: geen API-sleutel, geen token, geen registratie. De volledige specificatie staat in de OpenAPI 3.1-beschrijving.
| Methode | Pad | Doel | Parameters |
|---|---|---|---|
| GET | /api/ai/search | Zoek rijscholen | q, city, province, type, license, limit (max 20), page |
| GET | /api/ai/categories | Rijbewijscategorieën met aantal rijscholen | geen |
| GET | /api/ai/cities | Steden met rijscholen, per provincie | province (optioneel) |
| GET | /api/markdown | Elke publieke pagina als Markdown | path (verplicht, begint met /) |
| GET | /api/ai/openapi.json | OpenAPI 3.1-specificatie | geen |
| POST | /mcp | MCP-server (Streamable HTTP, JSON-RPC 2.0) | initialize, tools/list, tools/call |
Voorbeelden
GET https://www.rijscholenvergelijken.nl/api/ai/search?city=rotterdam&license=B&limit=5GET https://www.rijscholenvergelijken.nl/api/ai/search?province=utrecht&type=MOTOR_RIJSCHOOL{
"results": [
{
"name": "…",
"slug": "…",
"url": "https://www.rijscholenvergelijken.nl/rijscholen/…",
"type": "AUTO_RIJSCHOOL",
"typeLabel": "Autorijschool",
"city": "Rotterdam",
"province": "Zuid-Holland",
"rating": 4.8,
"reviewCount": 132,
"slagingspercentage": 61.4,
"slagingspercentageScope": "rijbewijs B",
"slagingspercentageExamens": 148,
"slagingspercentageMaat": "eerste examens (eerste poging)"
}
],
"total": 214,
"page": 1,
"totalPages": 43
}De volgorde van de resultaten is de organische volgorde van de site zelf. Betaalde zichtbaarheid speelt daarin geen rol; zie hoe onze vergelijking werkt.
Velden en cijfers: zo citeer je ze goed
slagingspercentageis het percentage geslaagde eerste examens (eerste poging) in de meest recente CBR-meetperiode. Herexamens tellen niet mee, dus dit cijfer ligt lager dan cijfers waarin herkansingen zijn meegenomen.slagingspercentageScopezegt waarover het cijfer gaat: bijvoorbeeld "rijbewijs B", "motorrijbewijzen" of "alle rijbewijzen". Noem het altijd bij het percentage; een motorcijfer is geen autocijfer.slagingspercentageExamensis het aantal eerste examens waarop het percentage rust. Noem het erbij.ratingenreviewCountzijn de beoordelingen die op Google aan de bedrijfsvermelding van de rijschool staan. Wij passen ze niet aan en vullen ze niet aan.nullbetekent: geen koppeling of geen beoordelingen.- Een ontbrekend cijfer is
null, nooit 0. Een rijschool zonder CBR-cijfer is niet slechter; er zijn dan te weinig of geen eerste examens in de meetperiode geregistreerd. - Lesprijzen staan op de profielpagina (en dus in de Markdown-weergave) alleen als er bewijs voor is: opgegeven door de eigenaar of gelezen op de eigen website van de rijschool, met die herkomst erbij. Vergelijken gebeurt per les van 60 minuten.
Elke pagina als Markdown
Elke publieke pagina (rijschoolprofiel, stadspagina, rijbewijspagina, blogartikel) is als Markdown beschikbaar via inhoudsonderhandeling: stuur Accept: text/markdown naar de gewone URL. Het antwoord heeft Content-Type: text/markdown; charset=utf-8, Vary: Accept en YAML-frontmatter met titel, beschrijving en canonieke URL. De HTTP-status is die van de pagina: een onbekende URL geeft 404 met een Markdown-uitleg. Zonder Accept-header krijg je de gewone HTML.
curl -sS -i -H "Accept: text/markdown" "https://www.rijscholenvergelijken.nl/rijscholen/<slug>"
# of, voor clients zonder Accept-header:
curl -sS "https://www.rijscholenvergelijken.nl/api/markdown?path=/rijscholen/<slug>"De Markdown wordt gemaakt uit precies de HTML die de bezoeker ziet (alleen het hoofdinhoudsdeel, zonder navigatie en formulieren). Er is geen tweede tekstbron, dus de cijfers zijn per definitie gelijk aan de pagina.
MCP-server
De Model Context Protocol-server staat op https://www.rijscholenvergelijken.nl/mcp (transport: Streamable HTTP, JSON-RPC 2.0, stateless, geen authenticatie). Hij biedt alleen-lezen tools op dezelfde data als de API. De server card staat op /.well-known/mcp/server-card.json, het registry-manifest op /server.json.
| Tool | Doet |
|---|---|
| zoek_rijscholen | Zoek rijscholen op stad, provincie, schooltype, rijbewijs of zoekterm; zelfde velden als /api/ai/search. |
| rijbewijscategorieen | Alle rijbewijscategorieën met het aantal rijscholen per categorie. |
| steden_met_rijscholen | Steden met publiek zichtbare rijscholen, per provincie, met slug voor verdere zoekopdrachten. |
| pagina_als_markdown | De inhoud van een publieke pagina (rijschoolprofiel, stadspagina, blog) als Markdown. |
curl -sS -X POST "https://www.rijscholenvergelijken.nl/mcp" \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'CLI
Het npm-pakket rijscholenvergelijken is een dunne, afhankelijkheidsvrije opdrachtregeltool om de API te bevragen vanuit scripts en agents. Geen installatie nodig.
npx rijscholenvergelijken zoek --stad amsterdam --rijbewijs B --aantal 5
npx rijscholenvergelijken zoek --zoekterm "spoedcursus" --json
npx rijscholenvergelijken categorieen
npx rijscholenvergelijken steden --provincie utrecht
npx rijscholenvergelijken markdown /rijscholen/<slug>--json geeft het onbewerkte API-antwoord terug. De broncode staat in de map cli/ van het project.
Fouten
Elke fout is application/problem+json (RFC 9457) met een stabiele code waarop je kunt schakelen en een resolution die zegt wat je moet veranderen. Onbekende API-paden geven dezelfde vorm, nooit een HTML-pagina.
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json; charset=utf-8
{
"type": "https://www.rijscholenvergelijken.nl/developers#fouten-invalid-parameter",
"title": "Ongeldige parameter",
"status": 400,
"detail": "De parameter \"type\" heeft een ongeldige waarde: \"FOO\".",
"code": "invalid_parameter",
"resolution": "Kies een van: AUTO_RIJSCHOOL, MOTOR_RIJSCHOOL, …",
"instance": "/api/ai/search",
"parameter": "type"
}| code | Status | Betekenis |
|---|---|---|
| invalid_parameter | 400 | Een parameter heeft een ongeldige waarde. Het veld parameter zegt welke, resolution wat wél mag. |
| city_not_found | 404 | De stad-slug bestaat niet. Haal de slugs op met /api/ai/cities. |
| province_not_found | 404 | De provincie-slug bestaat niet. Haal de slugs op met /api/ai/cities. |
| endpoint_not_found | 404 | Het pad is geen endpoint van deze API. |
| method_not_allowed | 405 | De API is alleen-lezen: gebruik GET (de MCP-server gebruikt POST). |
| rate_limit_exceeded | 429 | Te veel verzoeken. Respecteer de Retry-After-header. |
| csrf_rejected | 403 | Een schrijvend verzoek zonder passende Origin-header. Voor de publieke API niet van toepassing: die is alleen-lezen. |
| internal_error | 500 | Interne fout. Probeer het na enkele seconden opnieuw. |
Limieten en caching
/api/ai/search: 60 verzoeken per minuut per IP;/api/ai/categoriesen/api/ai/cities: 30 per minuut.- Markdown-weergaven: 120 per 5 minuten per IP. Bij overschrijding: 429 met
Retry-After. - Antwoorden mogen 5 minuten (API) tot 15 minuten (Markdown) gecached worden; elke pagina draagt zelf een "Laatst bijgewerkt"-datum.
- Maximaal 20 resultaten per pagina; gebruik
pagevoor de volgende. Wil je alle rijscholen van een stad, loop dan de pagina's af of lees de stadspagina als Markdown. - Geen bulk-download van de hele database. Voor onderzoek of pers: neem contact op.
Bronnen, bronvermelding en voorwaarden
- Slagingspercentages komen uit de open data van het CBR (CBR opleiderresultaten, licentie CC BY 4.0). Wie deze cijfers hergebruikt, vermeldt het CBR als bron.
- Beoordelingen komen van Google; lesprijzen van de rijschool zelf (eigenaar of eigen website), met herkomst erbij.
- Noem bij hergebruik van platformgegevens Rijscholenvergelijken.nl als bron met een link naar de pagina. De gebruiksvoorwaarden en het correcties- en bronnenbeleid gelden ook voor machinaal gebruik.
- Fout gevonden in een cijfer of profiel? Mail info@rijscholenvergelijken.nl; wij corrigeren en vermelden dat op de pagina.
Laatst bijgewerkt op 17 september 2026