UST, LUST & Spill Registry Screener — National + NY/CA/TX/FL
Pricing
from $5.50 / 1,000 results
UST, LUST & Spill Registry Screener — National + NY/CA/TX/FL
Underground storage tank (UST/LUST) and spill registry screener. Screen any US coordinate against the national EPA UST Finder plus NY, CA, TX and FL state registries — tank leaks, spills, and cleanup cases with case type, status, contaminant, and distance per hit, for Phase I ESA due diligence.
Pricing
from $5.50 / 1,000 results
Rating
0.0
(0)
Developer
Kyle Maloney
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
State UST, LUST & Spill Registry Screener — National + NY, CA, TX, FL
A national + state-level underground storage tank (UST/LUST) and spill/leak registry screener. Give it a list of asset coordinates and it screens each one for nearby tank leaks, spills, and cleanup cases — records that federal-only screens routinely miss, because day-to-day UST/LUST/spill enforcement mostly lives at the state agency, not the EPA.
It combines a national EPA UST Finder baseline (742,844 UST facilities + 530,798 LUST releases, every US state) with deep coverage for New York (DEC Spills + DEC Bulk Storage), California (SWRCB GeoTracker), Texas (TCEQ PST facilities + LPST leak sites) and Florida (DEP petroleum contamination sites).
Coverage at a glance
| Registry | Scope | What it adds | Distance measured? |
|---|---|---|---|
| EPA UST Finder | National (all 50 states + tribal) | Registered UST facilities + LUST releases, with floodplain / source-water / wellhead receptor flags | Yes — per-record coordinate |
| NY DEC Spills | New York | Reported petroleum & chemical spills: material, quantity, cause, waterbody, open/closed | No — the dataset publishes no coordinate at all, so matching is county-level (match_basis: "county") |
| NY DEC Bulk Storage | New York | Registered PBS/CBS/MOSF bulk-storage tank facilities | Yes — server-side coordinate query |
| CA GeoTracker | California | LUST Cleanup Sites, Military UST Sites, Cleanup Program Sites, Land Disposal Sites, UIC | Yes |
| TX PST | Texas | TCEQ-registered petroleum storage tank facilities, product type, capacity | Yes (county fallback if the geo query fails) |
| TX LPST | Texas | TCEQ leaking-PST cleanup sites | No — county-level |
| FL DEP | Florida | DEP petroleum contamination discharges, cleanup phase, eligibility, document links | Yes (converted from the source's DMS fields) |
Every row tells you which registries actually answered. A row can only say
"clear" when all of them did. If a registry did not respond, clear_flag and
phase1_flag are null — "not determined" — and sources_failed names the
registry. If no registry answered, the run fails and nothing is billed.
Absence of evidence is never published as evidence of absence.
Who this is for
- Phase I ESA consultants — the state-registry layer an EDR-style federal search leaves out, and the tank/spill component of a site file.
- CRE acquisition and lending teams — a fast pre-LOI screen across a portfolio of addresses before commissioning a full ASTM E1527 report.
- Environmental counsel and insurers — open vs closed cleanup cases, residual-contamination closures, and receptor proximity per site.
- AI agents — one call per coordinate, one row per finding, explicit per-source provenance on every row.
Each result is a screening aid, not a determination. It is not a substitute for a licensed Phase I ESA or an official state/federal records search.
Example input
{"assets": [{ "lat": 40.678, "lon": -73.944, "label": "Brooklyn NY site" },{ "lat": 34.052, "lon": -118.243, "label": "Downtown LA site" },{ "lat": 29.76, "lon": -95.37, "label": "Houston TX site" },{ "lat": 27.9506, "lon": -82.4572, "label": "Tampa FL site" },{ "lat": 44.42, "lon": -110.50, "label": "Yellowstone control (expect clear)" }],"radiusMiles": 1,"states": ["NY", "CA", "TX", "FL"],"includeNational": true,"openCasesOnly": false,"maxResultsPerAsset": 20}
That is the prefilled example. It deliberately covers all four states plus a known-clear rural control, so one run exercises both a real hit and a genuine clear. It returns 81 rows.
An optional "county" on an asset is used by every county-scoped registry if
the live FCC county lookup is unavailable.
Output — every field
One row per case/spill found within the radius. An asset with zero findings gets a single summary row.
Your asset, echoed back
| Field | Meaning |
|---|---|
asset_label | Your name for the asset. |
asset_lat, asset_lon | The WGS84 coordinate screened. |
radius_miles | The radius used. |
checked_at | UTC ISO-8601 timestamp of the run. |
disclaimer | Screening-aid advisory text. |
The finding
| Field | Meaning |
|---|---|
source | Which registry: EPA UST Finder, NY DEC Spills, NY DEC Bulk Storage, CA GeoTracker, TX PST, TX LPST, FL DEP. |
state | Two-letter state code. For EPA UST Finder rows this is normalised from the source's full state name. |
state_name | The state exactly as the registry publishes it (EPA UST Finder emits Alaska, not AK). |
site_name | Facility or site name. |
case_or_spill_id | The registry's own case identifier — NY spill number, CA GeoTracker global ID, TX PST facility number, TX LPST ID, FL discharge ID, or the EPA LUST_ID on a release. |
secondary_id | A second identifier for the same record (TX registration number, CA regional-board case number, EPA facility ID on a release row, NY SWIS code, FL facility ID). |
case_type | UST Facility, UST Release (LUST), Spill - <material family>, Bulk Storage — PBS/CBS/MOSF, LUST Cleanup Site, PST Facility, LPST Leak Site, Petroleum Contamination Site, … |
status | The registry's own status text. |
is_open | true / false / null. Determined against each registry's own published status vocabulary — never a substring guess. null means the registry did not report a status this actor recognises. |
status_basis | How is_open was decided: closure_date_present, status_vocabulary, no_closure_date, status_reported_unknown, no_status_reported, unrecognized_status_code. |
contaminant | Material or contaminant reported. |
quantity_released, units | Quantity released, in the registry's own units. |
quantity_recovered | Quantity recovered (NY DEC Spills). |
event_date | Date reported/discharged. |
closure_date | Closure or No-Further-Action date, where one exists. |
distance_miles | Great-circle miles from your asset. null on a county-level match. |
match_basis | radius — a real coordinate was available and distance_miles is measured. county — the registry publishes no coordinate for this record, so the match is county-wide only. |
address, city, zip, county | Location of the finding. |
source_url | Link back to the record. |
Tank & receptor detail (EPA UST Finder, TX PST, NY Bulk Storage)
| Field | Meaning |
|---|---|
open_ust_count | USTs currently in use at the facility. null when EPA publishes no count — never 0. |
closed_ust_count | Permanently closed USTs at the facility. |
temporarily_out_of_service_ust_count | USTs temporarily out of service. |
tank_capacity_gallons | Registered capacity (TX PST, NY Bulk Storage). |
product_type | Substance stored (TX PST). |
owner_name | Registered owner, where published separately from the site name. |
site_type | Registry site classification (NY Bulk Storage site type, FL facility type). |
within_100yr_floodplain | FEMA 100-year floodplain flag (EPA UST Finder). |
within_source_water_protection_area | Inside a delineated drinking-water source protection area. |
within_wellhead_protection_area | Inside a delineated wellhead protection area. |
population_within_1500ft | Residents within 1,500 ft. |
private_wells_within_1500ft | Private/domestic wells within 1,500 ft. |
land_use | Land-use classification at the site. |
last_inspection_date | Most recent state inspection (sparse upstream: 1,453 of 742,844 facilities). |
closed_with_residual_contamination | Release closed with contamination left in place (sparse upstream: 1,002 of 530,798 releases). |
coordinate_source | How the published coordinate was derived — how far to trust distance_miles. |
epa_region | EPA region 1–10. |
Case detail (CA GeoTracker, NY DEC Spills, FL DEP)
| Field | Meaning |
|---|---|
lead_agency, local_agency | Oversight agencies (CA GeoTracker). |
potential_contaminants_of_concern | CA GeoTracker potential contaminants of concern. |
potential_media_affected | CA GeoTracker potential media affected (e.g. drinking-water aquifer). |
spill_cause | Contributing factor (NY DEC Spills). |
spill_source_text | Source of the release (NY DEC Spills). |
waterbody | Named waterbody affected (NY DEC Spills). NONE upstream is reported as null. |
cleanup_status_code | FL DEP discharge cleanup status code. |
report_phase | FL DEP report phase / subphase. |
eligibility_program | FL DEP state cleanup-funding eligibility and program. |
discharge_score | FL DEP priority score for the discharge. |
document_url | FL DEP public document repository link. |
Verdict and provenance — read these before acting on a row
| Field | Meaning |
|---|---|
phase1_flag | true when any finding within the radius is open. false only when every applicable registry answered and none is open. null when a registry did not answer. |
clear_flag | true only on the single summary row for an asset with zero findings and a complete screen. null when the screen was partial or the asset could not be screened. false on hit rows. |
screen_complete | true when every registry applicable to this run answered for this asset. |
sources_queried | Every registry this configuration should have consulted. |
sources_ok | The registries that answered. |
sources_failed | The registries that did not. null when all answered. |
ny_spills_status, ny_bulk_storage_status, ca_geotracker_status, tx_pst_status, tx_lpst_status, fl_dep_status, epa_ust_finder_status | Per-registry outcome: ok, unavailable, or null (not applicable to this run). |
county_records_source | Which registry the county-scan counters below describe. |
county_records_scanned | How many county records were retrieved. |
county_records_total | The registry's exact count for that county. Kings County alone holds 24,403 NY DEC spill records. |
records_truncated | true when the county scan hit the per-asset fetch cap and returned the most recent records only. |
error | Set when an asset could not be screened, or the screen was partial. null on a healthy row. |
Inputs that populate the sparser columns
Some columns only appear when a particular registry contributes rows. Because
results are ranked nearest-first, a coordinate-bearing registry can fill the
whole maxResultsPerAsset budget. These inputs are live-verified:
| Columns | Input that populates them |
|---|---|
quantity_released, units, quantity_recovered, spill_cause, spill_source_text, waterbody | {"assets":[{"lat":43.60,"lon":-74.40}],"states":["NY"],"includeNational":false,"maxResultsPerAsset":6} — rural Hamilton County NY, where no coordinate-bearing registry outranks NY DEC Spills. |
owner_name, product_type | {"assets":[{"lat":29.76,"lon":-95.37}],"states":["TX"],"includeNational":false,"maxResultsPerAsset":8} |
cleanup_status_code, report_phase, eligibility_program, discharge_score, document_url | The prefill's Tampa FL asset. |
error, sources_failed | Populated only when a registry fails. null on a healthy run is the good outcome. |
How it works
- Live drift assertions run first, before anything billable. Every registry's column list, record count, and — for the spatial layers — a positive canary and a negative control are checked against values measured on 2026-08-01. A missing column, a renamed layer, a canary that goes empty, or a negative control that starts returning rows (which means the spatial filter is being ignored) fails the run and bills nothing. Every measured value is logged so a future tightening is evidence-based.
- Each asset is screened against every selected registry. Coordinate-bearing registries are queried server-side by bounding box or radius, then refined with a great-circle distance. Coordinate-less registries are scoped to the asset's county, and their exact county total is fetched so any truncation is disclosed rather than silent.
- Findings are merged, ranked nearest-first, and capped at
maxResultsPerAsset. - Rows are buffered and the billing gate runs before anything is written. If every registry failed for every asset, the run fails and nothing is billed.
Use as an MCP tool
Available through mcp.apify.com. One call per coordinate batch; one row per
finding. Field descriptions are written for an agent to read: is_open,
phase1_flag, and clear_flag are three-valued, and <registry>_status tells
the agent whether a negative was actually verified. An agent should treat
clear_flag: null as "unknown", never as "clear".
Chains naturally with epa-contaminated-site-screener (federal Superfund /
RCRA / ECHO records for the same coordinate) and
site-due-diligence-bundle (20-layer site screen).
Pricing
Pay-per-result. You are charged per dataset row: one row per finding, or one summary row for an asset with no findings. Failed runs emit nothing and cost nothing beyond the platform's Actor-start event. Volume tiers apply automatically on paid Apify plans.
FAQ
Why does a New York spill have no distance? The NY DEC Spills dataset
(u44d-k5fk) publishes no coordinate column at all — 20 columns, none of them
spatial. Those rows are matched at county level and marked
match_basis: "county" with distance_miles: null. NY DEC Bulk Storage
does carry coordinates and is screened by radius.
What does records_truncated: true mean? A county-level scan hit the
per-asset fetch cap. county_records_total gives the registry's exact count
so you know the size of what was not scanned; results are ordered most-recent
first. Narrow the run to that state to scan more per asset.
Why is is_open sometimes null? Because the registry reported a status
this actor does not recognise, or no status at all. A guess would be worse
than an honest null on a screen that carries liability.
Is a clear_flag: true row a clean site? It means every applicable
registry answered and none of them had a record within your radius. It is a
screening result, not a Phase I ESA conclusion.
Which states are covered? Nationally, EPA UST Finder. State registries for NY, CA, TX and FL. An asset anywhere else still gets the national baseline.
Related actors
- epa-contaminated-site-screener — Superfund/SEMS, RCRA, ECHO, USTs and institutional controls for the same coordinate.
- site-due-diligence-bundle — 20-layer environmental and regulatory screen.
- fws-wetlands-proximity-screener, nhd-surface-water-404-screener — water-resource constraints on the same parcel.