OpenWide Developer API

A public, read-only API and MCP server for real-time UK dental appointment availability. No authentication. Built for AI assistants, researchers, and journalists.

Every clinic carries data_freshness (ISO 8601 UTC) and source (direct_api = live PMS integration, public_endpoint = scraped public booking widget) so you can judge data quality. Slots are cached and may be up to ~5 minutes old. No patient data, clinic credentials, or internal ids are ever exposed. The API is read-only — booking is completed on OpenWide via each slot's book_url.

Endpoints

GET /availability

Clinics near a UK location with live availability, sorted by distance.

Params: postcode (required), radius_km (1–40, default 15), from/to (YYYY-MM-DD, window ≤ 30d), treatment (13 values), payment_type (nhs | private), limit (1–50, default 10), cursor.

curl "https://www.openwide.clinic/api/public/v1/availability?postcode=SW19&radius_km=10&treatment=check-up&payment_type=nhs&limit=5"

GET /clinics/{id}

Full profile + complete 14-day slot grid for one clinic ({id} = slug).

curl "https://www.openwide.clinic/api/public/v1/clinics/121-dental-practice"

GET /coverage

Which UK regions we hold data for, and how many clinics have live availability.

curl "https://www.openwide.clinic/api/public/v1/coverage"

GET /health

curl "https://www.openwide.clinic/api/public/v1/health"

Response shape

{
  "data": [
    {
      "clinic_id": "121-dental-practice",
      "name": "121 Dental Practice",
      "distance_km": 3.2,
      "payment_types": ["nhs", "private"],
      "accepting_new_patients": { "nhs_adults": true, "children": true },
      "next_available": "2026-07-29T09:30:00Z",
      "slot_count": 14,
      "slots": [
        { "start": "2026-07-29T09:30:00Z", "end": "2026-07-29T10:00:00Z",
          "book_url": "https://www.openwide.clinic/practices/121-dental-practice?start=..." }
      ],
      "clinic_url": "https://www.openwide.clinic/practices/121-dental-practice",
      "data_freshness": "2026-07-27T09:58:00Z",
      "source": "direct_api"
    }
  ],
  "pagination": { "next_cursor": null, "has_more": false },
  "meta": { "generated_at": "...", "coverage_note": "...", "license": "https://creativecommons.org/licenses/by/4.0/" }
}

MCP server

Point any MCP client at https://www.openwide.clinic/mcp (Streamable HTTP transport, no API key). Read-only tools: search_dentists and get_clinic. Discovery: /.well-known/mcp.json.

{
  "mcpServers": {
    "openwide": { "url": "https://www.openwide.clinic/mcp" }
  }
}

Discovery files