Data dictionaries

Candidate

A person on the ballot, with the contests they run in, how to reach them, campaign finance and where they stand on issues.

Returned by
GET /v1/candidates, GET /v1/candidates/{id}
Found in
Choice (candidate)
Shapes
The full record is in GET /v1/candidates/{id}. The shorter forms in GET /v1/candidates and a choice’s candidate leave some fields out; a field that isn’t in every form says where it is.

How it connects

  • One candidate record per person: someone who runs in several elections has one id and a contest entry for each.
  • Each contest entry names the choice the candidate appears as, its district and election, and the endorsements they received there.
  • issue_positions are the same records as GET /v1/issue-positions?candidates={id}.

Good to know

  • name is split from full_name, so a part is null when the name has none.
  • ids.fec and finance are for federal candidates only; ids.bioguide only for people who have served in Congress.
  • contact is filled from public sources (Wikidata, Open States, FEC filings, official candidate lists and the campaign’s own site) and is empty where we have nothing yet. Each detail’s source is in contact.sources.
  • issue_positions is empty where we have none yet. Positions are never inferred from party or endorsements.

Fields

FieldTypeMeaningExample
idintegerCandidate id.5
full_namestringFull name.Xavier Becerra
nameobjectThe candidate’s name in parts, split from the full name.—
name.givenstringor nullGiven (first) name.Xavier
name.middlestringor nullMiddle name(s) or initials.Diaz
name.familystringor nullFamily (last) name, with particles such as “de la” or “Van”.Becerra
name.suffixstringor nullJr., Sr., II, III, …—
name.nicknamestringor nullThe name in quotes or parentheses on the ballot, e.g. “Bobby”.Hov
website_urlstringor nullURLCampaign website.—
photo_urlstringor nullURLA photo of the candidate.—
incumbentbooleanor nullHolds the seat now: true or false where we know, null where we don’t yet.Not in a choice’s candidate.true
idsobjectIds in other public systems.—
ids.fecstringor nullFederal Election Commission candidate id (U.S. House and Senate candidates).H6CA11268
ids.bioguidestringor nullCongressional Biographical Directory id (sitting members of Congress).M001225
contactobjectHow to reach the candidate: website and social accounts from Wikidata (CC0), an incumbent’s official contacts (Open States, CC0), the campaign committee’s address from its FEC filing, what official candidate lists and state campaign-finance filings publish, and what the campaign publishes on its own site, each with its source. Empty where we have nothing yet.—
contact.websitestringor nullURLWebsite, from Wikidata or (for an incumbent) the official site.https://www.conniechansf.com
contact.emailstringor nullEmail addressEmail: an incumbent’s official address, or what the campaign publishes.info@conniechansf.com
contact.phonestringor nullPhone: an incumbent’s office phone, or what the campaign publishes.(415) 340-0168
contact.mailing_addressstringor nullCampaign committee mailing address, from its FEC filing.330 N Brand Blvd Ste 700, Glendale, CA 91203
contact.socialobjectSocial accounts, from Wikidata, an incumbent’s official accounts, or the campaign’s own website. Only keys we found are present.—
contact.social.facebookstringoptionalURLFacebook page.https://facebook.com/conniechansanfrancisco
contact.social.xstringoptionalURLX (Twitter) account.https://x.com/conniechansf
contact.social.instagramstringoptionalURLInstagram account.https://instagram.com/connie_chan_sf
contact.social.youtubestringoptionalURLYouTube channel.https://www.youtube.com/@ConnieChanSF
contact.social.linkedinstringoptionalURLLinkedIn page.https://www.linkedin.com/in/scott-wiener-936760
contact.social.tiktokstringoptionalURLTikTok account.https://tiktok.com/@connie_chan
contact.social.threadsstringoptionalURLThreads account.https://www.threads.net/@scott_wiener
contact.social.blueskystringoptionalURLBluesky account.https://bsky.app/profile/scottwiener.bsky.social
contact.sourcesarray of objectWhere each contact detail came from.—
contact.sources[].urlstringURLWhere we read it.https://elections.cdn.sos.ca.gov/statewide-elections/2026-general/contact-list.pdf
contact.sources[].kindstringwikidata, open_states (the official contacts of an incumbent), fec_filing, official_filing (a state, county or city candidate list or campaign-finance filing) or campaign_website.wikidata, open_states, fec_filing, official_filing, campaign_website meaningsofficial_filing
contact.sources[].read_onstringYYYY-MM-DDWhen we read it.2026-11-13
financearray of objectFEC campaign finance totals, newest cycle first; empty for candidates without an FEC id.Only in GET /v1/candidates/{id}.—
finance[].cycleintegerTwo-year FEC cycle, by its last year: 2026 = 2025–2026.Only in GET /v1/candidates/{id}.—
finance[].committee_idstringor nullPrincipal campaign committee’s FEC id.Only in GET /v1/candidates/{id}.—
finance[].receiptsnumberTotal receipts, dollars.Only in GET /v1/candidates/{id}.—
finance[].disbursementsnumberTotal disbursements, dollars.Only in GET /v1/candidates/{id}.—
finance[].cash_on_handnumberCash on hand at coverage_end, dollars.Only in GET /v1/candidates/{id}.—
finance[].debtsnumberDebts owed by the campaign, dollars.Only in GET /v1/candidates/{id}.—
finance[].individual_contributionsnumberor nullContributions from individuals, dollars.Only in GET /v1/candidates/{id}.—
finance[].coverage_endstringor nullYYYY-MM-DDThe date the totals run through.Only in GET /v1/candidates/{id}.—
finance[].source_urlstringURLThe FEC page for these totals.Only in GET /v1/candidates/{id}.—
contestsarray of objectThe contests they’re on that you can read, newest election first, each with the endorsements received.Not in a choice’s candidate.—
contests[].contestobjectThe contest.Not in a choice’s candidate.—
contests[].contest.idintegerContest id.Not in a choice’s candidate.57
contests[].contest.titlestringTitle as printed on the ballot.Not in a choice’s candidate.Governor
contests[].contest.kindstringcandidate or retention.candidate, measure, retention meaningsNot in a choice’s candidate.candidate
contests[].contest.vote_methodstringHow votes are cast.plurality, multi_seat, ranked_choice, approval, yes_no meaningsNot in a choice’s candidate.plurality
contests[].contest.votes_allowedintegeror nullVote for N.Not in a choice’s candidate.1
contests[].contest.ranks_allowedintegeror nullRanked choice: how many choices a voter may rank.Not in a choice’s candidate.—
contests[].contest.officeobjector nullThe office the contest fills.Not in a choice’s candidate.—
contests[].contest.office.typestringThe office, normalized across states: us_representative, governor, state_senator, mayor, school_board, trial_court, sheriff, …51 values: meaningsNot in a choice’s candidate.governor
contests[].contest.office.levelstringLevel of government the office belongs to (state courts are state, whatever district they sit in).federal, state, local meaningsNot in a choice’s candidate.state
contests[].contest.office.branchstringBranch of government.executive, legislative, judicial meaningsNot in a choice’s candidate.executive
contests[].contest.race_typestringor nullregular, special, recall or retention.regular, special, recall, retention meaningsNot in a choice’s candidate.regular
contests[].districtobjectThe district the contest is voted in.Not in a choice’s candidate.—
contests[].district.idintegerDistrict id.Not in a choice’s candidate.1
contests[].district.ocd_idstringor nullOpen Civic Data division id.Not in a choice’s candidate.ocd-division/country:us/state:ca
contests[].district.namestringDistrict name.Not in a choice’s candidate.California
contests[].district.levelstringLevel of government.federal, state, county, city, school, special meaningsNot in a choice’s candidate.state
contests[].district.statestringor nullTwo capital letters (USPS code)USPS state code.Not in a choice’s candidate.CA
contests[].electionobjectThe contest’s election.Not in a choice’s candidate.—
contests[].election.idintegerElection id.Not in a choice’s candidate.1
contests[].election.slugstringElection slug.Not in a choice’s candidate.ca-2026-11-03-general
contests[].election.namestringElection name.Not in a choice’s candidate.California General Election
contests[].election.datestringYYYY-MM-DDElection day.Not in a choice’s candidate.2026-11-03
contests[].choiceobjectThe line the candidate appears on in this contest.Not in a choice’s candidate.—
contests[].choice.idintegerChoice id.Not in a choice’s candidate.13
contests[].choice.labelstringThe name as printed.Not in a choice’s candidate.Xavier Becerra
contests[].choice.ballot_designationstringor nullOccupation line printed under the name.Not in a choice’s candidate.Voting Rights Attorney
contests[].choice.withdrawnbooleanWithdrew but still printed.Not in a choice’s candidate.false
contests[].choice.partyPartyor nullThe party printed beside the name.Not in a choice’s candidate.—
contests[].choice.party_labelstringor nullThe party text exactly as printed, where it differs.Not in a choice’s candidate.—
contests[].choice.resultobjector nullThe candidate’s votes and whether they won, once the contest has a result.Not in a choice’s candidate.—
contests[].choice.result.votesintegeror nullVotes for this choice. null only on a party-reported result, which names a winner without counts.Not in a choice’s candidate.8124241
contests[].choice.result.vote_pctnumberor nullShare of the contest’s votes, 0 to 100, as the source gives it (three decimals).Not in a choice’s candidate.65.728
contests[].choice.result.winnerbooleanor nulltrue for a winner (for vote-for-N, each of the N), false for a choice that lost; null when not decided yet or not stated, such as a race headed to a runoff.Not in a choice’s candidate.true
contests[].resultContest resultor nullThe contest’s result, once a source has one.Not in a choice’s candidate.—
contests[].endorsement_countintegerEndorsers who endorsed this candidate in this contest.Not in a choice’s candidate.50
contests[].endorsementsarray of EndorsementEvery endorsement they received in this contest, by endorser name.Only in GET /v1/candidates/{id}.—
issue_positionsarray of Issue positionWhere they stand on common issues (GET /v1/issues), in issue order, each with its sources. Empty where we have none yet.Only in GET /v1/candidates/{id}.—

Download every dictionary as CSV or JSON.

Candidate data dictionary · BallotData API