# Federal Register Scraper: Rules, Notices & Orders (`recordsdata/federal-register-scraper`) Actor

Scrape the Federal Register: final rules, proposed rules, notices, executive orders and the public inspection desk, filtered by keyword, agency, document type and date. Get docket IDs, comment deadlines, PDFs and optional full text. Export CSV, Excel, JSON, XML. No login or API key.

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

## Pricing

from $12.00 / 1,000 document records

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

<p align="center">
  <img src="https://api.apify.com/v2/key-value-stores/AAm3a1h3Z9nYfrvh9/records/banner?v=3" alt="RecordsData" width="100%" />
</p>

> **Federal Register Scraper** searches the official federalregister.gov API and returns one row per document: final rules, proposed rules, notices and executive orders, with agencies, publication and effective dates, comment deadlines, docket IDs, CFR references, topics, signing dates, executive order numbers, PDF links and optional full text. It reads the public inspection desk and has a monitor mode that returns only documents new since your last run. Export CSV, Excel, JSON or XML. No login, no API key. Priced per document, nothing is charged for failed or empty runs.

The Federal Register is the daily journal of the US government. A search for "artificial intelligence" matched 1,585 documents on 2026-10-03, and a 10-document run finished in about 10 seconds. The public inspection desk held 108 unpublished documents that day.

### 🏛 What does the Federal Register Scraper do?

- **Keyword search**, for example "tariff", "drone" or "artificial intelligence", with filters by document type (Final Rules, Proposed Rules, Notices, Presidential Documents and executive orders), agency slug, dates or `lookbackDays`, CFR title and topic slugs, or `significantOnly`.
- **Public inspection desk**: documents filed with the Office of the Federal Register but not yet published.
- **Full text** of each document (first 20,000 characters, cleaned of HTML) as an optional extra.
- **Monitor mode** that returns only documents new since your last run.

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

Each row can carry up to 41 columns. The main ones:

| Field | What it holds |
|---|---|
| `recordType`, `documentNumber` | `document` or `public-inspection`; official number, for example 2026-20281 |
| `title`, `type`, `subtype`, `action`, `abstract` | Title, type, subtype, action, abstract up to 600 characters |
| `agencies`, `agencySlugs` | Every agency named on the document, as names and slugs |
| `publicationDate`, `effectiveDate`, `commentsCloseOn`, `signingDate` | Publication (expected for public inspection), effective, comment deadline and signing dates |
| `executiveOrderNumber`, `proclamationNumber`, `president` | Order or proclamation number and the signing president |
| `significant` | `Yes` or `No`, the significance flag |
| `cfrReferences`, `topics`, `dates` | CFR parts affected such as "26 CFR 54", topic tags, date text |
| `docketIds`, `regulationIdNumbers` | Docket IDs and RIN numbers, when present |
| `citation`, `volume`, `startPage`, `endPage`, `pageCount` | Citation and page data |
| `htmlUrl`, `pdfUrl`, `jsonUrl`, `commentUrl` and more | Page, PDF, API record and comment links |
| `fullText`, `searchTerm`, `scrapedAt` | Plain text (only when enabled), which search found it, and when |

Fields the source does not provide are left out of that row.

### 📄 Sample output of a Federal Register search

Real row from a cloud run on 2026-10-03:

```json
{
  "recordType": "document",
  "documentNumber": "2026-20281",
  "title": "Global Benchmark for Efficient Drug Pricing (GLOBE) Model",
  "type": "Rule",
  "abstract": "This final rule implements the Global Benchmark for Efficient Drug Pricing Model (GLOBE Model)...",
  "agencies": [
    "Health and Human Services Department",
    "Centers for Medicare & Medicaid Services"
  ],
  "publicationDate": "2026-10-02",
  "effectiveDate": "2026-11-30",
  "docketIds": ["CMS-5545-F"],
  "htmlUrl": "https://www.federalregister.gov/documents/2026/10/02/2026-20281/global-benchmark-for-efficient-drug-pricing-globe-model",
  "pdfUrl": "https://www.govinfo.gov/content/pkg/FR-2026-10-02/pdf/2026-20281.pdf",
  "scrapedAt": "2026-10-04T04:00:31.559Z"
}
```

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

Pay per event. Prices are FREE-plan prices; paid plans go down to $0.012 per document.

| Event | Price | When it is charged |
|---|---|---|
| Document record | $0.015 per document ($15 per 1,000) | One Federal Register document saved to the dataset |
| Public inspection document | $0.015 per document | One public inspection document saved to the dataset |
| Full document text | $0.012 per document | Only when you enable full text and the text actually downloads |

A 10-document run with full text costs about $0.27 (10 records plus 10 full texts). 1,000 documents cost 1,000 x $0.015 = $15.00, and $15.00 + 1,000 x $0.012 = $27.00 with full text. You are not charged for failed runs, invalid input, empty searches, duplicates or full texts that could not be fetched. With a maximum cost per run set, the actor stops cleanly at the limit.

### 🚀 How to scrape the Federal Register in 3 steps

1. Type one or more search terms.
2. Optionally pick document types, agencies and a date range.
3. Click **Start** and download CSV, Excel, JSON or XML.

### ⚙️ Federal Register Scraper input

| Field | Default | Description |
|---|---|---|
| `searchTerms` | `["artificial intelligence"]` | One search per keyword |
| `maxItems` | `10` | Maximum documents across all searches (free plan: 10, paid: up to 1,000,000) |
| `documentTypes` | all | `RULE`, `PRORULE`, `NOTICE`, `PRESDOCU` |
| `agencySlugs` | all | For example `securities-and-exchange-commission` |
| `publishedAfter`, `publishedBefore` | none | `YYYY-MM-DD` |
| `lookbackDays` | `0` (off) | Last N days; ignored when `publishedAfter` is set |
| `significantOnly` | `false` | Only documents marked significant |
| `presidentialTypes` | all | `executive_order`, `proclamation`, `memorandum`, `determination`, `notice`, `other`, `presidential_order` |
| `cfrTitle`, `topics` | `0` (any), none | CFR title (1 to 50) and topic slugs such as `energy` |
| `sortOrder` | `newest` | `newest`, `oldest` or `relevance` |
| `includePublicInspection`, `includeFullText` | `false` | Public inspection desk; document text, billed per document |
| `onlyNew`, `stateKey`, `resetSeen` | `false`, empty, `false` | Monitor mode, monitor name, clear the seen list |

All filters combine with each other. Example input for the five newest executive orders:

```json
{
  "searchTerms": [],
  "documentTypes": ["PRESDOCU"],
  "presidentialTypes": ["executive_order"],
  "maxItems": 5
}
```

### 🔔 Only new results (monitor mode)

Turn on `onlyNew` and the actor skips every document this same search already returned in an earlier run. Skipped documents are not charged. Use `stateKey` for a separate monitor per purpose and `resetSeen` to start over.

- The seen list lives in a key-value store, `federal-register-seen`, in **your own Apify account**, keeping the 200,000 most recent ids per search.
- Changing a term, agency or date starts a new monitor; changing `maxItems`, `sortOrder` or `includeFullText` keeps the same one.
- `maxItems` means "up to N new documents". A document is marked seen only after it was saved and charged.
- Public inspection items and published documents are tracked separately.

Schedule it daily and add a webhook on "Run succeeded" to send new rows to Slack, email or Sheets.

### 📦 Federal Register Scraper output

Each document becomes one dataset row; a document matching several searches appears once.

### 📈 How does it compare to other Federal Register actors?

Competitor features and prices read from public Apify Store pages on 2026-10-09.

| Capability | This actor | retrainmap/federal-register-documents | copious_atoll/federal-register-scraper |
|---|---|---|---|
| Types and agencies | 4 types, any agency slug | 4 types, 472 agency slugs | 4 types, agency name or slug |
| Public inspection | Own rows, billed apart | PDF link field only | Not mentioned |
| Full text | Optional, 20,000 characters | Abstract only | Links only, no text |
| CFR references and topics | Fields plus CFR title and topic filters | Output fields only | Output fields only |
| Executive order number, signing date | Both, plus executive order filter | Signing date only | Both |
| Significance | Flag and filter | Flag only, mostly empty | Flag and filter |
| Only new documents | Built in, skipped rows free | Not mentioned | Not listed |
| Output fields | 41 | 28 listed | 23 in example |
| Price per 1,000 | $15 (FREE plan), $12 top tier | $5.10 including run fee | from $1.00 |

Both rivals are cheaper: retrainmap shows $5.00 per 1,000 plus $0.10 per run. Pick this actor when you need the public inspection desk, full text or monitoring of new documents; pick a cheaper one for plain bulk records.

### 💼 Use cases for Federal Register data

Regulatory change monitoring, comment-window tracking, executive order logs, legal and compliance research, and policy intelligence on agencies moving on AI, tariffs or crypto.

### 🔌 Run the Federal Register Scraper via API and integrations

Run it from Python, JavaScript, curl, Make, Zapier, n8n or Google Sheets.

```bash
curl -X POST "https://api.apify.com/v2/acts/RecordsData~federal-register-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchTerms":["tariff"],"maxItems":10}'
```

### 🤖 Federal Register Scraper MCP server for AI agents

AI agents can call this Actor through the Apify MCP server at `https://mcp.apify.com?tools=RecordsData/federal-register-scraper`.

