# Federal Register Search Scraper (`brightpath-data/federal-register-search`) Actor

Search the Federal Register for rules, proposed rules, notices and presidential documents and export clean, flat records.

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

## Pricing

from $1.50 / 1,000 federal register 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.

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 Search Scraper

Search the Federal Register for rules, proposed rules, notices and presidential documents and export clean, flat records.

Get structured Federal Register data as JSON, CSV or Excel, or call it as a tool from Claude, Cursor, ChatGPT or any MCP client. Built on the official Federal Register API v1, so it does not break when the website changes. Pay only for the documents you receive.

### What you get

One record per document with the fields people actually filter on: document number, title, type, abstract, links to the HTML page, the PDF and (where relevant) the public inspection PDF, publication date, agencies, a relevance excerpt, docket IDs, effective date, comment close date, the official citation, page length and page range, the action line, the dates line, regulation ID numbers (RINs), and CFR title/part references.

Every result is a flat record with stable field names, so it drops straight into a spreadsheet, a database or an AI agent's context.

### Why use this instead of the website

- Combine search term, document type, agency, docket ID and publication date filters in one call
- Pagination handled for you, with automatic retries and polite rate limiting
- Results in JSON, CSV, Excel or via API, or piped into Zapier, Make, n8n and Google Sheets
- Works as an MCP tool, so AI agents can look up regulatory documents on demand
- No browser, no proxies, no personal data: fast runs and a tiny cost per result
- Monitoring made easy: set "Published after" to yesterday and schedule the Actor daily to catch new documents from an agency

### Input

| Field | Type | Default | Meaning |
|-------|------|---------|---------|
| `query` | string | | Free-text keywords searched across document titles and text |
| `documentTypes` | array | all | Any of RULE, PRORULE, NOTICE, PRESDOCU |
| `agencies` | array | all | Federal Register agency slugs, e.g. "food-and-drug-administration" |
| `publishedAfter` | date | | Only documents published on or after YYYY-MM-DD |
| `publishedBefore` | date | | Only documents published on or before YYYY-MM-DD |
| `docketId` | string | | A single regulatory docket ID |
| `order` | string | newest first | Newest, oldest or relevance |
| `maxResults` | integer | 100 | Cap on documents saved. You are charged per document, so this caps your cost. |

Example input:

```json
{
  "query": "food safety",
  "documentTypes": ["RULE", "NOTICE"],
  "agencies": ["food-and-drug-administration"],
  "publishedAfter": "2026-01-01",
  "maxResults": 200
}
```

### Output

Example result (shortened):

```json
{
  "documentNumber": "2026-12345",
  "title": "Food Labeling; Requirements for Front-of-Package Nutrition Symbol",
  "type": "Rule",
  "abstract": "The Food and Drug Administration is issuing a final rule requiring...",
  "url": "https://www.federalregister.gov/documents/2026/06/01/2026-12345/food-labeling",
  "pdfUrl": "https://www.federalregister.gov/documents/2026/06/01/2026-12345.pdf",
  "publicationDate": "2026-06-01",
  "agencies": ["Food and Drug Administration"],
  "agencySlugs": ["food-and-drug-administration"],
  "docketIds": ["FDA-2021-N-0300"],
  "effectiveOn": "2027-01-01",
  "commentsCloseOn": null,
  "citation": "91 FR 12345",
  "pageLength": 42,
  "startPage": 12345,
  "endPage": 12387,
  "action": "Final rule.",
  "dates": "This rule is effective January 1, 2027.",
  "regulationIdNumbers": ["0910-AI99"],
  "cfrReferences": [{ "title": 21, "part": 101 }]
}
```

Field reference: `documentNumber`, `title`, `type`, `abstract`, `url`, `pdfUrl`, `publicInspectionPdfUrl`, `publicationDate`, `agencies[]`, `agencySlugs[]`, `excerpts`, `docketIds[]`, `effectiveOn`, `commentsCloseOn`, `citation`, `pageLength`, `startPage`, `endPage`, `action`, `dates`, `regulationIdNumbers[]`, `cfrReferences[]{title,part}`.

