Congressional trading and conflict-of-interest research
Use Congress endpoints to turn congressional trading and conflict-of-interest research into repeatable API requests with documented inputs and JSON responses.
Turn public congressional financial-disclosure filings into structured JSON — search by member name, state, district, or filing year, with normalized filing type, year, and PDF URL. Sourced from the House Clerk and Senate eFD public disclosure systems.
Search public congressional stock-disclosure filings (House or Senate) by member, ticker, or date range as structured JSON.
Endpoint families
2
Documented params
20
Examples
2
Live catalog snapshot
Active endpoints
2
Methods
GET
Required params
3
Schema refs
2
{
"platform": "Congress",
"endpoint": "congress-stock-disclosures",
"method": "GET",
"path": "/congress/stock-disclosures",
"auth": "apiKey"
}Use cases
Search public congressional stock-disclosure filings (House or Senate) by member, ticker, or date range as structured JSON.
Use Congress endpoints to turn congressional trading and conflict-of-interest research into repeatable API requests with documented inputs and JSON responses.
Use Congress endpoints to turn public-official financial disclosure monitoring into repeatable API requests with documented inputs and JSON responses.
Use Congress endpoints to turn filing archive and compliance tooling into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Congress endpoint catalog — 2 endpoints, 20 documented request parameters, and 2 published response schemas — the same catalog Docs and Playground run against.
2 documented Congress endpoints, grouped into 2 request families — Report and Stock Disclosures.
20 request parameters are documented across those Congress endpoints, 3 of them required — the full input contract is public before you write any integration code.
2 of the 2 Congress endpoints ship a recorded example response, and 2 carry a documented response schema — you can code against the real JSON before the first request.
Congress endpoints document their error responses (400, 404, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
2 hosted MCP tools back the Congress endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/congress/report
/congress/stock-disclosures
Endpoint catalog
/congress/stock-disclosuresSearch public congressional stock disclosure filings (House or Senate)
Response notes
- `source_url` points to the upstream endpoint used for the search: - House: `https://disclosures-clerk.house.gov/FinancialDisclosure/ViewMemberSearchResult` - Senate: `https://efdsearch.senate.gov/search/report/data/` - Empty results return `count: 0`, `total: 0`, and `results: []` (HTTP 200). - Senate permits filter-only searches with no name, matching the source form. Its exact form filters are `first_name`, `last_name`, `filer_type`, `senator_state`, `candidate_state`, `report_type`, `from`, and `to`. - `count` is the number of rows on the current page; `total` is the number of rows across all pages after upstream filters. - Every result includes `year_kind`: `filing` means `filing_year` is a filing year; `election` means it is the House candidate election year. - Senate results include `filed_at` in canonical `YYYY-MM-DD` format. House list sources do not expose an exact filing date, so House results omit `filed_at`. - Senate exact-date searches verify that every returned row falls within the inclusive requested range. An inconsistent upstream page returns HTTP 503 instead of mismatched page totals. - No results page is distinguished from parser drift and blocked pages. - Blocked/error pages or parser drift return HTTP 503 with a typed error. Example response: ```json {"code":200,"msg":"OK","data":{"chamber":"senate","count":1,"total":26,"query":"Elizabeth Warren","sort":"filing_year_desc","page":1,"limit":25,"from":"2012","to":"2026","source_url":"https://efdsearch.senate.gov/search/report/data/","results":[{"member":"Elizabeth Warren","office":"Warren, Elizabeth (Senator)","filing_year":2025,"year_kind":"filing","filed_at":"2025-05-15","filing_type":"Annual Report","filing_url":"https://efdsearch.senate.gov/search/view/annual/example-id/"}]}} ```
MCP tool congress_stock_disclosures
/congress/reportFetch a single disclosure report by its filing_url (as returned by
Response notes
- `chamber` — always `senate` for this endpoint today (House disclosures aren't parseable HTML). The field's type is shared with `congress-stock-disclosures` and formally allows `house`, `senate`. - `parts` is a list of the report's content sections in document order. Annual reports have several numbered sections ("Part 1. Honoraria", "Part 3. Assets", ..., plus an unnumbered "Attachments & Comments"); PTR reports have exactly one, titled "Transactions". Each part carries: - `answer` — the section's yes/no lead question answer, when present (e.g. `"Yes"`). PTR's "Transactions" section has no such question and omits this field. - `rows` — the section's data table, when it has one, as a list of objects keyed by the table's own column headers (e.g. `Asset`, `Asset Type`, `Owner`, `Value`, `Income Type`, `Income` for an Annual report's Part 3 Assets table, or `Transaction Date`, `Owner`, `Ticker`, `Asset Name`, `Asset Type`, `Type`, `Amount`, `Comment` for a PTR's Transactions table). This is intentionally schema-agnostic across report types rather than hardcoded to one report type's columns. - `transactions` is the stable, normalized transaction list for both Annual reports (Part 4a and Part 4b) and PTR reports. It preserves document order and the source's displayed strings, including amount ranges and `--` placeholders. Each item includes `source_part`, optional `source_row_number`, `transaction_date`, `owner`, optional `ticker`, `asset_name`, optional `asset_type`, `transaction_type`, `amount`, and optional `comment`. The original table remains available in `parts[].rows` for backward compatibility and source-specific columns. - `body` is populated only for Due Date Extension notices -- a short prose notice (who requested the extension and the new due date), not a Parts-table form like Annual/PTR. `filer`/`filed_at`/`parts` stay blank for this type since the page has no structurally distinct fields for them; the filer's name appears inline in the `body` prose instead. - A URL that doesn't match a supported report returns HTTP 400 with a typed error. - A report id that doesn't exist returns HTTP 404. - A blocked, empty, or unexpectedly-shaped upstream response returns HTTP 503 and may be retried. Example response (Annual): ```json {"code":200,"msg":"OK","data":{"chamber":"senate","report_type":"annual","report_id":"cc198326-0f50-4f47-8b03-a5c6440f400f","source_url":"https://efdsearch.senate.gov/search/view/annual/cc198326-0f50-4f47-8b03-a5c6440f400f/","title":"Annual Report for Calendar 2018","filer":"The Honorable John A Barrasso (Barrasso, John)","filed_at":"05/15/2019 @ 8:11 AM","parts":[{"title":"Part 4b. Transactions","answer":"Yes","rows":[{"#":"1","Owner":"Self","Ticker":"VTSAX","Asset Name":"Vanguard Total Stock Market Index Fund","Transaction Type":"Sale (Partial)","Transaction Date":"01/02/2018","Amount":"$250,001 - $500,000","Comments":"n/a"}]}],"transactions":[{"source_part":"Part 4b. Transactions","source_row_number":"1","transaction_date":"01/02/2018","owner":"Self","ticker":"VTSAX","asset_name":"Vanguard Total Stock Market Index Fund","transaction_type":"Sale (Partial)","amount":"$250,001 - $500,000","comment":"n/a"}],"fetched_at":"2026-08-08T00:00:00Z"}} ``` Example response (PTR): ```json {"code":200,"msg":"OK","data":{"chamber":"senate","report_type":"ptr","report_id":"deb8df2a-b8ef-4f02-ae44-1f3b7168ccc2","source_url":"https://efdsearch.senate.gov/search/view/ptr/deb8df2a-b8ef-4f02-ae44-1f3b7168ccc2/","title":"Periodic Transaction Report for 01/03/2019","filer":"The Honorable Thomas R Carper (Former Senator)","filed_at":"01/03/2019 @ 1:10 PM","parts":[{"title":"Transactions","rows":[{"#":"5","Transaction Date":"12/19/2018","Owner":"Spouse","Ticker":"--","Asset Name":"Bank of America","Asset Type":"Corporate Bond","Type":"Purchase","Amount":"$15,001 - $50,000","Comment":"--"}]}],"transactions":[{"source_part":"Transactions","source_row_number":"5","transaction_date":"12/19/2018","owner":"Spouse","ticker":"--","asset_name":"Bank of America","asset_type":"Corporate Bond","transaction_type":"Purchase","amount":"$15,001 - $50,000","comment":"--"}],"fetched_at":"2026-08-08T00:00:00Z"}} ``` Example response (Due Date Extension): ```json {"code":200,"msg":"OK","data":{"chamber":"senate","report_type":"due_date_extension","report_id":"13373873-428a-423f-8d0f-be3e1e36a1a2","source_url":"https://efdsearch.senate.gov/search/view/extension-notice/regular/13373873-428a-423f-8d0f-be3e1e36a1a2/","title":"Candidate Report for 2026 Due Date Extension 1","filer":"","filed_at":"","parts":[],"body":"Theodore (Todd) B Achilles timely requested an extension of time for filing the annual Public Financial Disclosure Report.\n\nPursuant to section 101(g) of the Ethics in Government Act of 1978, as amended, a 90-day extension was granted and the new due date for the report is no later than August 13, 2026.","fetched_at":"2026-08-08T00:00:00Z"}} ```
MCP tool congress_report
Related APIs
Financial Data
Turn official SEC filings into structured data for financial research, due diligence, and AI-agent workflows — normalized statements with ratios, extracted filing sections, insider and institutional activity, all credential-free.
Financial Data
Collect Yahoo Finance quote pages, market data, historical prices, screeners, calendars, and ticker research modules as structured JSON for dashboards, watchlists, and agent-native workflows.
Financial Data
Extract public Google Finance quote pages, chart data, market news, company metadata, financial sections, market movers, and market category pages as structured JSON for research dashboards, monitoring workflows, watchlists, and AI agents.
How to scrape Congress
US House and Senate members are legally required to file periodic financial disclosures, but the House Clerk and Senate eFD systems publish them as separate search portals and PDFs. Crawlora's 2 congressional endpoints turn those filings into structured JSON — searchable by member, state, district, ticker, or year — and parse an individual report.
Filter by chamber (house or senate), member or first and last name, state, district, ticker, filer type, election year, and a from and to date range.
Sort by name, office, or filing year in either direction, and page through results with page and limit.
Each row comes back with a normalized filing type, its year, and the PDF URL of the original document.
The report endpoint takes that URL and fetches and parses the disclosure into structured JSON, instead of leaving you with a PDF to read by hand.
FAQ
Send a member name — or a ticker, chamber, state, or year filter — as query parameters to Crawlora's /congress/stock-disclosures endpoint and get normalized filing rows back: member, office, filing year, filing type, and the PDF URL of the original document, as structured JSON.
Both. Pass chamber=house or chamber=senate — House disclosures come from the House Clerk's public site and Senate disclosures from the Senate eFD system, the two official filing portals. These are public records that members of Congress are legally required to file; Crawlora normalizes the two different systems into one response shape.
The search endpoint accepts a ticker filter alongside member, state, district, filer type, and year. How individual holdings appear varies by report type, so pair a ticker search with the report endpoint to parse the underlying document.
annual, periodic_transaction, due_date_extension, blind_trust, and other. Periodic transaction reports are the ones that disclose individual trades within a reporting window.
No. This is a public-records API for research, journalism, and compliance work. Crawlora is not an investment adviser, and how you publish or act on congressional disclosure data is your responsibility under applicable law.