Education API Reference
Ofsted inspection outcomes for state-funded schools in England.
Base URL: https://api.govdata.dev/v1
Search schools
Returns paginated latest-inspection records for school-search products, local-authority analysts, and education researchers. Find nearby primary schools for a postcode tool, filter schools inspected under the current report-card framework, or compare published judgements within a local authority.
/v1/education/schools
Waiting for request...
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
name |
string | No | — | Case-insensitive partial school-name match. |
postcode |
string | No | — | Full postcode; spacing and case are normalised. |
local_authority |
string | No | — | Case-insensitive partial local-authority match. |
phase |
string | No | — | Exact Ofsted phase, such as Primary, Secondary, or Special. |
judgement |
string | No | — | Matches any current report-card standard or legacy OEIF value (1–4). |
has_current_judgements |
boolean | No | — | true for post-November-2025 report-card records; false for legacy-only records. |
page |
integer | No | 1 | One-based result page. |
per_page |
integer | No | 25 | Results per page; minimum 1, maximum 100. |
curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://api.govdata.dev/v1/education/schools?postcode=NW3%202JB&phase=Primary&has_current_judgements=true&per_page=5"
uri = URI("https://api.govdata.dev/v1/education/schools") uri.query = URI.encode_www_form(postcode: "NW3 2JB", phase: "Primary", has_current_judgements: true, per_page: 5) req = Net::HTTP::Get.new(uri, "Authorization" => "Bearer YOUR_API_KEY") res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
response = requests.get( "https://api.govdata.dev/v1/education/schools", headers={"Authorization": "Bearer YOUR_API_KEY"}, params={"postcode": "NW3 2JB", "phase": "Primary", "has_current_judgements": True, "per_page": 5} )
const url = new URL("https://api.govdata.dev/v1/education/schools"); url.search = new URLSearchParams({ postcode: "NW3 2JB", phase: "Primary", has_current_judgements: "true", per_page: "5" }); const response = await fetch(url, { headers: { Authorization: "Bearer YOUR_API_KEY" } });
Response
{ "data": [{ "urn": "100025", "school_name": "Gospel Oak Primary School", "local_authority": "Camden", "postcode": "NW3 2JB", "phase": "Primary", "inspection_date": "2026-01-13", "publication_date": "2026-02-09", "current_judgements": { "category_of_concern": null, "safeguarding": "Met", "inclusion": "Strong standard", "curriculum_and_teaching": "Strong standard", "achievement": "Strong standard", "attendance_and_behaviour": "Expected standard", "personal_development_and_wellbeing": "Strong standard", "early_years": "Strong standard", "post_16": "Not applicable", "leadership_and_governance": "Strong standard" }, "legacy_oief_judgements": { "overall_effectiveness": null, "quality_of_education": null, "behaviour_and_attitudes": null, "personal_development": null, "leadership_and_management": null, "safeguarding_effective": null } }], "meta": { "api_version": "v1", "licence": "Open Government Licence v3.0", "source": "Ofsted", "source_url": "https://www.gov.uk/government/statistical-data-sets/monthly-management-information-ofsteds-school-inspections-outcomes" }, "pagination": { "total": 1, "page": 1, "per_page": 5, "total_pages": 1 } }
current_judgements contains the report-card standards used from 10 November 2025. legacy_oief_judgements preserves the older numeric OEIF scheme; null means that scheme did not supply a value, not a zero grade. URN 100025 is a real row in the bundled Ofsted development fixture.
Error responses
Search has no endpoint-specific 400, 404, or 422 branch. Unknown filters return an empty 200 response; boolean values use Rails boolean coercion.
Get school by URN
Returns the latest published inspection record for one school, addressed by its stable Unique Reference Number. Use it for a school profile page or to refresh Ofsted fields already linked to a school in your own system.
/v1/education/schools/:urn
Waiting for request...
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
urn |
string | Yes | — | Department for Education Unique Reference Number. |
curl -H "Authorization: Bearer YOUR_API_KEY" "https://api.govdata.dev/v1/education/schools/100025"
uri = URI("https://api.govdata.dev/v1/education/schools/100025") req = Net::HTTP::Get.new(uri, "Authorization" => "Bearer YOUR_API_KEY") res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
response = requests.get("https://api.govdata.dev/v1/education/schools/100025", headers={"Authorization": "Bearer YOUR_API_KEY"})
const response = await fetch("https://api.govdata.dev/v1/education/schools/100025", { headers: { Authorization: "Bearer YOUR_API_KEY" } });
Response
{ "data": { "urn": "100025", "school_name": "Gospel Oak Primary School", "local_authority": "Camden", "postcode": "NW3 2JB", "phase": "Primary", "inspection_date": "2026-01-13", "publication_date": "2026-02-09", "current_judgements": { "category_of_concern": null, "safeguarding": "Met", "inclusion": "Strong standard", "curriculum_and_teaching": "Strong standard", "achievement": "Strong standard", "attendance_and_behaviour": "Expected standard", "personal_development_and_wellbeing": "Strong standard", "early_years": "Strong standard", "post_16": "Not applicable", "leadership_and_governance": "Strong standard" }, "legacy_oief_judgements": { "overall_effectiveness": null, "quality_of_education": null, "behaviour_and_attitudes": null, "personal_development": null, "leadership_and_management": null, "safeguarding_effective": null } }, "meta": { "api_version": "v1", "licence": "Open Government Licence v3.0", "source": "Ofsted", "source_url": "https://www.gov.uk/government/statistical-data-sets/monthly-management-information-ofsteds-school-inspections-outcomes" } }
This is the same complete school object returned in search, without pagination.
Error responses
404 — the URN is not present. There are no endpoint-specific 400 or 422 branches.
{"error":{"code":"not_found","message":"Resource not found","documentation_url":"https://docs.govdata.dev/errors/not_found"}}
Data notes
Coverage and cadence: Ofsted-inspected state-funded schools in England only. GovData refreshes from Ofsted's monthly management-information release; it is not a live inspection feed and excludes Scotland, Wales, and Northern Ireland.
Legacy-OEIF dates: inspection_date and publication_date are null for 19,960 of 21,957 records (91%). The populated dates in the examples are the exception.
Licence and attribution: source Ofsted monthly management information, reused under the Open Government Licence v3.0. Attribute Ofsted and link to the source release.
Ofsted replaced the single overall-effectiveness judgement with report-card standards for inspections from 10 November 2025. Current text standards and legacy OEIF grades (1 outstanding, 2 good, 3 requires improvement, 4 inadequate) are separate schemes; do not combine or rank them as one scale.
Each row is the latest full inspection published in the source, not a complete inspection history. Publication can lag inspection, fields can be null or Not applicable, and academy conversion or school closure can change identifiers and coverage.