2060-AV16) is the thread that ties them together.
The Rulemaking API serves those sources side by side, so one call by RIN answers “where is this rule, and what is it linked to”.
What is covered
There are no Regulations.gov comment texts, no attachments and no commenter data. The Rules Committee records below withhold the text of public comments and suggestions too.
Regulations.gov keeps no history, so dockets and documents are the current state, with the time we last saw them in
asOf.
Endpoints
SixGET routes under /api/v1/us/rulemaking/.
Calls are authenticated with an API key that has the research:read scope, as in Authentication.
A page is one charge, and an empty page is still charged because it is an answer.
A docket or RIN we hold nothing for answers
404, and a 503 from the rulemaking database is refunded.
A malformed RIN or a bad cursor answers 422 before any charge.
See Errors.
Look up a RIN
NNNN-AANN, and lower case is accepted.
The response is abridged here:
Confidence labels
Every cross-link carries abasis, which says how the link was made, and a quality:
Never treat
candidate as verified.
An ambiguous link carries no actId, and an umbrella RIN claims no pairing at all.
Unified Agenda history
from and to are edition ids (YYYYMM, for example 202510), and from must not be after to.
limit is 1 to 100, default 25.
Each entry in editions has editionId, season, year, runDate, title, abstract, stage, rinStatus, priority, major, the agency fields, furtherInfoUrl (served only when it is an official .gov or .mil link), publicCommentUrl, and a timetable.
Each timetable action has action, dateRaw, dateValue, datePrecision and, when the agency printed one, frCitation.
Dockets and documents
docketId, agencyId, docketType (Rulemaking or Nonrulemaking), title, abstract, rin, rinSource, spineRin, lastModifiedAt, modifyDate, documentCount, documentTypeCounts, commentCount, commentCountAsOf and sourceUrl.
rin is the RIN the agency entered on the docket when there is one.
When the agency entered none, it is the single RIN our rulemaking spine holds as verified for the docket, and rinSource says which: regulations_gov for the agency’s own entry, spine for one derived from the spine.
rin and rinSource are both null when neither exists, or when the spine names several RINs for the docket, because no pick is made between them.
spineRin is set only when the spine holds a verified RIN that differs from the agency’s, and rin then stays the agency’s value.
modifyDate is a second modification date and is null when none was recorded; lastModifiedAt is the field the modifiedSince and modifiedUntil window reads.
List dockets with filters:
The documents of one docket:
documentType, openForComment, postedFrom and postedTo.
Each document has documentId, documentType, subtype, title, postedAt, commentStartAt, commentEndAt, openForComment, withinCommentPeriod, allowLateComments, withdrawn, cfrPart, frPages, commentCount and sourceUrl.
frDocNum is the Federal Register document number as Regulations.gov prints it, and frDocNumNorm is the same number in the form used to join to the Federal Register (2021-03456).
Paging
The list routes returnnextCursor, which is null on the last page.
Pass it back as cursor with the same filters.
A cursor is bound to the filters that produced it, and a cursor used with other filters answers 422 without a charge.
See Pagination.
Coverage
sources has name, rowCounts, latestChange, lastRefreshAt, measuredAt, status and limitations.
status is ok, stale or unmeasured.
unmeasured means we have not measured that source, not that it is clean.
agendaEditions lists the Unified Agenda editions held, and limitations names what is not included.
Rules Committee records
The committee records store is still loading. A record you cannot find may not be loaded yet, so a missing record is not proof that none exists.
research:read scope as the rest of this API.
A list entry has
recordId (rcr_ and 24 hex characters), committee, docType, title, meetingDate, publishedDate (each with a precision field), year, sourceUrl, itemUrl, filename, textWithheld, sha256, bytes, pageCount, textStatus, textQuality, withdrawn and asOf.
Page text is not in the list.
dockets (the comment dockets it is linked to), rules (the Federal Rules it discusses, with actId and mentionCount) and pages.
Every docket and rule link carries the method and confidence of the link, so treat a low-confidence link as a candidate.
pageFrom starts the window at a page and pageLimit is 1 to 200 pages (default 50).
nextPage continues the window, and is null on the last one.
One call is one charge whatever the window.
An unknown record answers 404 and is refunded, and a 503 from the rulemaking database is refunded.
A scanned page has quality: needs_ocr, textAvailable: false and text: null.
textStatus and textNotice say so for the record, so empty text is never a blank page.
Withheld text
Public comments (rules_comments, and the archived comment compilations in rules_comments_archive) and rules suggestions (rules_suggestions) name private individuals.
For these three types title, filename and all page text are null, textWithheld is true, and textNotice says why.
The record, its date, its dockets and its rule links are served, and sourceUrl points at the original on uscourts.gov.
Connect to the rest of the API
- Federal Register.
federalRegister[].actIdandreviews[].frActIdpoint at the Federal Register document in the corpus. The document number isfrDocNumNormon a docket document. See Federal coverage for what the Federal Register corpus holds. - CFR.
cfrPartsgives the CFR title and part a rulemaking amends. Browse the part with the statute hierarchy and read the section text from/us/statutes. - US Code.
publicLawsandcraDisapprovalslink a rule to the public law behind it or to a Congressional Review Act resolution against it. Resolve a public law or section with citation formats. - Law change alerts. To be told when the CFR text changes, use alerts.
Known gaps
- Few dockets carry a RIN.
hasRin=truereturns a little over 1,200 dockets today, and most of those carry a RIN derived from our rulemaking spine rather than one the agency entered (rinSourceisspine, notregulations_gov). A docket with no RIN, entered or derived, cannot be found by RIN, so absence of a docket on a RIN page is not proof that none exists. - Comment counts are mostly absent.
commentCountisnullfor most dockets and documents.nullmeans not measured, never zero.commentCountAsOfsays when a count was taken. - GAO listing is partial. The GAO major rule report listing does not cover every report.
- Not every rule is reviewed by OIRA, and Unified Agenda entries exist only for the editions the agency published.
- Current state only. Regulations.gov keeps no history, so a docket shows what it is now.
- Link quality varies. Use
qualityandlinkStatusas described above, and call/coverageto see what is held and how fresh it is.

