Campaign finance & influence
FEC Candidates
Returns FEC-registered candidate profiles (House, Senate, President) and — when include_committees=true (default) — each candidate's associated FEC committees in the same response. Use this when the user asks about: who's running in race X, the campaign finance ID for a member, what PAC is sponsoring a candidate, or to bridge from a Congressional member name.
Endpoint
GET /v1/fec-candidate-profileSourceFEC candidates + committees
Authx-api-key — a free key works
What it returns
One record per result. Fields (from a live response):
- Identity —
candidate_status,office,office_full,candidate_id,district,name,state,district_number,party,candidate_inactive,party_full - Dates —
first_file_date,election_years,last_file_date,scraped_at,load_date - Provenance —
fec_url - Details —
incumbent_challenge,cycles,active_through,committees
Filters
| candidate_id | FEC-assigned candidate ID (immutable across cycles), e.g., 'S6PA00091' for Pat Toomey, 'P80003338' for Mitt Romney's 2008 presidential bid. Direct… |
| candidate_name | Case-insensitive substring against the FEC-filed candidate name (typically LASTNAME, FIRSTNAME format). Example: 'mccormick' or 'collins'. |
| office | Office code: H=House, S=Senate, P=President. Narrows ambiguous name matches. |
| state | 2-letter state abbreviation (e.g., 'PA', 'CA'). Empty for President. Combine with office=S to find the senators from a state. |
| district | House district as 2-digit string ('01'-'53') or 'AL' for at-large. Senate/President leave blank. |
| party | Party code: DEM | REP | LIB | GRE | IND | OTH. |
| cycle | Election cycle year (e.g., 2026). Returns candidates whose cycles[] includes this value. Common cycles: 2022, 2024, 2026. |
| active_only | When true, restricts to candidate_inactive=false (currently active filers). Default false (includes withdrawn / defeated / inactive). |
| include_committees | When true (default), each returned candidate is enriched with a `committees` array containing all FEC committees linked via candidate_ids[]. The… |
| sort_by | Sort key. Default: last_file_date (most recent first). |
| sort_order | Default: desc. |
| limit | Maximum candidates to return. Default 50, max 500. |
Example request
curl "https://api.keyvex.com/v1/fec-candidate-profile?limit=1" \
-H "x-api-key: YOUR_KEY"
Response
{
"results": [
{
"incumbent_challenge": "O",
"candidate_status": "C",
"cycles": [
2026
],
"office": "S",
"office_full": "Senate",
"first_file_date": "2025-08-18",
"candidate_id": "S6AL00476",
"district": "00",
"name": "MOORE, FELIX BARRY",
"state": "AL",
"active_through": 2026,
"election_years": [
2026
],
"district_number": 0,
"party": "REP",
"candidate_inactive": false,
"fec_url": "https://www.fec.gov/data/candidate/S6AL00476/",
"party_full": "REPUBLICAN PARTY",
"last_file_date": "2026-06-18",
"scraped_at": "2026-06-21T10:30:04.565Z",
"load_date": "2026-06-18T20:57:48",
"committees": [
{
"committee_type_full": "Senate",
"organization_type_full": "",
"cycles": [
2020,
2022,
2024,
2026
],
"treasurer_name": "LAPRADE, SHAG",
"first_file_date": "2019-09-23",
"filing_frequency": "Q",
"sponsor_candidate_ids": [],
"designation_full": "Principal campaign committee",
"organization_type": "",
"designation": "P",
"state": "AL",
"candidate_ids": [
"H8AL02171",
"S6AL00476"
],
"committee_id": "C00720375",
"party": "REP",
"fec_url": "https://www.fec.gov/data/committee/C00720375/",
…
}
],
"count": 1,
"has_more": true
}
Example questions you can answer
- Look up a candidate and their principal committees.
- Candidates running in a given cycle and office.
Related datasets
Query FEC Candidates from your AI
Hand any AI your key + the OpenAPI spec and it can pull this dataset directly. Free key = full data, 60 requests/day.
Get a free key OpenAPI spec → REST docs →