Loading CIV.IQ
Preparing your civic information dashboard
Preparing your civic information dashboard
Migration Guide
Google turned off the Representatives API in March 2025. CIV.IQ is a free, open-source replacement with the same data, better coverage, and no API key.
On March 25, 2025, Google shut down the representativeInfoByAddress and representativeInfoByDivision endpoints from the Civic Information API. These were the most-used endpoints for civic apps — the core “enter your address, see your representatives” feature.
The Elections and Divisions endpoints remain active, but the representative lookup that powered thousands of civic apps is gone. Commercial alternatives like Cicero start at $100+/month. CIV.IQ is free.
| Feature | Google Civic | CIV.IQ |
|---|---|---|
| Address-to-reps lookup | Shut down | Free, no key |
| Federal legislators | Shut down | 535 members, updated hourly |
| State legislators | Shut down | 7,383 via OpenStates |
| Contact info | Phone, email, website | Phone, email, website, office address |
| Social media | Twitter, Facebook, YouTube | Twitter, Facebook, YouTube, Instagram, Mastodon |
| Photo URLs | Yes | Yes |
| Committees | No | Yes, with roles |
| Voting records | No | Yes, roll call votes |
| Campaign finance | No | Yes, FEC data |
| District demographics | No | Yes, Census ACS |
| API key required | Yes | No |
| Rate limit | 25,000/day | 60/min per IP |
| Price | Free (was) | Free |
Direct mapping from Google Civic Info API endpoints to CIV.IQ equivalents.
| Google Endpoint | Status | CIV.IQ Equivalent | Notes |
|---|---|---|---|
/civicinfo/v2/representatives | Shut down | POST /api/intelligence/address/representatives | Full address lookup — resolves exact congressional district via Census Geocoder |
/civicinfo/v2/representatives/{ocdId} | Shut down | GET /api/v1/representatives?state={ST} | Filter by state, chamber, party. Use /api/representatives/by-district for district-specific lookup. |
/civicinfo/v2/elections | Active | GET /api/elections/2024 | Election results by type (house, senate, governor, president) and geography |
/civicinfo/v2/voterinfo | Active | Not available | Polling locations not yet available. Use vote.org or your state election board. |
/civicinfo/v2/divisions | Active | GET /api/districts/all | All 435 congressional districts with demographics, representatives, and Cook PVI |
/civicinfo/v2/divisionsByAddress | Active | POST /api/geocode | Address or coordinates to congressional district + state legislative districts |
Before (Google — no longer works)
// Google Civic Info API (SHUT DOWN March 2025)
const API_KEY = "YOUR_GOOGLE_API_KEY";
const address = "1600 Amphitheatre Parkway, Mountain View, CA";
const res = await fetch(
`https://www.googleapis.com/civicinfo/v2/representatives?` +
`key=${API_KEY}&address=${encodeURIComponent(address)}`
);
const data = await res.json();
// Navigate the offices→officials index structure
const officials = data.offices.flatMap(office =>
office.officialIndices.map(i => ({
office: office.name,
level: office.levels?.[0],
...data.officials[i],
}))
);After (CIV.IQ — works now)
// CIV.IQ — Free, no API key
const res = await fetch(
"https://civdotiq.org/api/intelligence/address/representatives",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
street: "1600 Amphitheatre Parkway",
city: "Mountain View",
state: "CA",
}),
}
);
const data = await res.json();
// Direct access — no index indirection
const reps = data.representatives;
// [{ bioguideId, name, party, state, district, chamber, ... }]// List all members of Congress
const res = await fetch(
"https://civdotiq.org/api/v1/representatives?state=CA&chamber=house"
);
const { data } = await res.json();
// [{ bioguideId, name, party, district, phone, website, ... }]// Detailed legislator profile (committees, social media, bio)
const res = await fetch(
"https://civdotiq.org/api/representative/P000197"
);
const rep = await res.json();
// { name, party, committees, socialMedia, contactInfo, terms, ... }// Address to district (replaces divisionsByAddress)
const res = await fetch(
"https://civdotiq.org/api/geocode",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
mode: "address",
address: "100 Congress Ave, Austin, TX 78701",
}),
}
);
const { district, representatives } = await res.json();
// district: { state: "TX", district: "37", districtId: "TX-37" }Google Civic used an indirect index-based structure where offices[].officialIndices pointed into a separate officials[] array. CIV.IQ returns flat, direct objects.
Google (indirect)
{
"offices": [{
"name": "U.S. Senator",
"officialIndices": [0]
}],
"officials": [{
"name": "John Cornyn",
"party": "Republican",
"phones": ["(202) 224-2934"]
}]
}CIV.IQ (direct)
{
"representatives": [{
"bioguideId": "C001056",
"name": "John Cornyn",
"party": "Republican",
"chamber": "Senate",
"state": "TX",
"phone": "(202) 224-2934",
"website": "https://..."
}]
}Every roll call vote with position, result, and bill context.
FEC contribution data — who funds your representative.
Full committee and subcommittee memberships with roles.
Population, income, age, diversity, urbanization from Census ACS.
Senate LDA filings — who lobbies on what issues.
16-tool MCP server for AI assistants. Connect Claude, GPT, or any MCP client.
No. CIV.IQ is completely free with no authentication required. Rate limited to 60 requests/minute per IP.
Yes. Use /api/state-legislators-by-address for state-level representatives, or /api/unified-geocode for federal + state in one call.
Not yet. Google Civic covered some local officials. CIV.IQ currently covers federal Congress (535 members), state legislators (7,383), and governors. Local official data is on the roadmap.
Data is sourced from Congress.gov, OpenStates, and Census Bureau with caching from 1 hour (representatives) to 7 days (districts). New members appear within hours of Congress.gov updates.
Yes. CIV.IQ serves real government data with no usage restrictions. MIT licensed. We appreciate attribution but don't require it.
The /api/representative/{bioguideId} endpoint returns photo URLs, Twitter, Facebook, Instagram, YouTube, and Mastodon handles — more social platforms than Google Civic provided.
Yes. Connect any MCP-compatible AI assistant to https://civdotiq.org/api/mcp — 16 tools for representative lookup, legislation, voting records, campaign finance, and more.
No signup. No API key. No billing. Just swap the URL and start making requests.