# Federal Register Documents Scraper by Birds Nest Data (`birds-nest-data/federal-register-documents`) Actor

Export Federal Register rules, proposed rules, notices and comment deadlines as JSON or CSV. Filter by agency and date. Uses the public Federal Register API, no key needed.

- **URL**: https://apify.com/birds-nest-data/federal-register-documents.md
- **Developed by:** [Birds Nest Data](https://apify.com/birds-nest-data) (community)
- **Categories:** Business, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 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.

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 Documents Scraper by Birds Nest Data

Export Federal Register rules, proposed rules, notices and comment deadlines as JSON or CSV. Filter by agency and date. Uses the public Federal Register API, no key needed.

> Unofficial tool. Not affiliated with or endorsed by the Office of the Federal Register or the U.S. Government Publishing Office. Data provided as-is from https://www.federalregister.gov.

### What it does

Pulls documents published in the daily Federal Register (final rules, proposed rules, notices and presidential documents) and returns one clean, flat row per document. Built for compliance analysts tracking new rules, journalists and policy researchers watching agencies, and government-contracting teams watching comment deadlines.

### What you get

| Field | Type | Example |
|---|---|---|
| document_number | string | `2026-21432` |
| title | string | `Continuation of the National Emergency With Respect to the Democratic Republic of the Congo` |
| type | string | `Presidential Document` |
| abstract | string or null | summary text (emails and phone numbers removed) |
| publication_date | date (YYYY-MM-DD) | `2026-10-19` |
| effective_on | date or null | `2026-11-18` |
| comments_close_on | date or null | `2026-11-20` |
| agencies | array of strings | `["Executive Office of the President"]` |
| docket_ids | array of strings | `["NRC-2023-0212"]` |
| regulation_id_numbers | array of strings | `["3245-AH12"]` |
| cfr_references | array of strings | `["10 CFR 170"]` |
| citation | string or null | `91 FR 66281` |
| html_url | URL | link to the document on federalregister.gov |
| pdf_url | URL | link to the PDF on govinfo.gov |
| source | string | `Federal Register API (federalregister.gov)` |

### Use cases

- Track new final rules and proposed rules from the agencies you follow, every day.
- List open comment periods and their closing dates for regulatory and public-affairs teams.
- Feed Federal Register notices into a spreadsheet, Slack alert or newsletter through the Apify API.
- Build a dataset of past rules by agency and date range for policy research.

### How to use

1. Set inputs (keyword, comments-closing window, document type, agency from the dropdown; start date, end date and any other agency's slug are under Advanced), or leave the defaults to get the 50 newest documents.
2. Click **Run**.
3. Export the dataset as JSON, CSV or Excel, or read it through the Apify API.

### Input example

```json
{
  "searchTerm": "",
  "documentType": "ALL",
  "agency": "ALL",
  "maxResults": 50
}
```

**Comments closing soon:** set **Comments closing within (days)** to N to get only documents whose public comment period closes between today and today + N days (U.S. Eastern calendar date). Leave it empty to turn the filter off. Example, proposed rules from any agency with comments closing in the next 30 days:

```json
{
  "commentsClosingWithinDays": 30,
  "documentType": "PRORULE",
  "maxResults": 100
}
```

### Output example

Two records from real runs on 2026-10-17 (PT): the first from the default input, the second from `{"documentType": "PRORULE"}`.

```json
[
 {
  "document_number": "C1-2026-12067",
  "title": "Fee Schedules; Fee Recovery for Fiscal Year 2026",
  "type": "Rule",
  "abstract": null,
  "publication_date": "2026-10-19",
  "effective_on": null,
  "comments_close_on": null,
  "agencies": ["Nuclear Regulatory Commission"],
  "docket_ids": ["NRC-2023-0212"],
  "regulation_id_numbers": [],
  "cfr_references": ["10 CFR 15", "10 CFR 170", "10 CFR 171"],
  "citation": "91 FR 65941",
  "html_url": "https://www.federalregister.gov/documents/2026/10/19/C1-2026-12067/fee-schedules-fee-recovery-for-fiscal-year-2026",
  "pdf_url": "https://www.govinfo.gov/content/pkg/FR-2026-10-19/pdf/C1-2026-12067.pdf",
  "source": "Federal Register API (federalregister.gov)"
 },
 {
  "document_number": "2026-21154",
  "title": "Powered Air Purifying Respirators (PAPRs) in Underground Mines",
  "type": "Proposed Rule",
  "abstract": "In response to a public request, the Mine Safety and Health Administration (MSHA) is reopening the rulemaking record and is scheduling a virtual public hearing on the Agency's proposed rule published on July 1, 2025, titled, \"Powered Air Purifying Respirators (PAPRs) in Underground Mines.\"",
  "publication_date": "2026-10-16",
  "effective_on": null,
  "comments_close_on": "2026-12-08",
  "agencies": [
   "Labor Department",
   "Mine Safety and Health Administration"
  ],
  "docket_ids": [
   "Docket No. MSHA-2025-0089"
  ],
  "regulation_id_numbers": [
   "1219-AC17"
  ],
  "cfr_references": [
   "30 CFR 57",
   "30 CFR 75"
  ],
  "citation": "91 FR 65697",
  "html_url": "https://www.federalregister.gov/documents/2026/10/16/2026-21154/powered-air-purifying-respirators-paprs-in-underground-mines",
  "pdf_url": "https://www.govinfo.gov/content/pkg/FR-2026-10-16/pdf/2026-21154.pdf",
  "source": "Federal Register API (federalregister.gov)"
 }
]
```

### Pricing (pay-per-event)

- **Result:** $2.00 per 1,000 results ($0.002 for each document saved to the dataset).
- No start fee. Empty runs save nothing and are not charged for results.
- Estimate: the default run (50 documents) costs about $0.10 in result fees.

### Limits

- Sends at most about 1 request per second to the source and uses no proxies. If the source refuses access (HTTP 403), the run stops with a clear message; it never changes its identity or retries from other IPs.
- Up to 10,000 documents per run.
- The comments-closing filter is applied by the Federal Register API and re-checked on every row before it is saved; only rows with a `comments_close_on` date inside the window are returned (and charged).
- FederalRegister.gov states it is not the official legal edition of the Federal Register. For legal research, verify results against the official legal edition on govinfo.gov (the PDF linked in `pdf_url`).
- The Federal Register publishes each business day; documents can appear a few days before their publication date (public inspection).

### Data source & legality note

> This actor reads public data from the Federal Register (https://www.federalregister.gov) via its public API. It does not log in, bypass access controls, or collect personal data; person/contact fields are dropped at parse time. Not affiliated with or endorsed by the Office of the Federal Register (National Archives and Records Administration) or the U.S. Government Publishing Office. Output is provided as-is, without warranty; it may be incomplete or delayed, so verify against the Federal Register before relying on it. Not legal, medical, or safety advice. You are responsible for how you use the output and for complying with applicable laws and the source's terms.

### Support

birds.nest.apify@gmail.com, or open an issue in the Issues tab.

# Actor input Schema

## `searchTerm` (type: `string`):

Full-text keyword or phrase. Leave empty to get the newest documents.

## `commentsClosingWithinDays` (type: `integer`):

Only documents whose public comment period closes between today and today + N days (U.S. Eastern date). Leave empty to turn off.

## `documentType` (type: `string`):

Limit to one document type, or keep All.

## `agency` (type: `string`):

Pick one of the 40 agencies that publish most often, or keep All agencies.

## `maxResults` (type: `integer`):

Maximum number of documents to return (1 to 10,000). Each returned document is one billable result.

## `publishedFrom` (type: `string`):

Earliest publication date (YYYY-MM-DD). Leave empty for no lower bound.

## `publishedTo` (type: `string`):

Latest publication date (YYYY-MM-DD). Leave empty for no upper bound.

## `agencySlug` (type: `string`):

For an agency not in the list: its slug from the federalregister.gov agency URL, e.g. bureau-of-industry-and-security. Overrides the Agency dropdown.

## Actor input object example

```json
{
  "searchTerm": "",
  "documentType": "ALL",
  "agency": "ALL",
  "maxResults": 50
}
```

# Actor output Schema

## `results` (type: `string`):

Federal Register documents saved to the default dataset (Overview view).

# 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 = {
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("birds-nest-data/federal-register-documents").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 = { "maxResults": 50 }

# Run the Actor and wait for it to finish
run = client.actor("birds-nest-data/federal-register-documents").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 '{
  "maxResults": 50
}' |
apify call birds-nest-data/federal-register-documents --silent --output-dataset

```

## MCP server setup

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

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/m783wLJdrqBptM1kU/builds/1h8J1VvtyctmIHtAg/openapi.json
