Skip to content

the-ai-entrepreneur-ai-hub/federal-register-monitor-docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

Federal Register Monitor

A monitoring API for the U.S. Federal Register. Pull rules, proposed rules, notices, and presidential documents, filter them by type, keyword, agency, and date, and get back a clean feed you can poll for "what changed since last run."

No API key Modes Pricing Source

This is the docs repo. The actor itself lives on the Apify Store: george.the.developer/federal-register-monitor.

If you have ever written a script that hits the Federal Register API, dedupes against yesterday's results, and emails your compliance team when a rule from a watched agency shows up, this does that part for you so you can stop babysitting it.


What it does

The Federal Register is the daily journal of the U.S. government. Every final rule, proposed rule, notice, and presidential document gets published there. This actor wraps the official Federal Register API and gives you a few things on top of raw JSON:

  • Pull by document type rules (RULE), proposed rules (PRORULE), notices (NOTICE), and presidential documents (PRESDOCU).
  • Filter by keyword full-text search across titles, abstracts, and document bodies.
  • Filter by agency scope a feed to one or more agencies by their Federal Register slug (for example interior-department, transportation-department).
  • Filter by date restrict to a publication window with publishedAfter / publishedBefore, or grab the newest documents first.
  • Single-document full detail hand it a document number and get the full record back: topics, effective dates, the free-text dates field, Regulation ID Numbers (RINs), docket IDs, CFR references, and the agency tree.
  • Normalized output consistent camelCase field names, flattened agency objects, and dates you can sort on, so you do not have to re-shape the raw API payload every time.

Everything comes from the public Federal Register API. No API key, no scraping, no login.


Why

Government-affairs and compliance teams almost always end up building the same plumbing by hand. Someone wires up the Federal Register endpoints, keeps a list of agencies and keywords they care about, stores the document numbers they have already seen, and re-polls on a schedule to find anything new. Then it breaks when the payload shape shifts or the watchlist grows, and a person ends up eyeballing the daily Federal Register table again.

This hands that back as a clean monitoring feed. You give it a saved set of agencies, keywords, types, and a date window. It returns a normalized dataset you can diff against your last run to surface "new since last run." The watchlist lives in your input, the dedupe lives in your dataset, and you stop re-writing the same poller every quarter.

It is built for monitoring and alerting, not one-off lookups. The single-document mode is there for when an alert fires and you need the full detail to triage it.


How it works

flowchart LR
    A[Request<br/>type / keyword<br/>agency / date] --> B{mode}
    B -->|documents| C[/documents endpoint/]
    B -->|search| D[/search endpoint/]
    B -->|document| E[/single document/]
    C --> F[Federal Register API]
    D --> F
    E --> F
    F --> G{shape}
    G -->|list| H[normalize rows]
    G -->|single| I[full detail<br/>topics + dates + RINs]
    H --> J[(dataset)]
    I --> J[(dataset)]
Loading

The request goes in with your filters. The mode field picks which Federal Register endpoint to hit. List modes get normalized into flat rows. Single-document mode returns the full detail record. Everything lands in the dataset, ready to diff or forward.


Endpoints

The actor exposes three logical operations, picked with the mode input field. In standby (API) mode these map to query paths; in batch mode you set them in the input JSON.

GET /documents (mode: documents)

List documents, newest first, filtered by type, agency, and date. This is the workhorse for a scheduled monitoring run.

Param Type Description
type string RULE, PRORULE, NOTICE, or PRESDOCU. Omit for all types.
agency string Federal Register agency slug, for example transportation-department. Repeatable.
keyword string Term to match in title and abstract.
publishedAfter date YYYY-MM-DD lower bound on publication date.
publishedBefore date YYYY-MM-DD upper bound on publication date.
order string newest (default) or oldest.
maxItems integer Cap on documents returned.

GET /search (mode: search)

Full-text search across the document body, ranked by relevance. Use this when the keyword matters more than the date window.

Param Type Description
keyword string Full-text query. Required for this mode.
type string Optional type filter, same values as above.
agency string Optional agency slug filter.
publishedAfter date Optional YYYY-MM-DD lower bound.
order string relevance (default) or newest.
maxItems integer Cap on documents returned.

GET /document (mode: document)

Fetch one document by its number with full detail. This is what you call after an alert fires.

Param Type Description
documentNumber string The Federal Register document number, for example 2026-11648. Required.

Output schema

Every list document is normalized to this row shape:

Field Type Description
documentNumber string Federal Register document number, stable unique ID. Use this for dedupe.
title string Document title.
type string Rule, Proposed Rule, Notice, or Presidential Document.
abstract string Short summary of the document.
publicationDate date YYYY-MM-DD the document was published in the Federal Register.
agencies array Flattened agency objects (see below).
htmlUrl string Canonical Federal Register web page for the document.
pdfUrl string Direct link to the GPO PDF.

Each entry in agencies carries:

Field Type Description
name string Display name, for example Interior Department.
rawName string Original uppercase name from the source.
id integer Federal Register agency ID.
slug string Agency slug used in the agency filter.
parentId integer|null Parent agency ID, or null for a top-level department.

Single-document mode (mode: document) adds the full detail fields on top of the row above:

Field Type Description
action string The regulatory action, for example Final rule. or Proposed rule.
effectiveOn date|null YYYY-MM-DD the rule takes effect, when present.
dates string Free-text dates paragraph from the document (effective dates, comment deadlines).
topics array List of CFR index topic terms. Good for tagging.
regulationIdNumbers array Regulation ID Numbers (RINs) tying the document to a rulemaking.
docketIds array Agency docket identifiers.
cfrReferences array CFR title and part references the document touches.

