Federal Register Documents: Rules, Notices & Comment Dates
Pricing
from $1.40 / 1,000 document row returneds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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"]withcommentsOpenOnlygives every proposed rule whose comment window is still open, with the closing date, the days left and the comment link. Sort your calendar bydaysUntilCommentsClose. - Compliance dates in your part of the code —
cfrTitle: 40(plus acfrPart) witheffectiveWithinDays: 120lists 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) andonlyNew, on a daily schedule: each run pays only for documents it has not delivered before. - Executive orders as data —
documentTypes: ["PRESDOCU"]withpresidentialDocumentTypes: ["executive_order"]fillsexecutiveOrderNumber,signingDateandpresidentNamefor 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 —
includeFullTextattaches 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.
| Field | Type | Default | Allowed values / notes |
|---|---|---|---|
mode | string | documents | documents, publicInspection, agencies — see Modes |
searchTerm | string | empty | Full-text search over the whole document. Quote a phrase: "comment period". In agencies it filters the dictionary by name |
documentTypes | string[] | all four | RULE, PRORULE, NOTICE, PRESDOCU — see Document types |
agencySlugs | string[] | all agencies | Slugs such as environmental-protection-agency; several are OR-ed. Short names (EPA) and printed names work too |
presidentialDocumentTypes | string[] | all four | executive_order, proclamation, memorandum, determination |
sections | string[] | all six | money, environment, world, science-and-technology, business-and-industry, health-and-public-welfare |
topics | string[] | all topics | Index-term slugs, e.g. air-pollution-control. Printed names are slugified for you |
docketId | string | empty | One agency docket, exact match, e.g. CMS-4217-NC |
cfrTitle | integer | empty | 1–50. 40 environment, 21 food and drugs, 17 securities, 12 banks, 14 aeronautics, 49 transportation |
cfrPart | string | empty | A part inside that title, e.g. 52. Needs cfrTitle |
significantOnly | boolean | false | Only documents the unified agenda marks significant under EO 12866 |
publishedFrom | string | empty | YYYY-MM-DD, earliest publication date |
publishedTo | string | empty | YYYY-MM-DD, latest publication date. Leave empty to see issues already scheduled |
lookbackDays | integer | empty | 1–3650. Relative window for scheduled runs; ignored when publishedFrom is set |
effectiveWithinDays | integer | empty | 1–3650. Effective date between today and N days from now |
commentsOpenOnly | boolean | false | Comment period closes today or later |
availableOn | string | newest desk | YYYY-MM-DD, publicInspection only. Empty = the newest day that has filings |
onlyNew | boolean | false | Write only document numbers no earlier run of the same filters delivered |
includeFullText | boolean | false | Attach the plain text — one extra request per row |
fullTextMaxChars | integer | 20000 | 500–200000. Cut length of fullText |
sortBy | string | newest | newest, oldest, relevance, executiveOrderNumber — see Sort orders |
maxItems | integer | 50 | 1–5000 rows |
fields | string[] | all | Keep 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
| Mode | Endpoint it reads | What a row is | Filters it uses |
|---|---|---|---|
documents | the search over published and already scheduled documents | one Federal Register document | every filter in the table above |
publicInspection | the filing desk, before printing | one filing waiting for its issue | documentTypes, availableOn, sortBy, maxItems |
agencies | the agency dictionary | one agency | searchTerm (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
| Value | Printed as type | What it is |
|---|---|---|
RULE | Rule | A final rule — the text that changes the Code of Federal Regulations, with an effective date |
PRORULE | Proposed Rule | A proposal open for public comment, including advance notices (ANPRM) and supplements |
NOTICE | Notice | Everything else an agency must announce: meetings, information collections, grants, determinations, extensions |
PRESDOCU | Presidential Document | Signed 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
| Value | Effect |
|---|---|
newest | Newest publication date first (default) |
oldest | Oldest first — the natural order for reading a docket's history |
relevance | Best match for searchTerm. Without search words the run falls back to newest and says so |
executiveOrderNumber | Descending 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")
| Field | Type | Meaning / when it is empty |
|---|---|---|
documentNumber | string | The Federal Register document number, e.g. 2026-19535. Stable identifier |
title | string | Printed title |
type | string | Rule, Proposed Rule, Notice or Presidential Document |
subtype | string | Finer label where the source prints one (Executive Order); usually null |
action | string | The "ACTION:" line, e.g. Final rule.; null for presidential documents |
abstract | string | The summary paragraph; null for presidential documents and some notices |
datesNote | string | The "DATES:" paragraph in the agency's own words |
excerpt | string | Matching snippet, only when searchTerm is used; highlighting removed |
agencyNames | string[] | Every agency that signed the document, department first |
primaryAgency | string | First entry of agencyNames |
topics | string[] | Index terms as printed; empty for many notices and all presidential documents |
publicationDate | string | YYYY-MM-DD; can be in the future for a scheduled issue |
effectiveOn | string | Effective date; null for most notices and proposed rules |
commentsCloseOn | string | Comment closing date; null for final rules |
commentsOpen | boolean | commentsCloseOn is today or later; null when there is no comment date |
daysUntilEffective | number | Whole UTC days from the run day; negative when already in force |
daysUntilCommentsClose | number | Whole UTC days from the run day; negative when the window has closed |
signingDate | string | Presidential documents only |
executiveOrderNumber | number | Executive orders only |
presidentName | string | The president in office at publication — the source fills it on every document |
citation | string | Federal Register citation, e.g. 91 FR 60568 |
volume, startPage, endPage, pageLength | number | Position in the printed issue |
docketIds | string[] | Agency docket numbers; empty when the agency prints none |
regulationIdNumbers | string[] | RIN numbers linking the document to the unified agenda |
cfrTitles | number[] | CFR titles the document touches, e.g. [40] |
cfrCitations | string[] | Printed citations, e.g. ["40 CFR 228"]; empty for notices |
significant | boolean | Significant under EO 12866; null on the majority of documents |
commentUrl | string | Where the source sends comments; often null |
pdfUrl | string | The official PDF of the issue page |
rawTextUrl | string | Plain-text version of the document |
fullText, fullTextChars, fullTextTruncated | string / number / boolean | Filled only with includeFullText |
url | string | The document's page |
fetchedAt | string | ISO 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 ApifyClientclient = 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.
| Run | Rows | Cost at list price |
|---|---|---|
| The default input (50 newest documents for a keyword) | 50 | $0.001 + 50 × $0.002 = $0.101 |
| A comment-deadline list | 25 | $0.001 + 25 × $0.002 = $0.051 |
| Five notices with the full text attached | 5 | $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
publicationDateis 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 andinspectionIssueDatetells you which day you got. - Empty fields are the source's, not a bug.
effectiveOnexists for final rules and some notices;commentsCloseOnfor proposals;significantis set on a minority of documents;topicsandcfrCitationsare empty for most notices;commentUrlis 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.
onlyNewis 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.