Federal Register API — Rules, Notices & Public Inspection avatar

Federal Register API — Rules, Notices & Public Inspection

Pricing

from $0.24 / 1,000 federal register documents

Go to Apify Store
Federal Register API — Rules, Notices & Public Inspection

Federal Register API — Rules, Notices & Public Inspection

Search the US Federal Register: final and proposed rules, notices and presidential documents, plus the Public Inspection desk before publication. One row per document with agencies, dates, comment deadline, docket, RIN, CFR parts, regulations.gov comment count and PDF links. No API key.

Pricing

from $0.24 / 1,000 federal register documents

Rating

0.0

(0)

Developer

Insight Solutions

Insight Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Share

Search the US Federal Register — final rules, proposed rules, notices and presidential documents — and its Public Inspection desk, where documents sit for a day or so before they are published. One row per document: title, type, abstract, agencies, publication date, effective date, comment deadline, docket and RIN identifiers, CFR parts affected, page citation, the significance flag, the regulations.gov comment count, and links to the HTML, PDF, full-text and JSON versions.

Filter by search term, agency, document type, publication or effective date, docket, CFR title and part, significant-only, and "comments still open". Watch a regulator, track a rulemaking from proposal to final rule, or read tomorrow's Federal Register today.

No API key, no login, no browser. US Government public-domain data, read through the Office of the Federal Register's own public API.

At a glance

Input — this is the Store prefill; paste it and run:

{ "terms": ["artificial intelligence"], "types": [], "sortBy": "newest", "maxResults": 20,
"includeAbstract": true, "publicInspection": false, "maxConcurrency": 3, "maxRunSecs": 240,
"proxyConfiguration": { "useApifyProxy": true } }

Output — one row per document. The fields you will use most are title, type, agencies, publishedAt, commentsCloseOn, docketIds, url and pdfUrl (full list under Output reference). Anything that could not be fetched or used comes back as a free diagnostic row (ok: false, errorType, error) instead of a charge.

Price — $0.40 per 1,000 documents (+ $0.001 per run); diagnostics and empty runs free; no API key, no browser, limited permissions, works over the Apify MCP server and with x402.

From code — client.actor("insight.solutions/federal-register-api").call(run_input={…}) with apify-client, or POST https://api.apify.com/v2/acts/insight.solutions~federal-register-api/run-sync-get-dataset-items.


What you get

This is the first row the prefill returns — a real capture, trimmed to the columns that carry something:

{
"ok": true,
"rowType": "document",
"input": "artificial intelligence",
"source": "federalregister.gov",
"documentNumber": "2026-19535",
"title": "Request for Information; Medicare Part D Reasonable and Relevant Pharmacy Contracting Standards",
"type": "proposed-rule",
"typeRaw": "Proposed Rule",
"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. …",
"excerpt": "more transparent to pharmacies; • The use of “lesser of” pricing methodologies, … • Opportunities for the use of artificial intelligence (AI) with respect to Part D pharmacy reimbursement; …",
"agencies": [
{ "slug": "health-and-human-services-department", "name": "Health and Human Services Department", "id": 221, "parentId": null },
{ "slug": "centers-for-medicare-medicaid-services", "name": "Centers for Medicare & Medicaid Services", "id": 45, "parentId": 221 }
],
"agencyNames": ["Health and Human Services Department", "Centers for Medicare & Medicaid Services"],
"primaryAgency": "Health and Human Services Department",
"publishedAt": "2026-09-24",
"commentsCloseOn": "2026-11-23",
"commentsOpen": true,
"docketIds": ["CMS-4217-NC"],
"rins": ["0938-AW08"],
"cfrReferences": [{ "title": 42, "part": "423", "chapter": null }],
"cfrCitations": ["42 CFR 423"],
"citation": "91 FR 60568",
"volume": 91,
"startPage": 60568,
"endPage": 60572,
"pageLength": 5,
"datesText": "To be assured consideration, comments must be received at one of the addresses provided below, by November 23, 2026.",
"regulationsGovDocketId": "CMS-2026-3037",
"regulationsGovDocumentId": "CMS-2026-3037-0001",
"regulationsGovCommentsCount": 6,
"regulationsGovCommentsUrl": "https://www.regulations.gov/docketBrowser?rpp=50&so=DESC&sb=postedDate&po=0&dct=PS&D=CMS-2026-3037",
"regulationsGovCheckedAt": "2026-09-28T15:55:04.000Z",
"url": "https://www.federalregister.gov/documents/2026/09/24/2026-19535/request-for-information-medicare-part-d-reasonable-and-relevant-pharmacy-contracting-standards",
"pdfUrl": "https://www.govinfo.gov/content/pkg/FR-2026-09-24/pdf/2026-19535.pdf",
"jsonUrl": "https://www.federalregister.gov/api/v1/documents/2026-19535?publication_date=2026-09-24",
"publicInspectionPdfUrl": "https://public-inspection.federalregister.gov/2026-19535.pdf?1790167517",
"tocDoc": "Medicare Part D Reasonable and Relevant Pharmacy Contracting Standards",
"query": "term \"artificial intelligence\"; order newest",
"rank": 1,
"scrapedAt": "2026-09-28T16:54:07.000Z",
"sourceUrl": "https://www.federalregister.gov/documents/2026/09/24/2026-19535/request-for-information-medicare-part-d-reasonable-and-relevant-pharmacy-contracting-standards"
}

