Marktstammdatenregister (MaStR) Scraper – Solar, Wind & Storage
Pricing
from $0.04 / actor start
Marktstammdatenregister (MaStR) Scraper – Solar, Wind & Storage
Export solar parks, wind farms, battery storage and CHP plants from Germany's public Marktstammdatenregister: operator name, capacity in kW, commissioning date, full address, district, grid operator. 9.6 million registered units, filterable by source, state, power and age.
Pricing
from $0.04 / actor start
Rating
0.0
(0)
Developer
Perceptron Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
MaStR Energy Assets
Set filters, get one row per power unit from Germany's Marktstammdatenregister: operator, capacity in kW, commissioning date, address, grid operator. Solar, wind, storage and CHP; by default only units with a named operator – the register anonymises private persons.
Limits: no contact details – the register publishes operator names, not emails or phones. Coordinates are missing for many small units; private operators are anonymised by the register. A run with the default input stops after 100 units.

The Marktstammdatenregister (MaStR) is the Bundesnetzagentur's public register of power units in Germany – solar parks, wind farms, battery storage, CHP plants. 9.6 million registered units (12 Oct 2026). Filter them down to exactly the segment you sell into.
How to use – step by step
- Click Try for free on this page (a free Apify account is enough) – the form opens with solar units of 100 kW or more in all of Germany, 100 units.
- Choose the Energy source, the Federal state, Minimum gross power (kW) and Maximum gross power (kW), Commissioned after / Commissioned before and the Operating status.
- Keep Only units with a named operator on; switch it off only for statistics.
- Set Maximum units (default 100) and click Start. Five wind units of 5,000 kW or more (3,441 matches) took 3.5 seconds in a local test run on 12 October 2026.
- Open the Output tab: the Energy assets view shows operator, unit, energy source, capacity, place, commissioning date, grid operator, status and the register link. Export as CSV, Excel or JSON, or read the rows through the API. The free
COVERAGErecord says how many units matched and why the run stopped.
What you can ask for
| Question | Filter | Result |
|---|---|---|
| Solar parks in Bavaria over 750 kW built before 2012 (repowering leads) | solar · BY · min 750 kW · before 2012 | named operators, 15–20 year old plants |
| Every wind turbine of 2 MW or more in operation | wind · min 2,000 kW | 21,606 units |
| Commercial battery storage of 100 kW or more in operation | storage · min 100 kW | 2,139 units |
| New commercial PV since January (fresh installations) | solar · min 100 kW · after 2026-01-01 | this year's market |
| Everything a specific grid operator connects | any · filter the export by gridOperator | portfolio view |
What you get per unit
| Field | Example |
|---|---|
operatorName | Aquila SolarINVEST II GmbH & Co. KG |
unitName, mastrNumber | Solarpark Bergrheinfeld · SEE900... |
energySource, grossPowerKw, netPowerKw | Solare Strahlungsenergie · 2,239.08 kW |
commissionedOn, ageYears | 2010-12-30 · 15.6 |
status, shutDownOn | In Betrieb |
street, postalCode, city, municipality, district, federalState | full address |
latitude, longitude | where available, for mapping |
gridOperator, gridOperatorMastrNumber, voltageLevel | N-ERGIE Netz GmbH · SNB… · Mittelspannung |
gridOperatorCheck | checked or in progress — the grid operator's review of the entry |
usableStorageCapacityKwh, storageTechnology | battery storage: capacity in kWh, Batterie / Pumpspeicher |
turbineManufacturer, turbineModel, hubHeightM, rotorDiameterM, windLocation | wind: ENERCON GmbH · E-115 · 149.08 · 115.71 · Windenergie an Land |
parkName, eegMastrNumber, operatorPersonType | Windpark Kreuzstein · EEG… · organisation |
registeredOn, lastUpdated, registryUrl | provenance and a link to the entry in the register |
checkedAt, query, dataSource, dataLicense | when the register was asked, the effective filter, source and licence |
Values are passed on in the register's own wording (German), so they can be matched against the register itself.
Who buys this
- Solar and wind service companies — plants commissioned 15+ years ago are the repowering, module-replacement and O&M market, and every one of them has to be registered here
- Battery storage and PPA developers — find commercial sites with existing generation and grid connection
- Grid and energy consultants — asset inventories per district or grid operator
- Component suppliers — who operates what capacity, where
- Research and journalism — the energy transition in numbers, by municipality
- AI agents — clean schema, plain filters, callable via MCP
Data protection – what the register publishes
The Marktstammdatenregister anonymises private individuals at the source: their operator name is returned as "natürliche Person (…)", never as a real name. This actor keeps only units with a named operator by default.
Named operators are not always companies in the narrow sense, though: partnerships (GbR) and sole traders (e. K., "… Inh. …") are registered as organisations, and their trading names often contain a person's name (measured: 147 of the first 1,000 rows of the default filters). Treat those rows as personal data under GDPR.
Input example
{"energy_source": "solar","federal_state": "BY","min_power_kw": 750,"commissioned_before": "2012-01-01","status": "in_operation","only_named_operators": true,"max_items": 5000}
Output example
{"operatorName": "Aquila SolarINVEST II GmbH & Co. KG","unitName": "SOLAR 2 - BERGRHEINFELD","energySource": "Solare Strahlungsenergie","grossPowerKw": 2239.08,"commissionedOn": "2010-12-30","ageYears": 15.8,"status": "In Betrieb","city": "Bergrheinfeld","district": "Schweinfurt","federalState": "Bayern","gridOperator": "ÜZ Mainfranken eG (SNB929185184919)","gridOperatorMastrNumber": "SNB929185184919","gridOperatorCheck": "in progress","registryUrl": "https://www.marktstammdatenregister.de/MaStR/Einheit/Detail/IndexOeffentlich/1820884","checkedAt": "2026-10-12T12:58:54Z","query": "energy_source=solar; federal_state=BY; status=in_operation; gross power >= 750 kW; commissioned_before=2012-01-01; only named operators"}
Every row is checked against your filter
The register's endpoint has two silent failure modes, both measured: an invalid filter is answered with "success" and no data, and a filter field it does not recognise is silently ignored — the register then returns unfiltered rows. This actor therefore checks every row against your filter before delivering it and stops with an explanation instead of selling rows you did not ask for. Power limits are inclusive (100 kW keeps units of exactly 100 kW).
Every run also writes a free COVERAGE record to its key-value store: the
effective filter, how many units matched in the register, how many were
delivered or skipped (anonymised private operators), and why the run stopped —
all delivered, your maximum reached, your maximum cost per run reached, the
run timeout near, or the register not answering. The status message says the
same in one line; a run never claims more than it stored.
What does a run cost?
$0.04 per run start plus a price per unit that drops with your Apify plan:
| Your Apify plan | Per unit | 1,000 units | 10,000 units |
|---|---|---|---|
| Free | $0.004 | $4.04 | $40.04 |
| Starter | $0.003 | $3.04 | $30.04 |
| Scale | $0.0024 | $2.44 | $24.04 |
| Business & Enterprise | $0.002 | $2.04 | $20.04 |
A run with the default input stops after 100 units: $0.44 on the Free plan.
Raise max_items for a full export. You pay only for units actually delivered. Filters (min_power_kw, federal
state, commissioning date) keep large exports to the segment you need.
Why not just use the register's own website
The register's export is capped, its filter syntax is a grid dialect with
numeric German code lists (Energieträger~eq~'2495'), and dates come back as
/Date(1699999999999)/. This actor gives you plain filters, ISO dates, a
computed plant age, resolved code lists and one flat row per unit — plus
pagination past the point where the website stops.
Limitations – stated honestly
- Coordinates are not filled for every unit. The register carries them for larger installations far more often than for small ones.
- Private operators are anonymous. That is the register's decision, not a gap in
this actor — and
only_named_operators: falsereturns those rows if you want them for statistics. - Very broad queries are large: "all solar in Germany" is 6.57 million rows. Use
min_power_kwand a federal state to stay in a sensible range. Long exports stop cleanly before the run timeout and keep everything already delivered.
Source and licence
Data comes from the Marktstammdatenregister of the Bundesnetzagentur, the German federal network agency. The register's data is published under the Datenlizenz Deutschland – Namensnennung – Version 2.0 (dl-de/by-2-0), which permits commercial use, modification and redistribution with attribution.
Every exported record carries dataSource and dataLicense fields, so the
attribution travels with the data into your system. When you republish figures
derived from it, name the source: Marktstammdatenregister, Bundesnetzagentur,
dl-de/by-2-0.
Requests are paced so the register's website stays responsive for everyone else.
Changelog
- 12 October 2026 – The default run exports 100 units instead of 1,000 ($0.44 instead of $4.04 on the Free plan). Called through the API without a power filter, all sizes are returned; the 100 kW in the form is an example.
- 12 October 2026 – Every row is checked against your filter before it is delivered and carries
checkedAtand the effective filter (query); a freeCOVERAGErecord per run. New fields: storage capacity, wind turbine data, voltage level and the grid operator's check. At your cost limit or near the timeout the run stops cleanly and says how much it stored.
Auf Deutsch: Daten aus dem Marktstammdatenregister exportieren
Filter rein, je Anlage eine Zeile raus: Solarparks, Windenergieanlagen, Batteriespeicher und BHKW aus dem Marktstammdatenregister mit Betreiber, Leistung in kW, Inbetriebnahme, Anschrift und Netzbetreiber. Standardmäßig nur Anlagen mit benanntem Betreiber – Privatpersonen anonymisiert das Register selbst; Lizenz dl-de/by-2-0.
Im Einzelnen: Solarparks, Windenergieanlagen, Batteriespeicher, Biomasse-, Wasserkraft- und Gasanlagen aus dem Marktstammdatenregister (MaStR) der Bundesnetzagentur mit Betreiber, Brutto- und Nettoleistung in kW, Inbetriebnahmedatum und Anlagenalter, Status, Anschrift mit Gemeinde, Landkreis und Bundesland, Koordinaten (wo vorhanden) und Netzbetreiber.
Filter: Energieträger, Bundesland, Mindest- und Höchstleistung (jeweils einschließlich), Inbetriebnahme vor oder nach einem Datum, Betriebsstatus. Achtung: GbR und Einzelkaufleute stehen unter ihrem Firmennamen im Register, der oft den Namen einer Person enthält. Jede Zeile wird vor der Lieferung gegen den Filter geprüft und trägt Prüfzeitpunkt und Abfrage; neu sind Speicherkapazität (kWh), Windtechnik (Hersteller, Typ, Nabenhöhe, Rotordurchmesser), Spannungsebene und der Stand der Netzbetreiberprüfung.
Typische Anwendungsfälle: Repowering- und Wartungsmärkte (Anlagen älter als 15 Jahre), Speicher- und PPA-Projektentwicklung, Netz- und Energieberatung. Lizenz: Datenlizenz Deutschland – Namensnennung 2.0.
FAQ
What is the Marktstammdatenregister (MaStR)? The register of the Bundesnetzagentur in which every electricity generating unit in Germany must be registered — from utility-scale wind farms down to rooftop solar and home batteries.
Isn't there an official download? There is a full XML dump of several gigabytes and a SOAP web service that requires a registered account. This actor gives you filtered, flat, ready-to-use rows instead — no account, no XML parsing.
How current is the data? Live: every run queries the register at that moment. Operators must register new units shortly after commissioning, so new installations appear within weeks.
Do I get e-mail addresses or phone numbers of operators? No — the register does not publish contact details, only the operator's name and the unit's location. To enrich operators with company data, look up their websites and run them through the Imprint & VAT Check.
Why are private operators left out?
The register anonymises private individuals. Their rows carry no usable name,
so they are skipped by default; only_named_operators: false includes them for
statistics.
Can I use the data commercially? Yes. The licence (dl-de/by-2-0) allows commercial use with attribution, and every record carries the attribution fields with it.
Does it need a proxy or login? No. Requests are paced politely and need no proxy, cookies or account.
More from Perceptron Data
| Actor | What it does |
|---|---|
| Advertiser Check (Google & Bing) | Company list in, one row per company out: Google ads, Bing ads, ad counts, accounts |
| Imprint & VAT Check | Domains in, company rows out: legal name, address, register number and EU VAT ID checked against VIES (Swiss UIDs excluded) |
| Free Imprint & Contact Check | The same company row, free, for up to 10 websites per run |
| PDF to Markdown | PDF, Word, Excel and PowerPoint to Markdown for AI – tables as JSON, OCR for scans |
| Research Agent | A question in, cited passages out – every source graded by evidence level |
| App Store & Google Play Data | App IDs or App Store keywords in, one row per app out, plus App Store reviews |
| Arbeitsagentur Jobs | German job listings from the Jobbörse of the Bundesagentur für Arbeit |
| kununu Employer Data | Employer score vs. industry, salary ranges, benefits and reviews for DACH companies |
| Messe München Exhibitors | Exhibitor lists of bauma, IFAT, BAU and more |
| Koelnmesse Exhibitors | Exhibitor lists of Anuga, ISM, imm cologne and more |
| TED Tenders | EU public tenders and contract awards from TED |
| EUDAMED Medical Devices | EU medical devices, manufacturers and certificates |
| Data Source Finder | Free: tells you which ready-made scraper covers your data source |
Support
Bug reports are welcome in the Issues tab.