Federal Register Documents: Rules, Notices & Comment Dates avatar

Federal Register Documents: Rules, Notices & Comment Dates

Pricing

from $1.40 / 1,000 document row returneds

Go to Apify Store
Federal Register Documents: Rules, Notices & Comment Dates

Federal Register Documents: Rules, Notices & Comment Dates

Rules, proposed rules, notices and presidential documents from the official Federal Register API: filter by keyword, agency, CFR title, topic, docket, publication window, effective date or open comment window. Rows carry citation, dates, docket ids, abstract and text links.

Pricing

from $1.40 / 1,000 document row returneds

Rating

0.0

(0)

Developer

Samat Makatov

Samat Makatov

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Every rule, proposed rule, notice and presidential document the US government publishes in the Federal Register, as dataset rows: document number, title, agency, subject topics, publication and effective date, comment deadline, docket ids, CFR citations, abstract and links to the PDF and the plain text. It reads the official Federal Register JSON API — no API key, no login, no proxy, no browser — and also covers the public-inspection desk, where filings appear hours to days before they are printed. Written for compliance and policy teams, lawyers, journalists and agent pipelines that need the regulatory record as data instead of a web page.

Use cases

  • Comment-deadline calendar — documentTypes: ["PRORULE"] with commentsOpenOnly gives every proposed rule whose comment window is still open, with the closing date, the days left and the comment link. Sort your calendar by daysUntilCommentsClose.
  • Compliance dates in your part of the code — cfrTitle: 40 (plus a cfrPart) with effectiveWithinDays: 120 lists the final rules that change your corner of the CFR and when they bite.
  • Follow one rulemaking end to end — docketId: "EPA-HQ-OAR-2021-0317" returns the proposed rule, the extensions and the final rule under the same agency docket, in publication order.
  • Keyword watch for a policy area — full-text search over the whole document (searchTerm), a relative window (lookbackDays) and onlyNew, on a daily schedule: each run pays only for documents it has not delivered before.
  • Executive orders as data — documentTypes: ["PRESDOCU"] with presidentialDocumentTypes: ["executive_order"] fills executiveOrderNumber, signingDate and presidentName for newsroom tables and legal blogs.
  • Earliest signal on a new rule — mode: "publicInspection" reads the filing desk: what agencies have signed and filed for the coming issues, with the exact filing time in UTC.
  • A corpus for an LLM — includeFullText attaches the published plain text of each document, cut at a length you choose, ready for summarising, classification or retrieval.

Input

No field is required: with the defaults the actor returns the 50 newest documents.

FieldTypeDefaultAllowed values / notes
modestringdocumentsdocuments, publicInspection, agencies — see Modes
searchTermstringemptyFull-text search over the whole document. Quote a phrase: "comment period". In agencies it filters the dictionary by name
documentTypesstring[]all fourRULE, PRORULE, NOTICE, PRESDOCU — see Document types
agencySlugsstring[]all agenciesSlugs such as environmental-protection-agency; several are OR-ed. Short names (EPA) and printed names work too
presidentialDocumentTypesstring[]all fourexecutive_order, proclamation, memorandum, determination
sectionsstring[]all sixmoney, environment, world, science-and-technology, business-and-industry, health-and-public-welfare
topicsstring[]all topicsIndex-term slugs, e.g. air-pollution-control. Printed names are slugified for you
docketIdstringemptyOne agency docket, exact match, e.g. CMS-4217-NC
cfrTitleintegerempty1–50. 40 environment, 21 food and drugs, 17 securities, 12 banks, 14 aeronautics, 49 transportation
cfrPartstringemptyA part inside that title, e.g. 52. Needs cfrTitle
significantOnlybooleanfalseOnly documents the unified agenda marks significant under EO 12866
publishedFromstringemptyYYYY-MM-DD, earliest publication date
publishedTostringemptyYYYY-MM-DD, latest publication date. Leave empty to see issues already scheduled
lookbackDaysintegerempty1–3650. Relative window for scheduled runs; ignored when publishedFrom is set
effectiveWithinDaysintegerempty1–3650. Effective date between today and N days from now
commentsOpenOnlybooleanfalseComment period closes today or later
availableOnstringnewest deskYYYY-MM-DD, publicInspection only. Empty = the newest day that has filings
onlyNewbooleanfalseWrite only document numbers no earlier run of the same filters delivered
includeFullTextbooleanfalseAttach the plain text — one extra request per row
fullTextMaxCharsinteger20000500–200000. Cut length of fullText
sortBystringnewestnewest, oldest, relevance, executiveOrderNumber — see Sort orders
maxItemsinteger501–5000 rows
fieldsstring[]allKeep only these output fields, in this order

All dates are UTC. Relative windows (lookbackDays, effectiveWithinDays, commentsOpenOnly) are measured from the UTC day the run starts, so a scheduled task keeps working without edits.

Reference

Modes

ModeEndpoint it readsWhat a row isFilters it uses
documentsthe search over published and already scheduled documentsone Federal Register documentevery filter in the table above
publicInspectionthe filing desk, before printingone filing waiting for its issuedocumentTypes, availableOn, sortBy, maxItems
agenciesthe agency dictionaryone agencysearchTerm (name filter), maxItems

A filter a mode cannot use is never applied silently: the run says so in its status message and in SUMMARY.warnings.

Document types

ValuePrinted as typeWhat it is
RULERuleA final rule — the text that changes the Code of Federal Regulations, with an effective date
PRORULEProposed RuleA proposal open for public comment, including advance notices (ANPRM) and supplements
NOTICENoticeEverything else an agency must announce: meetings, information collections, grants, determinations, extensions
PRESDOCUPresidential DocumentSigned by the President; subtype carries the finer label, e.g. Executive Order

Everyday words are accepted and corrected with a warning: "proposed rule" becomes PRORULE, a misspelled RULEZ becomes RULE. Kinds of presidential document: executive_order (fills executiveOrderNumber), proclamation, memorandum, determination.

Agency slugs

The Federal Register rejects a slug it does not know with an HTTP error, so this actor checks your slugs against the dictionary first. An obvious typo is corrected and logged (enviromental-protection-agency → environmental-protection-agency); a word that matches nothing stops the run and names the closest candidates, so you never get another agency's documents by accident. Short names and printed names are resolved too (EPA, Food and Drug Administration). Run {"mode": "agencies"} once for the full list — 473 agencies on 26 September 2026. Frequently used: environmental-protection-agency, securities-and-exchange-commission, food-and-drug-administration, energy-department, labor-department, transportation-department, treasury-department, agriculture-department, homeland-security-department, health-and-human-services-department, federal-communications-commission, nuclear-regulatory-commission. A department slug also brings in its sub-agencies.

Topics

Topics are the index terms the Federal Register itself assigns, as slugs: the printed term lower-cased, spaces replaced by hyphens (Air pollution control → air-pollution-control). You may pass either form. Common ones: air-pollution-control, imports, reporting-and-recordkeeping-requirements, endangered-and-threatened-species, incorporation-by-reference, administrative-practice-and-procedure. The topics field of any row shows the printed forms for the document you are looking at, which is the easiest way to discover new slugs. Subject areas (sections) are the six broad buckets above and are useful when you do not know which agency publishes what you are after.

Sort orders

ValueEffect
newestNewest publication date first (default)
oldestOldest first — the natural order for reading a docket's history
relevanceBest match for searchTerm. Without search words the run falls back to newest and says so
executiveOrderNumberDescending order number; meaningful for presidential documents only

In publicInspection the rows are ordered by filing time (oldest reverses it); in agencies by name.

Examples

Final rules one agency published in the last four months

{ "mode": "documents", "agencySlugs": ["environmental-protection-agency"], "documentTypes": ["RULE"], "lookbackDays": 120, "maxItems": 25 }

Proposed rules that are still open for comment

{ "mode": "documents", "documentTypes": ["PRORULE"], "commentsOpenOnly": true, "sortBy": "newest", "maxItems": 25 }

Rules taking effect in the next 120 days in CFR title 40

{ "mode": "documents", "documentTypes": ["RULE"], "cfrTitle": 40, "effectiveWithinDays": 120, "maxItems": 20 }

Executive orders published this year

{ "mode": "documents", "documentTypes": ["PRESDOCU"], "presidentialDocumentTypes": ["executive_order"], "publishedFrom": "2026-01-01", "sortBy": "newest", "maxItems": 20 }

A daily keyword watch that never repeats itself

{ "mode": "documents", "searchTerm": "artificial intelligence", "lookbackDays": 7, "onlyNew": true, "maxItems": 100 }

Notices of one agency with the full text attached, for an LLM

{ "mode": "documents", "agencySlugs": ["environmental-protection-agency"], "documentTypes": ["NOTICE"], "lookbackDays": 60, "includeFullText": true, "fullTextMaxChars": 20000, "maxItems": 5 }

Today's filing desk, before anything is printed

{ "mode": "publicInspection", "maxItems": 30 }

The agency dictionary

{ "mode": "agencies", "searchTerm": "commission", "maxItems": 40 }

Output

One real row, from run UJShD4PM8Qh1q8YeC (input: {"mode": "documents", "searchTerm": "artificial intelligence"}):