A Public Inspection row fills the filing half of the same schema instead — filedAt, filingType (regular or special), scheduledPublicationDate, numPages, pdfFileSize, pdfUpdatedAt, subjects[] — and leaves publishedAt null, because it is not published yet.

Four dataset views ship with it: Documents, Open for comment, Public inspection and Diagnostics.


Quick start

1. A term search — the prefill. Newest first, twenty documents, one request:

{ "terms": ["artificial intelligence"], "maxResults": 20 }

2. An agency, a type and a date window — every final rule EPA published since the first of September (agencies take a slug, a name or a short name):

{ "agencies": ["EPA"], "types": ["RULE"], "publishedFrom": "2026-09-01", "maxResults": 200 }

3. An open-for-comment watch — proposed rules from two agencies whose comment period is still open today. Closed ones are read and dropped before anything is charged; schedule it daily:

{ "agencies": ["Securities and Exchange Commission", "Federal Communications Commission"],
"types": ["PRORULE"], "publishedFrom": "2026-06-01", "commentsOpen": true, "maxResults": 500 }

4. The Public Inspection desk — everything filed for the next issues, before it is published. With no terms you get the whole desk; add terms to search it, agencies or types to narrow it:

{ "publicInspection": true }

Looking for one document? { "documentNumbers": ["2026-18723"] } — a federalregister.gov link works too.


Input

FieldTypeDefaultWhat it does
termsstring[][]Full-text searches. Each term is its own search with its own maxResults. Empty is fine when another filter is set.
agenciesstring[][]Agency slugs (environmental-protection-agency), names (Department of Energy) or short names (EPA), resolved against the Federal Register's own list of 473 agencies. An unknown one gets a free unknown-agency row with suggestions and the run continues without it.
typesselectallRULE, PRORULE, NOTICE, PRESDOCU. Validated before sending: the API answers an unknown type with an empty result rather than an error.
publishedFrom / publishedTodate—Publication date window, YYYY-MM-DD.
effectiveFrom / effectiveTodate—Effective date window.
commentsOpenbooleanfalseKeep only documents whose comment period closes today or later (Washington time). Applied before the charge.
significantOnlybooleanfalseOnly documents marked significant under Executive Order 12866.
docketIdsstring[][]Agency docket numbers; each is its own search.
cfrTitle / cfrPartinteger—Only documents affecting this CFR title (and part). cfrPart needs cfrTitle.
presidentialDocumentTypesselect[]executive_order, proclamation, memorandum, notice, determination, other. On its own it searches presidential documents.
documentNumbersstring[][]Fetch these documents directly, one request each. Filters do not apply to them.
sortByselectnewestnewest, oldest, relevance, executive_order_number. Also the order maxResults cuts in.
publicInspectionbooleanfalseAlso read the Public Inspection desk: each term searches it; with no terms, everything on file today. agencies and types apply to it; dates, dockets and CFR do not.
includeAbstractbooleantrueKeep abstract and excerpt.
includeFacetsbooleanfalseOne free facet row per search: its matches counted by agency.
maxResultsinteger200Per search. Pages of up to 100. 0 = as many as the API serves within the time budget.
maxConcurrencyinteger3Searches in flight. Pages of one search are read one at a time, 300 ms apart.
maxRunSecsinteger24030–3600. Everything already returned is kept when it runs out.
proxyConfigurationobjectdatacenterThe API answered from the datacenter proxy and with no proxy at all.

