Par14a-Database – 754 Price Sheets, One SQLite File
What does my grid operator really charge a heat pump or wallbox under §14a EnWG? I dug through the price sheets of all 754 German distribution grid operators and turned them into one queryable database.

A heat pump, a wallbox and a home battery walk into a burrow. The grid operator says: "You three may be dimmed when the grid gets tight – and in return you pay less." Fair deal. The obvious follow-up question is how much less, and that is where the fun ends. Germany doesn't have one grid operator. It has 754 distribution system operators (DSOs), and each of them publishes its own price sheet – as a PDF, somewhere on its website, in its own layout, sometimes as a scanned image, sometimes behind a bot wall.
In the last post I dug for next week's power price. But for a heat pump or a wallbox, the energy price is only half the bill – the grid fee is often the bigger lever. And for §14a devices there are three different ways to pay it, plus time windows that change by quarter. Comparing that across operators by clicking through PDFs is a job for a very patient mole. I am not that mole. So I built a database instead.
§14a in One Paragraph
Since 1 January 2024, new controllable consumption devices (steuerbare Verbrauchseinrichtungen) – heat pumps, wallboxes, home batteries, larger air conditioners – fall under §14a of the German Energy Industry Act (EnWG). The grid operator may throttle them down to 4.2 kW when the local grid is congested. In exchange, the Federal Network Agency's determination BK8-22/010-A grants a reduced grid fee, in one of three flavours:
| Module | What you get | Catch |
|---|---|---|
| Module 1 | Fixed annual reduction in €/a on the household connection | – |
| Module 2 | 60 % off the energy part of the grid fee | Needs a separate meter for the device |
| Module 3 | Time-variable grid fee: high (HT), standard (ST) and low (NT) tariff stages | Only together with Module 1, needs a smart meter |
Modules 1 and 2 are simple numbers. Module 3 is where it gets interesting: every DSO picks its own HT and NT windows, its own prices within a corridor, and the quarters in which the whole thing is active at all.
What's in the Database
Par14a-Database collects, per DSO and year:
- the standard grid fee (low voltage, no power metering) as reference
- Module 1 reduction, Module 2 base and energy price
- Module 3 HT/ST/NT prices, the active quarters, and every single time window
- a link to the price sheet PDF, the page that links to it, the PDF's SHA-256 and the page number where the §14a section lives
- the smart meter rollout quota of the metering operator, from the Federal Network Agency's list
The master data – all 754 DSOs with name, BDEW code, address and voltage levels – comes from vnbdigital.de via my small vnbdigital-client.
At the time of writing:
| Year | Covered | Status |
|---|---|---|
| 2026 | 729 of 754 (97 %) | 714 final, 15 preliminary |
| 2027 | 489 of 754 (65 %) | almost all preliminary – the final sheets arrive around December |
The data lives as plain CSV in the repo, so every change is a reviewable diff. On each push, GitHub Actions builds one SQLite file per year and attaches it to a release (daten-2026, daten-2027), and a second workflow publishes a small static query page.
The Web Page
If you just want to know what your operator charges, there's no need to touch SQL. The query page lets you search by operator, postcode or town, switch the year, and toggle gross prices including 19 % VAT. The detail view shows all three modules, the Module 3 windows per quarter as a little timeline, and links straight to the source PDF.

Taking Hannover as an example: a heat pump using 4,000 kWh a year on Module 2 saves (8.54 − 3.42) ct × 4,000 kWh ≈ 205 € net per year on the grid fee – minus whatever the second meter costs. Module 1 would give a flat 131.28 €, and with Module 3 on top, every kWh the heat pump shifts into the night pays 0.86 instead of 8.54 ct. Which one wins depends on how much the device consumes and how flexible it is – but at least now you can do the maths without hunting for the PDF.
How to Read 754 PDFs Without Going Blind
Price sheets are made for humans with a printer, not for machines. There is no common format. Some list §14a on page 3, some on page 31. Some write "Modul 3", others "zeitvariables Netzentgelt", "Hochlasttarif", "Tarifstufe" or "Niedertarif". Some are scanned images. The pipeline is therefore deliberately semi-automatic:
- Crawl.
find_preisblatt.pystarts at the operator's stored grid-fee page (or its homepage), follows links containing words like Netzentgelte, Preisblatt or Veröffentlichungen breadth-first on the same host, downloads candidate PDFs and searches them for §14a content. Text, year, page numbers and hash land in a cache. - OCR where needed. Pages without a text layer go through
pdftoppmand Tesseract. - Propose.
vorschlag.pyhunts for the numbers – with a trick (see below). - Time windows.
fenster.pyheuristically extracts HT/NT windows and active quarters, and only marks them as safe if HT and NT were both found, don't overlap and the quarters were stated explicitly. - Look at it.
ausschnitt.pycuts the Module 3 section out of each proposed PDF and tiles several operators into one review image. A human (or a mole with glasses) checks it beforeuebernehmen.pywrites the values into the CSV.
The Trick: Module 1 Is a Formula
Finding "the right number" in a PDF full of tables is the hard part. Luckily, the regulator made Modules 1 and 2 depend on a single value: the standard energy price AP for low voltage without power metering.
Module 1 = 80 € gross (= 67.23 € net) + 3,750 kWh × AP × 20 %
= 67.23 € + 7.5 × AP[ct/kWh]
Module 2 = 40 % × AP
So vorschlag.py doesn't look for one number, it looks for a triple (AP, M1, M2) that satisfies both equations. A random table cell might look like a price; three numbers that fit the formula almost certainly are the price sheet. Module 3 prices are then searched inside the corridors the regulation allows: HT between AP and 2 × AP, NT between 10 % and 40 % of AP.