{
"rowType": "document",
"documentNumber": "2026-19535",
"title": "Request for Information; Medicare Part D Reasonable and Relevant Pharmacy Contracting Standards",
"type": "Proposed Rule",
"subtype": null,
"action": "Request for information.",
"abstract": "This request for information (RFI) solicits input from interested parties for purposes of establishing standards for reasonable and relevant pharmacy contract terms and conditions under the Medicare prescription drug benefit. …",
"datesNote": "To be assured consideration, comments must be received at one of the addresses provided below, by November 23, 2026.",
"excerpt": "… Opportunities for the use of artificial intelligence (AI) with respect to Part D pharmacy reimbursement; …",
"agencyNames": ["Health and Human Services Department", "Centers for Medicare & Medicaid Services"],
"primaryAgency": "Health and Human Services Department",
"topics": [],
"publicationDate": "2026-09-24",
"effectiveOn": null,
"commentsCloseOn": "2026-11-23",
"commentsOpen": true,
"daysUntilEffective": null,
"daysUntilCommentsClose": 58,
"signingDate": null,
"executiveOrderNumber": null,
"presidentName": "Donald Trump",
"citation": "91 FR 60568",
"volume": 91,
"startPage": 60568,
"endPage": 60572,
"pageLength": 5,
"docketIds": ["CMS-4217-NC"],
"regulationIdNumbers": ["0938-AW08"],
"cfrTitles": [42],
"cfrCitations": ["42 CFR 423"],
"significant": null,
"commentUrl": "http://www.regulations.gov/commenton/CMS_FRDOC_0001-4452",
"pdfUrl": "https://www.govinfo.gov/content/pkg/FR-2026-09-24/pdf/2026-19535.pdf",
"rawTextUrl": "https://www.federalregister.gov/documents/full_text/text/2026/09/24/2026-19535.txt",
"fullText": null,
"fullTextChars": null,
"fullTextTruncated": null,
"url": "https://www.federalregister.gov/documents/2026/09/24/2026-19535/request-for-information-medicare-part-d-reasonable-and-relevant-pharmacy-contracting-standards",
"fetchedAt": "2026-09-26T21:55:50.417Z"
}

Document rows (rowType: "document")

FieldTypeMeaning / when it is empty
documentNumberstringThe Federal Register document number, e.g. 2026-19535. Stable identifier
titlestringPrinted title
typestringRule, Proposed Rule, Notice or Presidential Document
subtypestringFiner label where the source prints one (Executive Order); usually null
actionstringThe "ACTION:" line, e.g. Final rule.; null for presidential documents
abstractstringThe summary paragraph; null for presidential documents and some notices
datesNotestringThe "DATES:" paragraph in the agency's own words
excerptstringMatching snippet, only when searchTerm is used; highlighting removed
agencyNamesstring[]Every agency that signed the document, department first
primaryAgencystringFirst entry of agencyNames
topicsstring[]Index terms as printed; empty for many notices and all presidential documents
publicationDatestringYYYY-MM-DD; can be in the future for a scheduled issue
effectiveOnstringEffective date; null for most notices and proposed rules
commentsCloseOnstringComment closing date; null for final rules
commentsOpenbooleancommentsCloseOn is today or later; null when there is no comment date
daysUntilEffectivenumberWhole UTC days from the run day; negative when already in force
daysUntilCommentsClosenumberWhole UTC days from the run day; negative when the window has closed
signingDatestringPresidential documents only
executiveOrderNumbernumberExecutive orders only
presidentNamestringThe president in office at publication — the source fills it on every document
citationstringFederal Register citation, e.g. 91 FR 60568
volume, startPage, endPage, pageLengthnumberPosition in the printed issue
docketIdsstring[]Agency docket numbers; empty when the agency prints none
regulationIdNumbersstring[]RIN numbers linking the document to the unified agenda
cfrTitlesnumber[]CFR titles the document touches, e.g. [40]
cfrCitationsstring[]Printed citations, e.g. ["40 CFR 228"]; empty for notices
significantbooleanSignificant under EO 12866; null on the majority of documents
commentUrlstringWhere the source sends comments; often null
pdfUrlstringThe official PDF of the issue page
rawTextUrlstringPlain-text version of the document
fullText, fullTextChars, fullTextTruncatedstring / number / booleanFilled only with includeFullText
urlstringThe document's page
fetchedAtstringISO 8601 UTC

A docketId that matches nothing yields one row with found: false and the docket you asked for, never an empty success.

Public-inspection rows (rowType: "publicInspection")