Quick start

Replace the slug below if you run it from your own Apify account. The verified Store slug is george.the.developer/federal-register-monitor.

cURL (Apify run-sync endpoint)

curl -X POST "https://api.apify.com/v2/acts/george.the.developer~federal-register-monitor/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "documents",
    "type": "RULE",
    "agency": "transportation-department",
    "order": "newest",
    "maxItems": 25
  }'

Node.js (apify-client)

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('george.the.developer/federal-register-monitor').call({
  mode: 'documents',
  type: 'PRORULE',
  agency: 'interior-department',
  keyword: 'continental shelf',
  publishedAfter: '2026-01-01',
  maxItems: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const doc of items) {
  console.log(doc.documentNumber, doc.publicationDate, doc.title);
}

Python (apify-client)

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("george.the.developer/federal-register-monitor").call(run_input={
    "mode": "search",
    "keyword": "seat belt assembly anchorages",
    "type": "RULE",
    "order": "relevance",
    "maxItems": 20,
})

for doc in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(doc["documentNumber"], doc["publicationDate"], doc["title"])

Examples

Ready-to-run input files live in examples/:

Here is a trimmed real record (document 2026-11648, an Interior Department final rule pulled from the live Federal Register API):

{
  "documentNumber": "2026-11648",
  "title": "Oil and Gas and Sulfur Operations in the Outer Continental Shelf-Documents Incorporated by Reference",
  "type": "Rule",
  "action": "Final rule.",
  "publicationDate": "2026-06-10",
  "effectiveOn": "2026-08-10",
  "topics": ["Continental shelf", "Oil and gas exploration", "Pipelines", "Sulfur"],
  "regulationIdNumbers": ["1014-AA51"],
  "agencies": [
    { "name": "Interior Department", "slug": "interior-department", "id": 253, "parentId": null }
  ],
  "htmlUrl": "https://www.federalregister.gov/documents/2026/06/10/2026-11648/oil-and-gas-and-sulfur-operations-in-the-outer-continental-shelf-documents-incorporated-by-reference"
}

Pricing

Pay per event. You pay for what a run actually does, nothing for idle time.

Event Price
Actor start $0.25
Document returned $0.02
Full-text brief (single-document detail) $0.05

Pay-per-event pricing activates 2026-06-24. A run of 25 documents in list mode costs about $0.25 + 25 x $0.02 = $0.75. Pulling one document's full detail adds $0.05.


Use cases

Government-affairs teams. Save a watchlist of the agencies and keywords your portfolio touches, run it daily, and diff against the last run so a person only ever looks at genuinely new rules and notices. No more scrolling the daily Federal Register table to find the three documents that matter to you.

Compliance teams. Track proposed and final rules from the regulators that govern your industry and route new effective dates straight into your compliance calendar. The normalized effectiveOn and dates fields drop into a deadline tracker without re-parsing free text by hand.

Law firms. Stand up a per-client or per-practice-area monitoring feed keyed on agency and topic, so the regulatory team gets a clean alert when something lands instead of a junior associate doing a manual sweep every morning. The full-detail mode gives you RINs and docket IDs for the memo.

Lobbying and policy shops. Keep saved feeds per issue area and per agency, then poll for new proposed rules to flag comment windows before they close. The dates field surfaces comment deadlines so nothing slips while you decide whether to file.

Trade associations. Monitor the handful of agencies your members care about and turn new rules into member-facing alerts. One saved watchlist covers the whole association instead of every member re-checking the Federal Register on their own.

Compliance SaaS products. Wire the standby API into your platform as the regulatory monitoring layer so you ship rule-tracking features without owning the Federal Register integration yourself. Your product polls, dedupes on documentNumber, and surfaces alerts to your customers.


FAQ

How do I monitor new federal rules? Run the actor on a schedule with a saved set of agencies, keywords, and a type of RULE or PRORULE. Each run returns the newest matching documents. Dedupe on documentNumber against your previous run and anything left over is new since last run. That is your alert feed.

Is the Federal Register API free? Yes. The underlying Federal Register API is public and needs no key. This actor wraps it and charges only for the convenience of normalized output, monitoring-shaped modes, and the run itself under pay-per-event pricing.

How do I track rules by a specific agency? Set the agency field to the agency's Federal Register slug, for example transportation-department or interior-department. The slug appears in every agency object in the output, so you can grab it from a first broad run and then lock your feed to it.

What is a proposed rule? A proposed rule (PRORULE) is a regulation an agency has published for public comment but has not finalized. It usually carries a comment deadline in the dates field. Final rules (RULE) are the binding version with an effective date. Tracking PRORULE documents lets you weigh in before a rule is locked.

Can I search the full text, not just titles? Yes. Use mode: search with a keyword. That hits the Federal Register full-text search and ranks results by relevance across the document body, not only the title and abstract.


Get the actor

Run it on the Apify Store: george.the.developer/federal-register-monitor

Federal Register API, regulatory monitoring, rule tracking API, federal rulemaking alerts, compliance monitoring API, Federal Register documents, agency rule feed, proposed rule tracking, regulatory intelligence. If you are building any of that, this saves you the integration.


Data source: the official Federal Register API. This project is not affiliated with the Office of the Federal Register or the U.S. government.

About

Federal Register monitoring API. Track rules, proposed rules, and notices by agency, keyword, and date. Free no-key data.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors