Congress API endpoint
Returns one US Senate disclosure report from the `filing_url` found by the stock-disclosures search, passed as `url`. Supports annual reports, periodic transaction reports and due date extension notices. Output has filer, filing date, `parts` with their rows, and a `transactions` list. House PDFs and paper filings return a validation error.
/congress/reportMCP tool: congress_report
Fetches a single congressional disclosure report by its filing_url (as returned by congress-stock-disclosures) and parses it into structured sections.
Only Senate Annual, Periodic Transaction Report (PTR), and Due Date Extension notice filings are supported:
disclosures-clerk.house.gov PDF URL returns a validation error./search/view/paper/<id>/, any underlying report type) is served as scanned page images, not parseable text — returns a validation error.blind_trust and other report types are not covered by this parser and return a validation error because their page structures have not been validated against representative filings.Query parameters:
url (required) — the filing URL. Must be an efdsearch.senate.gov URL matching /search/view/annual/<id>/, /search/view/ptr/<id>/, or /search/view/extension-notice/regular/<id>/.Response behavior:
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 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.Example response (Annual):
{"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):
{"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):
{"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"}}
| Field | Filled in, of 5 checked | Values in the sample |
|---|---|---|
| source_part | 5 | Transactions in all 5 |
| source_row_number | 5 | 1 to 5, median 3 |
| transaction_date | 5 | 12/19/2018 (2), 12/17/2018 (2), 12/10/2018 (1) |
| owner | 5 | |
| ticker | 5 | -- in all 5 |
| asset_name | 5 | “Bank of America Rate/Coupon: 3.0% Matures: 06/21/2019” and 3 other values |
| asset_type | 5 | Corporate Bond (3), Other (1), Stock (1) |
| transaction_type | 5 | Purchase (3), Sale (Full) (2) |
| amount | 5 | $15,001 - $50,000 (3), $1,001 - $15,000 (2) |
| comment | 5 | -- in all 5 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| url | string | Yes | Filing URL, as returned by congress-stock-disclosures' filing_url field. Must be an efdsearch.senate.gov /search/view/annual/..., /search/view/ptr/..., or /search/view/extension-notice/regular/... URL. | https://efdsearch.senate.gov/search/view/annual/cc198326-0f50-4f47-8b03-a5c6440f400f/ | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/congress/report?url=https%3A%2F%2Fefdsearch.senate.gov%2Fsearch%2Fview%2Fannual%2Fcc198326-0f50-4f47-8b03-a5c6440f400f%2F" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"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"
}
}Request schema
No body schema
Response schema
#/definitions/congress.reportResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | congress.ReportDetail | No | ||||
| data.body | string | No | Jane Doe timely requested an extension... | Body holds free-text paragraph content for report types that are a short prose notice rather than a Parts-table form -- currently only due_date_extension. Empty for Annual/PTR, which use Parts instead. | ||
| data.chamber | string | No | house, senate | senate | ||
| data.fetched_at | string | No | 2026-08-08T00:00:00Z | |||
| data.filed_at | string | No | 05/15/2019 @ 8:11 AM | |||
| data.filer | string | No | The Honorable John A Barrasso (Barrasso, John) | |||
| data.parts | array | No | ||||
| data.parts[].answer | string | No | Yes | |||
| data.parts[].rows | array | No | ||||
| data.parts[].title | string | No | Part 3. Assets | |||
| data.report_id | string | No | cc198326-0f50-4f47-8b03-a5c6440f400f | |||
| data.report_type | string | No | annual | |||
| data.source_url | string | No | https://efdsearch.senate.gov/search/view/annual/cc198326-0f50-4f47-8b03-a5c6440f400f/ | |||
| data.title | string | No | Annual Report for Calendar 2018 | |||
| data.transactions | array | No | ||||
| data.transactions[].amount | string | No | $15,001 - $50,000 | |||
| data.transactions[].asset_name | string | No | Bank of America | |||
| data.transactions[].asset_type | string | No | Corporate Bond | |||
| data.transactions[].comment | string | No | -- | |||
| data.transactions[].owner | string | No | Spouse | |||
| data.transactions[].source_part | string | No | Transactions | |||
| data.transactions[].source_row_number | string | No | 5 | |||
| data.transactions[].ticker | string | No | RPM | |||
| data.transactions[].transaction_date | string | No | 12/19/2018 | |||
| data.transactions[].transaction_type | string | No | Purchase | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/congress/report?url=https%3A%2F%2Fefdsearch.senate.gov%2Fsearch%2Fview%2Fannual%2Fcc198326-0f50-4f47-8b03-a5c6440f400f%2F" \
-H "x-api-key: $CRAWLORA_API_KEY"