The same identity fields plus filingType (regular or special), filedAt (exact filing time converted to UTC), publicationDate (the issue it is scheduled for), inspectionIssueDate (which desk day the row comes from), numPages, subject and editorialNote. abstract, topics and the CFR fields do not exist before printing.

Agency rows (rowType: "agency")

slug (the value for agencySlugs), name, shortName, description, parentSlug, parentName, childSlugs, agencyUrl (the agency's own site), url and fetchedAt.

Dataset views: Documents (the overview), Deadlines (comment and effective dates with the days left), Document details (abstract, action, executive order number, text length), Public inspection, Agency dictionary.

Every run also writes a SUMMARY record to the default key-value store: the endpoint and first request URL, the filters as they were actually applied, the total number of matches, rows written, requests spent, agency slug corrections, whether the 10 000-document window was hit, and the run's status message.

Use it from code / agents

curl -X POST "https://api.apify.com/v2/acts/yadroo~federal-register-documents/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"documentTypes":["PRORULE"],"commentsOpenOnly":true,"fields":["documentNumber","title","primaryAgency","commentsCloseOn","daysUntilCommentsClose","url"],"maxItems":25}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('yadroo/federal-register-documents').call({ cfrTitle: 40, documentTypes: ['RULE'], effectiveWithinDays: 120, maxItems: 20 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("yadroo/federal-register-documents").call(run_input={"searchTerm": "artificial intelligence", "lookbackDays": 30, "maxItems": 50})
items = client.dataset(run["defaultDatasetId"]).list_items().items

Use fields to hand an agent only the columns it reasons about — it makes prompts far shorter and costs nothing extra. For a retrieval pipeline, add includeFullText with a small maxItems and index fullText per documentNumber.

MCP: add https://mcp.apify.com to Claude / Cursor / any MCP client and call the yadroo/federal-register-documents tool with the same JSON input.

Pricing

Pay per event: $0.001 per run start + $0.002 per dataset row. The start event is charged on every run, including a run that finds nothing and a run that writes only the found: false row of an unmatched docket. Apify plan discounts lower the per-row price: −10 % on Bronze, −20 % on Silver, −30 % on Gold and above.

RunRowsCost at list price
The default input (50 newest documents for a keyword)50$0.001 + 50 × $0.002 = $0.101
A comment-deadline list25$0.001 + 25 × $0.002 = $0.051
Five notices with the full text attached5$0.001 + 5 × $0.002 = $0.011
A daily watch that finds nothing new (onlyNew)0$0.001 + 0 = $0.001

Compute is negligible next to that: 256 MB, no browser, and the runs behind this README finished in three to five seconds. includeFullText costs one extra request per row on the source side but no extra event.

Limits & FAQ

  • 10 000 documents per query. The source serves at most 10 000 results for one set of filters, however deep you page. When a run hits that ceiling it says so in the status message and in SUMMARY.resultWindowHit — narrow the date window, the agency or the CFR title and run again.
  • No published rate limit. The API needs no key and documents no request quota, so this actor stays deliberately polite: requests are sequential with a short pause, 429 and 5xx answers are retried with backoff and Retry-After, and a run stops after 140 requests. If the source ever starts refusing requests systematically, the honest fix is to narrow the query, not to work around the block.
  • Only the JSON API is read. The site's HTML pages sit behind a bot wall; this actor never touches them. It fetches nothing outside federalregister.gov.
  • Freshness. Documents appear with the issue they are scheduled for, so publicationDate is often a few days in the future. The filing desk (publicInspection) is the earliest view: agencies file on business days, usually from 08:45 US Eastern, so a weekend run returns Friday's desk and inspectionIssueDate tells you which day you got.
  • Empty fields are the source's, not a bug. effectiveOn exists for final rules and some notices; commentsCloseOn for proposals; significant is set on a minority of documents; topics and cfrCitations are empty for most notices; commentUrl is published only sometimes.
  • Coverage. Full text from 1994 onward; scanned issues reach back to 1936 but carry fewer structured fields.
  • A wrong filter value is not answered with an empty run. Unknown agency slugs are corrected or rejected by name; unknown topic, section or presidential-document values are rejected by the source and repeated back to you as the input to change.
  • onlyNew is per filter combination, stored in a named key-value store, so two scheduled tasks on this actor do not eat each other's memory. The first run of a new combination returns everything it finds.
  • Licensing. Federal Register documents are works of the US Government published by the Office of the Federal Register and are in the public domain. The actor reads only public endpoints and collects no personal data beyond the names of officials that the documents themselves print.

Made by Yadroo. Sibling actors: sec-edgar-filings, openfda-records, cisa-kev-vulnerabilities, bls-release-calendar, us-treasury-yields.