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.

Model-written orientation

The Senate publishes XML files for roll-call votes, committee schedules, floor schedules, and nomination statuses through its official XML services.

The United States Senate maintains an official set of XML data files published through the Senate's LIS (Legislative Information System). These files provide structured access to several key categories of Senate activity.

The roll-call votes files list every roll-call vote taken in the Senate, with each vote's date, subject matter, tally, and member-by-member voting record. These votes are published the same day they are taken. The files include votes spanning prior Congresses, providing a historical record of recorded Senate votes.

The Senate also publishes XML files for other information: committee hearings and meetings schedules, the Senate floor schedule showing upcoming business, and nomination status files tracking nominations awaiting Senate action.

This digest currently ingests Senate roll-call votes through these XML files. Each vote is published as a separate XML file, and the system retrieves votes that fall within the publication lookback window.

The XML files are officially documented and maintained by the Secretary of the Senate. They are offered as a machine-readable alternative to browsing the Senate website and represent the official Senate record of votes and schedule information. One important point about the Senate vote data: the tally is stored in the per-vote XML file, not in the vote menu.

The Senate XML files complement other sources in the federal record. The Congress.gov API provides House votes, while these XML services provide the authoritative Senate vote record. Together with other legislative sources, they provide comprehensive access to recorded votes in both chambers of Congress. This source is valuable for readers interested in tracking Senate votes, monitoring how Senators vote on specific issues, or analyzing voting patterns in the Senate.

Model-written orientation, generated 2026-08-05 by haiku, prompt version 1. It may draw on general knowledge of public institutions and is not official-record content.

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 3,000 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 15 item(s) in the last 14 days; most recent 2026-09-28; 0 of 369 request(s) to www.senate.gov returned no content.

This label has held since 2026-09-15T00:13:06Z (UTC) and was last re-checked 2026-09-29T10:51:00Z (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: 34 request(s) (34 answered, 0 returned no content) · 6 item(s) ingested

Last 14 days

Items ingested: 15 in 14 days (1.07 per day) · most recent 2026-09-28

Content length: 1,884 characters average, 2,050 median (shortest 166, longest 2,115)

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

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

last answered request 2026-09-29T10:28:50.008+00:00 UTC.

15 item(s) in the last 14 days; most recent 2026-09-28; 0 of 369 request(s) to www.senate.gov returned no content.

All time

Our requests to www.senate.gov, all time (since 2026-08-01): 1,742 request(s) · 1,742 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

Each day runs midnight to midnight on Eastern time (Washington, D.C.), the publication day the digests use; the stored request stamps remain UTC.

Requests per day to www.senate.gov: 799 requests over the last 30 days (peak 34 on 2026-09-28).
Requests per day to www.senate.gov: 799 requests over the last 30 days (peak 34 on 2026-09-28).
Dayrequests
2026-08-3126
2026-09-0126
2026-09-0226
2026-09-0325
2026-09-0426
2026-09-0533
2026-09-0627
2026-09-0726
2026-09-0826
2026-09-0926
2026-09-1025
2026-09-1126
2026-09-1228
2026-09-1326
2026-09-1429
2026-09-1529
2026-09-1627
2026-09-1729
2026-09-1826
2026-09-1926
2026-09-2026
2026-09-2128
2026-09-2229
2026-09-2326
2026-09-2429
2026-09-2526
2026-09-2628
2026-09-2727
2026-09-2834
2026-09-298
Items ingested per day: 19 items over the last 30 days (peak 6 on 2026-09-28).
Items ingested per day: 19 items over the last 30 days (peak 6 on 2026-09-28).
Dayitems
2026-08-310
2026-09-010
2026-09-020
2026-09-030
2026-09-040
2026-09-050
2026-09-060
2026-09-070
2026-09-080
2026-09-090
2026-09-100
2026-09-110
2026-09-120
2026-09-130
2026-09-141
2026-09-153
2026-09-160
2026-09-173
2026-09-180
2026-09-190
2026-09-200
2026-09-210
2026-09-222
2026-09-231
2026-09-243
2026-09-250
2026-09-260
2026-09-270
2026-09-286
2026-09-290
Daily mean response time of www.senate.gov: between 164 and 656 ms across the last 30 days (days without a timed request are gaps, not zeroes).
Daily mean response time of www.senate.gov: between 164 and 656 ms across the last 30 days (days without a timed request are gaps, not zeroes).
Dayms
2026-08-31241
2026-09-01297
2026-09-02277
2026-09-03354
2026-09-04287
2026-09-05313
2026-09-06221
2026-09-07190
2026-09-08188
2026-09-09219
2026-09-10199
2026-09-11212
2026-09-12212
2026-09-13241
2026-09-14656
2026-09-15183
2026-09-16175
2026-09-17169
2026-09-18213
2026-09-19186
2026-09-20188
2026-09-21243
2026-09-22189
2026-09-23189
2026-09-24164
2026-09-25193
2026-09-26210
2026-09-27205
2026-09-28214
2026-09-29186

Our ingestion assessment

Model-written ingestion assessment

Our ingestion of Senate.gov's XML vote records maintains a consistent daily polling pattern, typically 25–29 requests per day, with zero request failures across 350 attempts. The source delivers roll-call vote menus and individual per-vote XML records containing complete member position data. Over the 14-day window, one item was observed on 2026-09-14. The ingestion bounds enumeration to a 7-day lookback to control request volume despite the published index listing the full Senate session. The underlying structure carries two known coverage limits: vote dates in the index lack year information and vote tallies are empty, requiring per-vote record retrieval; and en-bloc confirmations contain minimal structured metadata beyond title. The per-vote URL pattern has been verified and remains stable. Compared to the previous assessment from 2026-08-16, item delivery remains sparse, continuing a pattern in which the source answers all requests but new vote records appear infrequently.

Model-written assessment of our own ingestion, generated 2026-09-15 by haiku, prompt version 1, trigger: health-change. It restates our measured figures and is not official-record content.