One canonical record for every U.S. race, candidate, and ballot measure. Politify reconciles federal filings, state filings, and every major reference graph — so your team skips the data cleanup and ships the product.
FEC, 50 state SOS feeds, city clerk filings, AP, DDHQ, and MEDSL get reconciled into a single canonical graph — with every name variant, every source ID, and every stage of every race preserved underneath. You query one API. The normalization stays out of your way.
Every form from every source is stored exactly as it arrived. Ingestion is append-only — nothing is ever silently edited or deleted.
Race and person identifiers rebuild the same row across cycles, stages, and sources. Nickname and alias normalization happens at ingest time.
Canonical answers on top, every source-of-truth ID and name alias one join away. The evidence never disappears.
A candidate name, a race description, a state + office — Politify resolves it to the canonical record with a confidence score. This is the live API. No mocks, no canned data.
From U.S. Senate down to city council — Politify normalizes contests at federal, state, and local levels across 1,000+ cities in all 50 states and 27 states with ballot measure coverage. All from primary sources, not aggregators.
Politify is the data layer underneath the workflows political teams already run — identity, enrichment, media, and reporting — with the cleanup step removed.
Map any candidate or race record to a canonical ID that survives the next cycle. Your crosswalks stop breaking. Your ops team stops rebuilding joins.
Connect media planning, creative tracking, and ad-library scraping to the actual race and candidate — across Meta, Google, and broadcast data.
Paste a candidate name, a partial district, a date range — get a scored canonical match back with full provenance. No manual reconciliation step.
Compare 2024 to 2026 to 2028 without rewriting match logic every time a new filing source lands in your stack.
Pass a race ID. Get back every canonical candidate across every stage, with party affiliation, incumbency, and the full alias graph for downstream fuzzy matching.
curl https://api.politify.ai/v1/races/g1~US~USPRES~us~1789/candidates \ -H "X-Politify-Api-Key: pk_live_..."
{
"contest_group_id": "g1~US~USPRES~us~1789",
"race_name": "U.S. Presidential Election",
"candidate_count": 3,
"candidates": [
{
"person_id": "p1:washington:george:va:a1b2c3",
"full_name": "George Washington",
"party_code": "IND",
"is_incumbent": false,
"aliases": [
"George Washington",
"Gen. Washington",
"G. Washington"
],
"stage_participation": [
{ "stage": "GENERAL", "election_date": "1789-01-07" }
]
}
]
}Everything a product team needs to build on political data — race identity, candidate identity, name variants, external ID bridges, stage timelines, freshness — behind one versioned API.
Deterministic identifiers that survive across primaries, runoffs, and generals. Join once, stay joined.
One record per human, nickname-aware. Abe, Abraham, and A. Lincoln all resolve to the same ID.
Every variant of every candidate's name, with full source attribution — drives fuzzy matching everywhere downstream.
Look up any person by FEC, AP, DDHQ, Ballotpedia, or state SOS ID and get the same canonical row back.
Who appeared on which stage — primary, runoff, general, special — with election dates and ballot order preserved.
Every race exposes a last-updated timestamp. Pull nightly to detect new filings, withdrawals, or roster changes.
Every name, every alias, every source ID is preserved with full provenance. The canonical answer sits on top — the evidence is always one join away.
Deterministic race and person IDs survive cycle rollovers. Crosswalks you build in 2024 still resolve in 2026 without manual fixups.
Raw filings are append-only — nothing is ever silently edited or deleted. You always have a path back to the originating record.
Request access and plug your product into a canonical source of truth. Invite-only for the current cycle — tell us what you’re building and we’ll reply within 48 hours.