# Regulatory Change Monitor (Federal Register) (`thoob/regulatory-change-monitor`) Actor

Watch federal rulemaking from the official Federal Register API: clean, citable records when a rule, proposed rule, or notice matching your watch terms publishes or changes. Filter by term, agency, type, CFR part, and date, with a what-changed-since-last-run mode. Billed per delivered document.

- **URL**: https://apify.com/thoob/regulatory-change-monitor.md
- **Developed by:** [Pono Data](https://apify.com/thoob) (community)
- **Categories:** News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 matched documents

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Regulatory Change Monitor (Federal Register)

Watch federal rulemaking and get back clean, citable records when a rule, proposed rule, or notice that matches your watch terms is published or changes. Built directly on the official Federal Register API, so every row traces to the government source.

### What it does

Give it a watch: a free-text term, one or more agencies, document types (rule, proposed rule, notice, presidential document), a CFR title and part, and a start date. It returns one clean row per matching document, each carrying the official Federal Register page and the govinfo PDF link.

Run it on a schedule in "changes only" mode and it returns just the documents that are new or were corrected since your last run, so you pay for signal, not for re-reading the same rules.

### Why this one

- Official source. Records come from the Federal Register API, public domain, no scraping. Open the `sourceUrl` on any row and you see the exact document.
- Provenance on every row. Each row carries `sourceUrl`, the govinfo `pdfUrl`, `retrievedAt`, and `confidence` 1.0, because every value appears in the official document. Nothing is inferred.
- One meter. You are billed once per delivered matching document. A run that matches nothing, or a changes-mode run with nothing new, bills nothing.

### Output

Each row has the document number, title, type, abstract, publication date, issuing agencies, docket IDs, RINs, the Federal Register URL, and the govinfo PDF URL. In changes mode each row also carries `changeType` (new or modified).

| documentNumber | type | title | publicationDate | changeType | sourceUrl |
|---|---|---|---|---|---|
| 2026-12345 | Rule | Air Quality Standards for Particulate Matter | 2026-06-10 | new | federalregister.gov/... |

### What to expect

Coverage is whatever the Federal Register publishes, which is the authoritative record of federal rules and notices. Changes mode tracks documents going forward from your first run and flags later corrections to documents it has already seen. It does not retroactively re-scan documents older than your watch window.

### Sample output

A real run of US federal rulemaking from the official Federal Register API:

| date | type | title | agency |
| --- | --- | --- | --- |
| 2026-06-17 | Notice | Agency Information Collection Activ… | Homeland Security Dep… |
| 2026-06-17 | Proposed … | General Services Acquisition Regula… | General Services Admi… |
| 2026-06-17 | Notice | Information Collections Being Submi… | Federal Communication… |
| 2026-06-17 | Rule | Reducing Bureaucracy and Burden for… | Health and Human Serv… |

Every row carries a `sourceUrl` to the Federal Register entry, for example `https://www.federalregister.gov/documents/2026/06/17/2026-12208/agency-information-collection-activities-proposed-collection-comment-request-homeland-security`.

### See also

More clean, pay-only-for-results data tools from Pono Data:

- [FCC Filings & Proceedings Lookup](https://apify.com/thoob/fcc-ecfs-filings) - public FCC filings and proceedings
- [FDA Food Recall & Enforcement Alerts](https://apify.com/thoob/fda-food-recall-feed) - US food recalls and enforcement reports
- [FARA Foreign Agent Feed](https://apify.com/thoob/fara-foreign-agent-feed) - DOJ FARA registrant-to-principal records

Full catalog: https://apify.com/thoob

# Actor input Schema

## `term` (type: `string`):

Optional keyword matched across Federal Register documents (for example particulate matter, overtime rule, drug pricing).
## `agencies` (type: `array`):

Optional agency slugs to scope to (for example environmental-protection-agency, food-and-drug-administration). Leave empty for all.
## `types` (type: `array`):

Filter to these types: Rule, Proposed Rule, Notice, Presidential Document. Leave empty for all.
## `sinceDate` (type: `string`):

Optional. Keep only documents published on or after this date.
## `cfrTitle` (type: `string`):

Optional CFR title number to scope to (for example 40 for environment).
## `cfrPart` (type: `string`):

Optional CFR part number (used with CFR title).
## `mode` (type: `string`):

full returns every matching document. changes returns only documents new or modified since this account's last run, using a stored watermark and per-document version.
## `maxRecords` (type: `integer`):

Cap on delivered, billed rows. 0 means no cap. The platform spend cap is honored regardless.
## `perPage` (type: `integer`):

Documents per API page (1 to 1000).

## Actor input object example

```json
{
  "agencies": [],
  "types": [],
  "mode": "full",
  "maxRecords": 1000,
  "perPage": 100
}
````

# Actor output Schema

## `documents` (type: `string`):

One row per matching Federal Register document.

# 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 = {
    "agencies": [],
    "types": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("thoob/regulatory-change-monitor").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 = {
    "agencies": [],
    "types": [],
}

# Run the Actor and wait for it to finish
run = client.actor("thoob/regulatory-change-monitor").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "agencies": [],
  "types": []
}' |
apify call thoob/regulatory-change-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=thoob/regulatory-change-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Regulatory Change Monitor (Federal Register)",
        "description": "Watch federal rulemaking from the official Federal Register API: clean, citable records when a rule, proposed rule, or notice matching your watch terms publishes or changes. Filter by term, agency, type, CFR part, and date, with a what-changed-since-last-run mode. Billed per delivered document.",
        "version": "0.0",
        "x-build-id": "Nq0cb2zFRBpniB1gU"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/thoob~regulatory-change-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-thoob-regulatory-change-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/thoob~regulatory-change-monitor/runs": {
            "post": {
                "operationId": "runs-sync-thoob-regulatory-change-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/thoob~regulatory-change-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-thoob-regulatory-change-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "term": {
                        "title": "Free-text watch term",
                        "type": "string",
                        "description": "Optional keyword matched across Federal Register documents (for example particulate matter, overtime rule, drug pricing)."
                    },
                    "agencies": {
                        "title": "Agencies",
                        "type": "array",
                        "description": "Optional agency slugs to scope to (for example environmental-protection-agency, food-and-drug-administration). Leave empty for all.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "types": {
                        "title": "Document types",
                        "type": "array",
                        "description": "Filter to these types: Rule, Proposed Rule, Notice, Presidential Document. Leave empty for all.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sinceDate": {
                        "title": "Published on/after (YYYY-MM-DD)",
                        "type": "string",
                        "description": "Optional. Keep only documents published on or after this date."
                    },
                    "cfrTitle": {
                        "title": "CFR title",
                        "type": "string",
                        "description": "Optional CFR title number to scope to (for example 40 for environment)."
                    },
                    "cfrPart": {
                        "title": "CFR part",
                        "type": "string",
                        "description": "Optional CFR part number (used with CFR title)."
                    },
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "full",
                            "changes"
                        ],
                        "type": "string",
                        "description": "full returns every matching document. changes returns only documents new or modified since this account's last run, using a stored watermark and per-document version.",
                        "default": "full"
                    },
                    "maxRecords": {
                        "title": "Max delivered documents",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Cap on delivered, billed rows. 0 means no cap. The platform spend cap is honored regardless.",
                        "default": 1000
                    },
                    "perPage": {
                        "title": "API page size",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Documents per API page (1 to 1000).",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
