Congress API endpoint
Use Crawlora's Congressional Stock Disclosures API to extract supported public Congress data as structured JSON. This page includes request parameters, cURL examples, response schema, error behavior, credit cost, and a Playground link for testing before integration.
/congress/stock-disclosuresSearch public congressional stock disclosure filings (House or Senate) Developers commonly use this endpoint for data enrichment, monitoring, research dashboards, internal automation, and agent-native workflows that need repeatable structured public web data. Authentication uses the documented Crawlora headers, and usage is metered with the credit cost shown on this page.
Request parameters are generated from the active endpoint catalog. Required values must be sent before Crawlora can call the upstream public web data source.
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| chamber | string | No | Chamber filter. Allowed values: house, senate. Allowed values: house, senate | ||
| member | string | No | Member name. Required for House. For Senate, this backward-compatible shorthand maps one word to last_name and maps the first word plus the complete remaining surname to first_name/last_name; it cannot be combined with either exact name field. | ||
| first_name | string | No | Senate filer first-name prefix (Senate only; cannot be combined with member). | ||
| last_name | string | No | Senate filer last-name prefix (Senate only; cannot be combined with member). | ||
| ticker | string | No | Deprecated unsupported parameter; any non-empty value returns a validation error and the parameter is planned for removal. | ||
| state | string | No | State or territory filter (2-letter code). For Senate this backward-compatible shorthand applies to both Senator and Candidate states and cannot be combined with senator_state or candidate_state. Allowed values: AK, AL, AR, AS, AZ, CA, CO, CT, DC, DE, FL, FM, GA, GU, HI, IA, ID, IL, IN, KS, KY, LA, MA, MD, ME, MH, MI, MN, MO, MP, MS, MT, NC, ND, NE, NH, NJ, NM, NV, NY, OH, OK, OR, PA, PR, PW, RI, SC, SD, TN, TX, UT, VA, VI, VT, WA, WI, WV, WY | ||
| senator_state | string | No | Senator state filter (Senate only, 2-letter code). Allowed values: AK, AL, AR, AS, AZ, CA, CO, CT, DC, DE, FL, FM, GA, GU, HI, IA, ID, IL, IN, KS, KY, LA, MA, MD, ME, MH, MI, MN, MO, MP, MS, MT, NC, ND, NE, NH, NJ, NM, NV, NY, OH, OK, OR, PA, PR, PW, RI, SC, SD, TN, TX, UT, VA, VI, VT, WA, WI, WV, WY | ||
| candidate_state | string | No | Candidate state filter (Senate only, 2-letter code). Allowed values: AK, AL, AR, AS, AZ, CA, CO, CT, DC, DE, FL, FM, GA, GU, HI, IA, ID, IL, IN, KS, KY, LA, MA, MD, ME, MH, MI, MN, MO, MP, MS, MT, NC, ND, NE, NH, NJ, NM, NV, NY, OH, OK, OR, PA, PR, PW, RI, SC, SD, TN, TX, UT, VA, VI, VT, WA, WI, WV, WY | ||
| district | string | No | House district filter (House only). | ||
| filer_type | string | No | senator when omitted | Filer-type filter, meaning differs by chamber. House: member (default) or candidate. Senate: comma-separated senator, candidate, former_senator, or the standalone all value. Defaults to senator when omitted. Allowed values: member, candidate, all, senator, former_senator | |
| election_year | string | No | House candidate-search election year filter (requires filer_type=candidate). | ||
| report_type | string | No | all types when omitted | Comma-separated Senate report-type filter (Senate only). Allowed values: annual, periodic_transaction, due_date_extension, blind_trust, other. Defaults to all types when omitted. Allowed values: annual, periodic_transaction, due_date_extension, blind_trust, other | |
| from | string | No | 2012 when omitted | Minimum filing date. House accepts YYYY. Senate accepts YYYY or MM/DD/YYYY and defaults to 2012 when omitted. | |
| to | string | No | Maximum filing date. House accepts YYYY. Senate accepts YYYY or MM/DD/YYYY. | ||
| sort | string | No | Sort key. Allowed values: name_asc, name_desc, office_asc, office_desc, filing_year_asc, filing_year_desc. Allowed values: name_asc, name_desc, office_asc, office_desc, filing_year_asc, filing_year_desc | ||
| page | integer | No | 1-based result page (1-1000). Minimum: 1. Maximum: 1000. | ||
| limit | integer | No | Max results (1-500). | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/congress/stock-disclosures?chamber=house&state=AK&senator_state=AK&candidate_state=AK&filer_type=member&report_type=annual&sort=name_asc&page=1&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
Send your scraping API key in the x-api-key header. Use the console API Keys page to rotate or select the active key.
Endpoint usage is metered in credits. The plan prices, included credits, limits, and overage rates below match the active backend billing configuration.
| Plan | Price | Included credits | Daily cap | Rate limit | Overage |
|---|---|---|---|---|---|
| Free | $0/mo | 2,000 | 500 daily credits | 5/min | No overage |
| Starter | $9/mo | 20,000 | 5,000 daily credits | 15/min | $0.75/1,000 overage credits when enabled |
| Growth | $29/mo | 100,000 | 25,000 daily credits | 45/min | $0.45/1,000 overage credits when enabled |
| Pro | $79/mo | 400,000 | No daily cap | 120/min | $0.30/1,000 overage credits |
| Business | $199/mo | 1,200,000 | No daily cap | 300/min | $0.20/1,000 overage credits |
| Enterprise | $499/mo | 5,000,000 | No daily cap | 1,000/min | $0.12/1,000 overage credits |
This endpoint is executed through Crawlora's managed scraping infrastructure.
- `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/"}]}} ```
Crawlora does not silently return bad data when the upstream page cannot be used.
| Status | Common failure case |
|---|---|
| 400 | Invalid input or missing required parameter |
| 429 | Plan or endpoint rate limit exceeded |
| 500 | Internal execution error |
| 502 | Upstream platform failed, returned unusable HTML, or served a challenge page that could not be resolved |
When possible, Crawlora returns structured error context so your integration can retry, back off, or inspect the request.
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
{
"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/"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/congress.stockDisclosuresResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | congress.StockDisclosureResponse | No | ||||
| data.chamber | unknown | No | house | |||
| data.count | integer | No | 10 | |||
| data.fetched_at | string | No | 2026-08-07T10:00:00Z | |||
| data.from | string | No | 2018 | |||
| data.limit | integer | No | 50 | |||
| data.page | integer | No | 1 | |||
| data.query | string | No | Pelosi | |||
| data.results | array | No | ||||
| data.results[].filed_at | string | No | 2025-05-16 | |||
| data.results[].filing_type | string | No | FD Original | |||
| data.results[].filing_url | string | No | https://disclosures-clerk.house.gov/public_disc/financial-pdfs/2025/10075701.pdf | |||
| data.results[].filing_year | integer | No | 2025 | |||
| data.results[].member | string | No | Pelosi, Nancy | |||
| data.results[].office | string | No | CA12 | |||
| data.results[].year_kind | string | No | filing, election | filing | ||
| data.sort | string | No | filing_year_desc | |||
| data.source_url | string | No | https://disclosures-clerk.house.gov/FinancialDisclosure/ViewMemberSearchResult | |||
| data.to | string | No | 2025 | |||
| data.total | integer | No | 20 | |||
| msg | string | No | OK |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/congress/stock-disclosures?chamber=house&state=AK&senator_state=AK&candidate_state=AK&filer_type=member&report_type=annual&sort=name_asc&page=1&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"Crawlora is designed for responsible structured public web data workflows. Customers are responsible for using Crawlora in compliance with applicable laws, third-party rights, target-platform rules, and Crawlora terms.
Read Crawlora terms