Scheinfirmen Österreich: Download and convert Austrian BMF shell company data to machine-readable formats
Project description
Scheinfirmen Österreich
Automatischer Download und Konvertierung der österreichischen BMF Scheinfirmenliste (Liste der Scheinunternehmen) in maschinenlesbare Formate.
[!NOTE] Die Daten werden täglich um ca. 3:15 Uhr früh (MEZ) automatisch aktualisiert. Siehe Statistik & neueste Einträge für den neuesten Stand.
[!WARNING] Haftungsausschluss: Dieses Projekt ist ein inoffizieller, automatisierter Spiegel der BMF-Scheinfirmenliste und steht in keiner Verbindung zum Bundesministerium für Finanzen (BMF) Österreich. Die Daten werden ohne jegliche Gewähr bereitgestellt. Weder die Vollständigkeit, Richtigkeit noch die Aktualität der Daten wird garantiert. Die offizielle und rechtsverbindliche Quelle ist ausschließlich die BMF-Website unter https://service.bmf.gv.at/service/allg/lsu/ — diese ist bei rechtlich relevanten Entscheidungen zu verwenden. Jegliche Haftung für Schäden, die aus der Verwendung dieser Daten entstehen, wird ausgeschlossen.
Datenquelle
Das österreichische Bundesministerium für Finanzen (BMF) veröffentlicht eine Liste von Scheinunternehmen (Unternehmen, die für Steuerbetrug oder andere illegale Aktivitäten missbraucht werden) unter:
- Webseite: https://service.bmf.gv.at/service/allg/lsu/
- CSV: https://service.bmf.gv.at/service/allg/lsu/__Gen_Csv.asp
Die Daten stehen unter den Nutzungsbedingungen des BMF.
Output-Dateien
Die konvertierten und täglich aktualisierten Daten befinden sich im data/ Verzeichnis:
| Datei | Format | Beschreibung |
|---|---|---|
scheinfirmen.csv |
CSV (UTF-8 mit BOM) | Komma-getrennt, Excel-kompatibel (CSVW) |
scheinfirmen.jsonl |
JSONL | Eine JSON-Zeile pro Eintrag, erste Zeile Metadaten (Schema) |
scheinfirmen.xml |
XML | <scheinfirma>-Elemente mit Attributen (XSD) |
STATS.md |
Markdown | Statistiken, neue Einträge und Verlauf |
Datenfelder
| Feld | Typ | Beschreibung |
|---|---|---|
name |
String | Name des Unternehmens oder der natürlichen Person |
anschrift |
String | Adresse (PLZ Ort, Straße Nr) |
veroeffentlicht |
Datum | Veröffentlichungsdatum (ISO 8601) |
rechtskraeftig |
Datum | Datum der Rechtskraft des Bescheids (ISO 8601) |
seit |
Datum|null | Zeitpunkt als Scheinunternehmen (ISO 8601) |
geburtsdatum |
Datum|null | Geburtsdatum (nur bei natürlichen Personen) |
fbnr |
String|null | Firmenbuchnummer (z.B. 597821z) |
uid |
String|null | UID-Nummer (z.B. ATU79209223) |
kennziffer |
String|null | Kennziffer des Unternehmensregisters |
Alle Datumsfelder sind im ISO-8601-Format (YYYY-MM-DD).
Voraussetzungen
Dieses Projekt verwendet uv für das Paket- und Dependency-Management. Falls Sie uv noch nicht installiert haben, wird dies empfohlen:
# Installation unter macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Installation unter Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Ausführliche Informationen finden Sie in der uv-Dokumentation.
Direkte Ausführung (ohne Installation)
uvx scheinfirmen-at@latest -o data/
Lädt das Paket von PyPI, führt es aus und cached es lokal — kein manuelles Installieren nötig (analog zu npx).
Installation
pip install scheinfirmen-at
# oder mit uv:
uv add scheinfirmen-at
# oder als dauerhaftes CLI-Tool:
uv tool install scheinfirmen-at
Verwendung
Kommandozeile
# Aktuelle Daten herunterladen und in data/ konvertieren
scheinfirmen-at -o data/
# Mit ausführlicher Ausgabe
scheinfirmen-at -o data/ -v
# Lokale Datei konvertieren (kein Download)
scheinfirmen-at --input rohdaten.csv -o output/
# Hilfe
scheinfirmen-at --help
Python API
from scheinfirmen_at import download_csv, parse_bmf_csv, validate_records
from scheinfirmen_at.convert import write_csv, write_jsonl, write_xml
# Herunterladen und parsen
raw = download_csv()
result = parse_bmf_csv(raw)
# Validieren
validation = validate_records(result)
if not validation.ok:
for err in validation.errors:
print(f"Fehler: {err}")
# Ausgabe schreiben
write_csv(result, "scheinfirmen.csv")
write_jsonl(result, "scheinfirmen.jsonl")
write_xml(result, "scheinfirmen.xml")
# Zugriff auf einzelne Einträge
for rec in result.records:
print(rec.name, rec.uid)
Entwicklung
# Repository klonen
git clone https://github.com/arjoma/scheinfirmen-at.git
cd scheinfirmen-oesterreich
# Abhängigkeiten installieren (uv)
uv sync
# Tests ausführen
uv run pytest tests/ -v
# Lint
uv run ruff check src/ tests/
# Type-Check
uv run mypy src/
Siehe CHANGELOG.md für die Versionshistorie.
Auto-Korrektur fehlplatzierter Felder
Die BMF-Liste wird manuell gepflegt und enthält gelegentlich Tippfehler in den Feldern UID-Nr., Firmenbuch-Nr und Kennziffer des UR. Vor der Validierung erkennt das Tool diese Muster und korrigiert sie automatisch (mit Warnung im Log), damit nachgelagerte Tools (z. B. Lookups nach UID) konsistente Daten erhalten:
| Regel | Beispiel (BMF-Eingabe) | Korrektur |
|---|---|---|
| UID ↔ Kennziffer tauschen | uid="R134I594W", kennziffer="" |
→ uid=null, kennziffer="R134I594W" |
| Doppelten UID-Wert in Kennziffer löschen | uid="ATU80457319", kennziffer="ATU80457319" |
→ kennziffer=null |
| Doppelten Firmenbuch-Wert in Kennziffer löschen | fbnr="636821b", kennziffer="636821b" |
→ kennziffer=null |
| Ausländische EU-VAT-Nummer in UID übernehmen | kennziffer="RO38488384", uid=null |
→ uid="RO38488384", kennziffer=null |
Erkannte Fixe werden mit WARNING: NORMALIZE: … ins Log geschrieben.
Die UID-Spalte wird auch für Nicht-AT-VAT-Nummern offen gehalten
(rumänische, deutsche etc.), da die Firmen trotzdem als Scheinfirmen geführt
werden und in nachgelagerten Tools per UID auffindbar sein sollen.
Technische Details
- Abhängigkeiten: Keine (reines Python stdlib, >= 3.10)
- Quell-Encoding: ISO-8859-1 (Tilde-getrennt, CRLF)
- Output-Encoding: UTF-8 (CSV mit BOM für Excel-Kompatibilität)
- Validierung: Strenge Feldvalidierung mit Fehlern und Warnungen
- Daten-Reparatur: Auto-Korrektur fehlplatzierter UID/Kennziffer/Firmenbuch-Werte (siehe oben)
- Schema-Prüfung: Automatische Validierung gegen XSD (XML) und JSON Schema (JSONL)
- Verifizierung: Kreuz-Format-Prüfung (alle Formate müssen gleiche Zeilenanzahl haben)
Lizenz
Apache License 2.0 — siehe LICENSE
Die Scheinfirmenliste selbst ist eine öffentliche Verwaltungsinformation des BMF Österreich.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scheinfirmen_at-1.5.0.tar.gz.
File metadata
- Download URL: scheinfirmen_at-1.5.0.tar.gz
- Upload date:
- Size: 276.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2936c985b238da79f43e4b5d71d47da0ba4494f60f76232433b23725fbd96002
|
|
| MD5 |
32745b8308880762bc13352650f71f50
|
|
| BLAKE2b-256 |
3c352abf0c9f07d101d3c2f431fde05667df005173c52f378b690b27226a0b90
|
Provenance
The following attestation bundles were made for scheinfirmen_at-1.5.0.tar.gz:
Publisher:
release.yml on arjoma/scheinfirmen-at
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scheinfirmen_at-1.5.0.tar.gz -
Subject digest:
2936c985b238da79f43e4b5d71d47da0ba4494f60f76232433b23725fbd96002 - Sigstore transparency entry: 1396578561
- Sigstore integration time:
-
Permalink:
arjoma/scheinfirmen-at@bf6d779f166555266de3dbbda6041ae22202f856 -
Branch / Tag:
refs/tags/v1.5.0 - Owner: https://github.com/arjoma
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bf6d779f166555266de3dbbda6041ae22202f856 -
Trigger Event:
push
-
Statement type:
File details
Details for the file scheinfirmen_at-1.5.0-py3-none-any.whl.
File metadata
- Download URL: scheinfirmen_at-1.5.0-py3-none-any.whl
- Upload date:
- Size: 28.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
355dce9c5e3b872aa6d6cbd3fa7c8e5cde87208c11b150c988d7c2c172947bc3
|
|
| MD5 |
2e7d802a7380df32e0e3a08a9e6b7ac5
|
|
| BLAKE2b-256 |
447dd2ef1f5e39da33bc43392cfe41d0c731ff25a9986243a850cc5b74faea1a
|
Provenance
The following attestation bundles were made for scheinfirmen_at-1.5.0-py3-none-any.whl:
Publisher:
release.yml on arjoma/scheinfirmen-at
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scheinfirmen_at-1.5.0-py3-none-any.whl -
Subject digest:
355dce9c5e3b872aa6d6cbd3fa7c8e5cde87208c11b150c988d7c2c172947bc3 - Sigstore transparency entry: 1396578564
- Sigstore integration time:
-
Permalink:
arjoma/scheinfirmen-at@bf6d779f166555266de3dbbda6041ae22202f856 -
Branch / Tag:
refs/tags/v1.5.0 - Owner: https://github.com/arjoma
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bf6d779f166555266de3dbbda6041ae22202f856 -
Trigger Event:
push
-
Statement type: