Energy Market Data

Search energy installations in German registry (MaStR)

Search Marktstammdatenregister (MaStR) for energy installations.

'installationType' is required.

Parameter Details:

  • installationType: Installation type - "solar" (PV), "wind", "storage" (batteries), "biomass", "hydro", "combustion" (CHP, gas turbines), or "all" (aggregated across all supported types)
  • location: Unique municipality name, five-digit PLZ, or "PLZ Ort". Searches all known PLZ for a municipality. Explicit postleitzahl takes precedence. Ambiguous names and "Ort, Landkreis" require postleitzahl (HTTP 400).
  • operationalStatus: Operational status filter - Default: "35" (only active/in operation). Values: "31" (planned), "35" (in operation), "37" (temporarily decommissioned), "38" (permanently decommissioned), "all" (all statuses), or comma-separated list (e.g., "35,37")
  • limit: Max results (optional)
  • minCapacityKW: Minimum installed capacity in kW (e.g., 5 for small installations, 100 for commercial)
  • maxCapacityKW: Maximum installed capacity in kW
  • commissioningYear: Filter by year of grid connection (1900-2100)
  • gridOperatorId: MaStR Netzbetreiber-ID (SNB/GNB...), comma-separated (deprecated)
  • gridOperatorMastrId: MaStR Netzbetreiber-ID (SNB/GNB...), preferred
  • gridOperatorName: Full or partial operator name resolved via marketPartners; must identify one operator. Unresolved/ambiguous names return HTTP 400; explicit IDs take precedence.
  • gridOperatorBdewCode: BDEW code (resolved to MaStR Netzbetreiber)
  • includeNapData: Include NAP (Netzanschlusspunkt) data per installation (default: true). Uses a single $in query — no N+1; typically < 50 ms overhead for 1,000 results. ~48 % of older installations have no MeLo on record — napData is undefined for those. Set to false to skip enrichment for faster responses on large result sets.

NAP data fields (when present):

FieldDescription
napMastrNummerNAP identifier (SAN...)
messlokationMeLo-ID (DE000...) for billing and metering systems
spannungsebeneVoltage level code from MaStR
spannungsebeneLabelHuman-readable: Niederspannung (LV) / Mittelspannung (MV) / Hochspannung (HV) / Höchstspannung (EHV)
nettoengpassleistungNet transfer capacity at NAP in kW
netzMastrNummerGrid MaStR-ID (SNE...)
netzbetreiberMastrNummerGrid operator MaStR-ID (SNB...)

New fields on all installation objects: latitude, longitude (GPS coordinates), netzbetreiberpruefungStatus (grid operator verification status)

netzbetreiberpruefungStatus codeMeaning
2954Geprüft ✅ — confirmed by grid operator
2955In Prüfung ⏳ — review in progress
3075Nicht vorgesehen — no verification applicable
nullNot available for this record (older data)

Wind turbines: additionally typenbezeichnung (turbine model, e.g. "E-115"), hersteller (manufacturer, e.g. "Enercon") Storage systems: additionally batterietechnologie, acDcKoppelung, wechselrichterleistung, einsatzort

Use Cases:

  • Portfolio analysis and benchmarking
  • Site selection for new installations
  • Market research and competitor analysis
  • Grid planning (DSO/TSO)
  • Redispatch 2.0 eligible installations
  • Billing/metering system setup (MeLo lookup via napData)

MaStR Database: Official registry of all power plants, solar systems, wind turbines, and storage facilities in Germany maintained by Bundesnetzagentur.

post/api/energy-market/installations

Request

  • Base URL: https://api.cernion.de
  • URL: https://api.cernion.de/api/energy-market/installations
  • Auth: none declared

Query parameters

tokenstring

Optional Cernion MCP token as URL query parameter. If provided, it overrides CERNION_TOKEN for this request. Prefer Authorization Bearer header in production to reduce token exposure in URLs/logs.

Request body

installationType'solar' | 'wind' | 'storage' | 'biomass' | 'hydro' | 'combustion' | 'all' required

Type of energy installation

postleitzahlstring

Exact five-digit German postal code; overrides location. Keep leading zeros.

operationalStatusstring

31 planned, 35 active, 37 temporarily closed, 38 permanently closed; comma-separated or all.

locationstring

Unique municipality name, five-digit PLZ, or PLZ + place. Searches all municipality postal codes. District/region or ambiguous text requires explicit postleitzahl (400).

offsetinteger

Number of records to skip per installation type and postal code. For stable client pagination, use one type and an explicit postleitzahl. Example: offset=1000, limit=1000.

minCapacityKWnumber

Minimum capacity in kW

maxCapacityKWnumber

Maximum capacity in kW

commissioningYearinteger

Year of grid connection

gridOperatorIdstring

MaStR Netzbetreiber-ID (SNB/GNB...), comma-separated

gridOperatorMastrIdstring

MaStR Netzbetreiber-ID (SNB/GNB...), preferred

gridOperatorNamestring

Full or partial operator name; must resolve uniquely (otherwise 400). Prefer explicit gridOperatorMastrId or gridOperatorBdewCode, which override the name.

gridOperatorBdewCodestring

BDEW code (resolved to MaStR Netzbetreiber)

netzbetreiberPruefungStatusstring

Filter by grid operator verification status code(s), comma-separated. Values: 2954=Geprüft ✅, 2955=In Prüfung ⏳, 3075=Nicht vorgesehen. Example: "2955" or "2954,2955".

includeNapDataboolean

Include NAP data per installation (MeLo-ID, voltage level, grid operator MaStR-IDs). Default: true. Set to false to skip enrichment for faster responses on large result sets.

format'json' | 'csv' | 'xlsx' | 'xls'

Output format. "csv" and "xls"/"xlsx" trigger a file download.

tokenstring

Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.

Example request

{
  "installationType": "solar",
  "postleitzahl": "01067",
  "operationalStatus": "35,37",
  "location": "Heidelberg",
  "minCapacityKW": 5,
  "maxCapacityKW": 100,
  "commissioningYear": 2023,
  "gridOperatorId": "SNB935578300972",
  "gridOperatorMastrId": "SNB935578300972",
  "gridOperatorName": "Netze BW",
  "gridOperatorBdewCode": "9900992720003",
  "netzbetreiberPruefungStatus": "2955",
  "includeNapData": true
}

Response

Installation data retrieved

Changes

No recorded changes to this operation across all 2 revisions of this API.