# NRC Reactor License Applications & Amendments Tracker (`scrapebench/nrc-reactor-licensing-tracker`) Actor

Every NRC licence amendment request, issued amendment and new-reactor application notice since 2000, with the licensee's licensing contact, its attorney's mailing address and the NRC project manager's phone.

- **URL**: https://apify.com/scrapebench/nrc-reactor-licensing-tracker.md
- **Developed by:** [ScrapeBench](https://apify.com/scrapebench) (community)
- **Categories:** Lead generation
- **Security:** Limited permissions
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.005 / licensing record

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

## NRC Reactor License Applications & Amendments Tracker

### Pain points

- The NRC announces amendment requests and issued amendments in a biweekly Federal Register notice, as one long document per two weeks, not as a list you can filter by plant, state or company.
- Notices before 2021 are written as prose paragraphs and later ones as tables, so the same field sits in a different place depending on the year.
- The person at the licensee who handles the request is named only in the application's cover letter, which is a separate document in the NRC's ADAMS library.
- New-reactor applications (construction permits, early site permits, limited work authorizations) are spread over separate notices per step, each repeated over several weeks.

### What we solve

- One row per amendment request, issued amendment or new-reactor notice, in the same columns from 2000 to today.
- Plant, licensee, docket numbers, county and state read from each entry's heading, prose or table.
- The licensee's own contact from the cover letter in ADAMS, plus the attorney's mailing address and the NRC project manager's phone from the notice.
- Lookup by docket number, plant or company returns a plant's whole licensing history in one run.

### Summary

Pick a date range (or docket numbers, plants or companies) and get every reactor licensing action the U.S. Nuclear Regulatory Commission published in the Federal Register: each licence amendment a nuclear plant asked for, each amendment the NRC issued, and each new-reactor notice (construction permits, combined licences, early site permits, limited work authorizations, hearings and decisions). Every row names the plant, the licensee, the docket numbers, the county and state, the dates, what the change does and the ADAMS document numbers. Requests carry three contacts: the person the licensee named in its cover letter for questions (name and phone, sometimes email), the licensee's attorney with a mailing address, and the NRC project manager with a phone number. New-reactor notices carry the NRC staff contacts with email.

### Who it's for

- Nuclear engineering, consulting and services firms selling to plant licensing and regulatory-affairs teams
- Equipment and fuel suppliers following which plants are changing technical specifications, uprating power or replacing systems
- Law firms and consultants working on NRC licensing, hearings and interventions
- Utility, energy and data-centre analysts tracking new reactors and plant life extensions
- Journalists, researchers and public-interest groups following a plant's licensing history

### How to use

This actor does two jobs. Run it, then collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API).

**Get a list (export):** no names, just filters; returns the whole matching list.

```json
{
  "lastDays": 90,
  "recordTypes": [
    "amendment_request"
  ],
  "maxResults": 200
}
```

**Get one plant's or company's licensing history (lookup):** put docket numbers, plant names or company names in `mode`, `lookups`; **Inputs** below says how each is matched.

```json
{
  "mode": "lookup",
  "lookups": [
    "50-317",
    "Clinch River"
  ]
}
```

See **Inputs** below for every available field.

### What you get

One row per record:

| Field | Description |
|---|---|
| `record_type` | amendment_request, amendment_issued or new_reactor |
| `licensee` | The licensee or applicant |
| `facility` | The plant and units |
| `docket_numbers` | NRC docket numbers (50-317) or a pre-application project number |
| `state` | Two-letter state of the plant (plus county) |
| `application_date` | When the licensee applied (requests), with any supplement dates |
| `issued_date` | When the NRC issued the amendment (issued), with the amendment numbers |
| `description` | What the amendment would change, or the new-reactor notice's summary |
| `action` | New-reactor rows: the step (construction permit application, notice of hearing, record of decision) |
| `licensee_contact_name` | The person the licensee named for questions in its cover letter (plus title, phone, email) |
| `attorney_name` | The licensee's attorney named in the notice (plus organization and mailing address, city, state, ZIP) |
| `nrc_contact_name` | The NRC project manager or staff contact (plus role, phone, and email on new-reactor rows) |
| `key_dates` | Comment, hearing-request and other deadlines the notice states |
| `adams_accession_numbers` | ADAMS document numbers of the application and supplements |
| `fr_document_number` | The Federal Register notice the row came from (plus its date and title) |
| `source_url` | The Federal Register notice |

Sample:

