edi-energy.de scraper
The Python package edi_energy_scraper provides easy to use methods to mirror the free documents on bdew-mako.de.
Rationale / Why?
If you'd like to be informed about new regulations or data formats being published on bdew-mako.de you can either
- visit the site every day and hope that you see the changes if this is your favourite hobby,
- or automate the task.
This repository helps you with the latter. It allows you to create an up-to-date copy of edi-energy.de on your local
computer. Other than if you mirrored the files using wget or curl, you'll get a clean and intuitive directory
structure.
From there you can e.g. commit the files into a VCS (like e.g. our edi_energy_mirror), scrape the PDF/Word files for later use...
We're all hoping for the day of true digitization on which this repository will become obsolete.
See also
There is a similar project in C# by Fabian Wetzel: fabsenet/edi-energy-extracto.
Other than this project, it stores the downloaded data in a database instead of a file system.
It also works with bdew-mako.de.
How to use the Package (as a user)
Install via pip:
pip install edi_energy_scraper
Create a directory in which you'd like to save the mirrored data:
mkdir edi_energy_de
Then import it and start the download:
import asyncio
from edi_energy_scraper import EdiEnergyScraper
# add the following lines to enable debug logging to stdout (CLI)
# import logging
# import sys
# logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
async def mirror():
scraper = EdiEnergyScraper(path_to_mirror_directory="edi_energy_de")
await scraper.mirror()
if __name__ == "__main__":
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
asyncio.run(mirror())
This creates a directory structure:
-|-your_script_cwd.py
|-edi_energy_de
|- FV2310 (contains files valid since 2023-10-01)
|- ahb.pdf
|- ahb.docx
|- ...
|- FV2404 (contains files valid since 2024-04-03)
|- mig.pdf
|- mig.docx
|- ...
|- FV2504 (contains files valid since 2025-06-06)
|- allgemeine_festlegungen.pdf
|- schema.xsd
|- ...
## BDEW Anwendungshilfen / Aktivitätsdiagramme
Some documents (e.g. the BDEW-Anwendungshilfe **Aktivitätsdiagramme** for GPKE, WiM Strom, MPES
and MaBiS) are **not** part of the bdew-mako.de document API — they are published as plain
PDF/DOCX links on bdew.de service pages. `BdewAnwendungshilfenScraper` mirrors those: give it
one or more seed page URLs and it downloads every linked PDF/DOCX into a target directory,
keeping the original filenames.
`AKTIVITAETSDIAGRAMME_SEED_URLS` is a ready-made list of the current public pages (steady-state
GPKE/WiM/MPES/MaBiS **and** the 24h-supplier-switch / ZSG variant, LFW24). The superseded 2020
page and the login-walled Gas document (GeLi Gas 2.0, only reachable behind *BDEW
Authentifizierung*) are intentionally excluded.
```python
import asyncio
from edi_energy_scraper import AKTIVITAETSDIAGRAMME_SEED_URLS, BdewAnwendungshilfenScraper
async def mirror_anwendungshilfen():
scraper = BdewAnwendungshilfenScraper()
try:
await scraper.download_from_seeds(
list(AKTIVITAETSDIAGRAMME_SEED_URLS), target_directory="aktivitaetsdiagramme"
)
finally:
await scraper.close()
asyncio.run(mirror_anwendungshilfen())
How to use this Repository on Your Machine (for development)
This repository uses uv for dependency management and development tooling. Install uv, then set up the development environment with:
uv sync --group dev
You can run the individual checks via the corresponding dependency groups, e.g.:
uv run --group tests pytest
uv run --group linting ruff check .
uv run --group type_check mypy --show-error-codes --strict src/edi_energy_scraper
uv run --group linting ruff format --check .
For general conventions, please also follow the instructions in our Python Template Repository.
Contribute
You are very welcome to contribute to this template repository by opening a pull request against the main branch.
Release files for edi-energy-scraper 2.6.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| edi_energy_scraper-2.6.2.tar.gz | 145.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| edi_energy_scraper-2.6.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 168.1 kB
Release files / edi_energy_scraper-2.6.2.tar.gz
| Download URL | edi_energy_scraper-2.6.2.tar.gz |
|---|---|
| Size | 145.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
11f38ea80551c7282d805d430a137e500885bc89511c99b117de464d3ddf7ef5
|
|
BLAKE2b-256 checksum How to use checksums |
986b9a47df10bcc30ae0dcb22f3a38e030cb56b77f205518756c42a356eddefd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / edi_energy_scraper-2.6.2-py3-none-any.whl
| Download URL | edi_energy_scraper-2.6.2-py3-none-any.whl |
|---|---|
| Size | 22.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aca3f61f718ab57a980d4a8237cc55bee481ded57ac8cae0ab8d0350846457d9
|
|
BLAKE2b-256 checksum How to use checksums |
bf30511d806a4b2ced3e7ceaf34c82388017a96a0dd43c42089042f2b0bb657b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency log