Skip to content
GridCapacityAPI.com

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

MethodPathReturns
GET/v1/capacity/searchThe central query: every filter, cursor-paginated.
GET/v1/capacity/nearbyRecords around a point, sorted by distance.
GET/v1/substations/{id}/capacityEvery current record for one asset.
GET/v1/coverageWhat is covered, per country. No key needed.
GET/v1/changesWhat 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": [
      "…"
    ]
  }
}

Run it against the live API →

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.

Countries the API serves
CountryStatusSources servedAssetsNewest operator date
United KingdomPartial144,92014 Aug 2026
NetherlandsPartial31,24513 Sep 2026
BelgiumLive31,13924 Sep 2026
FranceLive35,23725 Aug 2026
SpainPartial016,4679 Sep 2026
PortugalPartial046111 Jul 2026
AustriaPartial044329 Jul 2026
DenmarkLive11601 Feb 2026
ItalyPartial01101 Sep 2026
SwitzerlandLive1778—

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?
The figures are the operators' own, as published. This service is independent of every operator; it reads, normalises and traces their publications, and says so on every record.
Can figures from different operators be compared?
Only when their methodologies share a comparability class. Ask for comparability=strict and the API refuses a mix, listing the classes it found, rather than letting two different numbers look like one.
Is a published figure a connection offer?
No. Operators state that their figures are indicative; every record carries decision_context with formal_connection_study_required: true.

Start building on grid-capacity data

A key in under a minute, on the Free plan.

Get API access