A run with nothing to search — no term, agency, type, docket, date, CFR title or document number, and the desk off — stops before any request, finishes FAILED and says what to set. commentsOpen and significantOnly narrow a search; they are not one on their own.


Output reference

Every row has every column, null where it does not apply, so the dataset exports as one table.

ColumnMeaning
ok, rowTyperowType is document, public-inspection, facet or diagnostic; ok is false only on a diagnostic
inputThe term, docket ID or document number behind the row; browse for a filters-only search; public-inspection for the whole desk
error, errorTypeOn a diagnostic row: what went wrong and what to do
scrapedAt, source, sourceUrlWhen, federalregister.gov, and the page the row describes
documentNumberThe FR document number, e.g. 2026-19535
title, action, abstract, excerptAs published; excerpt is the search-hit passages as plain text
type, typeRaw, subtyperule / proposed-rule / notice / presidential-document, the label as published, and e.g. "Executive Order"
agencies[], agencyNames[], primaryAgency{slug, name, id, parentId}, parent first
publishedAt, effectiveOn, commentsCloseOn, signingDateYYYY-MM-DD
commentsOpenTrue while comments are open today (Washington time), false after, null with no comment period
docketIds[], rins[]Agency dockets and Regulation Identifier Numbers
cfrReferences[], cfrCitations[]{title, part, chapter} and "42 CFR 423"
topics[], significantCFR indexing terms; the EO 12866 flag (null when not stated)
citation, volume, startPage, endPage, pageLength"91 FR 60568" and its pages
datesTextThe DATES paragraph verbatim
executiveOrderNumber, proclamationNumber, presidentialDocumentNumberFor presidential documents
regulationsGovDocketId, regulationsGovDocumentId, regulationsGovCommentsCount, regulationsGovCommentsUrl, regulationsGovCheckedAtThe comment docket on regulations.gov, as the Federal Register last read it
url, pdfUrl, fullTextHtmlUrl, fullTextXmlUrl, rawTextUrl, jsonUrl, publicInspectionPdfUrlEvery published version
tocSubject, tocDocThe issue's table-of-contents entry
query, rankThe search spelled out, and the row's position in its results
filedAt, filingType, scheduledPublicationDate, numPages, pdfFileSize, pdfUpdatedAt, subjects[], docketNumbers[]Public Inspection rows only
facetAgencies[]Facet rows only: {slug, name, count}, largest first

