Developers and partners
Newsrooms, libraries, schools, employers and civic apps can reuse everything here, free, with attribution.
Upcoming elections and the next deadline for any state, county, city or district. It renders in its own shadow root, so your styles and ours never collide.
<div data-every-election="ocd-division/country:us/state:ok/county:cleveland"
data-theme="auto" data-limit="3"></div>
<script async src="https://everyelection.app/embed.js"
data-api="https://api.everyelection.app" data-site="https://everyelection.app"></script>data-theme: light, dark, or auto (follows the reader’s system).data-limit: 1 to 10 elections (default 3).Subscribe once in Google Calendar, Apple Calendar or Outlook; the feed updates as offices publish.
https://api.everyelection.app/ics/division/ocd-division/country:us/state:ok/county:cleveland.ics
https://api.everyelection.app/ics/divisions/{ocd_id},{ocd_id},….ics (up to 40 jurisdictions)
https://api.everyelection.app/ics/election/{id}.icsUniversities and employers can publish one combined feed for the counties their people live in.
Cacheable public endpoints. Please cache and be gentle; whole-state exports are rate-limited.
Base URL https://api.everyelection.app. Jurisdictions use Open Civic Data division ids.
Address lookups and bulk election queries for apps, with a per-key rate limit.
curl -H "x-api-key: $KEY" -X POST https://api.everyelection.app/v1/resolve \
-H "content-type: application/json" -d '{"address":"201 W Gray St, Norman, OK"}'
curl -H "x-api-key: $KEY" "https://api.everyelection.app/v1/elections?division_ids=ocd-division/country:us/state:ok/county:cleveland"Keys are issued on request. Request one with a line about what you are building.
Keep it accurate and keep it neutral.