```json
{
  "record_type": "amendment_request",
  "licensee": "Constellation Energy Generation, LLC",
  "facility": "Calvert Cliffs Nuclear Power Plant, Units 1 and 2",
  "docket_numbers": [
    "50-317",
    "50-318"
  ],
  "state": "MD",
  "county": "Calvert County",
  "application_date": "2026-09-29",
  "description": "The proposed amendments would update the applicability of the Reactor Protective System Rate of Change of Power-High (RCPH) trip function...",
  "proposed_determination": "NSHC",
  "licensee_contact_name": "Adam Donell",
  "licensee_contact_phone": "267-533-5156",
  "licensee_contact_source": "ML26272A139",
  "attorney_name": "Jason Zorn",
  "attorney_organization": "Managing Counsel, Constellation Energy Generation, LLC",
  "attorney_mailing_address": "4300 Winfield Road, Warrenville, IL 60555",
  "attorney_city": "Warrenville",
  "attorney_state": "IL",
  "attorney_zip": "60555",
  "nrc_contact_name": "Scott Wall",
  "nrc_contact_role": "NRC Project Manager",
  "nrc_contact_phone": "301-415-2855",
  "adams_accession_numbers": [
    "ML26272A139"
  ],
  "fr_document_number": "2026-21832",
  "fr_publication_date": "2026-10-27",
  "source_url": "https://www.federalregister.gov/documents/2026/10/27/2026-21832/biweekly-notice-applications-and-amendments-to-facility-operating-licenses-and-combined-licenses"
}
```

### Inputs

| Field | Required | Type | Default | Description |
|---|---|---|---|---|
| `mode` | no | string | `"export"` | export: every licensing record published in a date range, filtered by record type, state, company and keyword. lookup: the full history of the docket numbers, plants or companies you list (all years since 2000 unless you set dates). |
| `lookups` | no | array | `[]` | One per line: a docket number (50-317, 05000317, 52-047), a pre-application project number (99902137), a plant name (Calvert Cliffs) or a company name (Constellation Energy, TerraPower). |
| `lookup` | no | string | — | One docket number, plant or company, for saved tasks and API calls that send a single value. Use Lookups above for several. |
| `recordTypes` | no | array | `[]` | Which records to return. Empty means all three. One per line: amendment_request (a licensee asked to amend an operating reactor's licence); amendment_issued (the NRC issued an amendment); new_reactor (construction permit, combined licence, early site permit and limited work authorization notices, hearings and decisions). |
| `lastDays` | no | integer | `90` | Records published in the Federal Register in the last N days. Empty: the last 90 days in export mode, all years (since 2000) in lookup mode. 0 means all years. Ignored when a 'From' date is set. |
| `dateFrom` | no | string | — | YYYY-MM-DD, inclusive, by Federal Register publication date. The Federal Register's full text starts in 2000. Overrides 'Last N days'. |
| `dateTo` | no | string | — | YYYY-MM-DD, inclusive. Empty means up to today. |
| `states` | no | array | `[]` | Keep only plants in these states (two-letter code or name, e.g. IL or Illinois). Empty means every state. |
| `state` | no | string | — | One state, for saved tasks and API calls that send a single value. |
| `companies` | no | array | `[]` | Keep only records whose licensee, applicant or plant name contains one of these (e.g. Constellation, Dominion, Vogtle). |
| `keywords` | no | array | `[]` | Keep only records whose description contains one of these words (e.g. steam generator, cyber security, power uprate, emergency plan). |
| `includeLicenseeContact` | no | boolean | `true` | For amendment requests and new-reactor notices, read the application's cover letter in the NRC's ADAMS library and add the person the licensee named for questions (name, phone or email). Costs nothing extra; turning it off makes large runs faster. |
| `maxResults` | no | integer | `200` | Cap for the run in export mode, and for EACH lookup in lookup mode. Records come newest first. |

### Pricing (Pay Per Event)

You pay per result (`record`) — **no charge for empty runs**. Example: **1000 licensing records** at *$0.005/result* ≈ **$5.00**.

The licensee's contact from ADAMS costs nothing extra. Compute is included; you pay only this event.

### Use cases

- Prospecting: every amendment request from the last 90 days with the licensee's licensing contact and phone, for outreach by plant.
- Topic watch: every request mentioning steam generators, cyber security or power uprate, across all plants, since 2015.
- New-reactor pipeline: every construction permit, early site permit and limited work authorization notice, with the applicant's contact and the NRC staff on the review.
- Plant history: the full licensing record of a docket (50-317) or a plant name since 2000.
- Weekly feed: a saved task with 'Last N days' set to 14 returns each new biweekly notice's entries.

### Why this actor

- The licensee's own licensing contact from the cover letter, not just the attorney named in the notice.
- Amendment requests, issued amendments and new-reactor notices in one table since 2000.
- Lookup by docket number, plant or company for a plant's whole history.

### Limitations & updates

Federal Register notices with full text, which is 2000 on (and a few late-1990s notices); most earlier notices have none. Licence transfers, licence renewals, decommissioning and materials licences are not included. The licensee's own contact is read from the application's cover letter and is missing where the letter names nobody, names only its own signer, or is a scanned image; about 72% of amendment requests had one in a 365-day export on 2026-11-01. Notices group several plants into one entry occasionally; those rows list every docket and state. Plant street addresses are not in the notices.

### FAQ

**What is covered?**

Every entry in the NRC's biweekly (earlier monthly) Federal Register notices of licence amendment requests and issued amendments for nuclear power reactors, from 2000 (where the Federal Register's full text starts) to the latest notice, plus the NRC's new-reactor notices: construction permit, combined licence, early site permit and limited work authorization applications, their hearings and decisions. Measured on 2026-11-01, the last 365 days held 387 records: 190 amendment requests, 170 issued amendments and 27 new-reactor notices.

