ReppedStart Here‹ Map
Help
← Repped API for developers

Google Civic Information API alternative

Google shut down the Civic Information API's representatives endpoint in April 2025. If your app called representativeInfoByAddress, it now returns errors — and Google's replacement covers elections only, not officials. The Repped API is a drop-in-shaped replacement: one GET request from an address or lat/lng to every district and every elected official, federal to mayor.

TL;DR migration

  1. Get a free API key (1,000 lookups/month, no card).
  2. Replace the Google URL with GET https://repped-api.onrender.com/api/v1/representatives?address=… and send your key as x-api-key.
  3. Map fields with the table below — the OCD division IDs are the same.

Field-by-field mapping

Google CivicRepped APINotes
normalizedInputresolvedAddressSame idea — the address the lookup actually resolved.
divisions (OCD IDs)districts + officials[].divisionIdWe use the same OCD division IDs (ocd-division/country:us/…), plus a flat districts object with state, congressionalDistrict, stateUpperDistrict, stateLowerDistrict.
offices[].nameofficials[].officeDenormalized — every official carries their own office string. No officeIndices bookkeeping.
offices[].levelsofficials[].levelcountry → federal, administrativeArea1 → state, locality → local.
offices[].rolesofficials[].chamberhouse, senate, executive, upper, lower.
officials[].name / party / photoUrlofficials[].name / party / photoUrlSame names. Party is normalized to D / R / I.
officials[].channelsofficials[].socialsTwitter/X, Facebook, Instagram, YouTube handles as a flat object.
officials[].phones / emails / urlsofficials[].phones / email / urlsContact fields where the official publishes them.
— (never existed)officials[].fieldProvenancePer-field source, verification status, and checked-at timestamp. Google never told you where a value came from.

Example request

curl "https://repped-api.onrender.com/api/v1/representatives?lat=41.5582&lng=-73.0515" \
  -H "x-api-key: YOUR_KEY"

{
  "resolvedAddress": "Waterbury, CT",
  "districts": {
    "state": "CT",
    "congressionalDistrict": "5",
    "stateUpperDistrict": "15",
    "stateLowerDistrict": "73"
  },
  "officials": [
    {
      "name": "Hayes, Jahana",
      "office": "U.S. Representative",
      "level": "federal",
      "chamber": "house",
      "party": "D",
      "divisionId": "ocd-division/country:us/state:ct/cd:5",
      "socials": { "twitter": "RepJahanaHayes", ... },
      "fieldProvenance": {
        "name": { "source": "congress.gov", "status": "verified", "checkedAt": "..." }
      }
    },
    ...
  ]
}

What you gain over Google Civic

Migrate this afternoon

Free tier is 1,000 lookups/month — enough to validate the mapping end to end. Paid tiers start at $79/month, month-to-month, no contract.

Get a free API key →