Ask the GP Access Research Data

Natural-language querying of practice-level open data on GP appointment access in England (6,007 practices; monthly panel Mar 2023–May 2026; GP Patient Survey 2025 and 2026 waves). Your question is turned into SQL by a language model, the SQL is always shown, and the query itself runs entirely in your browser with DuckDB-WASM. Your question — and, for the written answer, the SQL and a small sample of the (public) results — is sent to the language model chosen in settings; nothing else leaves the page. Details: about, privacy and terms. Methods, data dictionary and build code: GitHub.

What data is behind this? What can I ask?

~6,000 English GP practices, in two tables:

Monthly trends, March 2023 – May 2026 — appointment volumes, same-day vs booked-ahead mix, waiting bands, and online consultation use, for every practice, every month.

A practice profile snapshot — staffing, population, patient experience, quality and prescribing measures. These are anchored to the year ending March 2025, because the patient survey they centre on was fielded in early 2025; the matching appointment measures cover the same year so that like is compared with like. The July 2026 patient-survey wave (fieldwork Jan–Mar 2026) is included as _2026 columns — including, for the first time, the share of patients told to contact their practice again another day. Survey results back to 2012 and registered list sizes back to 2013 are included for every practice — including around 2,300 that have since closed.

Built entirely from open data:

What the survey measures actually ask (GP Patient Survey 2025; full questionnaires at gp-patient.co.uk):

  • Satisfaction — "Overall, how would you describe your experience of your GP practice?" (% very/fairly good)
  • Continuity — "How often do you get to see or speak to your preferred healthcare professional when you ask to?" (% always/almost always or a lot of the time; asked only of patients with a preferred professional)
  • Experienced same-day access — "How long after you first contacted your GP practice did the appointment take place?" (% "on the same day")
  • Waited too long — "How do you feel about how long you waited for your appointment?" (% "it took too long")
  • Failed contact — a composite: "told to contact my practice again another day, as they couldn't help that day" + "I couldn't contact my practice" (from "did you know what the next step would be?")
  • A&E after failed contact — "What did you do when you couldn't contact your GP practice…?" (% "I went to A&E", among those whose contact failed)

Full build pipeline, data dictionary and derived files: GitHub.

Good questions look like: a place ("access in Brighton", "compare Cardiff Road Surgery with its PCN" — practices are named), a comparison ("deprived vs affluent", "rural vs urban", "big vs small"), a trend ("how have long waits changed since 2023?"), a relationship ("does phone consulting relate to antibiotic prescribing?"), or a findings question ("what predicts continuity?") which is answered from the research notes.

It can't see: individual patients or GPs (everything is practice-level), hospital data beyond the cancer measures, anything outside England, or events after May 2026.

Model settings (needed once — stored only in your browser)

Shared demo: free to use, rate-limited (20 questions/hour), and questions are logged to improve the tool, against a code that changes daily (made from your internet address, which is never stored) — so don't include personal details. Own key: Anthropic keys work directly from the browser; nothing is logged. Keys are kept in localStorage on your machine only. Local models: run ollama serve with OLLAMA_ORIGINS=*, pick OpenAI-compatible, model e.g. llama3.1, leave key blank.

You don't need to read or touch this — questions run automatically. It's shown so anyone can check exactly what was asked of the data, and edit and re-run it if they wish.

Loading DuckDB…
Read before interpreting: this is open, practice-level data — it describes practices, not patients, and shows associations, not causes. Survey measures come from the GP Patient Survey: weighted samples of roughly 100 responses per practice, so small differences between practices are within noise. The appointment data (GPAD) is official statistics in development, and practices record their appointments differently. Nothing here is a rating, ranking or endorsement of any practice. Fuller caveats and methods are on the project's GitHub page.

Published NHS data about GP practices — descriptive, not a rating or a league table. About this tool, privacy and terms.