**Where do the contacts come from, and how often is there one?**

Three places. The licensee's own contact (the person named for questions in the application's cover letter) comes from that letter's text in the NRC's ADAMS library; in the 365-day export on 2026-11-01 it was found for 137 of 190 amendment requests (72%) and 19 of 27 new-reactor notices, mostly a name and direct phone, sometimes an email. The attorney's name and mailing address are printed in the notice (176 of 190 requests). The NRC project manager's name and phone are in the notice (184 of 190); new-reactor notices give NRC staff with email. Issued amendments carry no contacts.

**How does lookup mode work?**

List docket numbers (50-317, 05000317, 52-047), pre-application project numbers (99902137), plant names (Calvert Cliffs) or company names (TerraPower). Each one returns its records from every year since 2000 unless you set dates. On 2026-11-01, docket 50-317 returned 213 amendment records from 1998 to 2026 and Clinch River returned TVA's early site permit and construction permit notices from 2017 to 2026.

**Do repeated notices show up twice?**

An amendment request that the NRC re-publishes in a later notice is returned once per run. New-reactor notices are returned per notice, so a limited work authorization notice the NRC publishes four weeks running appears four times, each with its own Federal Register number and date.

**How fresh is it?**

Each run reads the Federal Register as it stands, so the newest biweekly notice is in the next run. A saved task with 'Last N days' set to 14 picks up each new notice.

**How am I charged?**

$0.005 per licensing record. The licensee's contact from ADAMS costs nothing extra. Free rows (input to fix, no match, a source that did not answer, a stopped run) are never charged. 'Maximum records' caps the run (and each lookup).

### Guides & use cases

Written up on **[scrapebench.dev](https://scrapebench.dev)** — the bench that runs and verifies this actor against the live source every night:

- **How-to:** [How to run NRC Reactor License Applications & Amendments Tracker](https://scrapebench.dev/guides/how-to-nrc-reactor-licensing-tracker/)
- **Use case:** [NRC licence amendment requests with licensee contacts](https://scrapebench.dev/use-cases/nrc-license-amendment-requests-contacts/)

More actors, coverage and nightly verification results: **[scrapebench.dev](https://scrapebench.dev)**

### Works with AI assistants (MCP)

Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the [MCP tab](https://apify.com/scrapebench/nrc-reactor-licensing-tracker/api/mcp) on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.

Then just ask:

> "List the NRC licence amendment requests from the last 90 days, with each licensee's licensing contact and phone number."

Ask for a docket number or plant name (Calvert Cliffs, 50-317) to get one plant's whole licensing history, or for new-reactor notices only to follow construction permit and early site permit applications. Runs started this way bill exactly like any other run.

### Data & lawful use

This actor collects publicly available information that the U.S. Nuclear Regulatory Commission (NRC) publishes for public
lookup — licence records, business listings and the contact details professionals list there.
Some of it identifies individuals (sole proprietors, licence holders, agents), so treat any
names, phone numbers and emails in your results as personal data.

When you run this actor, you decide what is collected and what it is used for, so you are the
controller of that data and we act only as your processor (Apify Standard Actor Contract).
You need a lawful basis for your use, must honour opt-out and deletion requests, and must
follow the marketing rules that apply to you (CAN-SPAM, TCPA, GDPR, CCPA and similar).
Don't use the output for unsolicited bulk messaging, for screening covered by the FCRA, or
for anything the source's own terms forbid.

Your results are stored in your own Apify account. We don't keep a copy of your results and
don't sell or share them.

### Disclaimer

This is an independent tool. It is not affiliated with, endorsed by or sponsored by
the U.S. Nuclear Regulatory Commission (NRC). Names and marks are used only to describe the data source. Records are
provided as published by the source and may be out of date or incomplete. For anything
consequential (hiring, a permit, a legal decision), confirm the record with the issuing
agency. You are responsible for making sure your use complies with applicable law and the
source's terms.

### Need help?

Open an issue on this actor's **Issues** tab and we'll respond there. Bug reports, missing
fields and feature requests are all welcome. Guides and examples: [scrapebench.dev](https://scrapebench.dev).

If you are a person named in this data and want your record removed from our copy, email
apify-help@scrapebench.dev; the source agency remains the official record.

Your run may be used to improve our services. If something looks off, or you want this actor to fit your use better, please share your run data with us: [Apify Console → Settings → Security → Share run data with developers](https://console.apify.com/settings/security). It lets us see exactly what went wrong and keep improving the actor.

# Actor input Schema

## `mode` (type: `string`):

export: every licensing record published in a date range, filtered by record type, state, company and keyword. lookup: the full history of the docket numbers, plants or companies you list (all years since 2000 unless you set dates).

## `lookups` (type: `array`):

One per line: a docket number (50-317, 05000317, 52-047), a pre-application project number (99902137), a plant name (Calvert Cliffs) or a company name (Constellation Energy, TerraPower).

## `lookup` (type: `string`):

One docket number, plant or company, for saved tasks and API calls that send a single value. Use Lookups above for several.

## `recordTypes` (type: `array`):

Which records to return. Empty means all three. One per line: amendment_request (a licensee asked to amend an operating reactor's licence); amendment_issued (the NRC issued an amendment); new_reactor (construction permit, combined licence, early site permit and limited work authorization notices, hearings and decisions).

## `lastDays` (type: `integer`):

Records published in the Federal Register in the last N days. Empty: the last 90 days in export mode, all years (since 2000) in lookup mode. 0 means all years. Ignored when a 'From' date is set.

## `dateFrom` (type: `string`):

YYYY-MM-DD, inclusive, by Federal Register publication date. The Federal Register's full text starts in 2000. Overrides 'Last N days'.

## `dateTo` (type: `string`):

YYYY-MM-DD, inclusive. Empty means up to today.

## `states` (type: `array`):

Keep only plants in these states (two-letter code or name, e.g. IL or Illinois). Empty means every state.

## `state` (type: `string`):

One state, for saved tasks and API calls that send a single value.

## `companies` (type: `array`):

Keep only records whose licensee, applicant or plant name contains one of these (e.g. Constellation, Dominion, Vogtle).

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

Keep only records whose description contains one of these words (e.g. steam generator, cyber security, power uprate, emergency plan).

## `includeLicenseeContact` (type: `boolean`):

For amendment requests and new-reactor notices, read the application's cover letter in the NRC's ADAMS library and add the person the licensee named for questions (name, phone or email). Costs nothing extra; turning it off makes large runs faster.

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

Cap for the run in export mode, and for EACH lookup in lookup mode. Records come newest first.

## Actor input object example

```json
{
  "mode": "export",
  "lookups": [],
  "recordTypes": [],
  "lastDays": 90,
  "states": [],
  "companies": [],
  "keywords": [],
  "includeLicenseeContact": true,
  "maxResults": 200
}
```

# Actor output Schema

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

One row per licensing record. Free notice rows explain anything not delivered.

# 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 = {
    "lastDays": 90,
    "maxResults": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapebench/nrc-reactor-licensing-tracker").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 = {
    "lastDays": 90,
    "maxResults": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapebench/nrc-reactor-licensing-tracker").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 '{
  "lastDays": 90,
  "maxResults": 200
}' |
apify call scrapebench/nrc-reactor-licensing-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapebench/nrc-reactor-licensing-tracker"
        }
    }
}
```

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/2PLvy5pEPEVLSikqh/builds/tykzULG5vfzM44pzZ/openapi.json