For 2026, 707 of 729 operators sit exactly on that line. The 22 that don't are exactly the sheets I look at twice.
The Bot Wall
The Energy Industry Act obliges grid operators to publish their grid fees on the internet. For about two dozen of them, "published" means: visible in a full browser that passes a JavaScript check, and HTTP 403 for everything else – including screen readers and download tools without JavaScript. Several of the big ones are on that list. I didn't try to work around it; those sheets were read manually in a browser, and the repo keeps a list of these access barriers with the type of block and whether it also happens from a private DSL line. Machine-readable publication obligations would be a nice idea for the next amendment.
A Few Things the Data Says
Now for the fun part – what comes out once 729 price sheets sit in one table. All prices net, 2026:
| min | average | max | |
|---|---|---|---|
| Standard energy price AP (ct/kWh) | 2.22 | 7.35 | 17.39 |
| Module 1 reduction (€/a) | 83.88 | 122.35 | 206.05 |
| Module 3 NT (ct/kWh) | 0.32 | 2.22 | 6.96 |
| Module 3 HT (ct/kWh) | 2.71 | 10.67 | 25.19 |
On average HT costs almost six times as much as NT – a spread of about 8.5 ct/kWh that a heat pump with a buffer tank or a car standing in the driveway overnight can actually use.
The more interesting question is when those stages apply. Here's every Module 3 window of Q1 2026, stacked across 676 operators:

- The night is cheap. From midnight to 6:00, up to nine out of ten operators are in NT.
- The evening is expensive. Between 17:00 and 19:00 almost everyone is in HT – that's when Germany cooks dinner and plugs in the car.
- Noon is contested. Up to 40 % of operators put an HT window around midday, while about one in ten already uses NT there to soak up solar peaks. In Q2, 69 operators have NT across 12:00–13:00.
- Quarters matter. 410 operators only activate Module 3 in Q1 and Q4, 259 run it all year. If you plan your heat pump around summer NT windows, check the quarters first.
Winter Is Coming – Module 3 Isn't (Everywhere)
For a heat pump, the winter quarters are the ones that count: Q1 (January to March) and Q4 (October to December) are when it actually runs. Most operators agree – but not all of them. In 2026:
| Module 3 in winter | Operators |
|---|---|
| Active in both Q1 and Q4 | 673 |
| Only in one of the two winter quarters | 17 |
| Summer only (Q2 and Q3), no winter at all | 31 |
| Quarters not stated on the price sheet | 8 |
So 45 operators have no time-variable grid fee from January to March, 34 have none from October to December, and 31 skip winter entirely. These aren't just tiny village utilities either: Bayernwerk Netz, Westfalen Weser Netz, Netze ODR and naturenergie netze are among the summer-only crowd. Their logic is the grid's, not the heat pump's – they use Module 3 to pull consumption into the solar midday hours, which only works when there's sun to pull from. The preliminary 2027 sheets look much the same: 19 of 489 operators are summer-only so far.
Which brings me to some advice from someone who has dug a few burrows. Before you choose where to dig yours, check what the local grid operator does in winter. Moles are careful about soil, drainage and how close the nearest earthworm colony is – but I've never met one who checked the §14a price sheet first, and that's a mistake. You can tunnel through clay, install a shiny heat pump with a buffer tank big enough to heat the whole underground, write a scheduler that knows every NT window to the quarter-hour – and then find out in November that your operator's Module 3 has gone into hibernation until April. Your heat pump will be awake all winter. The cheap tariff won't. Moving a burrow is a lot of digging; looking up an operator in the query page takes ten seconds.
From 2026 to 2027 (preliminary, 486 operators in both years), the standard energy price rises by only 0.17 ct/kWh on average – and 180 operators actually get cheaper.
And the smart meter column: Module 3 requires one, so the rollout quota matters. As of 30 June 2026, 402 of 729 operators had reached the 20 % mandatory rollout target. If yours is not among them, Module 3 may stay theory for a while.
Query It Yourself
Grab a release and ask your own questions:
curl -LO https://github.com/the78mole/Par14a-Database/releases/download/daten-2026/par14a_2026.sqlite
Which operators offer NT across lunchtime in Q2, cheapest first?
SELECT v.name, z.von, z.bis, p.m3_nt_ct_kwh
FROM m3_zeitfenster z
JOIN vnb v USING (vnb_id)
JOIN preisblatt p USING (vnb_id, jahr)
WHERE z.quartal = 2
AND z.stufe = 'NT'
AND z.von <= '12:00' AND z.bis >= '13:00'
ORDER BY p.m3_nt_ct_kwh
LIMIT 5;
Stadtwerke Neumarkt i.d.OPf. Energie GmbH | 10:00 | 15:00 | 0.39
LEW Verteilnetz GmbH | 10:00 | 15:00 | 0.41
Markt Zellingen | 10:00 | 15:00 | 0.45
Bayernwerk Netz GmbH | 10:00 | 15:00 | 0.47
ÜZ Mainfranken eG | 12:00 | 14:00 | 0.54
The schema is in schema.sql: tables vnb, preisblatt, m3_zeitfenster (one row per quarter, stage and window) and rollout_quote. Column names are German, the numbers are not.
What's Next
- 2027 final sheets. Most 2027 entries are preliminary; the final versions should show up towards December, and the stored grid-fee page plus the PDF hash make it easy to spot what changed.
- The last 25 for 2026. Mostly small operators without a findable §14a sheet – the repo lists them with reasons.
- Feeding PredictionDB. With the time windows in a table, the grid fee becomes just another price curve that a battery or heat pump scheduler can optimise against.
Found a missing or newer price sheet? There's an issue form for that – the PDF, its download link and the page it's linked from are all I need.
Back into the tunnel. 754 operators, one table, and at least one fewer reason to open a PDF.
