Official sources first Providers when needed Limits stated

Data sources

Data sources

Ballot Clarity uses official election sources first, then supporting civic-data systems when official material needs context. This page explains what each source class is used for and where its limits are.

Updated Apr 24, 2026, 8:00 AM

Read methodology
Core source rules
  • Publish official election logistics when official county and statewide resources are reviewed.
  • Do not publish contest, candidate, or measure dossiers until Fulton-specific source records are verified.
  • Keep route availability separate from verified local contest-package availability.

Ballot-content data providers

Provider ballot data is useful, but it is not the final ballot.

Review before publish

Connected provider records can help populate ballot previews, but a local guide is not considered verified until official state or county ballot tools and the review workflow confirm it.

Provider option Connected

Google Civic Information API

Official-source voter-information lookup, polling places, early voting, drop-off sites, and provider ballot previews where Voting Information Project data exists.

Capabilities, limits, and access

Capabilities

  • election IDs
  • polling places
  • early vote sites
  • drop-off locations

Limits

  • Coverage is limited to supported elections and addresses.
  • Provider ballot previews still need local review before Ballot Clarity treats them as a verified local guide.

Access status: Ballot Clarity can use this provider when its data is relevant.

Nonprofit provider Needs partner access

CTCL Ballot Information Project

Trusted national ballot backbone once CTCL grants direct Ballot Information Project access.

Capabilities, limits, and access

Capabilities

  • address-and-election ballot lookup
  • candidate records
  • referenda
  • OCD-ID geography linkage

Limits

  • Direct API access is not public self-serve.
  • Ballot Clarity needs a granted endpoint or data delivery before this connector can run.

Access status: Ballot Clarity is not currently using this provider for live ballot data.

Nonprofit provider Not connected

Ballotpedia API

Races, candidates, and ballot measures by location point or state/election date.

Capabilities, limits, and access

Capabilities

  • elections by latitude and longitude
  • elections by state
  • races
  • candidate lists

Limits

  • Returned fields can depend on the purchased API package.
  • Production browser-origin usage may require domain whitelisting by Ballotpedia.
  • Ballot Clarity still needs official-source verification before publishing a reviewed local guide.

Access status: Ballot Clarity is not currently using this provider for live ballot data.

Provider option Needs partner access

BallotReady CivicEngine

Turnkey voter-guide style ballot matching, candidate profiles, issue content, and logistics if the licensing terms fit Ballot Clarity.

Capabilities, limits, and access

Capabilities

  • GraphQL ballot data
  • candidate profiles
  • candidate issue content
  • ballot measures

Limits

  • Requires a partner account, endpoint, and pricing agreement.
  • Republishing provider-authored profiles or issue content needs licensing review.

Access status: Ballot Clarity is not currently using this provider for live ballot data.

Nonprofit provider Not connected

Democracy Works Elections API

Election dates, deadlines, voting guidance, and Ballotpedia-sourced ballot data where Democracy Works coverage includes it.

Capabilities, limits, and access

Capabilities

  • election discovery by address
  • dates and deadlines
  • voting guidance
  • ballot measures with includeBallotData

Limits

  • Ballot data is not the default response and must be requested with includeBallotData=true.
  • Local ballot coverage can be limited by provider mapping constraints.
  • Ballot data is sourced from Ballotpedia, so provenance should not be presented as independent official verification.

Access status: Ballot Clarity is not currently using this provider for live ballot data.

Source categories

What each source class is used for

Source hierarchy

Most readers only need the rule and the current use case. Expand a source class if you want provider details, limits, and links.

Address and district lookup

A live Ballot Clarity build should treat district assignment as its own subsystem, with versioned geography and explicit as-of timestamps.

Authoritative rule

District assignment should be grounded in official geography, not inferred from a vendor profile alone.

Live approach

Use Census geocoding plus versioned district boundaries, then cache address-to-jurisdiction matches with benchmark or vintage metadata.

Official source Planned live source

Census Geocoder with geoLookup

Baseline address normalization and geography lookup for a defensible district-assignment pipeline.

Access

API

Coverage

United States, Puerto Rico, and U.S. island areas

Update pattern

Versioned by benchmark and vintage

Best use: Address-to-jurisdiction matching and cached district lookup.

  • Keep benchmark and vintage in cache keys so district assignments remain auditable.
  • Treat geocoding as a high-risk dependency and design a stale-cache fallback.
Official source Planned live source

TIGER/Line shapefiles

Versioned geometry layer for districts, places, and other jurisdiction boundaries.

Access

Bulk files

Coverage

National district and administrative boundaries

Update pattern

Released by vintage year

Best use: Offline district joins, reproducible geography snapshots, and geospatial audits.

  • Useful when the product needs to explain which district model was in force on a given date.
  • Should stay separate from election-office content and polling-place feeds.
Provider option Reference pattern

Google Civic Divisions lookup

Useful as an OCD-ID bootstrap, but not a substitute for canonical district storage.

Access

API

Coverage

Supported U.S. elections and OCD-ID lookup flows

Update pattern

Provider-controlled

Best use: Supplemental division lookup after the Representatives API sunset.

  • The Google Civic Representatives API ended on April 30, 2025.
  • District lookup should stay decoupled from any provider-specific official lookup endpoint.

Ballots, deadlines, and polling places

Election logistics change quickly, so Ballot Clarity relies on official election offices plus national providers for scale.

Authoritative rule

