Data API v1
Read-only. JSON. Key required. See data licensing for how to request a key.
Authentication
Send your key in the X-GovReg-Key header on every request. An unknown or revoked key returns 401. Over your rate limit returns 429, with a message pointing back here.
curl -H "X-GovReg-Key: grk_..." "https://governanceregister.com/api/v1/search?q=oxfam&type=organisation"
Limits
Default: 1,000 records/day, 30 requests/minute per key. Set per key when a request is approved; higher limits available on request. No writes are possible through this API under any key.
Endpoints
GET /api/v1/search?q=&type=person|organisation
Free-text search. type is required. Returns up to 20 results.
{"query":"oxfam","type":"organisation","count":2,"results":[{"type":"charity","id":"202918","name":"OXFAM"}, ...]}
GET /api/v1/organisation/<type>/<id>
type is one of company, charity, school, public-body, nhs, council. id is that register's own id (company number, charity number, school URN, etc).
{"type":"charity","name":"OXFAM","id":"202918","status":"Registered", ...,"_source":"Charity Commission for England and Wales register, OGL v3.0","_retrieved_at":"2026-09-22T...","_licence":"..."}
GET /api/v1/organisation/<type>/<id>/board
Current and past board members with dates, where the source register carries them.
GET /api/v1/person/<id>
id is prefixed by source: trustee:, schoolgov:, pubappt:, councillor:, nhsboard: - the prefix used in search results and board listings.
GET /api/v1/person/<id>/roles
Every role for that person across sources we have resolved, including confirmed cross-sector board overlaps (a charity trustee also holding a directorship, matched via shared officer identity - never inferred from name alone).
GET /api/v1/connections?a=&b=&max_hops=3
a and b are type:id refs, e.g. a=charity:202918&b=company:07715319. Returns the shortest evidenced path, if one exists within max_hops (max 4). Currently covers UK charities, companies (confirmed board overlaps only) and academy trusts/schools; NHS, councils and public appointments are not yet wired into this endpoint - the response says so.
GET /api/v1/changes?since=YYYY-MM-DD
Not available in v1: per-record last-updated timestamps are not tracked consistently enough across every source register to answer this honestly. The endpoint returns 501 with an explanation rather than a misleading partial answer.
Provenance and licence
Every record-shaped response carries _source, _retrieved_at and _licence. See the licensing page for what each source licence requires and what we do not license.
Terms
Keys are issued for the stated purpose and organisation. No writes are possible. We may revoke a key that is abused, shared beyond its stated purpose, or used to attempt bulk re-identification of individuals. See general terms of use, which also apply.