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.
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.
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 |
| 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).
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.
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).
pip install scheinfirmen-at
# oder mit uv:
uv add scheinfirmen-at
# oder als dauerhaftes CLI-Tool:
uv tool install scheinfirmen-at# 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 --helpfrom 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)# 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.
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.
- 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)
Apache License 2.0 — siehe LICENSE
Die Scheinfirmenliste selbst ist eine öffentliche Verwaltungsinformation des BMF Österreich.