Ga naar hoofdinhoudGa naar hoofdinhoud
Het vergelijkingsplatform voor rijscholen

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: slagingspercentage with its slagingspercentageScope (which licence) and slagingspercentageExamens (number of first-attempt exams). A rate over 12 exams is weaker evidence than one over 200.
Search (JSON)
curl -sS "https://www.rijscholenvergelijken.nl/api/ai/search?city=amsterdam&license=B&limit=5"
Any page as Markdown
curl -sS -H "Accept: text/markdown" "https://www.rijscholenvergelijken.nl/rijschool/noord-holland/amsterdam"
MCP client configuration (Streamable HTTP, no auth)
{
  "mcpServers": {
    "rijscholenvergelijken": { "url": "https://www.rijscholenvergelijken.nl/mcp" }
  }
}
CLI (npm)
npx rijscholenvergelijken zoek --stad amsterdam --rijbewijs B

Machine-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.

MethodePadDoelParameters
GET/api/ai/searchZoek rijscholenq, city, province, type, license, limit (max 20), page
GET/api/ai/categoriesRijbewijscategorieën met aantal rijscholengeen
GET/api/ai/citiesSteden met rijscholen, per provincieprovince (optioneel)
GET/api/markdownElke publieke pagina als Markdownpath (verplicht, begint met /)
GET/api/ai/openapi.jsonOpenAPI 3.1-specificatiegeen
POST/mcpMCP-server (Streamable HTTP, JSON-RPC 2.0)initialize, tools/list, tools/call

Voorbeelden

Rijscholen in Rotterdam met rijbewijs B, 5 per pagina
GET https://www.rijscholenvergelijken.nl/api/ai/search?city=rotterdam&license=B&limit=5
Motorrijscholen in Utrecht (provincie)
GET https://www.rijscholenvergelijken.nl/api/ai/search?province=utrecht&type=MOTOR_RIJSCHOOL
Antwoord (ingekort)
{
  "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

  • slagingspercentage is 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.
  • slagingspercentageScope zegt waarover het cijfer gaat: bijvoorbeeld "rijbewijs B", "motorrijbewijzen" of "alle rijbewijzen". Noem het altijd bij het percentage; een motorcijfer is geen autocijfer.
  • slagingspercentageExamens is het aantal eerste examens waarop het percentage rust. Noem het erbij.
  • rating en reviewCount zijn de beoordelingen die op Google aan de bedrijfsvermelding van de rijschool staan. Wij passen ze niet aan en vullen ze niet aan. null betekent: 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.

ToolDoet
zoek_rijscholenZoek rijscholen op stad, provincie, schooltype, rijbewijs of zoekterm; zelfde velden als /api/ai/search.
rijbewijscategorieenAlle rijbewijscategorieën met het aantal rijscholen per categorie.
steden_met_rijscholenSteden met publiek zichtbare rijscholen, per provincie, met slug voor verdere zoekopdrachten.
pagina_als_markdownDe inhoud van een publieke pagina (rijschoolprofiel, stadspagina, blog) als Markdown.
Handmatig testen
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.

Voorbeeld: GET /api/ai/search?type=FOO
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"
}
codeStatusBetekenis
invalid_parameter400Een parameter heeft een ongeldige waarde. Het veld parameter zegt welke, resolution wat wél mag.
city_not_found404De stad-slug bestaat niet. Haal de slugs op met /api/ai/cities.
province_not_found404De provincie-slug bestaat niet. Haal de slugs op met /api/ai/cities.
endpoint_not_found404Het pad is geen endpoint van deze API.
method_not_allowed405De API is alleen-lezen: gebruik GET (de MCP-server gebruikt POST).
rate_limit_exceeded429Te veel verzoeken. Respecteer de Retry-After-header.
csrf_rejected403Een schrijvend verzoek zonder passende Origin-header. Voor de publieke API niet van toepassing: die is alleen-lezen.
internal_error500Interne fout. Probeer het na enkele seconden opnieuw.

Limieten en caching

  • /api/ai/search: 60 verzoeken per minuut per IP; /api/ai/categories en /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 page voor 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