Diagnostic types (all free): bad-input (an entry that could not be used), unknown-agency, not-found (a document number the Register does not know), no-results, rate-limited (HTTP 429 twice, from two proxy sessions), blocked (HTTP 403 twice), http (any other failure), timeout, deadline (the run's time budget ran out), budget (your maximum charge was reached) and upstream-format (an answer that is not the documented JSON).


Document types explained

  • Rule (RULE) — a final rule: it amends the Code of Federal Regulations and usually carries an effectiveOn date. This is the law changing.
  • Proposed rule (PRORULE) — a notice of proposed rulemaking, or an advance notice or request for information before one. Usually carries a commentsCloseOn date and a regulations.gov docket: this is the stage where anyone can comment.
  • Notice (NOTICE) — everything that is neither: meetings, information collections, grant announcements, permits, orders, filings. The largest type by far.
  • Presidential document (PRESDOCU) — executive orders, proclamations, memoranda and determinations signed by the President; subtype says which and signingDate when.

What you are never charged for

  • Every diagnostic row and every facet row.
  • Documents read and then excluded by commentsOpen, and Public Inspection filings excluded by your agency or type filters — every filter runs before the row is written, so it is never billed.
  • A document a second search in the same run found again: it is returned and charged once.
  • A run that returns nothing. A run whose input was usable but produced nothing — no match, a filter that excluded every match, a document number that does not exist, an API that refused us or timed out — finishes SUCCEEDED with zero results, a status message that says "0 results. N diagnostic row(s) explain why … Nothing was charged.", and a free diagnostic row per cause; nothing is charged, start fee included. A run finishes FAILED only when there was nothing usable to attempt, or the Actor itself hit an error.

Pricing

EventFREEBRONZESILVERGOLD
Run started$0.001$0.001$0.001$0.001
Federal Register document$0.0004$0.0004$0.00032$0.00024
Public Inspection document$0.0004$0.0004$0.00032$0.00024

$0.40 per 1,000 documents at the free tier; 500 documents cost $0.001 + 500 × $0.0004 = $0.201. The run honours ACTOR_MAX_TOTAL_CHARGE_USD: when the ceiling is reached it stops fetching, leaves a free budget row, keeps everything already delivered and finishes successfully.


Use it from an AI agent, or from code

One JSON object in, one flat array out. The Actor runs with limited permissions, uses pay-per-event pricing and never enters Standby, so it works over the Apify MCP server (mcp.apify.com) and with x402 agentic payments.

curl -X POST "https://api.apify.com/v2/acts/insight.solutions~federal-register-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"agencies":["EPA"],"types":["PRORULE"],"commentsOpen":true,"publishedFrom":"2026-06-01"}'
# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("insight.solutions/federal-register-api").call(run_input={
"terms": ["artificial intelligence"],
"types": ["RULE", "PRORULE"],
"publishedFrom": "2026-01-01",
"maxResults": 500,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
if row["rowType"] != "document":
continue
print(row["publishedAt"], row["type"], row["primaryAgency"], row["title"],
row["commentsCloseOn"], row["url"], sep=" | ")

FAQ

What is Public Inspection? Documents are filed with the Office of the Federal Register and put on public inspection before they are published — usually the business day before, earlier for some. The desk is the first public sight of a rule. A filing can still be withdrawn or corrected before publication, which is why it is its own row type with a filedAt and a scheduledPublicationDate instead of a publishedAt. With publicInspection: true and no terms you get everything on file right now; the desk empties as documents are published, so schedule it for the morning.

Why do counts stop at 10,000? The Federal Register API stops counting there: a broad query reports count: 10000 and at most fifty pages, however many documents really match. The run notes this in its status message. To reach everything, split the query by date — a month at a time is usually well under the ceiling.

Where is the full text? Not in the rows — a final rule can be hundreds of pages. Each row links to it: fullTextHtmlUrl and rawTextUrl (and fullTextXmlUrl, pdfUrl). The single-document response behind documentNumbers carries all three full-text links; on search results they are requested from the API too and filled when it serves them — pdfUrl and url are there either way.

Does it return anyone's contact details? No. The fields it reads name agencies, not people, and the contact block ("FOR FURTHER INFORMATION CONTACT") lives in the full text, which it does not fetch. The one place contact text can surface is the search-hit excerpt, so any excerpt passage carrying an email address, a phone number or a contact or mailing instruction is removed before the row is written. Titles are the Register's own, verbatim.

How do I watch for new rules every day? Save a task with an agency, a type and publishedFrom set to yesterday (or commentsOpen: true for an open-for-comment list), and schedule it.

sortBy: newest
with a modest maxResults keeps each run small.


Limitations

  • No full text in rows — links only (see the FAQ).
  • Counts stop at 10,000 and paging at fifty pages per query; split by date.
  • Public Inspection filters: agencies and types are applied to the rows; date, docket and CFR filters do not apply to the desk.
  • commentsOpen is applied to the rows, so a watch over a wide window reads documents it will not return. They cost nothing, but they take time.
  • The upstream format may change. The Federal Register API is stable and versioned, but every field is treated as optional: a shape the Actor does not recognise becomes a free upstream-format row rather than a wrong value.

Source

US Government public-domain data, read from the Office of the Federal Register's public API at federalregister.gov/api/v1. The PDFs link to the official edition on govinfo.gov; comment counts come from regulations.gov as the Federal Register last checked them (regulationsGovCheckedAt).

Our other Actors

Every Insight Solutions Actor is pay-per-result with no browser, no login and no API key, and every one of them returns free diagnostic rows instead of billing for failures. Prices are per 1,000 results.

Video, audio & social

News, documents & the web

Business, finance & jobs

Apps & games