### Pricing

Pay per event. You are charged **$1.50 per 1,000 documents** saved to the dataset, plus a fraction of a cent per run start. Nothing is charged for results you do not receive. Set "Max total charge per run" in the run options to cap spending on any run. When a run reaches your cap it stops cleanly and keeps everything it already saved.

Rough guide: 1,000 documents cost $1.50 and take about 30 seconds.

### Use it from an AI agent (MCP)

This Actor is available as an MCP tool through the Apify MCP server. Add it to your client, then ask the agent for the data in plain language.

Claude Desktop, Claude Code or Cursor (`mcp.json` / `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?actors=brightpath-data/federal-register-search",
      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
    }
  }
}
```

ChatGPT and other clients that support remote MCP servers: add `https://mcp.apify.com/?actors=brightpath-data/federal-register-search` as a connector with your Apify token.

Example prompt once connected: "Find final rules published this year by the FDA about food safety and list the title, effective date and citation for each."

### Use it from code

```bash
curl -X POST "https://api.apify.com/v2/acts/brightpath-data~federal-register-search/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"food safety","documentTypes":["RULE"],"maxResults":100}'
```

Python:

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("brightpath-data/federal-register-search").call(run_input={"query": "food safety", "documentTypes": ["RULE"], "maxResults": 100})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

### Limits and fair use

- Up to 2,000 documents per run. The Federal Register API does not reliably return results deeper than about 2,000 for a single query; narrow your search with dates, agencies or a docket ID to go deeper into a large result set.
- Requests are paced at roughly two per second to be polite to the source.
- Only the fields listed above are requested from the API to keep responses small; the full text of each document is not included, only its abstract and excerpts. Use the `url` or `pdfUrl` field to read the full document.

### Data source and legal

Data comes from the Federal Register, the official daily publication of the U.S. government, through its official public API v1, which requires no key. The data is U.S. government public domain data. This Actor collects public, non-personal data only and does not bypass logins, paywalls or access controls. You are responsible for how you use the data.

### Support

Found a problem or need a field added? Open an issue on the Actor's Issues tab. Fixes for broken runs are prioritized.

# Actor input Schema

## `query` (type: `string`):

Free-text keywords searched across document titles and text, e.g. "food safety" or "tariffs".

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

Only include these document types. Leave empty for all.

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

Limit to specific agencies by their Federal Register slug, e.g. "food-and-drug-administration" or "environmental-protection-agency". Find slugs on the agency's federalregister.gov page.

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

Only documents published on or after this date.

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

Only documents published on or before this date.

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

Limit to a single regulatory docket ID, e.g. "FDA-2024-N-1234".

## `order` (type: `string`):

Order of results.

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

Maximum number of documents to save. You are charged per document saved, so this also caps the cost of a run. The source API does not reliably return more than about 2,000 results for a single query; narrow your search with dates, agencies or a docket ID to go deeper.

## Actor input object example

```json
{
  "query": "food safety",
  "order": "newest",
  "maxResults": 100
}
```

# Actor output Schema

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

The dataset with one flat record per result. Append ?format=csv or ?format=xlsx to the URL for other formats.

## `summary` (type: `string`):

OUTPUT record in the key-value store: counts of results pushed and charged, requests, retries and duration.

# 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 = {
    "query": "food safety"
};

// Run the Actor and wait for it to finish
const run = await client.actor("brightpath-data/federal-register-search").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 = { "query": "food safety" }

# Run the Actor and wait for it to finish
run = client.actor("brightpath-data/federal-register-search").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 '{
  "query": "food safety"
}' |
apify call brightpath-data/federal-register-search --silent --output-dataset

```

## MCP server setup

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

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/bvIm7YBJeWfvoYZ54/builds/SKv2mQPrco0LtdH82/openapi.json
