Federal Register API — Rules, Notices & Public Inspection
Pricing
from $0.24 / 1,000 federal register documents
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
Maintained by CommunityActor 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
| Field | Type | Default | What it does |
|---|---|---|---|
terms | string[] | [] | Full-text searches. Each term is its own search with its own maxResults. Empty is fine when another filter is set. |
agencies | string[] | [] | 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. |
types | select | all | RULE, PRORULE, NOTICE, PRESDOCU. Validated before sending: the API answers an unknown type with an empty result rather than an error. |
publishedFrom / publishedTo | date | — | Publication date window, YYYY-MM-DD. |
effectiveFrom / effectiveTo | date | — | Effective date window. |
commentsOpen | boolean | false | Keep only documents whose comment period closes today or later (Washington time). Applied before the charge. |
significantOnly | boolean | false | Only documents marked significant under Executive Order 12866. |
docketIds | string[] | [] | Agency docket numbers; each is its own search. |
cfrTitle / cfrPart | integer | — | Only documents affecting this CFR title (and part). cfrPart needs cfrTitle. |
presidentialDocumentTypes | select | [] | executive_order, proclamation, memorandum, notice, determination, other. On its own it searches presidential documents. |
documentNumbers | string[] | [] | Fetch these documents directly, one request each. Filters do not apply to them. |
sortBy | select | newest | newest, oldest, relevance, executive_order_number. Also the order maxResults cuts in. |
publicInspection | boolean | false | Also 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. |
includeAbstract | boolean | true | Keep abstract and excerpt. |
includeFacets | boolean | false | One free facet row per search: its matches counted by agency. |
maxResults | integer | 200 | Per search. Pages of up to 100. 0 = as many as the API serves within the time budget. |
maxConcurrency | integer | 3 | Searches in flight. Pages of one search are read one at a time, 300 ms apart. |
maxRunSecs | integer | 240 | 30–3600. Everything already returned is kept when it runs out. |
proxyConfiguration | object | datacenter | The 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.
| Column | Meaning |
|---|---|
ok, rowType | rowType is document, public-inspection, facet or diagnostic; ok is false only on a diagnostic |
input | The term, docket ID or document number behind the row; browse for a filters-only search; public-inspection for the whole desk |
error, errorType | On a diagnostic row: what went wrong and what to do |
scrapedAt, source, sourceUrl | When, federalregister.gov, and the page the row describes |
documentNumber | The FR document number, e.g. 2026-19535 |
title, action, abstract, excerpt | As published; excerpt is the search-hit passages as plain text |
type, typeRaw, subtype | rule / 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, signingDate | YYYY-MM-DD |
commentsOpen | True 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[], significant | CFR indexing terms; the EO 12866 flag (null when not stated) |
citation, volume, startPage, endPage, pageLength | "91 FR 60568" and its pages |
datesText | The DATES paragraph verbatim |
executiveOrderNumber, proclamationNumber, presidentialDocumentNumber | For presidential documents |
regulationsGovDocketId, regulationsGovDocumentId, regulationsGovCommentsCount, regulationsGovCommentsUrl, regulationsGovCheckedAt | The comment docket on regulations.gov, as the Federal Register last read it |
url, pdfUrl, fullTextHtmlUrl, fullTextXmlUrl, rawTextUrl, jsonUrl, publicInspectionPdfUrl | Every published version |
tocSubject, tocDoc | The issue's table-of-contents entry |
query, rank | The 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 aneffectiveOndate. 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 acommentsCloseOndate 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;subtypesays which andsigningDatewhen.
What you are never charged for
- Every
diagnosticrow and everyfacetrow. - 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
| Event | FREE | BRONZE | SILVER | GOLD |
|---|---|---|---|---|
| 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-clientfrom apify_client import ApifyClientclient = 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":continueprint(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: newestmaxResults 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:
agenciesandtypesare applied to the rows; date, docket and CFR filters do not apply to the desk. commentsOpenis 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-formatrow 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
- YouTube Transcript API — captions as timed segments, text, SRT or VTT, with language fallback and translation.
- YouTube Comments API — comments and replies with likes, pinned and hearted flags, newest or top sort.
- YouTube Channel API — a channel's videos, Shorts and live streams, plus YouTube search.
- Podcast Search, Episodes & Charts API — Apple Podcasts search, charts and full episode feeds.
- Bluesky Scraper — profiles, posts, followers and follows from the public AT Protocol API.
- Telegram Channel Scraper — posts, views and channel stats from public Telegram channels.
- Substack Scraper — posts with full free text, comments and publication profiles.
- Hacker News API — stories, comments, users, front page and a structured "Who is hiring?" parser from the official HN APIs.
- Discourse Forum API — topics, posts and categories from any Discourse community via its own JSON endpoints, usernames only.
News, documents & the web
- Google News Search, Topics & Real Article URLs — news search and topic feeds with the publisher's real URL decoded.
- Website to Markdown — Content Extractor for LLMs & RAG — any site as clean Markdown, text and heading-aware chunks.
- Internet Archive API — archive.org search, item metadata, files and reviews.
- Wayback Machine Toolkit — archived URL inventories, snapshots and text diffs between dates.
- Website Technology Detector — the tech stack behind any site, with the evidence for each detection.
- Domain Intelligence API — DNS, RDAP registration, TLS certificate and HTTP facts in one row per domain.
- SEO Page Audit — sitemap crawl with on-page checks, structured data and broken-link reports.
- Keyword Suggestions API — Google, YouTube, Bing, Amazon and eBay autocomplete with alphabet and question expansions.
- Website Contact Extractor — emails, phone numbers and social profiles from any list of websites.
- Web Search Results API — Bing and DuckDuckGo organic results with snippets, no key, no browser.
- Company Enrichment API — a domain in, a company profile out: firmographics, contacts, tech stack, DNS and hiring signal.
- Company Dossier API — one company in, twelve sections out: profile, tech, contacts, DNS, open roles, news, SEC filings, federal awards, recalls, YC batch and apps.
- Press Releases API — GlobeNewswire and PR Newswire releases plus any newsroom feed, by keyword, company, ticker or subject.
- Academic Papers Search API — OpenAlex, Crossref, arXiv and PubMed in one row per paper: abstract, citations, open-access PDF, authors and venue.
- RSS & Atom Feed Monitor — any RSS, Atom or JSON feed (or an OPML file) in, only the new items out, with keyword filters and a webhook.
- Website Change Monitor — watch any pages, diff the text between runs, get change rows with added/removed lines, keyword alerts and a webhook.
- Wikipedia & Wikidata API — article text, search, daily pageviews and Wikidata entity facts, any language edition.
Business, finance & jobs
- Congress & Insider Trades API — STOCK Act periodic transaction reports and SEC Form 4 insider trades in one schema.
- Federal Contracts, Grants & Lobbying API — SAM.gov opportunities, USAspending awards, Grants.gov notices and Senate lobbying filings in one schema.
- SEC EDGAR API — filings, XBRL financials and full-text search by ticker or CIK.
- Clinical Trials & FDA API — ClinicalTrials.gov studies plus openFDA recalls, labels, approvals, 510(k)s and adverse-event reports.
- Product & Vehicle Recalls API — CPSC, NHTSA, FDA and USDA recalls, vehicle complaints and ratings, plus a VIN decoder.
- Y Combinator Companies, Batches & Founders — the YC directory with founders and social links, filterable by batch, industry and hiring status.
- Career Site Jobs API — jobs straight from Greenhouse, Lever, Ashby, Workable and 10+ other ATS career sites.
- New Job Postings Monitor — new, closed and changed postings on the career sites you watch.
- Hiring Signals API — Open Roles & Hiring Surge by Company — one row per company per run: open roles, what opened and closed, department and seniority breakdowns, and a hiring-surge flag.
- Remote Jobs API — RemoteOK, Remotive, We Work Remotely, Himalayas, Jobicy and more in one schema, deduplicated.
- Shopify Products API — any Shopify store's catalogue, variants, prices and stock signals.
- Shopify Store Monitor — price drops, sales, restocks, sell-outs and new products on any Shopify store, one row per change.
- Public Tenders API — EU TED, UK Find a Tender and Contracts Finder notices by keyword, CPV code, country, stage and deadline.
- Nonprofit & IRS 990 Lookup API — search US nonprofits and get EIN, NTEE code and multi-year Form 990 financials.
- OpenStreetMap Places API — businesses and points of interest by category and area from OpenStreetMap: name, address, coordinates, website, phone, opening hours.
Apps & games
- App Store & Google Play Reviews API — reviews from both stores with ratings, versions and developer replies.
- App Store Top Charts & App Search API — Apple top charts by country and genre, plus app search and details.
- App Store Keyword Rank Tracker — where any app ranks for any keyword on the App Store and Google Play, with rank changes and ASO suggestions.
- Steam Reviews API — Steam reviews with playtime, helpfulness and game details.
- Steam Game Data API — prices, tags, review scores, live player counts and top charts.