Grid capacity API
A grid capacity API for Europe's operators
One schema for what transmission and distribution operators publish about grid capacity: per substation or zone, per direction and technology, with the method behind every value and the terms it may be used under.
Free plan, 250 requests a month, no card.
Every operator publishes capacity its own way
Interactive maps, spreadsheets, PDFs and open-data portals. Megawatts or megavolt-amperes. Per substation, per feeder, per postcode area. Refreshed daily, monthly, twice a year — or when a regulator asks. Comparing two operators is a project; keeping up with twenty is a job.
This API does that work once: it reads each publication on its own cadence, keeps every earlier version, and serves it in one model where the differences that matter — what a number counts, how it was computed, what it may be used for — are fields rather than footnotes.
What every record carries
- Direction (injection or offtake), technology where the operator distinguishes it, and what the figure counts: available, reserved, allocated, contracted, waitlisted or total.
- Firmness and any curtailment band, and the horizon: the situation now, or a target year.
- The value in the operator's own unit, with value_mw only where the operator published active power.
- The methodology, the operator's effective date and our retrieval time, the source URL and payload hash.
- The rights status, enforced: values an operator's terms do not clearly let us redistribute are listed with the value withheld.
Endpoints
| Method | Path | Returns |
|---|---|---|
| GET | /v1/capacity/search | The central query: every filter, cursor-paginated. |
| GET | /v1/capacity/nearby | Records around a point, sorted by distance. |
| GET | /v1/substations/{id}/capacity | Every current record for one asset. |
| GET | /v1/coverage | What is covered, per country. No key needed. |
| GET | /v1/changes | What changed since a cursor (Pro). |
Example
Request
curl "https://api.gridcapacityapi.com/v1/capacity/search?country=GB,NL&direction=offtake&availability_type=available&limit=20" \ -H "Authorization: Bearer gc_live_..."Two countries in one query. Their operators compute capacity differently, so the default best_effort mode returns both with a warning; comparability=strict refuses to mix them.
Response shapeplaceholder values — not a capacity claim
{
"data": [
{
"id": "cap_…",
"series_id": "cs_…",
"asset": {
"id": "sub_…",
"type": "substation",
"name": "…",
"slug": "…",
"country": "…",
"operator": {
"id": "op_…",
"slug": "…",
"name": "…",
"type": "DSO"
},
"network_level": "…",
"voltage_kv": 33,
"location": {
"type": "Point",
"coordinates": [
0,
0
],
"precision": "exact"
}
},
"direction": "injection",
"technology": "generic_generation",
"capacity": {
"type": "available",
"value": 0,
"unit": "MW",
"value_mw": 0,
"qualifier": null,
"status": null,
"status_label": null
},
"firmness": "firm",
"curtailment": null,
"horizon": {
"type": "snapshot",
"year": null,
"label": null
},
"methodology": {
"id": "…",
"comparability_class": "…",
"non_additive": true,
"binding": false
},
"freshness": {
"source_effective_at": "…",
"retrieved_at": "…",
"last_confirmed_at": "…",
"source_health": "healthy"
},
"provenance": {
"source_id": "…",
"source_url": "https://…",
"license": "…",
"rights_mode": "…"
},
"access": {
"status": "granted",
"attribution": "…"
},
"decision_context": {
"binding": false,
"formal_connection_study_required": true,
"source_indicative": true,
"statement": "The operator's latest published dataset reports … under methodology …."
}
}
],
"pagination": {
"has_more": true,
"next_cursor": "…",
"limit": 20
},
"meta": {
"request_id": "req_…",
"comparability": "best_effort",
"warnings": [
"…"
]
}
}What the API holds today
Read from the API as this page renders. A source is listed with its rights status, because a listed source is not always a served one.
| Country | Status | Sources served | Assets | Newest operator date |
|---|---|---|---|---|
| United Kingdom | Partial | 14 | 4,920 | 14 Aug 2026 |
| Netherlands | Partial | 3 | 1,245 | 13 Sep 2026 |
| Belgium | Live | 3 | 1,139 | 24 Sep 2026 |
| France | Live | 3 | 5,237 | 25 Aug 2026 |
| Spain | Partial | 0 | 16,467 | 9 Sep 2026 |
| Portugal | Partial | 0 | 461 | 11 Jul 2026 |
| Austria | Partial | 0 | 443 | 29 Jul 2026 |
| Denmark | Live | 1 | 160 | 1 Feb 2026 |
| Italy | Partial | 0 | 110 | 1 Sep 2026 |
| Switzerland | Live | 1 | 778 | — |
What people build with it
Site screening
Rank candidate sites for BESS, solar or data centres by published headroom in both directions before commissioning studies.
Grid-aware products
Show capacity context in GIS, origination and asset-management tools without maintaining a scraper per operator.
Research and advice
Cite a figure with its method and its file, and reproduce what the dataset said on the day you advised.
Questions
Is this data official?
Can figures from different operators be compared?
Is a published figure a connection offer?
Start building on grid-capacity data
A key in under a minute, on the Free plan.