# Federal Register Scraper: Rules and Deadlines (`parselab/federal-register-documents-scraper`) Actor

Scrape the Federal Register for final rules, proposed rules, notices and executive orders. Get comment deadlines with days left, effective dates, docket and CFR references, agencies, page views and optional full text. Filter by agency, topic, date or CFR part. Export to CSV or Excel.

- **URL**: https://apify.com/parselab/federal-register-documents-scraper.md
- **Developed by:** [ParseLab](https://apify.com/parselab) (community)
- **Categories:** News, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.25 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Federal Register Scraper: Rules, Notices and Comment Deadlines

This Federal Register scraper turns the daily journal of the US government into a clean table. It reads final rules, proposed rules, notices and presidential documents such as executive orders, and gives you one row per document with the agency, the dates that matter, the legal references and a link to the full text.

The row is built for people who act on regulation, not only read it. You see whether the comment period is still open and how many days are left, when a rule takes effect and in how many days, the Code of Federal Regulations parts it changes, the docket numbers, the regulation identifier, the topics and how many times people opened the page. Documents that are filed but not yet published are available too, so you see tomorrow's rules today.

Compliance teams, lobbyists, lawyers, policy analysts, trade associations, journalists and investors use it to watch an agency, a topic or a whole industry.

### What can you do with this Federal Register scraper?

- Find every proposed rule that is open for public comment, with the days left
- Watch one agency, such as the EPA, the SEC or the FDA, day by day
- Follow a topic in the full text, for example tariffs, artificial intelligence or lead pipes
- List executive orders, proclamations and memoranda with the signing date
- See which rules take effect in the next 30 days
- Get only significant rules, the ones with a large effect on the economy
- Look up all documents that touch one part of the Code of Federal Regulations
- Read the documents that are on public inspection and will be published in the next days
- Count how many documents each agency published in a period
- Add the full text of each document for search or language models
- Export to CSV or Excel, or send new documents to Slack and your own tools

### What data can you extract from the Federal Register?

| Mode | One row is | Highlights |
|---|---|---|
| Published documents | One document | Document number, title, type (rule, proposed rule, notice, presidential document), subtype, action, abstract, publication date, agencies and their parents, significant flag, comment deadline, comment period status, days left to comment, effective date, days to effective, comment link, regulations.gov link, docket numbers, regulation identifier numbers, Code of Federal Regulations references and titles, topics, citation, page range and length, page views, signing date, executive order number, president, correction links, links to HTML, PDF, text and XML, optional full text |
| Public inspection | One document filed but not yet published | Expected publication date, days until publication, filing time, special filing flag, agency, subject, pages, page views, editorial note, links |
| Agencies | One agency | Name, short name, parent and child agencies, description, website, and in a period: documents, final rules, proposed rules, notices, presidential documents and significant documents |

### How to scrape the Federal Register

1. Choose **Published documents**, **Public inspection** or **Agencies**.
2. Type search terms, agency names, or both. Short names such as EPA work.
3. Pick the document types and the dates.
4. Turn on **Only documents open for public comment** if you want deadlines.
5. Set **Max Items** and click **Start**.
6. Export the dataset as CSV, Excel or from the Apify console.

### Input example

```json
{
  "mode": "documents",
  "searchTerms": ["artificial intelligence"],
  "documentTypes": ["PRORULE", "NOTICE"],
  "commentsOpenOnly": true,
  "maxItems": 50
}
```

### Output example

```json
{
  "documentNumber": "2026-20474",
  "title": "Investment Adviser Performance-Based Compensation Modernization",
  "documentType": "Proposed Rule",
  "primaryAgency": "Securities and Exchange Commission",
  "publicationDate": "2026-10-06",
  "commentsCloseOn": "2026-12-07",
  "commentPeriodStatus": "Open",
  "daysUntilCommentsClose": 58,
  "cfrReferences": ["17 CFR Part 239", "17 CFR Part 249", "17 CFR Part 274", "17 CFR Part 275"],
  "docketIds": ["Release Nos. 33-11443", "34-106533", "IA-7022", "IC-36350", "File No. S7-2026-28"],
  "pageViews": 435,
  "citation": "91 FR 63676"
}
```

### Agencies output example

```json
{
  "agency": "Commerce Department",
  "slug": "commerce-department",
  "documentsInWindow": 769,
  "finalRulesInWindow": 75,
  "noticesInWindow": 676,
  "significantDocumentsInWindow": 2
}
```

### How much does it cost to scrape the Federal Register?

You pay per result: $27 per 1,000 rows plus a tiny start fee. The free plan returns up to 10 rows per run. Agency counts are one row per agency, so a full table of 400 agencies costs about ten dollars.

### Tips for better results

- Searching a term looks at the full text of the document, so a short, specific phrase gives cleaner results than a single common word.
- Dates are publication dates. Comment deadlines can be months later, so use **Comments close from** and **Comments close until** to plan your work.
- A proposed rule has no effective date, so that field stays empty. Final rules show it.
- The significant flag only exists for rules and proposed rules and is empty for notices.
- A very large request is cut into date windows by the Actor, so you can pull years of documents in one run.
- For a daily watch, schedule the Actor every morning with the last day as the date range, and send the rows to a spreadsheet or a chat.
- Turn on the full text only when you need it. It makes each row bigger and the run slower.
- Public inspection documents are drafts that are published within days. Their final text can change slightly.

### Who uses Federal Register data?

- **Compliance and legal teams** track rules that change their duties.
- **Government affairs and lobbyists** find open comment periods for clients.
- **Trade groups and consultants** watch an industry across agencies.
- **Investors and analysts** read significant rules before they move a sector.
- **Journalists and researchers** follow executive orders and agency activity.

### Automate and connect

Schedule the Actor every day and send new documents to Slack, Google Sheets, Zapier, Make or n8n, or trigger a webhook when a run ends.

### FAQ

**Do I need an account or a login?**
No. The Actor works without any login.

**How far back does the data go?**
Back to 1994. Use the publication dates to choose the period.

**What do the document types mean?**
Rule is a final rule, Proposed Rule is a draft open for comment, Notice covers meetings, permits and agency announcements, and Presidential Document covers executive orders, proclamations and memoranda.

**Can I get documents of one agency only?**
Yes. Type the agency name, its short name or its slug in the agencies field.

**What is a docket and why are there several?**
A docket groups all the papers of one rulemaking. Agencies often cite more than one number, for example a release number and a file number. All of them are listed, and docket numbers that follow the regulations.gov pattern come with a link.

**Is the text legal advice?**
No. The Federal Register is the official record, but you should check the linked document and ask a lawyer before you act on it.

### Legal note

This Actor collects information that is publicly visible on the website. Check the source site's terms and your local rules before using the data.

### Support

Missing a field or found a bug? Open an issue from the Actor page.

# Actor input Schema

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000.

## `mode` (type: `string`):

Documents returns final rules, proposed rules, notices and presidential documents with deadlines and references. Public inspection returns documents that are filed but not yet published. Agencies returns one row per agency with how many documents it published in a period.

## `searchTerms` (type: `array`):

Words or phrases searched in the full text, for example tariff, artificial intelligence or lead pipes. Each term is searched on its own and repeated documents are removed. In agencies mode the terms filter the agency names.

## `agencies` (type: `array`):

Agency names, short names or slugs, for example EPA, Securities and Exchange Commission or food-and-drug-administration.

## `documentTypes` (type: `array`):

RULE for final rules, PRORULE for proposed rules, NOTICE for notices, PRESDOCU for presidential documents. Leave empty for all types.

## `presidentialTypes` (type: `array`):

Only for presidential documents: executive_order, proclamation, memorandum, determination, presidential_order, notice or other.

## `dateFrom` (type: `string`):

First publication date, in the form 2026-01-31.

## `dateTo` (type: `string`):

Last publication date, in the form 2026-09-30. In public inspection mode it limits the expected publication date.

## `commentsOpenOnly` (type: `boolean`):

Keep documents whose comment period has not ended yet. Each row shows the days left.

## `commentsCloseFrom` (type: `string`):

Keep documents whose comment deadline is on or after this date, for example 2026-11-01.

## `commentsCloseTo` (type: `string`):

Keep documents whose comment deadline is on or before this date.

## `effectiveFrom` (type: `string`):

Keep documents with an effective date on or after this date.

## `effectiveTo` (type: `string`):

Keep documents with an effective date on or before this date.

## `significantOnly` (type: `boolean`):

Keep documents marked significant by the Federal Register under Executive Order 12866.

## `cfrTitle` (type: `integer`):

Title of the Code of Federal Regulations affected, for example 40 for environmental rules or 17 for securities rules.

## `cfrPart` (type: `string`):

Part of the Code of Federal Regulations, for example 141. Works best together with the CFR title.

## `docketId` (type: `string`):

Agency docket number, for example EPA-HQ-OAR-2021-0317.

## `regulationIdNumber` (type: `string`):

Regulation identifier number of the unified agenda, for example 2060-AV18.

## `sortBy` (type: `string`):

Documents mode. Relevance only works when search terms are given.

## `includeFullText` (type: `boolean`):

Documents mode. Adds the plain text of each document in the field fullText. This makes the run slower.

## `fullTextMaxChars` (type: `integer`):

Maximum number of characters of full text kept per document.

## Actor input object example

```json
{
  "maxItems": 10,
  "mode": "documents",
  "searchTerms": [
    "artificial intelligence"
  ],
  "commentsOpenOnly": false,
  "significantOnly": false,
  "sortBy": "newest",
  "includeFullText": false,
  "fullTextMaxChars": 20000
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10,
    "searchTerms": [
        "artificial intelligence"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("parselab/federal-register-documents-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxItems": 10,
    "searchTerms": ["artificial intelligence"],
}

# Run the Actor and wait for it to finish
run = client.actor("parselab/federal-register-documents-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "searchTerms": [
    "artificial intelligence"
  ]
}' |
apify call parselab/federal-register-documents-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parselab/federal-register-documents-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/KO4Wu0x0le3jL3J4y/builds/hRkLWpWPc78TKO54R/openapi.json
