CivicDog

Civic data. Built for impact.

Authoritative U.S. Congress data, shipped as an API and a WordPress plugin.

CivicDog pulls straight from the official Congress.gov API, keeps it fresh with an automated Airflow pipeline, and serves it through a clean REST API and a production WordPress plugin — no fragile scraping required.

CivicDog — civic data. Built for impact.

The problem

"Who represents me?" is a simple question with a surprisingly fragile answer.

Most "find your representative" tools are built on scraped HTML from third-party sites — unofficial, undocumented, and one layout change away from breaking. CivicDog's own WordPress plugin started that way, scraping GovTrack.us to power a lookup form for an advocacy site. It worked, but it was brittle and never something you could depend on in production.

CivicDog replaces that with a pipeline sourced directly from the authoritative government API —api.congress.gov — kept current by an automated ETL job, and served through infrastructure built to be correct, secure, and observable.

cd-api
GET /members?state=GA&district=5

{
  "representatives": [
    {
      "first_name": "Nikema",
      "last_name": "Williams",
      "role": "Representative",
      "party": "Democratic",
      "phone": "(202) 225-3801",
      "website": "https://williams.house.gov"
    }
  ],
  "senators": [ ... ]
}

Product · API

A clean REST API for congressional data

cd-api serves current senators and representatives by state and district, backed by a Postgres database that's kept fresh by an Airflow pipeline syncing from the official Congress.gov API.

  • Standardized RFC 9457 problem+json error responses
  • Apportionment-validated districts — a real 404 vs. a genuine vacancy
  • Deployed serverless on AWS Lambda behind API Gateway

Need access?

There's no self-serve signup yet — email support@civicdog.com to request an API key.

Product · WordPress Plugin

Drop-in "find your representative" for any WordPress site

cd-lookup is a WordPress plugin — used in production on a real advocacy site — that lets any visitor type in an address and see their senators and House representative in seconds.

  • One shortcode: [cd_lookup]
  • Census Bureau geocoding + CivicDog's own API, cached via WordPress transients
  • Sanitized output, WordPress Coding Standards compliant, fully unit tested
  • Installs like any other plugin — download the zip from GitHub Releases and upload it under Plugins → Add New
  • Requires a free CivicDog API key , entered under Settings → CD Lookup

Find Your Representative

1600 Pennsylvania Ave NW
Search

Rep. Eleanor Holmes Norton

Democratic · District Delegate

Sen. Jane Example

Senator

How it's built

Engineering built to hold up under review

This site's engineering docs go deep on the data pipeline, the API, the AWS infrastructure, and the automation behind CivicDog — including the trade-offs and the parts still on the roadmap.

Infrastructure as Code

Every AWS resource — VPC, RDS, Lambda, KMS — is provisioned by Terraform with independent, reviewable state per module.

Keyless deploys

GitHub OIDC assumes scoped IAM roles at deploy time. No long-lived AWS credentials live in CI, ever.

Zero public IPs

RDS, Lambda, and the Airflow host all sit in private subnets. Admin access is SSM Session Manager only.

Cost engineered, not guessed

Self-hosted Airflow over MWAA, SSM over a VPN — every trade-off is measured and documented.