API
What data can I get from Grid, and how?
Grid's API returns the figures shown on the dashboard as JSON. It is free, needs no account and allows 60 requests a minute per IP address. Data refreshes on the same schedule as the dashboard: hourly for electricity and physical gas, every 6 hours for oil and gas prices. Older endpoints keep working. New endpoints are under /api/v1.
Conventions
- Times are UTC, ISO 8601 (2026-10-14T09:30:00Z). Convert to UK local time (Europe/London) yourself.
- Every value carries its unit, interval, source, publication time and the time Grid fetched it.
- Missing data is null, never 0. A reported zero is 0.
- Forecasts carry forecast_issued_at. Revised values carry their revision.
- Results are paged with a cursor. Follow next_cursor until it is empty.
- An unsupported filter returns an error. It is never ignored.
- Scope is GB unless the endpoint says otherwise. Northern Ireland data is never mixed into GB results.
Endpoints
/api/v1/gas/overview
GET /api/v1/gas/overview
Summary for one gas day, with freshness and coverage for each part.
Query: gas_day, optional. A missing value reads the latest release.
Swipe for more columns
curl -s "https://grid.vahaah.com/api/v1/gas/overview?gas_day=2026-10-14"
/api/v1/gas/series
GET /api/v1/gas/series
History of one gas metric between two times.
Query: metric, from, to. All three are required. An unknown metric is rejected.
Swipe for more columns
curl -s "https://grid.vahaah.com/api/v1/gas/series?metric=gas.gb_nts.demand.actual_volume&from=2026-10-14T05:00:00Z&to=2026-10-15T05:00:00Z"
/api/v1/map/layers
GET /api/v1/map/layers
The map layers, with source, edition, coverage and attribution for each.
No query parameters.
Swipe for more columns
curl -s "https://grid.vahaah.com/api/v1/map/layers"
/api/v1/projects
GET /api/v1/projects
Projects matching the filters.
Query: display_stage, limit, offset. limit defaults to 100 and cannot exceed 500. offset defaults to 0.
Swipe for more columns
curl -s "https://grid.vahaah.com/api/v1/projects?limit=100&offset=0"
/api/v1/constraints
GET /api/v1/constraints
Published constraint activity. Only the breakdowns the source publishes.
Query: from, to, boundary. from and to are required inclusive settlement dates. boundary is optional.
Swipe for more columns
curl -s "https://grid.vahaah.com/api/v1/constraints?from=2026-10-01&to=2026-10-08"
/api/v1/identifiers
GET /api/v1/identifiers
Which organisation held a code on a given date.
Query: scheme, code, effective_on. Or search by name (2 to 80 characters).
Swipe for more columns
curl -s "https://grid.vahaah.com/api/v1/identifiers?scheme=MPID&code=ABCD&effective_on=2026-10-14"
/api/v1/identifiers/resolve
POST /api/v1/identifiers/resolve
Look up a batch of codes. Limited in size; submitted codes are not logged by default.
JSON body: effective_on and queries, each with scheme and code. At most 20 codes.
Swipe for more columns
curl -s -X POST "https://grid.vahaah.com/api/v1/identifiers/resolve" -H "content-type: application/json" -d '{"effective_on":"2026-10-14","queries":[{"scheme":"MPID","code":"ABCD"}]}'/api/v1/changes
GET /api/v1/changes
Changes found in published data, with evidence.
Query: entity_id, cursor. Follow next_cursor until it is empty. Only scope=GB is supported.
Swipe for more columns
curl -s "https://grid.vahaah.com/api/v1/changes"
/api/v1/data-health
GET /api/v1/data-health
When each source last published and when Grid last fetched it.
No required parameters. Readings are GB electricity and GB gas. Northern Ireland and other geographies are left out.
Swipe for more columns
curl -s "https://grid.vahaah.com/api/v1/data-health"
Errors
- 404 Unknown ID.
- 404 No results for these filters.
- 400 This scope is not supported.
- 503 The source is unavailable. The last published data is still returned where Grid holds it.
Licence
Data in API responses is subject to each source's licence, listed in sources on every response and on the Data sources page. Data sources