Developer API
Structured FEC data via REST API. Live 2026 election tracking, 538 current members, 13.8M+ FEC contributions. Votes updated daily, races and members weekly, contributions monthly.
Quick Start
Get your first result in 30 seconds. No credit card required.
1. Get your API key
2. Make your first request
Example Response
All endpoints return { success, data, meta }. Paginated responses include meta.count, meta.offset, and meta.limit (default 20, max 100). All keys are prefixed wbr_.
{
"success": true,
"data": [
{
"bioguide_id": "W000790",
"name": "Warnock, Raphael G.",
"party": "Democratic",
"state": "GA",
"chamber": "senate",
"total_raised": 338000860.99,
"total_funding": 411638341.95,
"pac_percent": 0.91,
"small_donor_percent": 68.4,
"ie_support_total": 73637480.96,
"grassroots_chamber_rank": 2
}
],
"meta": { "count": 2, "offset": 0, "limit": 20 }
}Note: pac_percent and small_donor_percent are already percentages (e.g. 0.91 = 0.91%, not 91%).
Endpoints
Base URL: https://whoboughtmyrep.com/api/v1
| Endpoint | Tier | Description | Parameters |
|---|---|---|---|
GET /reps | Free | List & search current members of Congress | q, state, chamber, party, limit, offset |
GET /reps/{id} | Free | Full politician profile + top industries | id = bioguide_id |
GET /reps/{id}/committees | Free | Congressional committee memberships | none (id in path) |
GET /challengers | Free | Challenger & candidate data (default: 2026 cycle) | state, office, party, cycle, incumbent_challenge (I/C/O), limit, offset |
GET /industries | Free | Industry funding overview across all members | limit |
GET /elections | Free | 2026 race data with funding totals | state, office, cook_rating, limit, offset |
GET /reps/{id}/donors | Pro | Paginated individual donor list | limit, offset |
GET /reps/{id}/pac-donors | Pro | PAC contributions to a politician | limit, offset |
GET /reps/{id}/industry-votes | Pro | Industry money → voting record connections | industry, limit, offset |
GET /reps/{id}/votes | Pro | Individual voting record | limit, offset |
GET /donors/search | Pro | Search donors by name across all members | q, limit |
GET /pacs/{id} | Pro | PAC profile + top funders | id = FEC committee ID |
GET /reps/{id}/independent-expenditures | Enterprise | Outside spending for/against a politician | sup_opp (S=support, O=oppose), cycle, limit, offset |
GET /roll-calls | Enterprise | Full roll call votes with party breakdowns | chamber, congress, vote_category, limit, offset |
Authentication
Pass your API key in the x-api-key header with every request.
Rate Limits
Limits reset at midnight UTC. Rate limit headers are included in every response.
| Tier | Rate Limit | Price |
|---|---|---|
| Free | 100 requests/day | $0 |
| Pro | 5,000 requests/day | $49/mo |
| Enterprise | Unlimited | $199/mo |
Error Responses
Errors return a JSON body with an error field and the appropriate HTTP status code.
401 { "error": "Invalid or missing API key" }
403 { "error": "Pro or Enterprise tier required..." }
429 { "error": "Too Many Requests" } // + Retry-After header
500 { "error": "Query failed" }Data Notes
All data is sourced from the Federal Election Commission (FEC) and Congress.gov. Campaign finance data covers the 2020 cycle through present.
total_funding = total_raised + ie_support_total. Use this as the denominator for percentage calculations, not total_raised alone.
Industry attribution traces every dollar back through PAC hops. total_attributed is campaign-only (direct + PAC hops). IE spending is in ie_attributed_support_total separately.
Donations under $200 are not individually itemized by the FEC. small_donor_total reflects the aggregate from FEC summary filings.
Names are stored in FEC format: Last, First M.