VoteHub doesn't maintain its own database of polling places, ballots, or registration rules. Every lookup calls a live government or open-data source at the moment you search, or reads from a static dataset that's refreshed periodically. This page lists exactly which source backs each piece of information, and — for the sources tied to a specific election — roughly when real data typically becomes available.
This confused us for a long time, so it's worth stating plainly. Almost all official US election data flows through one free pipeline: county and state election officials publish to the Voting Information Project (VIP), which feeds Google's Civic Information API, which feeds this app and most other voting tools you've used. Participation is voluntary and per-election. Four consequences surprised us:
“Election is over”. So a state whose primary just finished looks identical to a state that never participated, until its next election is loaded in.None of this is a defect in this app, and none of it is fixable by querying harder — it's the shape of the free, official data supply that nearly every voting tool is built on. Wherever the official feed is silent, this app tells you so rather than guessing, and points you to your state's own election site.
These sources answer “where is this address” and “what are the rules,” which don't change on an election calendar. They're available every time you use the app.
| Data | Source | Notes |
|---|---|---|
| Address/zip → coordinates + congressional & state-legislative districts | U.S. Census Bureau Geocoder | Free, no API key. Doesn't match a bare 5-digit zip on its own — falls back to Nominatim for that case. |
| Bare zip → city/state/coordinates, and GPS → address | OpenStreetMap Nominatim | Free. A handful of zip codes (e.g. PO-box-only zips) aren't in OSM's postal-code data and won't resolve. |
| Voter registration rules, deadlines, and links | vote.gov open-source data | Ingested once per release for all 50 states + DC, not queried live. Refreshed periodically, not on every request. |
| Map tiles | OpenStreetMap | Free raster tiles. |
Polling places and ballots come from Google's Civic Information API, which in turn sources most of its data from election officials via the Voting Information Project. Officials publish this data on their own schedule, so it fills in gradually as an election approaches — it is not available year-round.
| Data | Source | When it's typically live | Shown until then |
|---|---|---|---|
| List of known upcoming elections | Google Civic Information API — electionQuery | As soon as Google/VIP loads the election into their system — varies by state. | A static fallback entry for the next general election. |
| Polling places, early-voting sites, ballot drop boxes | Google Civic Information API — voterInfoQuery | Generally the first thing to populate — in testing ahead of Arizona's July 21, 2026 primary, real locations were already live at least 13 days out. Requires a full street address; city/zip-only lookups won't match. | Nothing. We only ever plot real locations — the map shows just your own position until official ones are published. |
| Ballot contests & candidates | Google Civic Information API — voterInfoQuery | Publishes later than locations — in the same test, contest data still wasn't published 13 days before the election. Historically fills in during the final weeks before election day, and can be inconsistent between requests while officials are actively updating it. | A real ballot sourced directly from the state, where we have one (see below) — otherwise a labeled sample ballot. |
| Ballot measure full text & pro/con statements | Google Civic Information API — voterInfoQuery referendum fields | Same timing as contests, above. | A labeled sample measure. |
Six states don't participate in VIP at all — Google Civic has nothing for them, ever, for any address, including the November general. A further 31 publish voting locations through VIP but never ballot data — Google can tell those voters where to vote, but not what they're voting on. Rather than leave either group permanently on sample data, we check whether the state itself publishes an official candidate list in a usable format, and pull it directly when it does.
Sourced directly right now: 29 jurisdictions, 3,667 contests, 6,389 candidates. That's Alabama, Arkansas, Delaware, District of Columbia, Idaho, Illinois, Indiana, Iowa, Kentucky, Louisiana, Maine, Maryland, Minnesota, Mississippi, Montana, Nebraska, New Jersey, New Mexico, New York, North Carolina, North Dakota, Ohio, Oregon, South Carolina, South Dakota, Tennessee, Texas, Utah, and West Virginia. Every one is read from that jurisdiction's own official candidate list — whatever form the election office publishes it in, whether that's a spreadsheet, a CSV or JSON export, a search grid, or a certified PDF — and matched to your address using the same districts the Census geocoder resolves for every lookup.
Coverage is limited to races we can attribute to an address with confidence: statewide offices, U.S. House, and state legislative seats, plus a handful of local seats where the boundary happens to be one the geocoder returns — Washington, D.C.'s ward council seats, for instance. Texas additionally includes countywide local offices (County Judge, County Clerk, County Treasurer, District Clerk, County Attorney, Sheriff, Tax Assessor-Collector, and County Surveyor) matched by county FIPS code. Precinct-level offices, judicial districts, school boards and municipal races are deliberately left out, because their boundaries aren't ones we can resolve from an address and showing you the wrong race is worse than showing none. Each state's omissions are recorded alongside its data.
Before any jurisdiction goes live, its district labels are checked character-for-character against real geocoder responses, and the parsed names are cross-checked against officeholders known independently — a formatting mismatch as small as “District 01” versus “District 1” would silently match nothing. Voting locations follow the same real-data-only rule as everywhere else: a state we source directly may still show no map pins if it doesn't publish locations. The live table below shows exactly what's published right now, from either source.
Google Civic is still checked first, for every address, every time — this is additive, not a replacement. Directly-sourced state data only gets used when Google Civic has zero ballot contests for that address. If that ever changes for a state we also ingest directly, Google's data wins automatically.
Every search tries Google Civic first. Based on what comes back — and, where Google has nothing, whether we have a direct state source — the page runs in one of four modes, and always tells you which one you're in:
Nothing sample-generated is ever presented as real, and a banner on the page always names which mode you're in. See the Terms of Service for the full disclaimer on AI-generated content and data accuracy.
The tables above describe the general pattern. This one is not a description — it's checked live, right now, combining a real query against Google's Civic Information API with whatever we source directly from the states.
All 50 states + DC, checked live just now — Google Civic plus whatever we source directly from the states.
Checking live data availability for all 51…