Add this to your MCP client configuration (Claude Desktop, Cursor, VS Code):

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=RecordsData/federal-register-scraper"
    }
  }
}
```

Example agent prompt:

> Use the Federal Register Scraper to find the 10 newest proposed rules about "tariff" published since 2026-09-01, and list each title, agency, comment deadline and PDF link. Leave full text off.

An agent should choose this Actor when it needs official US Federal Register documents with agencies, dates, docket IDs, CFR references and PDF links, or only the documents that are new since the last run.

### ⚖️ Is it legal to scrape the Federal Register?

The Federal Register is a US government publication in the public domain, and this actor uses the official public API at federalregister.gov, with no login and no bypassing of protections. You remain responsible for how you use the data under your local laws.

### ❓ Frequently asked questions

#### How do I search the Federal Register and export to CSV?

Enter your search terms in Federal Register Scraper, click Start, then open the Storage tab and download the dataset as CSV, Excel, JSON or XML. Each row is one document with type, agencies, publication date, docket IDs and PDF link. The free plan returns up to 10 documents per run.

#### Can I filter Federal Register documents by publication date and document type?

Yes. Use publishedAfter and publishedBefore in YYYY-MM-DD format, the lookbackDays shortcut for the last N days, and the document type filter with Final Rules, Proposed Rules, Notices and Presidential Documents. You can sort newest, oldest or by relevance, and combine these with agency slugs and several search terms.

#### Does Federal Register Scraper include executive orders?

Yes. Select Presidential Documents (PRESDOCU) in documentTypes, and optionally executive_order in presidentialTypes, and the run returns executive orders from federalregister.gov. Each row has document number, title, signingDate, executiveOrderNumber where the source has it, publication date, citation, agencies, and HTML and PDF links.

#### How do I limit Federal Register results to one agency?

Add the agency slug, for example environmental-protection-agency, to the agencySlugs input. You can add several slugs in one run. The full slug list is at federalregister.gov/agencies, and an unknown slug makes the run fail with a clear message instead of an empty success.

#### What is the Federal Register public inspection desk?

It lists documents filed with the Office of the Federal Register that are not formally published yet, so you see them before they appear in the daily issue. Turn on includePublicInspection to get them as separate rows with recordType public-inspection, billed at $0.015 each on the free plan.

#### How do I track comment deadlines with Federal Register Scraper?

Rows for proposed rules carry commentsCloseOn, the date the public comment period closes, and commentUrl links to the comment page when the source has one. Filter your export on that column, or schedule a run and alert when a deadline is close. Final rules have no comment deadline.

#### How do I get only new Federal Register documents since my last run?

Set onlyNew to true and schedule the actor. Each run returns only documents the same search has not returned before, and skipped documents are free. Use stateKey for separate monitors and resetSeen to start over. The seen list lives in your own Apify account.

#### Why did my Federal Register Scraper run return 0 results?

The search matched no documents, or the date range and agency filters were too narrow. The run then finishes as SUCCEEDED with the message "Finished, but no items matched the input" and you are not charged. Loosen the filters or widen the dates and run it again.

#### Why did my Federal Register Scraper run fail?

The source, federalregister.gov, rejected the request or was unreachable and no document could be delivered, for example because of an unknown agency slug. The run status message says which. Failed runs are not charged, so you can fix the input and start again.

#### What happens if I send an empty or invalid input to Federal Register Scraper?

The platform rejects invalid values for fixed-list fields such as sortOrder or documentTypes with a 400 error before any run is created. Other mistakes, such as a date not in YYYY-MM-DD, end as SUCCEEDED with one free error row. Sending {} returns up to 10 documents for "artificial intelligence".

#### Do I pay for full text in Federal Register Scraper if I leave it off?

No. The full document text event ($0.012 per document on the free plan) is billed only when you enable includeFullText and the text actually downloads. With it off you pay just the document record price of $0.015 per document, so full text is a clear opt-in.

#### Why is full text missing on some Federal Register Scraper rows?

The federalregister.gov website, which serves the text files, sometimes rate limits heavy traffic. The row is then delivered without the fullText field, the run status says how many rows were affected, and you are not charged the full text event for them.

#### Does Federal Register Scraper need an API key?

No. It uses the official public federalregister.gov API, so it needs no API key, no source account and no login, only an Apify account to run it. The data is a US government publication in the public domain, with no personal data beyond what agencies publish.

#### How do I get only significant Federal Register rules?

Set significantOnly to true. The run returns only documents the Federal Register marks as significant, and the significant column shows Yes or No on each row. Combine it with documentTypes RULE and lookbackDays 30 to list the important final rules of the last month.

#### Can I get CFR references and topics for each document?

Yes. Rows include cfrReferences, for example "26 CFR 54", and topics where the source has them. You can also filter: cfrTitle keeps documents that amend or cite one CFR title from 1 to 50, and topics takes Federal Register topic slugs such as energy or imports.

#### Does Federal Register Scraper support webhooks?

There is no custom webhook option inside the actor. Apify runs support webhooks and schedules natively: schedule the actor with onlyNew on, add a webhook on "Run succeeded", and each run sends only the new documents to Slack, email, a database or your own endpoint.

### 💬 Support

Found a bug or need an extra field? Open an issue in the Issues tab of this actor or write to contact.punkrecordsdata@gmail.com.

Last updated: 2026-10-11

# Actor input Schema

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

Keywords to search in the Federal Register, one search per term (for example artificial intelligence, tariff, drone). Leave empty to browse by agency, document type or date only.

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

Maximum number of Federal Register documents to return across all searches. Free users are limited to 10 documents (preview). Paid users can request up to 1,000,000.

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

Limit results to these Federal Register document types: Final Rules, Proposed Rules, Notices or Presidential Documents (executive orders). Empty means all types.

## `agencySlugs` (type: `array`):

Limit results to specific agencies by slug, for example environmental-protection-agency, securities-and-exchange-commission or federal-aviation-administration. Full list at federalregister.gov/agencies.

## `publishedAfter` (type: `string`):

Only documents published on or after this date, format YYYY-MM-DD. Leave empty for no lower bound.

## `publishedBefore` (type: `string`):

Only documents published on or before this date, format YYYY-MM-DD. Leave empty for no upper bound.

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

Only documents the Federal Register marks as significant (economically significant or otherwise important rules and notices). The flag is returned in the significant column.

## `lookbackDays` (type: `integer`):

A friendlier alternative to Published after: only documents published in the last N days. Ignored when Published after is set. 0 means off.

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

Only presidential documents of these kinds: executive orders, proclamations, memoranda, determinations, notices, other, presidential orders. Executive orders carry executiveOrderNumber and signingDate. Leave empty for no restriction.

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

Only documents that amend or cite this Code of Federal Regulations title (1 to 50), for example 40 for environmental protection. 0 means any.

## `topics` (type: `array`):

Only documents tagged with these Federal Register topic slugs, for example energy, environmental-protection or imports. Unknown slugs return no documents.

## `sortOrder` (type: `string`):

Order of results: newest first, oldest first or by relevance to the search term.

## `includePublicInspection` (type: `boolean`):

Also fetch documents currently on public inspection: filed with the Office of the Federal Register but not yet formally published. Billed as its own event.

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

Fetch the raw full text of each document (first 20,000 characters). One extra request per document, billed as its own event.

## `onlyNew` (type: `boolean`):

Only new results: skip every record this same search already returned in an earlier run, so scheduled runs return just what is new, and you are not charged for skipped records. Max Items then means N new rows.

## `stateKey` (type: `string`):

Optional label to keep several independent monitors for the same search. Runs that share the same search filters and the same name share one list of seen documents. Leave empty to use the default monitor.

## `resetSeen` (type: `boolean`):

Clear the stored list of already-seen documents for this search and monitor name before the run, so every matching document counts as new again.

## Actor input object example

```json
{
  "searchTerms": [
    "artificial intelligence"
  ],
  "maxItems": 10,
  "documentTypes": [],
  "agencySlugs": [],
  "publishedAfter": "",
  "publishedBefore": "",
  "significantOnly": false,
  "lookbackDays": 0,
  "presidentialTypes": [],
  "cfrTitle": 0,
  "topics": [],
  "sortOrder": "newest",
  "includePublicInspection": false,
  "includeFullText": false,
  "onlyNew": false,
  "stateKey": "",
  "resetSeen": false
}
```

# Actor output Schema

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

Key fields per document

## `fullData` (type: `string`):

Complete dataset with all fields

# 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 = {
    "searchTerms": [
        "artificial intelligence"
    ],
    "maxItems": 10,
    "agencySlugs": [],
    "publishedAfter": "",
    "publishedBefore": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("recordsdata/federal-register-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 = {
    "searchTerms": ["artificial intelligence"],
    "maxItems": 10,
    "agencySlugs": [],
    "publishedAfter": "",
    "publishedBefore": "",
}

# Run the Actor and wait for it to finish
run = client.actor("recordsdata/federal-register-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 '{
  "searchTerms": [
    "artificial intelligence"
  ],
  "maxItems": 10,
  "agencySlugs": [],
  "publishedAfter": "",
  "publishedBefore": ""
}' |
apify call recordsdata/federal-register-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,recordsdata/federal-register-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/PGdJA9JCYdBrWUBYO/builds/A8jUevGti9zzXqaAb/openapi.json
