Tony Wang7 Min. LesezeitCongressional Stock Disclosures scrapen in 2026 (API & Python)
Congressional-Stock-Disclosures von House Clerk und Senate eFD 2026 — als JSON nach Mitglied, Ticker oder Zeitraum, plus geparste Reports.
Daten zu Congressional Stock Disclosures sind ein Fall, in dem die zugrunde liegenden Records eindeutig öffentlich sind — Mitglieder des Kongresses sind gesetzlich verpflichtet, sie einzureichen —, aber sie in eine nutzbare Form zu bringen, erfordert echte Arbeit. Der House Clerk und der Senat betreiben jeweils ihr eigenes Disclosure-Portal mit eigenen Suchfeldern und eigenen PDF-basierten Filings, und keines der beiden bietet eine einheitliche, strukturierte API. Dieser Guide zeigt den DIY-Ansatz für beide Portale und wo er scheitert, No-Code-Optionen und eine strukturierte API, die beide Kammern in ein Schema normalisiert und einzelne Filings in strukturiertes JSON parst.
Warum Congressional Stock Disclosures scrapen?
Daten zu Financial Disclosures des Kongresses treiben an:
- Transparenz und Journalismus im öffentlichen Interesse — verfolgen, was Mitglieder und Kandidaten für ein Bundesamt offengelegt haben zu kaufen oder zu verkaufen, und wann, im Abgleich mit Abstimmungen, Ausschusszugehörigkeiten oder Gesetzgebungstätigkeit.
- Compliance- und Interessenkonflikt-Recherche — offengelegte Trades in Sektoren markieren, die ein Ausschuss eines Mitglieds beaufsichtigt, für Watchdog-Gruppen, akademische Forscher und Redaktionen.
- Trend- und Coverage-Recherche — sehen, wie sich Volumen und Filing-Typen der Disclosures nach Kammer, Bundesstaat oder Wahlzyklus im Zeitverlauf verschieben.
- Tracking der Filing-Pünktlichkeit — Periodic-Transaction-Reports haben ein gesetzlich vorgeschriebenes Meldefenster, und Due-Date-Extension-Filings sind selbst ein verfolgenswertes Signal.
- Abgleich mit Marktdaten — einen offengelegten Ticker mit einem Live-Kurs von Yahoo Finance oder Google Finance für den Kontext rund um einen offengelegten Trade kombinieren.
Ist es legal, Congressional Disclosures zu scrapen?
Option 1: DIY in Python (und warum es scheitert)
Ein DIY-Scraper muss zwei voneinander unabhängige Systeme ansprechen und selbst zusammenführen:
import requests
from bs4 import BeautifulSoup
# House Clerk: die Suche liefert eine HTML-Ergebnisseite, kein JSON
house = requests.get(
"https://disclosures-clerk.house.gov/PublicDisclosure/FinancialDisclosure",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(house.text, "html.parser")
# Jedes Ergebnis verlinkt auf ein separates PDF — keine strukturierten Felder, kein Ticker
# Der Senate eFD erfordert ein Session-/Suchformular und liefert seine eigene HTML-Form,
# die mit dem Markup oder den Feldern des House Clerk nichts gemein hat
Wo es anfängt, echte Engineering-Zeit zu kosten:
- Zwei Portale, zwei Schemas. Der House Clerk und der Senate eFD haben jeweils eigene Suchparameter, eigenes Ergebnis-Markup und keine geteilten Identifier — jedes gewünschte Feld muss separat pro Kammer gemappt und normalisiert werden.
- Die Filings selbst sind PDFs. Suchergebnisse verweisen auf ein PDF der eigentlichen Disclosure; die einzelnen offengelegten Trades — Ticker, Transaktionstyp, Datum, Betragsbereich — stecken im Dokument, nicht in den Suchergebnissen, also musst du trotzdem jedes PDF holen und parsen.
- Das PDF-Layout variiert. Filings folgen nicht über Mitglieder, Jahre oder Filing-Typen hinweg einer festen Vorlage — Periodic-Transaction-Reports, Annual-Reports und Blind-Trust-Filings sind unterschiedlich aufgebaut, und manche PDFs älterer oder weniger aktiver Filer sind gescannte Bilder statt Text.
- Keine Ticker-Suche über Kammern hinweg. Keines der beiden Portale erlaubt in seiner eigenen Suche „jeder offengelegte Trade in Ticker X über House und Senat hinweg" in einem einzigen Call — du müsstest breit abrufen und clientseitig filtern, nachdem du jedes PDF geparst hast.
Option 2: No-Code-Tools
Eine Handvoll Dashboards und Marketplace-Scraper stellen Trading-Daten des Kongresses bereit, meist indem sie dieselben zwei Portale erneut abgreifen und eine Teilmenge der Felder republizieren. Sie sparen einen einmaligen Lookup, lösen aber nicht das Parsing-Problem — du bekommst weiterhin keinen strukturierten Record pro Trade direkt aus dem Quell-PDF, und die meisten decken Due-Date-Extension- oder Blind-Trust-Filing-Typen überhaupt nicht ab.
Option 3: Eine strukturierte Congress API
Die Congressional-Stock-Disclosures-API von Crawlora normalisiert sowohl den House Clerk als auch den Senate eFD in eine einheitliche Suchform und parst das PDF eines einzelnen Filings in strukturiertes JSON. Suche nach Mitglied, Ticker oder Datumsbereich:
curl "https://api.crawlora.net/api/v1/congress/stock-disclosures?chamber=house&last_name=pelosi&from=2025-01-01&to=2025-12-31" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"count": 4,
"filings": [
{
"member": "Pelosi, Nancy",
"office": "California, District 11",
"chamber": "house",
"filing_year": 2025,
"filing_type": "periodic_transaction",
"pdf_url": "https://disclosures-clerk.house.gov/public_disc/ptr-pdfs/2025/20025123.pdf"
}
]
}
}
Hol dann auf demselben Weg ein Senate-Filing und parse beide in Python:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/congress"
results = requests.get(f"{base}/stock-disclosures", headers=h, params={
"chamber": "senate", "ticker": "AAPL", "election_year": 2024,
"sort": "filing_year", "direction": "desc", "page": 1, "limit": 20,
}).json()["data"]["filings"]
pdf_url = results[0]["pdf_url"]
report = requests.get(f"{base}/report", headers=h, params={"url": pdf_url}).json()["data"]
stock-disclosures akzeptiert chamber (house oder senate), member oder separat first_name/last_name, state, district, ticker, filer_type, election_year und einen from/to-Datumsbereich, und lässt sich nach name, office oder filing_year in jeder Richtung sortieren, paginiert mit page und limit. report nimmt die pdf_url eines Filings entgegen und liefert die geparste Disclosure zurück — echte Felder und Schema in den docs — statt eines Dokuments, das du sonst öffnen und von Hand lesen müsstest. Speichere eine Zeile pro Filing, geschlüsselt nach pdf_url, und lass die Suche nach Zeitplan erneut laufen, um neu eingereichte Disclosures zu erfassen.
Was du sammeln kannst
Öffentliche Financial-Disclosure-Daten des Kongresses über beide Kammern: Filing-Suchergebnisse (Mitgliedsname, Office/Bundesstaat/Wahlbezirk, Kammer, Filing-Jahr, normalisierter Filing-Typ und die PDF-URL des Originaldokuments), filterbar nach Mitglied, Bundesstaat, Wahlbezirk, Ticker, Filer-Typ und Wahljahr; und geparster Report-Inhalt aus dem PDF eines einzelnen Filings. Filing-Typen decken Annual, Periodic Transaction, Due-Date-Extension, Blind Trust und Sonstige ab — Periodic-Transaction-Reports sind diejenigen, die einzelne Trades innerhalb eines Meldefensters offenlegen.
Grenzen und typische Herausforderungen
- Zwei Quellsysteme, in eine Form zusammengeführt. House Clerk und Senate eFD veröffentlichen unabhängig voneinander — erwarte normale quellenseitige Verzögerungen oder Formatierungsunterschiede zwischen den Kammern, auch nach der Normalisierung.
- Report-Parsing hängt vom zugrunde liegenden PDF ab. Das Layout variiert je nach Filing-Typ und Filer, und manche Disclosures älterer oder weniger aktiver Filer sind gescannte Bilder statt Text — die Parsing-Qualität folgt der Qualität des Quelldokuments.
- Nicht in Echtzeit. Das sind periodische Filings mit einem gesetzlich vorgeschriebenen Meldefenster unter dem STOCK Act, kein Live-Trade-Feed — es gibt eine inhärente Verzögerung zwischen einer offengelegten Transaktion und ihrer Einreichung und Veröffentlichung.
- Die Ticker-Abdeckung variiert je nach Report-Typ. Wie einzelne Bestände dargestellt werden, unterscheidet sich je nach Filing-Typ — kombiniere eine Ticker-Suche mit dem Report-Endpoint, um das zugrunde liegende Dokument zu parsen, statt dich allein auf die Suche zu verlassen.
- Nur öffentliche Daten, keine Anlageberatung. Das sammelt, was Mitglieder und Kandidaten unter gesetzlicher Pflicht bereits öffentlich offengelegt haben — nie ein Signal zum Handeln, und nie ein Weg, um mehr abzuleiten, als tatsächlich eingereicht wurde.
Wo das eingesetzt wird
- Transparenzjournalismus — offengelegte Trades im Abgleich mit Ausschusszugehörigkeiten, Abstimmungen oder Gesetzgebungstätigkeit verfolgen.
- Watchdog- und Compliance-Recherche — Filing-Pünktlichkeit überwachen und Disclosures in Sektoren markieren, die ein Ausschuss eines Mitglieds beaufsichtigt.
- Akademische und politische Recherche — Disclosure-Muster nach Kammer, Bundesstaat oder Wahlzyklus im Zeitverlauf untersuchen.
- Quellenübergreifende Financial Research — einen offengelegten Ticker mit Live-Preisen von Yahoo Finance oder Google Finance kombinieren.
Sources
Leg los mit dem Sammeln
Probier es zuerst kostenlos aus: jage eine beliebige öffentliche URL durch den Free Web Scraper oder prüfe mit dem Anti-Bot Checker, ob eine Seite Bots blockiert — ohne Anmeldung.
Teste die Search- und Report-Endpoints für Stock Disclosures im Playground, sieh dir das Schema in den API docs an und wirf einen Blick aufs pricing. Congressional Disclosures sagen dir, was ein Mitglied oder Kandidat offiziell gemeldet hat und wann; SEC EDGAR deckt dasselbe disclosure-getriebene Muster für börsennotierte Unternehmen ab, und Yahoo Finance oder Google Finance ergänzen den Live-Preis und den Marktkontext rund um einen offengelegten Ticker — kombiniere die Disclosure mit Marktdaten, statt eine der beiden isoliert zu lesen. Siehe auch how to choose a web scraping API und is web scraping legal.
Häufig gestellte Fragen
Wie durchsuche ich Congressional Stock Disclosures mit einer API?
Schicke einen Mitgliedsnamen — oder einen Ticker-, Kammer-, Bundesstaat- oder Jahresfilter — als Query-Parameter an Crawloras /congress/stock-disclosures-Endpoint und erhalte normalisierte Filing-Zeilen zurück: Mitglied, Office, Filing-Jahr, Filing-Typ und die PDF-URL des Originaldokuments, als strukturiertes JSON.
Woher stammen diese Daten, und deckt es beide Kammern ab?
Beide. Übergib chamber=house oder chamber=senate — House-Disclosures stammen von der öffentlichen Seite des House Clerk und Senate-Disclosures vom eFD-System des Senats, den zwei offiziellen Filing-Portalen. Das sind öffentliche Records, die Mitglieder des Kongresses gesetzlich einreichen müssen; Crawlora normalisiert die beiden unterschiedlichen Systeme in eine einheitliche Response-Form.
Kann ich nach Aktien-Ticker suchen?
Der Search-Endpoint akzeptiert einen Ticker-Filter neben Mitglied, Bundesstaat, Wahlbezirk, Filer-Typ und Jahr. Wie einzelne Bestände dargestellt werden, variiert je nach Report-Typ, also kombiniere eine Ticker-Suche mit dem Report-Endpoint, um das zugrunde liegende Dokument zu parsen.
Welche Report-Typen sind verfügbar?
annual, periodic_transaction, due_date_extension, blind_trust und other. Periodic-Transaction-Reports sind diejenigen, die einzelne Trades innerhalb eines Meldefensters offenlegen.
Ist das Anlageberatung?
Nein. Das ist eine API für öffentliche Records, gedacht für Recherche, Journalismus und Compliance-Arbeit. Crawlora ist kein Anlageberater, und wie du Daten zu Congressional Disclosures veröffentlichst oder darauf handelst, liegt in deiner eigenen Verantwortung nach geltendem Recht.