Election-office notices remain the final authority for deadlines, polling-place changes, and ballot-return instructions.

Live approach

Store official notices as the verification layer, then use a provider-normalized ballot API for address-to-ballot lookup and contest packaging.

Official source Planned live source

Official election office notices and VIP-style feeds

Primary authority for deadlines, polling locations, drop boxes, and final ballot instructions.

Access

Official notices or standardized feed publishing

Coverage

State and local election logistics

Update pattern

High-frequency during election windows

Best use: User-facing verification links, change logs, and last-mile corrections.

  • Polling-place changes should degrade to cached data with a visible may-be-stale warning if an upstream feed fails.
  • The HTML location hub should always link back to the election office before a user prints or travels.
Nonprofit provider Planned live source

National elections provider (Democracy Works-style)

Fastest path to national ballot and polling-place coverage without bespoke county-by-county scraping.

Access

API

Coverage

Federal, state, county, municipal, and other local elections

Update pattern

Continuously refreshed by provider pipeline

Best use: Ballot packaging, election calendars, and personalized lookup at national scale.

  • Provider data should not replace official links; it should normalize and distribute them.
  • Keep provider-specific field mapping isolated behind an internal ballot service.
Provider option Reference pattern

Commercial ballot matching provider (BallotReady-style)

Useful when a faster turnkey ballot product matters more than owning the normalization layer internally.

Access

API or export

Coverage

Personalized ballots, contests, measures, and voting logistics

Update pattern

Provider-controlled refresh

Best use: High-velocity partnerships or embedded ballot widgets.

  • Treat vendor provenance and licensing as product decisions, not just engineering details.
  • Still keep official election-office links visible on every logistics surface.

Candidate lists, filings, and ballot text

Candidate and measure surfaces should combine official filing lists with clearly labeled candidate-supplied and nonprofit-context layers.

Authoritative rule

Official filing lists and certified ballot text outrank campaign or nonprofit summaries.

Live approach

Store official candidate lists and ballot text as the base record, then layer questionnaires or explanatory summaries with explicit provenance labels.

Official source Planned live source

Official candidate filing lists and certified ballot text

Canonical ballot-status, office, and text layer for contests and measures.

Access

Official notices, PDFs, HTML pages, or exports

Coverage

Federal, state, and local election records where available

Update pattern

Election-window updates plus certification changes

Best use: On-ballot verification, official wording, and candidate roster checks.

  • Local formats will vary widely, so connectors must tolerate PDFs, HTML tables, and manual corrections.
  • Candidate status should surface an as-of timestamp and the source system used to verify it.
Nonprofit provider Reference pattern

Nonprofit questionnaires and civic records

Useful for comparable issue statements when official records alone do not explain a candidate's stated priorities.

Access

Questionnaire archive or civic data feed

Coverage

Selected races and issue areas

Update pattern

Per questionnaire cycle

Best use: Side-by-side compare tables and clearly labeled candidate-submitted answers.

  • Candidate-submitted material should never be mistaken for verified official text.
  • Missing responses should be shown explicitly instead of omitted.

Campaign finance and lobbying

Money and influence modules should come from independent federal pipelines so failures there cannot block ballot lookup.

Authoritative rule

Federal money and lobbying sections should resolve back to the official disclosure system, not a derivative summary alone.

Live approach

Ingest these domains separately from election lookup, then join them onto candidate pages through stable IDs and manual crosswalks where necessary.

Official source Planned live source

FEC OpenFEC API and bulk files

Authoritative federal finance layer for candidates, committees, filings, and contribution patterns.

Access

API and bulk files

Coverage

Federal campaign finance only

Update pattern

Nightly refresh with cached responses

Best use: Candidate funding overviews, committee context, and reproducible finance snapshots.

  • Treat the FEC cache window as part of freshness logic rather than assuming continuous real time.
  • Use bulk files for warehousing and API calls for interactive page queries.
Official source Planned live source

Senate LDA and LDA.gov disclosures

Authoritative federal lobbying layer for registrants, clients, and filed reports.

Access

API and bulk files

Coverage

Federal lobbying disclosures

Update pattern

Quarterly filings plus current-year reports

Best use: Lobbying context sections and independent influence pipelines.

  • Keep the Senate LDA integration isolated so endpoint migrations do not affect ballot lookup.
  • The older lda.senate.gov docs path is scheduled to retire after June 30, 2026.

Historical results and research archive

Historical datasets are useful for analysis and context, but they should stay out of the critical path for where-do-I-vote workflows.

Authoritative rule

Research and historical context should be clearly labeled as archival or analytical, not as a live logistics source.

Live approach

Store these datasets in a separate analytics layer so archival work does not interfere with election-day reliability.

Open data Research layer

OpenElections

Useful for historical results warehousing and state-by-state archive work.

Access

Bulk repository files

Coverage

Historical election results by state and year

Update pattern

Community-maintained

Best use: Election history, comparison context, and analytics backfills.

  • Not a replacement for current polling-place or ballot lookup.
  • Parser quality and completeness will vary by state and cycle.
Open data Research layer

MIT Election Data and Science Lab

High-value archive layer for benchmarking and public-interest analysis work.

Access

Bulk datasets

Coverage

Research-grade election history and related datasets

Update pattern

Dataset-specific releases

Best use: Longitudinal research, modeling, and historical context pages.

  • Keep these datasets behind an analytics boundary, not in the critical request path.
  • Useful once Ballot Clarity adds post-election archive and results views.