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

40 minutes 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.

Need it tailored to your workflow? Missing a field, a filter, another source or a different output format? Open an issue and describe what you need — we read every request and adapt the actor.

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" with sortBy: "oldest" returns the proposed rule, the extensions and the final rule under the same agency docket, in publication order (the default newest lists the latest document first).
  • 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. The Console form comes prefilled with the example search words artificial intelligence; API calls, schedules, tasks and MCP get no search words unless they send them.

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), printed names and obvious typos are resolved, and every correction is named in the status message
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 (agency slugs in agencies) no earlier run of the same filters delivered
includeFullTextbooleanfalseAttach the plain text — one extra request per row, so at most 120 rows per run
fullTextMaxCharsinteger20000500–200000. Cut length of fullText
sortBystringnewestnewest, oldest, relevance, executiveOrderNumber — see Sort orders
maxItemsinteger501–5000 rows (at most 120 with includeFullText)
fieldsstring[]allKeep only these output fields, in this order. rowType (and found on a found:false row) always stays. A wrong letter case or an obvious typo is corrected, a name the mode does not have is ignored — both with a warning — and a list with no valid name stops the run before anything is billed

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

documentTypes takes exactly these four values — the input form offers them as a list, and the platform rejects any other value before the run starts. Kinds of presidential document (presidentialDocumentTypes, a list as well): 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 named in the status message and in SUMMARY.agencyCorrections (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 }

Every document of one rulemaking, oldest first

{ "mode": "documents", "docketId": "EPA-HQ-OAR-2021-0317", "sortBy": "oldest", "maxItems": 20 }

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
fullTextErrorstringWith includeFullText: why this row has no fullText (no plain text published, HTTP 404, or the request failed); null otherwise
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. With onlyNew that row is written once; later runs that still find nothing say so in the status message and write nothing.

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, the full-text counts (attached / not published / failed), why the run stopped early if it did, 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 the found: false row of an unmatched docket is a billed row like any other. Bronze −10 %, Silver −20 %, Gold and above −30 % on the row price; the start event is the same on every plan; platform usage is included.

RunRowsCost at list price
The Console example input (50 newest documents for "artificial intelligence")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

Runs take 256 MB, no browser, and the ones behind this README finished in three to five seconds. includeFullText costs one extra request per row on the source side but no extra event.

Maximum cost per run. The run reads your limit before it starts, writes rows only while the limit pays for them, and then ends with "Stopped at your spending limit: N rows delivered" — no row is stored, billed or remembered past it, and no further page or document text is requested.

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 makes at most 140 requests; when it gets there it ends with what it has written and says so. If the source ever starts refusing requests systematically, the honest fix is to narrow the query, not to work around the block.
  • Full text: at most 120 rows per run. Each text is one request, so a larger maxItems is lowered to 120 with a note in the status message. A document the source publishes no plain text for, or whose text request fails, is still written, with fullTextError saying why; after three failed text requests in a row the run stops asking and ends with what it has. A row is never written without the text because the run ran out of requests or time.
  • Timeout. Rows are written page by page. A run that gets close to its timeout stops starting new requests and ends SUCCEEDED with "Stopped before the run timeout: N rows saved"; a restart of the run on Apify's side never writes or bills a row twice.
  • 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 record key holds a hash of the exact filters, so long filter sets no longer share a record. The run date, lookbackDays, the sort order, maxItems and fields are not part of the combination. The first run of a new combination returns everything it finds; a document is remembered only once it was written, so a run stopped by your spending limit leaves the rest for the next run.
  • 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.