# Industry Regulation & Deadline Radar (`afkdigital/industry-regulation-deadline-radar`) Actor

Monitor Federal Register rules, proposals and notices by industry keyword, agency and dates. Export effective dates, comment deadlines, labeled compliance-date evidence and official PDF links. Keyless JSON/CSV with one row per document.

- **URL**: https://apify.com/afkdigital/industry-regulation-deadline-radar.md
- **Developed by:** [AFK Digital](https://apify.com/afkdigital) (community)
- **Categories:** Business, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00 / 1,000 unique regulatory 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/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

## Industry Regulation & Deadline Radar

Find US Federal Register regulatory documents by industry keyword, agency, document type, publication date, effective date and comment deadline. Export one normalized JSON/CSV row per unique document, with original action wording, docket IDs and official PDF links.

### Pricing

**$0.01 per successfully saved unique document ($10 per 1,000), per run.** No startup fee, date-level fee, API-request fee or retry fee. Standard Actor run platform usage is included in this event price. Apify account/subscription and post-run storage/export charges, if applicable, are governed by Apify separately. Separate runs are separate purchases.

A document with five dates is one result. Repeated source records and restored results in the same run are not billed again. A durable billing intent plus document-based idempotency protects against duplicate charges after ambiguous network responses; an uncertain charge is never retried after resurrection. In that rare case a saved result may be delivered without a confirmed charge.

### Quick start

```json
{"keywords":["compliance"],"documentTypes":["RULE","PRORULE","NOTICE"],"maxResults":10}
```

This example uses no API key, login, proxy subscription or paid LLM. It searches the current source, so its documents change over time. To monitor your industry, replace the keyword with terms such as solar, cybersecurity, medical devices or food labeling; schedule runs in Apify Console.

### Inputs

- **keywords**: array of full-text search expressions. Entries are searched independently and merged (OR), with document ID deduplication. An empty array searches all documents.
- **agencies**: official Federal Register slugs, OR within the array. The agency array is validated against the official agencies endpoint. For example: environmental-protection-agency. Other filters combine with AND. Exact source agency matches are checked locally.
- **documentTypes**: RULE, PRORULE, NOTICE, PRESDOCU, CORRECT. RULE includes final/interim rules; the original action remains available. Modern corrections, postponements, extensions and withdrawals are separate change_types flags on the original document type. CORRECT is a legacy source type; do not use it alone to find modern corrections.
- **publicationDateFrom/To**, **effectiveDateFrom/To**, **commentDeadlineFrom/To**: inclusive, real YYYY-MM-DD dates. Missing structured dates do not match date-filtered searches. Reversed or invalid ranges fail before source requests.
- **maxResults**: 1–1,000, default 10. **maxCostUsd**: 0–10, default 10. The lower result count allowed by these and Apify's maximum run spend wins; amounts are floored to complete $0.01 results.
- **pageSize**: 1–100 (default 20). **maxPages**: 1–50, global across keywords. **maxScanDocuments**: 1–5,000. **maxRunSeconds**: 10–240. These protect time and cost.
- **includeBodyDates**: default true. Inspect compliance-related body paragraphs where available; otherwise the result identifies DATES-only scope and any retrieval warning.

### Output and date meaning

The default Dataset supports JSON, CSV and Apify integrations. The run output also links to JSON/CSV and SUMMARY; key-value records OUTPUT and OUTPUT_CSV provide reusable exports.

Core fields: document_id, title, agency (array), document_type, publication_date, effective_date, comment_deadline, action, docket_ids, source_url and official_pdf_url.

Dates come from distinct source metadata fields: publication_date, effective_on and comments_close_on. Unknown values stay null. We never calculate an absolute deadline from a relative phrase such as “30 days after publication.”

Additional fields:

- document_stage: broad source stage (final_rule for the source Rule type, proposed_rule, notice, etc.). It does not convert a proposal into an adopted obligation. Read action for interim, direct final or other subtype wording.
- change_types: correction, postponement, extension and withdrawal flags when explicitly signaled by the title/action or correction metadata. These are not consolidated legislative history.
- dates_text: original DATES section text.
- date_mentions: explicit full English month/day/year dates, each with date_text, section, evidence and source_url. Unclassified mentions are **not** labeled as obligations.
- additional_compliance_dates: conservatively recognized compliance, reporting and applicability date statements, each with a label and evidence. These are source-stated candidates, not independently verified current obligations. Labels and temporal_role distinguish proposed/conditional, historical, superseded and replacement dates; legal_stage retains the source stage. Group-specific dates keep their complete source sentence. Historical citations and ambiguous transitions are not promoted into deadlines.
- unresolved_date_statements: relative, indefinite or unannounced dates preserved as text.
- correction_of/corrections, interpretation_notes, date_extraction_scope and fetched_at retain context and provenance.

Multiple dates remain nested in their document row. Primary dates reflect API metadata, even if a postponement document's metadata retains an earlier date. For such documents, consult the action, DATES evidence and official PDF. This Actor does not silently resolve contradictions, amend other documents or infer the current consolidated deadline.

### Limits, completeness and errors

Source requests use 20-second timeouts, up to two retries for network/429/5xx failures and bounded exponential delay. Invalid requests fail without retry. Pagination follows official next_page_url including its cursor; cycles and unsafe off-source URLs are rejected. IDs deduplicate overlapping pages and keyword searches.

SUMMARY reports pages, scans, document failures, body failures, stop_reason and complete. Reaching any user, page, scan, time or spend limit is a partial search. A result cap is not proof that every matching regulation was found. The official source also limits broad searches: use narrow publication-date windows and separate runs for larger coverage. Dataset writes/charges are not blindly retried.

Body extraction recognizes explicit English calendar dates and selected compliance wording, not every possible date or obligation. No extraction of legal requirements from tables, scans, incorporated documents or linked third-party sites is promised. Agency-slug local verification can narrow parent-agency searches to documents actually listing that agency.

### Sources and permitted use

- [Official API documentation](https://www.federalregister.gov/developers/documentation/api/v1)
- [Published document search](https://www.federalregister.gov/api/v1/documents.json)
- [Official agency list](https://www.federalregister.gov/api/v1/agencies.json)
- [Developer resources and usage restrictions](https://www.federalregister.gov/reader-aids/developer-resources/rest-api)
- [Legal status](https://www.federalregister.gov/reader-aids/government-policy-and-ofr-procedures/about/legal-status)

FederalRegister.gov is operated by OFR/NARA and GPO, but its XML/HTML rendition is an informational resource, not the official legal edition. The official_pdf_url points to the published govinfo.gov PDF, not a public-inspection draft. Verify reliance against the official edition.

The API is public and requires no key. Republishers may not use official NARA/OFR logos or seals. This product uses no government logos, implies no endorsement and exports document metadata with short contextual date evidence rather than repackaging complete third-party works.

**This is a regulatory discovery aid, not legal advice or a guarantee that all obligations, amendments or deadlines have been identified.**

# Actor input Schema

## `keywords` (type: `array`):

OR across entries: each entry is a separate official Federal Register full-text search expression. Empty list searches all documents.

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

Official slugs, e.g. environmental-protection-agency. OR across agencies; unknown slugs fail validation. Use the agencies endpoint linked in README.

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

RULE (final/interim rules), PRORULE, NOTICE, PRESDOCU, CORRECT (legacy corrections). Modern corrections and postponements remain their source type with separate change_types.

## `publicationDateFrom` (type: `string`):

Publication date on or after YYYY-MM-DD (inclusive). Documents with missing structured dates are excluded when this date filter is set.

## `publicationDateTo` (type: `string`):

Publication date on or before YYYY-MM-DD (inclusive). Documents with missing structured dates are excluded when this date filter is set.

## `effectiveDateFrom` (type: `string`):

Structured effective date on or after YYYY-MM-DD (inclusive). Documents with missing structured dates are excluded when this date filter is set.

## `effectiveDateTo` (type: `string`):

Structured effective date on or before YYYY-MM-DD (inclusive). Documents with missing structured dates are excluded when this date filter is set.

## `commentDeadlineFrom` (type: `string`):

Structured comment deadline on or after YYYY-MM-DD (inclusive). Documents with missing structured dates are excluded when this date filter is set.

## `commentDeadlineTo` (type: `string`):

Structured comment deadline on or before YYYY-MM-DD (inclusive). Documents with missing structured dates are excluded when this date filter is set.

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

Hard output and per-run billing bound. Each unique saved document costs $0.01.

## `maxCostUsd` (type: `number`):

Additional spend cap, floored to complete $0.01 documents. The lower of this, maxResults and platform spend limit wins. Values below $0.01 return zero documents.

## `pageSize` (type: `integer`):

Documents requested per source page; decrease to exercise pagination.

## `maxPages` (type: `integer`):

Global page cap across keyword searches. Summary identifies partial searches.

## `maxScanDocuments` (type: `integer`):

Bounds work on filtered or duplicate source results.

## `maxRunSeconds` (type: `integer`):

Bounds source work; default example is designed to finish in under five minutes. Output export may add a few seconds.

## `includeBodyDates` (type: `boolean`):

Inspect available FederalRegister.gov body HTML in addition to the API DATES text. Source failures are marked per row; extraction is conservative and does not cover every possible date format.

## Actor input object example

```json
{
  "keywords": [
    "compliance"
  ],
  "agencies": [],
  "documentTypes": [
    "RULE",
    "PRORULE",
    "NOTICE"
  ],
  "maxResults": 10,
  "maxCostUsd": 10,
  "pageSize": 20,
  "maxPages": 50,
  "maxScanDocuments": 5000,
  "maxRunSeconds": 240,
  "includeBodyDates": true
}
```

# Actor output Schema

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

No description

## `csv` (type: `string`):

No description

## `summary` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("afkdigital/industry-regulation-deadline-radar").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("afkdigital/industry-regulation-deadline-radar").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 '{}' |
apify call afkdigital/industry-regulation-deadline-radar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,afkdigital/industry-regulation-deadline-radar"
        }
    }
}
```

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/Mpj8pezGQfB3ee8h4/builds/ixhy2WVxPmipXL2fW/openapi.json
