Congress.gov API

active Ingestion health: delivering Legislative · Tier 1 · API · Library of Congress

What this source is

The Library of Congress's official API for structured legislative data: committee meetings with witnesses and documents, nominations, treaties, bill actions and cosponsors, House roll-call votes (beta), daily Congressional Record metadata, and CRS reports. Fills the committee-activity and nominations coverage the pipeline currently lacks entirely.

Identity and registry record

Registry id
congress-gov-api
Agency / parent organization
Library of Congress
Branch
legislative
Type
API
Status
active
Tier
1
URL (home)
https://github.com/LibraryOfCongress/api.congress.gov (opens in a new tab)
URL (index)
https://api.congress.gov/v3/bill (opens in a new tab)
Registered
2026-07-28
Registry notes
Documented rate limit 5,000 req/hour — far above our §4 posture. Endpoint docs read from the official LoC GitHub repo 2026-07-28 (incl. CommitteeMeetingEndpoint.md, CRSReportEndpoint.md). The crsreport endpoint is registered separately as crs-reports. Senate votes are NOT here (House only) — see senate-xml. Gate 3 (2026-07-31, live through the identified client, ONE endpoint only): the api.data.gov key we already hold authenticates here (200 with data), and /v3/bill answers JSON. What the source publishes in total vs what we see: the endpoint enumerates 429,331 bill records across all Congresses and exposes, per record, ONLY the measure's identity and its LATEST action — not the full action history, not cosponsors, not text; the committee-meeting, nomination, treaty and beta House-roll-call endpoints this entry also describes are NOT ingested and stay future work. Volume measured: 749 records were updated across 2026-07-30 and 350 by 19:20 ET on 07-31, against a page of 250 per poll and an hourly collector — roughly 8x headroom on the observed ~31/hour update rate, with the loop's dedupe accumulating a day across polls; a burst of >250 updates inside one poll interval is the one loss case and is not currently detected. Three limits disclosed rather than papered over: (a) actionDate (when it happened) is not updateDate (when the record changed) — 250 records all updated 07-31 carried actions from 1997 to 07-30, so items are dated and bounded by actionDate; (b) the record is published the morning AFTER the action (0 actions dated 07-31 anywhere on the page; 97 dated 07-30; the bulk of a day's actions entered between 08:00 and 12:00 UTC the next day), so BILLACTIONS is dated by the publisher like govinfo collections and the lag is a standing digest disclosure; (c) two actions on one bill on one day collapse to a single item, because only the latest is exposed. The cited link is the www.congress.gov bill page, which answers 403 to our identified client (verified on three bill URLs) — hence wants_article() is False: we ingest what the API offers and never force what the website refuses. Sending sort as a pre-encoded 'updateDate%2Bdesc' made the service return ASCENDING order (records from 1995), so the parameter is passed with a literal space and the order is verified by reading dates, never assumed.

How we ingest it

Channel
API
Method
Conditional GET of one page of the bill endpoint per poll (limit=250, sort=updateDate+desc, api.data.gov key in request PARAMETERS so the fetch log redacts it). The congress-bill-actions adapter emits one item per bill whose latestAction.actionDate falls inside config.INDEX_LOOKBACK_DAYS and never fetches an article page. Stored under the BILLACTIONS collection (GUIDE §3 bill actions), dated by the publisher's actionDate, never AGENCYPR.
Adapter
congress-bill-actions
Poll cadence
about every 60 minutes while the collector runs
Request budget
the agency class: at most 1,500 requests per day shared across every agency web source, counted from the fetch log (failed requests count too)
Politeness
robots.txt is honored as observed — including each host's crawl-delay, exactly — and every request identifies itself as fapd/0.1 (Free Agentic Publication Digester; +https://fapd.info/bot.html; contact: hustleyourcity@gmail.com); a refusal is recorded, never evaded
Capture and hash
captured raw content is hashed (SHA-256) into the day's committed provenance manifest, hash-chained day to day (PROVENANCE.md)

Ingestion health

Ingestion health: delivering 116 item(s) in the last 14 days; most recent 2026-07-30; 4 of 122 request(s) to api.congress.gov returned no content.

This label has held since 2026-08-03T18:46:01Z (UTC) and was last re-checked 2026-08-03T19:51:47Z (UTC).

Counts are of our own requests, retries included. A 4xx or 5xx is the server declining to return content — that may be load, maintenance, on-demand generation, or a limit the publisher sets, and we cannot tell which from outside. Nothing here is a measurement of the publisher.

Ingestion statistics

These figures describe this project's ingestion of this source — items we recorded and requests we made — and nothing else. They are not a measurement of the publisher.

Last 24 hours

Last 24 hours: 24 request(s) (23 answered, 1 returned no content) · 2 item(s) ingested

Last 14 days

Items ingested: 116 in 14 days (8.29 per day) · most recent 2026-07-30

Content length: 467 characters average, 446 median (shortest 291, longest 872)

Delivery mode: feed-only — the feed's own summary — the source publishes no more than this through this channel

Our requests to api.congress.gov: 122 request(s) · 118 answered · 4 declined (4xx) · 0 server declined (5xx) · 0 no response — 3.3% returned no content

last answered request 2026-08-03T19:42:14.150+00:00 UTC.

116 item(s) in the last 14 days; most recent 2026-07-30; 4 of 122 request(s) to api.congress.gov returned no content.

All time

Our requests to api.congress.gov, all time (since 2026-08-01): 122 request(s) · 118 answered · 4 returned no content

Request counts begin 2026-07-30, the day this service went into production; earlier development-machine traffic is excluded. Counts before 2026-08-03 include unmarked source-probe traffic; probes are labeled and excluded thereafter.

Last 30 days, day by day

Requests per day to api.congress.gov: 122 requests over the last 5 days (peak 55 on 2026-08-02).
Requests per day to api.congress.gov: 122 requests over the last 5 days (peak 55 on 2026-08-02).
Dayrequests
2026-07-300
2026-07-310
2026-08-0146
2026-08-0255
2026-08-0321
Items ingested per day: 116 items over the last 30 days (peak 97 on 2026-07-30).
Items ingested per day: 116 items over the last 30 days (peak 97 on 2026-07-30).
Dayitems
2026-07-050
2026-07-060
2026-07-070
2026-07-080
2026-07-090
2026-07-100
2026-07-110
2026-07-120
2026-07-130
2026-07-140
2026-07-150
2026-07-160
2026-07-170
2026-07-180
2026-07-190
2026-07-200
2026-07-210
2026-07-220
2026-07-230
2026-07-240
2026-07-250
2026-07-260
2026-07-279
2026-07-283
2026-07-297
2026-07-3097
2026-07-310
2026-08-010
2026-08-020
2026-08-030
Daily mean response time of api.congress.gov: between 274 and 620 ms across the last 5 days (days without a timed request are gaps, not zeroes).
Daily mean response time of api.congress.gov: between 274 and 620 ms across the last 5 days (days without a timed request are gaps, not zeroes).
Dayms
2026-07-30
2026-07-31
2026-08-01288
2026-08-02274
2026-08-03620