BallotData API

Nationwide endorsement data, as an API

The only source of AI-optimized endorsement and election data. BallotData collects endorsements nationwide and makes them available to researchers and their AI tools. The API answers in JSON with every endorsement we have in the states you buy, tied to the contest and choice on the printed ballot, with the elections, candidates, measures and endorsers behind them, and our MCP server lets Claude, ChatGPT and other assistants query it for you.

What every endorsement record includes

Election and contest
The election, the office or measure, its district, and its voting rules: vote for one, vote for several, ranked choice, or Yes or No.
Ballot choice
The candidate or answer as it appears on the printed ballot, with party labels where the state prints them.
Endorser
Who endorsed, with a category (party, labor, newspaper, advocacy group, official and more) you can filter on.
Source
The link the endorsement came from, the date it was published and, where there is one, the endorser’s own statement.

The same fields in every state, so one query can span the country. Officeholders and district boundaries are in the API too.

Pricing

Per state, or every state we cover for one price. One payment, licensed through December 31, 2027, with every endorsement we add until then.

API, national

$4,999 through Dec 31, 2027

every state we cover

The nationwide endorsement dataset: every state we cover, with the elections, contests, candidates, measures and endorsers behind it, through December 31, 2027.

Buy API, national

A first request

curl -H "Authorization: Bearer $BALLOTDATA_KEY" \
  "https://api.ballotdata.ai/v1/endorsements?states=CA&categories=labor"

Or from Python, with the ballotdata package:

from ballotdata import BallotData

client = BallotData()  # reads BALLOTDATA_API_KEY
for e in client.endorsements.list(states="CA,TX", categories="newspaper", limit=500):
    print(e["endorser"]["name"], e["contest"]["title"], e["choice"]["label"])

Choose your API password at checkout. Once you’ve paid, your API account opens on its own: confirm your email address, sign in and create keys, which read the states you bought. The reference at api.ballotdata.ai lists every endpoint, its parameters and its responses, and the libraries page covers Python and JavaScript.

New The only MCP server for U.S. endorsement data

Connect your AI to BallotData

Our MCP server is the best way to bring BallotData into Claude, ChatGPT and other AI assistants. Ask in plain language who endorsed a candidate, what a union or newspaper endorsed, or what changed this week, and your assistant looks it up through your own API account, in the states you bought.

Included with every API purchase, at no extra cost. How to connect

Server address

https://mcp.ballotdata.ai/mcp

Add it as a custom connector (MCP) in Claude, ChatGPT or your AI tool, then sign in with your BallotData API email and password.

BallotData API · BallotData