Civic data. Built for impact.
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.

"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.
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
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.
Need access?
There's no self-serve signup yet — email support@civicdog.com to request an API key.
Product · WordPress Plugin
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.
[cd_lookup]Find Your Representative
Rep. Eleanor Holmes Norton
Democratic · District Delegate
Sen. Jane Example
Senator
How it's built
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.