Mock · placeholder data · not real ballot information · ThinkBallot demo
Developers · journalists · researchers

The ballot, as an API

The same grounded, cited dataset that powers this site — versioned, documented, and free. ThinkBallot is civic data infrastructure: build voter tools, run analyses, embed ballot cards. Keys are free; limits are generous; citations come with every field.

Endpoints (v1)

EndpointReturns
GET /api/v1/electionsElections available in this instance's dataset
GET /api/v1/ballot?address=…Resolved districts + the ballot items in scope (address is resolved, never stored)
GET /api/v1/items/{id}One full card: summary, yes/no, arguments, fiscal, candidates — every field with source ids
GET /api/v1/search?q=…&topic=…&feature=…Filtered + full-text search over the grounded dataset

Sample response

GET /api/v1/items/prop-61 · 200 OK

{
  "id": "prop-61",
  "election": "2026-11-03-ca-general",
  "type": "measure",
  "title": "Proposition 61: Community College Facilities Bond",
  "plain_summary": "Authorizes $8 billion in state bonds…",
  "yes_means": "The state may borrow $8 billion…",
  "fiscal_impact": { "text": "About $460 million per year…", "source": "src-lao" },
  "sources": [
    { "id": "src-sos", "label": "Official Voter Information Guide", "url": "https://…" },
    { "id": "src-lao", "label": "Legislative Analyst's Office", "url": "https://…" }
  ]
}

Every generated field carries a source id — the cite-or-omit guarantee is part of the API contract, not just the website.

Get a key

Free forever for civic use. Rate-limited per key; versioned so your integration doesn't break.