EPA FRS Facility Registry Scraper
parseforge/epa-frs-facility-registry-scraper
Developer toolsOther
Scrapes EPA FRS facility records by US state or territory and optional program system. Returns each facility as a flat row with registry ID, name, address, and program interests.
- Total users
- 2
- Monthly active
- 1
- Total runs
- 84
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 12 days ago
Overview
EPA FRS Facility Registry Scraper
Scrape EPA FRS facility records for any US state or territory, up to a million per run. Each facility comes with its registry ID, name, address, and program interests. No API key or login. Export to CSV, JSON, Excel, or XML.
The EPA Facility Registry Service (FRS) is the master list of regulated facilities in the United States, but its public query tool is slow and hard to export. This Actor reads the FRS facility search directly, filtered by state and optional EPA program system, and returns each match in one flat row. You get the same data the EPA publishes, ready for analysis.
| Who uses it | What they scrape EPA FRS Facility Registry for |
|---|---|
| Environmental consultants | Building a list of regulated facilities in a state for compliance audits |
| Market researchers | Identifying industrial sites by environmental program participation |
| Data journalists | Mapping pollution sources and permit holders for investigative stories |
| Regulatory analysts | Tracking which facilities fall under specific EPA programs |
What it does
This Actor collects EPA FRS facility records by US state or territory and optional program system, and returns each facility as a flat row.
- πΊοΈ State or territory filter: choose any US state, DC, Puerto Rico, or other territory.
- π Program system filter: narrow to NPDES, RCRA, TRI, air, drinking water, and more.
- π¦ Bulk export: pull up to 1,000,000 facilities per run, then download as CSV, JSON, Excel, or XML.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with EPA FRS Facility Registry data
π Build a state compliance list.
An environmental consultant selects California and the RCRAINFO program to get every hazardous waste facility in the state for a client audit.
πΊοΈ Map pollution sources.
A data journalist pulls all TRI facilities in Texas and joins the addresses to census data to show which communities host toxic emitters.
π Find permit holders.
A market researcher filters for NPDES in Ohio to identify industrial water users for a wastewater treatment sales campaign.
π Track program coverage.
A regulatory analyst runs the Actor for all states with no program filter to count how many facilities appear in each EPA system.
Why choose this scraper
| What you get | |
|---|---|
| No API key | The FRS public API requires registration and has rate limits. This Actor reads the public search directly. |
| One flat row per facility | Registry ID, name, address, and program interests land in a fixed schema, ready for spreadsheets. |
| Program-level filtering | Target only NPDES water permits, RCRA hazardous waste, TRI toxics, or any of 18 program systems. |
How it compares
No other Store actor targets EPA FRS Facility Registry the same way, so the honest comparison is with the alternatives teams actually weigh.
| EPA FRS Facility Registry Scraper | Build it in-house | By hand | |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When EPA FRS Facility Registry changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |
Configure the run
Drive the Actor with a state or territory code and an optional EPA program system acronym. Filters run as each facility is read, so only matches reach your dataset. The Input tab lists every parameter.
A first run with the defaults:
{
"maxItems": 10
}
A larger pull:
{
"maxItems": 200
}
Pricing
Pay-per-result: $0.004 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $0.40 |
| 1,000 results | $4.00 |
| 10,000 results | $40.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the EPA FRS Facility Registry Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to EPA FRS Facility Registry through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/epa-frs-facility-registry-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check that the state code is correct and that the program system filter is not too narrow. Some states have few facilities in certain programs. Try setting the program filter to Any.
The run stops before reaching my maxItems.
The Actor stops when it has collected all facilities that match your filters. If the state has fewer facilities than your maxItems, you will get all of them.
I get an error about the state code.
Use the two-letter USPS code, such as CA for California or PR for Puerto Rico. The input dropdown lists all valid codes.
The dataset has duplicate facilities.
A facility can appear in multiple program systems, but the Actor returns one row per facility. If you see duplicates, check that you did not run the same state twice and merge the datasets.
Can I get more than 1,000,000 facilities?
The maximum is 1,000,000 per run. If you need more, split the work by state or program and run multiple times, then merge the results.
FAQ
| Question | Answer |
|---|---|
| What is the EPA FRS? | The Facility Registry Service is the EPA's central database of facilities regulated under environmental statutes. It assigns a unique FRS ID to each site and links it to program systems like NPDES, RCRA, and TRI. |
| Do I need an EPA API key? | No. This Actor reads the public FRS facility search directly, so you can run it without registering for an EPA account or dealing with rate limits. |
| Can I filter by facility name or address? | The current input only supports state and program system filters. If you need name or address search, contact support and we can add it. |
| What does the program system filter do? | It limits results to facilities that participate in a specific EPA program, such as NPDES for water discharge permits or RCRAINFO for hazardous waste. Leave it on Any to include all facilities. |
| How many facilities can I get in one run? | You can set the maximum up to 1,000,000. The actual number depends on how many facilities exist in the selected state and program. |
| Which states and territories are supported? | All 50 states, the District of Columbia, Puerto Rico, the US Virgin Islands, Guam, American Samoa, and the Northern Mariana Islands. |
| What fields are returned for each facility? | Each row includes the FRS registry ID, facility name, address, city, state, ZIP, and the program systems the facility is linked to. The exact field list is shown in the sample output. |
| Can I export the data? | Yes. After the run, download the dataset as CSV, JSON, Excel, or XML from the Apify platform. |
| Is this the same data as EPA ECHO? | ECHO is a separate EPA system focused on enforcement and compliance. FRS is the underlying facility registry. This Actor scrapes FRS, not ECHO. |
| How often is the data updated? | The Actor reads live data from the EPA FRS search each time it runs, so you always get the current registry. |
Related actors
Browse the full ParseForge collection for more scrapers.
π Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
β οΈ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by U.S. Environmental Protection Agency. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| stateCode required | string (56 options) | US state or territory to pull regulated facilities for. | CA |
| programAcronym | string (19 options) | Optional EPA program system to filter facilities by. Leave on Any to include all programs. | not set |
| maxItems | integer | Maximum number of facilities to collect per run. | 10 |
Pricing
from $3.00 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| result | Single result in the default dataset. | $0.003 to $0.004 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~epa-frs-facility-registry-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
