Senate.gov XML services

active Ingestion health: delivering Legislative · Tier 1 · XML index · Secretary of the Senate (LIS)

What this source is

The Senate's officially documented directory of XML files: roll-call vote menus and individual votes, the committee hearings/meetings schedule, the floor schedule, and nine nomination-status files (pending, confirmed, withdrawn, failed — civilian and non-civilian). The only machine source for Senate votes.

Identity and registry record

Registry id
senate-xml
Agency / parent organization
Secretary of the Senate (LIS)
Branch
legislative
Type
XML index
Status
active
Tier
1
URL (home)
https://www.senate.gov/general/common/generic/XML_Availability.htm (opens in a new tab)
URL (index)
https://www.senate.gov/legislative/LIS/roll_call_lists/vote_menu_119_2.xml (opens in a new tab)
Registered
2026-07-28
Registry notes
Gate 3 (2026-07-31, live through the identified client): the menu answers 200 text/xml, 123,670 bytes, and lists the WHOLE session — 217 <vote> elements from 05-Jan to 30-Jul, so ingestion sees 100% of the Senate's recorded votes but must bound itself (8 fell inside the 7-day lookback that day: 1 index fetch + 8 records = 9 requests). Two coverage limits, both disclosed rather than papered over: (a) vote_date carries NO YEAR ('30-Jul') and vote_tally is present but EMPTY on all 217, so the tally exists only in the per-vote record, which is why wants_article() is True; (b) 2 of 217 rows are en-bloc confirmations carrying no issue/question/result — their title alone identifies them. Per-vote URL pattern vote{congress}{session}/vote_{c}_{s}_{NNNNN}.xml verified by fetching vote_119_2_00217.xml (200, 28,745 bytes, all 100 member positions). The index URL names the current congress/session and must be advanced when session 3 opens. Complements congress-gov-api, whose roll-call endpoint is House-only.

How we ingest it

Channel
XML index
Method
Conditional GET of the current session's roll-call vote menu; the senate-votes adapter bounds enumeration to config.INDEX_LOOKBACK_DAYS and fetches one per-vote XML record per in-window vote. Stored under the VOTES collection (GUIDE §3 recorded votes), never AGENCYPR.
Adapter
senate-votes
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 8 item(s) in the last 14 days; most recent 2026-07-31; 0 of 130 request(s) to www.senate.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: 25 request(s) (25 answered, 0 returned no content) · no items ingested

Last 14 days

Items ingested: 8 in 14 days (0.57 per day) · most recent 2026-07-31

Content length: 2,043 characters average, 2,026 median (shortest 1,984, longest 2,146)

Delivery mode: full — full article text, fetched from the item's own page

Our requests to www.senate.gov: 130 request(s) · 130 answered · 0 declined (4xx) · 0 server declined (5xx) · 0 no response — 0.0% returned no content

last answered request 2026-08-03T19:43:06.201+00:00 UTC.

8 item(s) in the last 14 days; most recent 2026-07-31; 0 of 130 request(s) to www.senate.gov returned no content.

All time

Our requests to www.senate.gov, all time (since 2026-08-01): 130 request(s) · 130 answered · 0 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 www.senate.gov: 130 requests over the last 5 days (peak 54 on 2026-08-01).
Requests per day to www.senate.gov: 130 requests over the last 5 days (peak 54 on 2026-08-01).
Dayrequests
2026-07-300
2026-07-310
2026-08-0154
2026-08-0253
2026-08-0323
Items ingested per day: 8 items over the last 30 days (peak 8 on 2026-07-31).
Items ingested per day: 8 items over the last 30 days (peak 8 on 2026-07-31).
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-270
2026-07-280
2026-07-290
2026-07-300
2026-07-318
2026-08-010
2026-08-020
2026-08-030
Daily mean response time of www.senate.gov: between 190 and 245 ms across the last 5 days (days without a timed request are gaps, not zeroes).
Daily mean response time of www.senate.gov: between 190 and 245 ms across the last 5 days (days without a timed request are gaps, not zeroes).
Dayms
2026-07-30
2026-07-31
2026-08-01245
2026-08-02190
2026-08-03202