Bill Radar API

A complete legislative + regulatory REST API over all 50 states, D.C. + Congress: bills, votes, legislators, regulations, scorecards, similar-bills, advocacy-org target discovery, and a Find Your Rep endpoint (address → district → seated officials). JSON responses; cursor pagination ({ data: [...], next_cursor }); every collection supports updated_since for incremental sync.

Authentication

Send your API token as a bearer credential:

Authorization: Bearer <token>

For drop-in migration from legacy tools, the API also accepts Authorization: apikey <token>. Rate limits are per-tier; exceeding the per-minute window returns 429.

Find Your Rep API

Standalone product

A self-serve address → district → seated officials API — a drop-in for address-based representative lookups, ideal for teams migrating off a sunset civic API. Metered against your plan's monthly lookup cap, JSON-first, with no credit expiry. Free tier includes 1,000 lookups / mo, then Developer ($49/mo) and Business ($199/mo).

GET /api/v1/representatives?address=123+Main+St,+Cheyenne,+WY
Authorization: Bearer <token>
{
  "matched": true,
  "geographies": { "matched": true, "state": "Wyoming", "upper_district": "12", "lower_district": "34" },
  "representatives": [
    { "id": 1, "name": "Sam Senator", "party": "Republican", "chamber": "upper", "district": "12", "email": null }
  ]
}

Endpoints

Bills

Method Path Description
GET /v1/bills Search (q, jurisdiction, session, subject, status, updated_since, cursor)
GET /v1/bills/ask Natural-language "ask your bills" RAG search
GET /v1/bills/{id} Bill detail (incl. ai_summary)
GET /v1/bills/{id}/explain Tiered plain-language explainer
GET /v1/bills/{id}/copycats Copycat / model-legislation matches
GET /v1/bills/{id}/changes Amendment change-summaries
GET /v1/bills/{id}/sponsors Sponsors
GET /v1/bills/{id}/votes Roll-call votes
GET /v1/bills/{id}/actions Action history / timeline
GET /v1/bills/{id}/text Current version extracted text + S3 link
GET /v1/bills/{id}/legislators Take-Action legislator targets
GET /v1/bills/{id}/committees Committees this bill was referred to
GET /v1/bills/{id}/similar Cross-state similar bills (pgvector)
GET /v1/bills/{id}/versions Version diffs (what changed between texts)
GET /v1/bills/{id}/targets Ranked advocacy-org targets (types, limit)
GET /v1/bills/{id}/outreach Composed outreach for matched orgs

Legislators

Method Path Description
GET /v1/legislators/{id} Legislator detail

Scorecards

Method Path Description
GET /v1/scorecards Vote scorecards (index)
GET /v1/scorecards/{id} Scorecard detail

Regulations

Method Path Description
GET /v1/regulations Regulations search
GET /v1/regulations/{id} Regulation detail
GET /v1/regulations/{id}/targets Ranked advocacy-org targets for a rule

Find Your Rep API

Method Path Description
GET /v1/representatives Address → state + legislative districts + seated officials (find_your_rep scope)

Search

Method Path Description
GET /v1/search Unified corpus search across bills + regulations
GET /v1/comment-capabilities Agency comment-capability inventory

Stakeholder pages & widgets

Method Path Description
GET /v1/stakeholder-pages/{slug} Published bill grids
GET /v1/widgets/{type}/{token} Embeddable widget data (token-auth)

Target discovery

Method Path Description
GET /v1/targets/advocacy-prospects Advocacy-displacement prospects

Alerts & analytics

Method Path Description
GET/POST/DELETE /v1/alert_subscriptions Watch a bill sheet; daily digest of activity
GET /v1/analytics/leads Lead production
GET /v1/analytics/usage Your usage
GET /v1/analytics/api API analytics
GET /v1/analytics/summary Admin roll-up

OCD division IDs

Every entity — bills, legislators, committees, jurisdictions, roll calls, events, and matched reps — carries a stable ocd_id (aliased division_id on jurisdiction envelopes). They implement the open OpenCivicData division-id standard, so the same id is stable across our API and interoperable with other civic datasets. You can pass one straight back to GET /api/v1/coverage?ocd_id=… and GET /api/v1/districts/:id/boundary.

Grammar: ocd-division/country:<cc>/state:<st>/<tier>:<id>. Ids are lowercased and slugged (spaces → _), leading zeros are stripped (05 → 5), and an at-large / single-district seat is numbered 1.

Tier Example
State / jurisdiction ocd-division/country:us/state:tx
U.S. House district ocd-division/country:us/state:tx/cd:5
State senate (upper) ocd-division/country:us/state:tx/sldu:12
State house (lower) ocd-division/country:us/state:tx/sldl:34
County ocd-division/country:us/state:tx/county:travis
Place (city) ocd-division/country:us/state:tx/place:austin
City council district ocd-division/country:us/state:tx/place:austin/council_district:5
Canada (riding) ocd-division/country:ca/ed:24001
UK (constituency, GSS) ocd-division/country:gb/constituency:e14000540

council_district ids populate as local boundaries come online; until a division's boundary is loaded, /districts/:id/boundary returns 404 and /coverage reports it as requestable.

1,416,895+
Bills tracked
35,040+
Officials on file