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)
| Endpoint | Returns |
|---|---|
GET /api/v1/elections | Elections 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.