Danish Grid Capacity Map (Energinets Kapacitetskort)
Pricing
from $10.00 / 1,000 netstation resultats
Danish Grid Capacity Map (Energinets Kapacitetskort)
Available grid capacity per transformer station in Denmark from Energinet's official Kapacitetskort: consumption and production MW, 132/150 kV and 60/10 kV, nearest station to a coordinate, status, change signals, free country-wide summary. From $0.01/station (PPE).
Pricing
from $10.00 / 1,000 netstation resultats
Rating
0.0
(0)
Developer
Dennis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
Danish Grid Capacity Map (Energinets Kapacitetskort) 🇩🇰⚡
Check available grid capacity per transformer station in Denmark — for consumption and for production (solar, wind, batteries) — straight from the official national Kapacitetskort for elnettet published by Energinet (the Danish state-owned TSO) with Dansk Energi / Green Power Denmark.
Denmark's grid is under pressure: more than 60 GW of connection requests are queued against a realistic peak load in the order of 7 GW, and Energinet halted transmission grid reinforcement because there is no capacity to build it with. The Kapacitetskort shows, per substation, how much room is left for a new connection. That map lives in an ArcGIS viewer — find the station, zoom in, open a popup. This Actor does the same thing as one structured JSON extraction. It reads the public dataset behind the map, normalises it to one record per substation, and reports the distance from your project coordinate.
Who is this for?
- Renewable project developers (solar, wind, battery, Power-to-X) — screen which substations have room before committing to a site.
- Data centre and heavy industry developers — find where the next megawatts can physically sit.
- Municipalities, regions and grid planners — monthly monitoring of areas opening up or closing.
- Energy consultants and analysts — figures with a source and a date instead of a map screenshot.
- AI agents — structured JSON with a stable schema, Danish domain field names, and a free summary record. MCP-ready.
When should an AI agent use this?
- "Is there room on the Danish grid for a 15 MW battery near Aarhus?"
- "Which substations in Jutland still have spare production capacity for a solar farm?"
- "What is the closest substation to 56.1629, 10.2039 and how much capacity is left there?"
- "Which Danish substations lost available consumption capacity since last month?"
- "Find substations above 132 kV with more than 100 MW of headroom."
- "Summarise Danish grid capacity: how many stations are fully booked and how many have room?"
What this Actor does
- Reads three layers from Energinet's public ArcGIS Feature Service
Kapacitetskortet_V2: 298 rows in the transmission grid (132/150 kV,transmissionsnet), 963 rows in the distribution grid (60/10 kV,distributionsnet), and 186 rows in the "ledige felter" layer (station area Forbrug/Produktion, status Aktuel/Fremtidig). Merged per substation this gives 1,097 records — one per physical transformer station (see FAQ: the raw source has more rows). - Computes capacity status from one documented threshold rule: set
tilslutningskravMW(the connection size you are evaluating) and each station becomesopbrugt(exhausted),knap(tight),ledig(available) orukendt(unknown). - Separates the existing grid from the reinforced (planned) grid — the source publishes both figures for most 132/150 kV stations.
- Finds the nearest stations to a coordinate, sorted by haversine distance in kilometres, and auto-corrects swapped latitude/longitude when unambiguous.
- Flags changes since the previous run via a shared persistent key-value store, for scheduled monitoring when a station changes status.
- Delivers a free summary record covering the full, untruncated selection: counts, totals, the most and least congested stations, how much solar and wind is already connected, and a step-by-step filter trace so an empty result is never unexplained.
Scope and limitations
- No connection queue dates. The source holds available capacity, not a queue with expected connection dates. No date, no forecast.
- No priority category classification. Denmark's "akutplan for elnettet" with four priority categories is still a bill (lovforslag L 23, introduced 20 August 2026, in consultation). The Actor does not guess a category that is not final.
- No postcode geocoding. Provide a coordinate, a station code or a name. The open Danish address APIs (Dataforsyningen/DAWA) were unreachable without an account when checked on 29 September 2026, and a keyed service would make the Actor depend on an account on our side. The Actor works with zero setup instead.
- Capacity is not a connection. "ledig: 100 MW" means there is physically room at that station right now; an actual connection still depends on an agreement with the grid operator.
- Capacity status is a threshold rule, not a forecast. It depends only on
tilslutningskravMW.
Input
| Field | Type | Default | Description |
|---|---|---|---|
nettype | array | both | transmissionsnet (132/150 kV) or distributionsnet (60/10 kV) |
netstationer | array | all | Look up stations by code, e.g. MAL_150, FBY |
stationsnavnIndeholder | string | — | Free text on station name or code. Danish å/ø/æ search both ways: Aarhus finds Århus, Koebenhavn finds København |
breddegrad | number | — | Latitude (WGS84) — must be used together with længdegrad |
længdegrad | number | — | Longitude (WGS84) |
maksAfstandKm | number | 25 | Radius around the coordinate |
maksAntalNærmeste | number | 10 | How many nearest stations to return for a point query |
tilslutningskravMW | number | 20 | The connection size you evaluate against |
minLedigForbrugMW | number | — | Minimum available consumption capacity |
minLedigProduktionMW | number | — | Minimum available production capacity |
forbrugsstatus | array | all | opbrugt / knap / ledig / ukendt |
produktionsstatus | array | all | opbrugt / knap / ledig / ukendt |
netforstærkning | array | all | existing_grid (exists today) or reinforced_grid (planned grid only) |
minSpændingsniveauKV | number | — | E.g. 132 returns only 132/150 kV stations |
kunNyeEllerAendrede | boolean | false | Only new or changed stations (monitoring) |
maksAntal | number | 200 | Max records per run |
Value matching in nettype, forbrugsstatus, produktionsstatus and netforstærkning is case- and
whitespace-tolerant (TransmissionsNet, OPBRUGT); unknown values are rejected with a message
listing the valid ones.
Example — the 10 nearest stations to Aarhus with at least 20 MW available consumption capacity:
{"breddegrad": 56.1629,"længdegrad": 10.2039,"maksAfstandKm": 25,"maksAntalNærmeste": 10,"minLedigForbrugMW": 20}
Output
One record per substation (type: "netstation"), plus one summary (type: "resumé"). Field names
and values are in Danish — the terminology of the source and the market.
{"type": "netstation","netstation": "MAL_150","stationsnavn": "Malling","nettype": "transmissionsnet","spændingsniveauKV": 150,"ledigForbrugMW": 0,"forbrugsstatus": "opbrugt","ledigProduktionMW": 42,"produktionsstatus": "knap","ledigProduktionMWForstærketNet": 385,"netforstærkning": "existing_grid","solcelleandelPct": 4,"vindandelPct": 5,"afstandKm": 63.42,"breddegrad": 56.0483,"længdegrad": 10.1404,"nyStation": false,"ændretStation": true,"tidligereLedigForbrugMW": 20,"kildeDato": "2026-02-01T00:00:00.000Z","hentetTidspunkt": "2026-09-29T12:00:00.000Z","kildeUrl": "https://kapacitetskort.dk/"}
Existing grid versus reinforced grid. The source lists every 132/150 kV station twice: the grid
as it exists today, and after planned reinforcement. MAL_150 has 42 MW now and 385 MW in the
reinforced grid.
ledigForbrugMW/ledigProduktionMWalways carry the existing grid figure — what you can count on today. These drive the status calculation.netforstærkningsays which source row the figure came from.reinforced_gridmeans the station exists only in the planned grid, so the headline figure is an expectation — verify it before building a business case on it.ledigForbrugMWForstærketNet/ledigProduktionMWForstærketNetcarry the reinforced figure alongside.nullwhen there is no reinforced row, and alwaysnullfor distribution stations.
How to read forbrugsstatus and produktionsstatus (with tilslutningskravMW = 20):
| Available capacity | Status | Meaning |
|---|---|---|
| below 20 MW | opbrugt | Cannot host a connection of your size |
| 20 up to 100 MW | knap | Fits, but no room to expand |
| 100 MW or more | ledig | Room for five times your requirement |
| field missing in the source | ukendt | Never silently interpreted as 0 |
The boundary is 5 × tilslutningskravMW. Set it to 50 MW and the boundary moves to 250 MW — the
same applies to every status filter. The raw MW figure is always included so you can recompute.
The summary record (type: "resumé") is free and always covers the full, untruncated
selection — not just the records you receive. That is why a country-wide overview costs $2.01 by
setting maksAntal to 200. Key fields: totalNetstationer / antalLeveret,
antalTransmissionsnet / antalDistributionsnet, antalKunIForstærketNet,
forbrugsstatusOptælling / produktionsstatusOptælling, totalLedigForbrugMW /
totalLedigProduktionMW, antalMedSolcellerTilsluttet / totalTilsluttedeSolcellerMW (same for
wind), mestBelægnedeProduktionsstationer / mestLedigeForbrugsstationer /
mestLedigeProduktionsstationer, filtertrin, leveringsrekkefolge, koordinater /
koordinaterByttetOm, afkortet / antalFoerAfkortelse, foerespurgteRaekker / modtagneRaekker /
sammenlagteRaekker, kildeDato / hentetTidspunkt.
Delivery order. With a coordinate: ascending distance. Without coordinate or filters: descending available production capacity, then descending available consumption capacity, then station code — so a run with no input shows the most interesting stations first, not "AAA, AAB". The order is deterministic.
Use cases
- Site selection before due diligence — compare candidate areas on actual available capacity instead of a green/red colour on a map.
- Renewable projects — find stations where
minLedigProduktionMWexceeds your plant size, and readtilsluttedeSolcellerMW/tilsluttedeVindMWto see how packed a station already is. - Electrification of heavy industry — set
tilslutningskravMWto your real demand, e.g. 60 MW. - Data centre and Power-to-X screening — find transmission stations above 132 kV still
ledig. - Municipal and regional planning — run monthly with
kunNyeEllerAendrede: true.
Pricing
Pay per event (PPE), no subscription:
netstation-resultat— $0.01 per delivered substation record. Records that could not be written to the dataset are not charged.aendringssignal— $0.02 on top, when a station is new or changed since the previous run.apify-actor-start— Apify's standard start charge.- The summary is free, which is why a country-wide screening costs $2.01 for 200 records instead
of $10.97 for all 1,097: set
maksAntalor use filters and read the summary for the totals.
Legal and source
- Source: Energinet + Dansk Energi, Kapacitetskort for elnettet (kapacitetskort.dk), read via
the ArcGIS Feature Service
Kapacitetskortet_V2in Esri's public ArcGIS Online, publicly queryable without authentication. Nothing is cached beyond the run. - No personal data. Records describe transformer stations, voltage levels and megawatts — not applicants — so there is no data-processing obligation, unlike a connection queue with company names.
- Licence: the AGOL item specifies no
licenseInfoortermsOfUse. The data is publicly available without an explicit reuse licence, and the Actor does not resell it as its own.robots.txtof bothenerginet.dkandarcgis.compermits the endpoints used. - No advice. The Actor reproduces the latest official figures only; no investment, location or project advice, and no prediction of when capacity is released.
FAQ
Why does every 132/150 kV station say opbrugt? Because that is what the source says: available
consumption capacity in the transmission grid is 0 MW at all 298 transmission rows. Not an Actor
bug — the grid crisis in one number. Always check kildeDato.
I got 0 results. Why? Read filtertrin in the summary — it shows how many stations remained
after each filter. For {"nettype": ["transmissionsnet"], "minLedigForbrugMW": 500} it reads
1097 → nettype 160 → minLedigForbrugMW 0: there are 160 transmission stations and none has 500 MW
of consumption headroom (correct, theirs is 0 MW). Lower the threshold, or use
netforstærkning: ["reinforced_grid"] for the planned grid.
Only one coordinate is filled in — why an error instead of the whole country? Because you would receive 200 unrelated stations and pay for them. Coordinates come in pairs, and half an input is rejected with a clear message instead of guessing. A failed run is not charged.
I swapped latitude and longitude. Will the answer be wrong? Not when it is unambiguous: if the
order you supplied is invalid, or the swapped order is the only one inside the Danish latitude band,
the Actor corrects it and sets koordinaterByttetOm: true. If both readings are valid and neither
resembles Denmark, nothing is changed — a latitude of 10° is valid for a user in the tropics.
Why does stationsnavnIndeholder: "Aarhus" find "Århus"? The Actor folds å/ø/æ when comparing,
because Denmark uses both spellings. Station codes are not folded, so netstationer: ["MAL_150"]
must be spelled exactly as in the source.
Why are there 1,097 records when the source has 298 + 963 rows? The source has no single row per physical station:
-
Transmission grid (298 rows → 160 stations). Each station appears twice (existing + reinforced grid); the Actor delivers one record per station with both figures. 20 stations exist only in the reinforced grid, where
netforstærkningisreinforced_grid. -
Distribution grid (963 rows → 937 stations). 89 codes are used twice. 26 pairs are the same station listed twice under a different parent substation (same name, same coordinates) — merged, newest row wins. The other 63 are two different stations sharing an abbreviation:
HESis both "Hestlund" and "Herning sydvest",ØSTis both "Østerlars" and "Østergaarde". Both are kept, because the code alone does not identify the station.So
netstationer: ["HES"]can return two different stations — usestationsnavnIndeholderwhen the code alone is too vague. The number of merged rows is insammenlagteRaekker.
What is the difference between ledigForbrugMW and ledigForbrugVedTSOMedlMW? For distribution
stations the source gives the capacity without a TSO transformer (used for the status) and the
capacity when connected via a TSO transformer. Only the first counts for the status.
How often is the data updated? Energinet updates the map continuously. Each record carries
kildeDato; the run's hentetTidspunkt says when it was fetched.
Can I monitor my area? Yes: set filters (e.g. stationsnavnIndeholder: "Aarhus"), set
maksAntal high enough, and kunNyeEllerAendrede: true. The snapshot always covers the entire
filtered selection — including records maksAntal truncates. Note it is shared across all runs of
this Actor, so it suits monitoring the whole country or one bounded area, not comparing two filter
configurations.
Why is my first run charged? Because you get usable data from it, and a one-off run should not subsidise a monitoring user.
Ofte stillede spørgsmål (dansk)
Denne Actor læser Energinets officielle kapacitetskort for elnettet og gør det til strukturerede
data. Alle feltnavne og værdier i outputtet er på dansk, fordi det er kildens og markedets egne ord
(ledigForbrugMW, forbrugsstatus, transmissionsnet, reinforced_grid og så videre).
- Hvad får jeg? Én post pr. transformerstation i Danmark (1.097 i alt: 160 i transmissionsnettet
132/150 kV og 937 i distributionsnettet 60/10 kV) med ledig forbrugs- og produktionskapacitet i MW,
kapacitetsstatus (
opbrugt,knap,ledig), afstand til dit koordinat og ændringssignaler siden sidste kørsel. - Hvad koster det? $0,01 pr. leveret netstationspost og $0,02 oveni når en station er ny eller ændret. Resuméet er gratis og dækker altid hele det filtrerede udvalg — en landsdækkende screening kan derfor koste $2,01 for 200 poster i stedet for $10,97.
- Hvordan søger jeg? Skriv et stednavn (
Aarhusfinder ogsåÅrhus, fordi å/ø/æ foldes), en stationskode somMAL_150, eller et koordinat. Postnumre understøttes ikke. - Hvordan ser jeg, hvor der er plads? Sæt
minLedigProduktionMW(f.eks. 20 MW), eller læsmestLedigeProduktionsstationeri resuméet. - Hvorfor står der
opbrugtoveralt i transmissionsnettet? Fordi den ledige forbrugskapacitet dér er 0 MW på samtlige stationer i kilden. Det er netkrisen, ikke en fejl. - Hvad betyder
netforstærkning?existing_grider kapaciteten i det net, der findes i dag.reinforced_gridbetyder, at stationen kun findes i det planlagte net — potentiale, ikke virkelighed endnu.*ForstærketNet-felterne viser tallet ved siden af. - Hvorfor er der 1.097 poster, når kilden har 298 + 963 rækker? Fordi hver transmissionsstation
står to gange (eksisterende og forstærket net, slået sammen til én post), og fordi 63
distributionskoder deles af to forskellige stationer (f.eks.
HES= både Hestlund og Herning sydvest). Dem holdes adskilt på navn og koordinater. - Er der persondata? Nej. Kilden beskriver stationer, spændingsniveauer og MW — ikke ansøgere.
Related Actors
- NL Netcongestie Monitor — the same problem for the Dutch grid, per postcode/address/coordinate via the official Capaciteitskaart.
- UK Grid Capacity Tracker — the UK connection queue from NESO's TEC register.
Keywords
kapacitetskort, kapacitetskort for elnettet, netkapacitet, ledig kapacitet, ledig forbrugskapacitet, ledig produktionskapacitet, elnettet, transformerstation, netstation, tilslutning elnet, nettilslutning, nettilslutning Danmark, Energinet, Energinet data, Dansk Energi, Green Power Denmark, netforstærkning, forstærket net, distributionsnet, transmissionsnet, 132 kV, 150 kV, 60/10 kV, VE-anlæg, solcelleanlæg, solceller tilslutning, vindmøllepark, batterilager, batteri tilslutning, elproduktion, Power-to-X, datacenter Danmark, tung industri, elektrificering, kapacitetsstatus, flaskehals, netudbygning, ændringssignal, overvågning af elnettet, grid capacity Denmark, Denmark grid capacity, Danish grid capacity map, Energinet capacity map, Danish substation capacity, interconnection queue Denmark, grid congestion Denmark, energy permitting Denmark, transformer station Denmark, renewable energy siting Denmark, solar grid connection Denmark, wind farm grid connection Denmark.
Changelog
0.1.0
- First release. Reads Energinet's
Kapacitetskortet_V2(transmission grid, distribution grid and ledige felter), classifies capacity status, computes distance from a coordinate, detects changes since the previous run, and delivers a free summary. - The source's duplicate rows are handled explicitly: existing grid vs. reinforced grid for 132/150 kV stations, and code duplicates in the distribution grid are separated by name and coordinates, so no physical station disappears and no two stations merge.
- Unknown capacity values get status
ukendtinstead of being read as 0 MW. - The result is explicitly flagged as truncated when
maksAntalremoved records. - Free-text filters fold å/ø/æ, so
AarhusfindsÅrhusandKoebenhavnfindsKøbenhavn. - Swapped latitude/longitude are corrected automatically when unambiguous; unreadable coordinates produce a clear error instead of an empty list.
- The summary always covers the full, untruncated selection and includes
filtertrin, so it is always visible which filter made a result empty. - Without filters and coordinates the stations with the most available capacity are delivered first, instead of alphabetically — a run with no input is now a usable overview.
- Enum filter matching is case- and whitespace-tolerant; negative
maksAntal,maksAfstandKmandtilslutningskravMWare rejected instead of producing odd results.