Skip to content

bundesAPI/deutschland

Repository files navigation

PyPI version deutschland GitHub license

Lint Publish Python 🐍 distributions 📦 to PyPI and TestPyPI Run Python 🐍 tests

Deutschland

A python package that gives you easy access to the most valuable datasets of Germany.

Installation

pip install deutschland

Supported Python Versions

3.8 - 3.12

Tested on Linux, MacOS and Windows

Run Python 🐍 tests

Development

For development poetry version >=1.2.0 is required.

Geographic data

Fetch information about streets, house numbers, building outlines, …

from deutschland.geo import Geo
geo = Geo()
# top_right and bottom_left coordinates
data = geo.fetch([52.530116236589244, 13.426532801586827],
                 [52.50876180448243, 13.359631043007212])
print(data.keys())
# dict_keys(['Adresse', 'Barrierenlinie', 'Bauwerksflaeche', 'Bauwerkslinie', 'Bauwerkspunkt', 'Besondere_Flaeche', 'Besondere_Linie', 'Besonderer_Punkt', 'Gebaeudeflaeche', 'Gebaeudepunkt', 'Gewaesserflaeche', 'Gewaesserlinie', 'Grenze_Linie', 'Historischer_Punkt', 'Siedlungsflaeche', 'Vegetationslinie', 'Verkehrsflaeche', 'Verkehrslinie', 'Verkehrspunkt', 'Hintergrund'])

print(data["Adresse"][0])
# {'geometry': {'type': 'Point', 'coordinates': (13.422642946243286, 52.51500157651358)}, 'properties': {'postleitzahl': '10179', 'ort': 'Berlin', 'ortsteil': 'Mitte', 'strasse': 'Holzmarktstraße', 'hausnummer': '55'}, 'id': 0, 'type': 'Feature'}

For the detailed documentation of this API see here

The data is provided by the AdV SmartMapping. The team consists of participants from the German state surveying offices, the Federal Agency for Cartography and Geodesy (BKG), the German Federal Armed Forces (Bundeswehr ZGeoBW) and third parties from research and education.

Company Data

Bundesanzeiger

Get financial reports for all german companies that are reporting to Bundesanzeiger. More

from deutschland.bundesanzeiger import Bundesanzeiger
ba = Bundesanzeiger()
# search term
data = ba.get_reports("Deutsche Bahn AG")
# returns a dictionary with all reports found as fulltext reports
print(data.keys())
# dict_keys(['Jahresabschluss zum Geschäftsjahr vom 01.01.2020 bis zum 31.12.2020', 'Konzernabschluss zum Geschäftsjahr vom 01.01.2020 bis zum 31.12.2020\nErgänzung der Veröffentlichung vom 04.06.2021',

Big thanks to Nico Duldhardt and Friedrich Eichenroth, who supported this implementation with their machine learning model.

Handelsregister

The code for the Handelsregister moved to this repo.

Consumer Protection Data

Lebensmittelwarnung

Get current product warnings provided by the german federal portal lebensmittelwarnung.de.

from deutschland.lebensmittelwarnung import Lebensmittelwarnung
lw = Lebensmittelwarnung()
# search by content type and region, see documetation for all available params
data = lw.get("lebensmittel", "berlin")
print(data)
# [{'id': 19601, 'guid': 'https://www.lebensmittelwarnung.de/bvl-lmw-de/detail/lebensmittel/19601', 'pubDate': 'Fri, 10 Feb 2017 12:28:45 +0000', 'imgSrc': 'https://www.lebensmittelwarnung.de/bvl-lmw-de/opensaga/attachment/979f8cd3-969e-4a6c-9a8e-4bdd61586cd4/data.jpg', 'title': 'Sidroga Bio Säuglings- und Kindertee', 'manufacturer': 'Lebensmittel', 'warning': 'Pyrrolizidinalkaloide', 'affectedStates': ['Baden-Württemberg', '...']}]

Federal Job Openings

NRW

VERENA

Get open substitute teaching positions in NRW from https://www.schulministerium.nrw.de/BiPo/Verena/angebote

from deutschland.verena import Verena
v = Verena()
data = v.get()
print(data)
# a full example data can be found at deutschland/verena/example.md
# [{ "school_id": "99999", "desc": "Eine Schule\nSchule der Sekundarstufe II\ndes Landkreis Schuling\n9999 Schulingen", "replacement_job_title": "Lehrkraft", "subjects": [ "Fach 1", "Fach 2" ], "comments": "Bemerkung zur Stelle: Testbemerkung", "duration": "01.01.2021 - 01.01.2022", ...} ...]

Autobahn

Get data from the Autobahn.

from deutschland import autobahn
from deutschland.autobahn.api import default_api

from pprint import pprint

autobahn_api_instance = default_api.DefaultApi()

try:
    # Auflistung aller Autobahnen
    api_response = autobahn_api_instance.list_autobahnen()
    pprint(api_response)

    # Details zu einer Ladestation
    station_id = "RUxFQ1RSSUNfQ0hBUkdJTkdfU1RBVElPTl9fMTczMzM="  # str |
    api_response = autobahn_api_instance.get_charging_station(station_id)
    pprint(api_response)

except autobahn.ApiException as e:
    print("Exception when calling DefaultApi->get_charging_station: %s\n" % e)

For the detailed documentation of this API see here

Presseportal

Not available for now due to changes in the API.

Auto-Generated API-Clients

bundesrat

For the detailed documentation of this API see here

bundestag

For the detailed documentation of this API see here

destatis

For the detailed documentation of this API see here

dwd

For the detailed documentation of this API see here

interpol

For the detailed documentation of this API see here

jobsuche

For the detailed documentation of this API see here

ladestationen

For the detailed documentation of this API see here

mudab

For the detailed documentation of this API see here

nina

For the detailed documentation of this API see here

polizei_brandenburg

For the detailed documentation of this API see here

risikogebiete

For the detailed documentation of this API see here

smard

For the detailed documentation of this API see here

strahlenschutz

For the detailed documentation of this API see here

travelwarning

For the detailed documentation of this API see here

zoll

For the detailed documentation of this API see here