[{"data":1,"prerenderedAt":935},["ShallowReactive",2],{"post-\u002Fblog\u002F2026\u002Fpar14a-database-grid-fees-for-heat-pumps-and-wallboxes":3},{"id":4,"title":5,"body":6,"categories":910,"date":914,"description":915,"extension":916,"image":917,"meta":918,"navigation":919,"path":920,"seo":921,"stem":922,"tags":923,"__hash__":934},"blog\u002Fblog\u002F2026\u002Fpar14a-database-grid-fees-for-heat-pumps-and-wallboxes.md","Par14a-Database – 754 Price Sheets, One SQLite File",{"type":7,"value":8,"toc":896},"minimark",[9,39,53,61,66,73,135,138,142,150,169,184,187,232,244,248,261,268,271,275,282,351,356,363,373,387,393,396,400,413,417,420,495,498,505,511,537,541,544,594,597,604,607,610,614,617,640,643,825,831,856,860,880,889,892],[10,11,13,14],"div",{"style":12},"display: flex; justify-content: flex-end; margin: 0 0 1rem;","\n  ",[15,16,23,24,23,35,13],"a",{"href":17,"target":18,"rel":19,"style":22},"https:\u002F\u002Fgithub.com\u002Fthe78mole\u002FPar14a-Database","_blank",[20,21],"noopener","noreferrer","display: inline-flex; align-items: center; gap: 0.4rem; text-decoration: none; color: inherit; font-size: 0.9rem; padding: 0.35rem 0.7rem; border: 1px solid #d0d7de; border-radius: 0.5rem;","\n    ",[25,26,31],"svg",{"height":27,"width":27,"viewBox":28,"fill":29,"ariaHidden":30},"18","0 0 16 16","currentColor","true",[32,33],"path",{"d":34},"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z",[36,37,38],"span",{},"the78mole\u002FPar14a-Database",[40,41,42,43,47,48,52],"p",{},"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 ",[44,45,46],"em",{},"how much"," less, and that is where the fun ends. Germany doesn't have one grid operator. It has ",[49,50,51],"strong",{},"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.",[40,54,55,56,60],{},"In the ",[15,57,59],{"href":58},"\u002Fblog\u002F2026\u002Fpredictiondb-forecasting-german-power-prices-from-free-weather","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.",[62,63,65],"h2",{"id":64},"_14a-in-one-paragraph","§14a in One Paragraph",[40,67,68,69,72],{},"Since 1 January 2024, new ",[44,70,71],{},"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\u002F010-A grants a reduced grid fee, in one of three flavours:",[74,75,76,92],"table",{},[77,78,79],"thead",{},[80,81,82,86,89],"tr",{},[83,84,85],"th",{},"Module",[83,87,88],{},"What you get",[83,90,91],{},"Catch",[93,94,95,109,122],"tbody",{},[80,96,97,103,106],{},[98,99,100],"td",{},[49,101,102],{},"Module 1",[98,104,105],{},"Fixed annual reduction in €\u002Fa on the household connection",[98,107,108],{},"–",[80,110,111,116,119],{},[98,112,113],{},[49,114,115],{},"Module 2",[98,117,118],{},"60 % off the energy part of the grid fee",[98,120,121],{},"Needs a separate meter for the device",[80,123,124,129,132],{},[98,125,126],{},[49,127,128],{},"Module 3",[98,130,131],{},"Time-variable grid fee: high (HT), standard (ST) and low (NT) tariff stages",[98,133,134],{},"Only together with Module 1, needs a smart meter",[40,136,137],{},"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.",[62,139,141],{"id":140},"whats-in-the-database","What's in the Database",[40,143,144,149],{},[15,145,148],{"href":17,"rel":146},[147],"nofollow","Par14a-Database"," collects, per DSO and year:",[151,152,153,157,160,163,166],"ul",{},[154,155,156],"li",{},"the standard grid fee (low voltage, no power metering) as reference",[154,158,159],{},"Module 1 reduction, Module 2 base and energy price",[154,161,162],{},"Module 3 HT\u002FST\u002FNT prices, the active quarters, and every single time window",[154,164,165],{},"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",[154,167,168],{},"the smart meter rollout quota of the metering operator, from the Federal Network Agency's list",[40,170,171,172,177,178,183],{},"The master data – all 754 DSOs with name, BDEW code, address and voltage levels – comes from ",[15,173,176],{"href":174,"rel":175},"https:\u002F\u002Fwww.vnbdigital.de",[147],"vnbdigital.de"," via my small ",[15,179,182],{"href":180,"rel":181},"https:\u002F\u002Fgithub.com\u002Fthe78mole\u002Fvnbdigital-client",[147],"vnbdigital-client",".",[40,185,186],{},"At the time of writing:",[74,188,189,202],{},[77,190,191],{},[80,192,193,196,199],{},[83,194,195],{},"Year",[83,197,198],{},"Covered",[83,200,201],{},"Status",[93,203,204,218],{},[80,205,206,209,215],{},[98,207,208],{},"2026",[98,210,211,214],{},[49,212,213],{},"729 of 754"," (97 %)",[98,216,217],{},"714 final, 15 preliminary",[80,219,220,223,229],{},[98,221,222],{},"2027",[98,224,225,228],{},[49,226,227],{},"489 of 754"," (65 %)",[98,230,231],{},"almost all preliminary – the final sheets arrive around December",[40,233,234,235,239,240,243],{},"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 (",[236,237,238],"code",{},"daten-2026",", ",[236,241,242],{},"daten-2027","), and a second workflow publishes a small static query page.",[62,245,247],{"id":246},"the-web-page","The Web Page",[40,249,250,251,254,255,260],{},"If you just want to know what ",[44,252,253],{},"your"," operator charges, there's no need to touch SQL. The ",[15,256,259],{"href":257,"rel":258},"https:\u002F\u002Fthe78mole.github.io\u002FPar14a-Database\u002F",[147],"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.",[40,262,263],{},[264,265],"img",{"alt":266,"src":267},"Detail view of the query page for enercity Netz GmbH 2026: standard grid fee, Module 1 reduction of 131.28 €\u002Fa, Module 2 at 3.42 ct\u002FkWh, Module 3 with HT 13.35, ST 8.54 and NT 0.86 ct\u002FkWh, plus HT and NT windows per quarter and the smart meter rollout quota","\u002Fimages\u002Fblog\u002F2026\u002F10\u002Fpar14a-web-detail.png",[40,269,270],{},"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.",[62,272,274],{"id":273},"how-to-read-754-pdfs-without-going-blind","How to Read 754 PDFs Without Going Blind",[40,276,277,278,281],{},"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 ",[44,279,280],{},"semi","-automatic:",[283,284,285,306,316,325,338],"ol",{},[154,286,287,290,291,294,295,239,298,301,302,305],{},[49,288,289],{},"Crawl."," ",[236,292,293],{},"find_preisblatt.py"," starts at the operator's stored grid-fee page (or its homepage), follows links containing words like ",[44,296,297],{},"Netzentgelte",[44,299,300],{},"Preisblatt"," or ",[44,303,304],{},"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.",[154,307,308,311,312,315],{},[49,309,310],{},"OCR where needed."," Pages without a text layer go through ",[236,313,314],{},"pdftoppm"," and Tesseract.",[154,317,318,290,321,324],{},[49,319,320],{},"Propose.",[236,322,323],{},"vorschlag.py"," hunts for the numbers – with a trick (see below).",[154,326,327,290,330,333,334,337],{},[49,328,329],{},"Time windows.",[236,331,332],{},"fenster.py"," heuristically extracts HT\u002FNT windows and active quarters, and only marks them as ",[44,335,336],{},"safe"," if HT and NT were both found, don't overlap and the quarters were stated explicitly.",[154,339,340,290,343,346,347,350],{},[49,341,342],{},"Look at it.",[236,344,345],{},"ausschnitt.py"," cuts 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 before ",[236,348,349],{},"uebernehmen.py"," writes the values into the CSV.",[352,353,355],"h3",{"id":354},"the-trick-module-1-is-a-formula","The Trick: Module 1 Is a Formula",[40,357,358,359,362],{},"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 ",[44,360,361],{},"AP"," for low voltage without power metering.",[364,365,371],"pre",{"className":366,"code":368,"language":369,"meta":370},[367],"language-text","Module 1 = 80 € gross (= 67.23 € net) + 3,750 kWh × AP × 20 %\n         = 67.23 € + 7.5 × AP[ct\u002FkWh]\n\nModule 2 = 40 % × AP\n","text","",[236,372,368],{"__ignoreMap":370},[40,374,375,376,378,379,382,383,386],{},"So ",[236,377,323],{}," doesn't look for one number, it looks for a ",[49,380,381],{},"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 ",[44,384,385],{},"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.",[40,388,389],{},[264,390],{"alt":391,"src":392},"Scatter plot of Module 1 reduction against standard energy price for 729 German grid operators in 2026: 707 points lie exactly on the line 67.23 € + 7.5 × AP, 22 lie off it","\u002Fimages\u002Fblog\u002F2026\u002F10\u002Fpar14a-module1-formula.png",[40,394,395],{},"For 2026, 707 of 729 operators sit exactly on that line. The 22 that don't are exactly the sheets I look at twice.",[352,397,399],{"id":398},"the-bot-wall","The Bot Wall",[40,401,402,403,406,407,412],{},"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 ",[236,404,405],{},"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 ",[15,408,411],{"href":409,"rel":410},"https:\u002F\u002Fgithub.com\u002Fthe78mole\u002FPar14a-Database\u002Fblob\u002Fmain\u002FZUGANGSBARRIEREN.md",[147],"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.",[62,414,416],{"id":415},"a-few-things-the-data-says","A Few Things the Data Says",[40,418,419],{},"Now for the fun part – what comes out once 729 price sheets sit in one table. All prices net, 2026:",[74,421,422,438],{},[77,423,424],{},[80,425,426,428,432,435],{},[83,427],{},[83,429,431],{"align":430},"right","min",[83,433,434],{"align":430},"average",[83,436,437],{"align":430},"max",[93,439,440,454,468,481],{},[80,441,442,445,448,451],{},[98,443,444],{},"Standard energy price AP (ct\u002FkWh)",[98,446,447],{"align":430},"2.22",[98,449,450],{"align":430},"7.35",[98,452,453],{"align":430},"17.39",[80,455,456,459,462,465],{},[98,457,458],{},"Module 1 reduction (€\u002Fa)",[98,460,461],{"align":430},"83.88",[98,463,464],{"align":430},"122.35",[98,466,467],{"align":430},"206.05",[80,469,470,473,476,478],{},[98,471,472],{},"Module 3 NT (ct\u002FkWh)",[98,474,475],{"align":430},"0.32",[98,477,447],{"align":430},[98,479,480],{"align":430},"6.96",[80,482,483,486,489,492],{},[98,484,485],{},"Module 3 HT (ct\u002FkWh)",[98,487,488],{"align":430},"2.71",[98,490,491],{"align":430},"10.67",[98,493,494],{"align":430},"25.19",[40,496,497],{},"On average HT costs almost six times as much as NT – a spread of about 8.5 ct\u002FkWh that a heat pump with a buffer tank or a car standing in the driveway overnight can actually use.",[40,499,500,501,504],{},"The more interesting question is ",[44,502,503],{},"when"," those stages apply. Here's every Module 3 window of Q1 2026, stacked across 676 operators:",[40,506,507],{},[264,508],{"alt":509,"src":510},"Stacked chart of the share of German grid operators applying NT, ST or HT for each quarter-hour of the day in Q1 2026: NT dominates from midnight to 6:00, HT peaks between 17:00 and 19:00 at almost 90 %, a smaller HT bump around noon, and roughly 10 % of operators have NT around midday","\u002Fimages\u002Fblog\u002F2026\u002F10\u002Fpar14a-module3-q1-2026.png",[151,512,513,519,525,531],{},[154,514,515,518],{},[49,516,517],{},"The night is cheap."," From midnight to 6:00, up to nine out of ten operators are in NT.",[154,520,521,524],{},[49,522,523],{},"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.",[154,526,527,530],{},[49,528,529],{},"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.",[154,532,533,536],{},[49,534,535],{},"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.",[352,538,540],{"id":539},"winter-is-coming-module-3-isnt-everywhere","Winter Is Coming – Module 3 Isn't (Everywhere)",[40,542,543],{},"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:",[74,545,546,556],{},[77,547,548],{},[80,549,550,553],{},[83,551,552],{},"Module 3 in winter",[83,554,555],{"align":430},"Operators",[93,557,558,566,574,586],{},[80,559,560,563],{},[98,561,562],{},"Active in both Q1 and Q4",[98,564,565],{"align":430},"673",[80,567,568,571],{},[98,569,570],{},"Only in one of the two winter quarters",[98,572,573],{"align":430},"17",[80,575,576,581],{},[98,577,578],{},[49,579,580],{},"Summer only (Q2 and Q3), no winter at all",[98,582,583],{"align":430},[49,584,585],{},"31",[80,587,588,591],{},[98,589,590],{},"Quarters not stated on the price sheet",[98,592,593],{"align":430},"8",[40,595,596],{},"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.",[40,598,599,600,603],{},"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 ",[15,601,259],{"href":257,"rel":602},[147]," takes ten seconds.",[40,605,606],{},"From 2026 to 2027 (preliminary, 486 operators in both years), the standard energy price rises by only 0.17 ct\u002FkWh on average – and 180 operators actually get cheaper.",[40,608,609],{},"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.",[62,611,613],{"id":612},"query-it-yourself","Query It Yourself",[40,615,616],{},"Grab a release and ask your own questions:",[364,618,622],{"className":619,"code":620,"language":621,"meta":370,"style":370},"language-bash shiki shiki-themes github-dark","curl -LO https:\u002F\u002Fgithub.com\u002Fthe78mole\u002FPar14a-Database\u002Freleases\u002Fdownload\u002Fdaten-2026\u002Fpar14a_2026.sqlite\n","bash",[236,623,624],{"__ignoreMap":370},[36,625,628,632,636],{"class":626,"line":627},"line",1,[36,629,631],{"class":630},"svObZ","curl",[36,633,635],{"class":634},"sDLfK"," -LO",[36,637,639],{"class":638},"sU2Wk"," https:\u002F\u002Fgithub.com\u002Fthe78mole\u002FPar14a-Database\u002Freleases\u002Fdownload\u002Fdaten-2026\u002Fpar14a_2026.sqlite\n",[40,641,642],{},"Which operators offer NT across lunchtime in Q2, cheapest first?",[364,644,648],{"className":645,"code":646,"language":647,"meta":370,"style":370},"language-sql shiki shiki-themes github-dark","SELECT v.name, z.von, z.bis, p.m3_nt_ct_kwh\nFROM m3_zeitfenster z\nJOIN vnb v USING (vnb_id)\nJOIN preisblatt p USING (vnb_id, jahr)\nWHERE z.quartal = 2\n  AND z.stufe = 'NT'\n  AND z.von \u003C= '12:00' AND z.bis >= '13:00'\nORDER BY p.m3_nt_ct_kwh\nLIMIT 5;\n","sql",[236,649,650,693,702,717,730,750,768,800,813],{"__ignoreMap":370},[36,651,652,656,659,662,665,667,670,672,675,677,679,681,684,686,688,690],{"class":626,"line":627},[36,653,655],{"class":654},"snl16","SELECT",[36,657,658],{"class":634}," v",[36,660,183],{"class":661},"s95oV",[36,663,664],{"class":634},"name",[36,666,239],{"class":661},[36,668,669],{"class":634},"z",[36,671,183],{"class":661},[36,673,674],{"class":634},"von",[36,676,239],{"class":661},[36,678,669],{"class":634},[36,680,183],{"class":661},[36,682,683],{"class":634},"bis",[36,685,239],{"class":661},[36,687,40],{"class":634},[36,689,183],{"class":661},[36,691,692],{"class":634},"m3_nt_ct_kwh\n",[36,694,696,699],{"class":626,"line":695},2,[36,697,698],{"class":654},"FROM",[36,700,701],{"class":661}," m3_zeitfenster z\n",[36,703,705,708,711,714],{"class":626,"line":704},3,[36,706,707],{"class":654},"JOIN",[36,709,710],{"class":661}," vnb v ",[36,712,713],{"class":654},"USING",[36,715,716],{"class":661}," (vnb_id)\n",[36,718,720,722,725,727],{"class":626,"line":719},4,[36,721,707],{"class":654},[36,723,724],{"class":661}," preisblatt p ",[36,726,713],{"class":654},[36,728,729],{"class":661}," (vnb_id, jahr)\n",[36,731,733,736,739,741,744,747],{"class":626,"line":732},5,[36,734,735],{"class":654},"WHERE",[36,737,738],{"class":634}," z",[36,740,183],{"class":661},[36,742,743],{"class":634},"quartal",[36,745,746],{"class":654}," =",[36,748,749],{"class":634}," 2\n",[36,751,753,756,758,760,763,765],{"class":626,"line":752},6,[36,754,755],{"class":654},"  AND",[36,757,738],{"class":634},[36,759,183],{"class":661},[36,761,762],{"class":634},"stufe",[36,764,746],{"class":654},[36,766,767],{"class":638}," 'NT'\n",[36,769,771,773,775,777,779,782,785,788,790,792,794,797],{"class":626,"line":770},7,[36,772,755],{"class":654},[36,774,738],{"class":634},[36,776,183],{"class":661},[36,778,674],{"class":634},[36,780,781],{"class":654}," \u003C=",[36,783,784],{"class":638}," '12:00'",[36,786,787],{"class":654}," AND",[36,789,738],{"class":634},[36,791,183],{"class":661},[36,793,683],{"class":634},[36,795,796],{"class":654}," >=",[36,798,799],{"class":638}," '13:00'\n",[36,801,803,806,809,811],{"class":626,"line":802},8,[36,804,805],{"class":654},"ORDER BY",[36,807,808],{"class":634}," p",[36,810,183],{"class":661},[36,812,692],{"class":634},[36,814,816,819,822],{"class":626,"line":815},9,[36,817,818],{"class":654},"LIMIT",[36,820,821],{"class":634}," 5",[36,823,824],{"class":661},";\n",[364,826,829],{"className":827,"code":828,"language":369,"meta":370},[367],"Stadtwerke Neumarkt i.d.OPf. Energie GmbH | 10:00 | 15:00 | 0.39\nLEW Verteilnetz GmbH                      | 10:00 | 15:00 | 0.41\nMarkt Zellingen                           | 10:00 | 15:00 | 0.45\nBayernwerk Netz GmbH                      | 10:00 | 15:00 | 0.47\nÜZ Mainfranken eG                         | 12:00 | 14:00 | 0.54\n",[236,830,828],{"__ignoreMap":370},[40,832,833,834,841,842,239,845,239,848,851,852,855],{},"The schema is in ",[15,835,838],{"href":836,"rel":837},"https:\u002F\u002Fgithub.com\u002Fthe78mole\u002FPar14a-Database\u002Fblob\u002Fmain\u002Fschema.sql",[147],[236,839,840],{},"schema.sql",": tables ",[236,843,844],{},"vnb",[236,846,847],{},"preisblatt",[236,849,850],{},"m3_zeitfenster"," (one row per quarter, stage and window) and ",[236,853,854],{},"rollout_quote",". Column names are German, the numbers are not.",[62,857,859],{"id":858},"whats-next","What's Next",[151,861,862,868,874],{},[154,863,864,867],{},[49,865,866],{},"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.",[154,869,870,873],{},[49,871,872],{},"The last 25 for 2026."," Mostly small operators without a findable §14a sheet – the repo lists them with reasons.",[154,875,876,879],{},[49,877,878],{},"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.",[40,881,882,883,888],{},"Found a missing or newer price sheet? There's an ",[15,884,887],{"href":885,"rel":886},"https:\u002F\u002Fgithub.com\u002Fthe78mole\u002FPar14a-Database\u002Fissues\u002Fnew?template=preisblatt.yml",[147],"issue form"," for that – the PDF, its download link and the page it's linked from are all I need.",[40,890,891],{},"Back into the tunnel. 754 operators, one table, and at least one fewer reason to open a PDF.",[893,894,895],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}",{"title":370,"searchDepth":695,"depth":695,"links":897},[898,899,900,901,905,908,909],{"id":64,"depth":695,"text":65},{"id":140,"depth":695,"text":141},{"id":246,"depth":695,"text":247},{"id":273,"depth":695,"text":274,"children":902},[903,904],{"id":354,"depth":704,"text":355},{"id":398,"depth":704,"text":399},{"id":415,"depth":695,"text":416,"children":906},[907],{"id":539,"depth":704,"text":540},{"id":612,"depth":695,"text":613},{"id":858,"depth":695,"text":859},[911,912,913],"Energy","Dev","Tools","2026-10-26","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.","md","\u002Fimages\u002Fblog\u002F2026\u002F10\u002Fpar14a-database-title.jpeg",{},true,"\u002Fblog\u002F2026\u002Fpar14a-database-grid-fees-for-heat-pumps-and-wallboxes",{"title":5,"description":915},"blog\u002F2026\u002Fpar14a-database-grid-fees-for-heat-pumps-and-wallboxes",[924,925,926,927,928,929,930,931,932,933],"par14a","enwg","grid-fees","heat-pump","wallbox","battery-storage","smart-meter","sqlite","web-scraping","open-data","y-ot9wrp-8jsCmvhQ-jJQiy4Fj8UcXtMzNaDuoJaB8c",1793099220023]