UST, LUST & Spill Registry Screener — National + NY/CA/TX/FL avatar

UST, LUST & Spill Registry Screener — National + NY/CA/TX/FL

Pricing

from $5.50 / 1,000 results

Go to Apify Store
UST, LUST & Spill Registry Screener — National + NY/CA/TX/FL

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

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

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

RegistryScopeWhat it addsDistance measured?
EPA UST FinderNational (all 50 states + tribal)Registered UST facilities + LUST releases, with floodplain / source-water / wellhead receptor flagsYes — per-record coordinate
NY DEC SpillsNew YorkReported petroleum & chemical spills: material, quantity, cause, waterbody, open/closedNo — the dataset publishes no coordinate at all, so matching is county-level (match_basis: "county")
NY DEC Bulk StorageNew YorkRegistered PBS/CBS/MOSF bulk-storage tank facilitiesYes — server-side coordinate query
CA GeoTrackerCaliforniaLUST Cleanup Sites, Military UST Sites, Cleanup Program Sites, Land Disposal Sites, UICYes
TX PSTTexasTCEQ-registered petroleum storage tank facilities, product type, capacityYes (county fallback if the geo query fails)
TX LPSTTexasTCEQ leaking-PST cleanup sitesNo — county-level
FL DEPFloridaDEP petroleum contamination discharges, cleanup phase, eligibility, document linksYes (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

FieldMeaning
asset_labelYour name for the asset.
asset_lat, asset_lonThe WGS84 coordinate screened.
radius_milesThe radius used.
checked_atUTC ISO-8601 timestamp of the run.
disclaimerScreening-aid advisory text.

The finding

FieldMeaning
sourceWhich registry: EPA UST Finder, NY DEC Spills, NY DEC Bulk Storage, CA GeoTracker, TX PST, TX LPST, FL DEP.
stateTwo-letter state code. For EPA UST Finder rows this is normalised from the source's full state name.
state_nameThe state exactly as the registry publishes it (EPA UST Finder emits Alaska, not AK).
site_nameFacility or site name.
case_or_spill_idThe 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_idA 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_typeUST Facility, UST Release (LUST), Spill - <material family>, Bulk Storage — PBS/CBS/MOSF, LUST Cleanup Site, PST Facility, LPST Leak Site, Petroleum Contamination Site, …
statusThe registry's own status text.
is_opentrue / 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_basisHow is_open was decided: closure_date_present, status_vocabulary, no_closure_date, status_reported_unknown, no_status_reported, unrecognized_status_code.
contaminantMaterial or contaminant reported.
quantity_released, unitsQuantity released, in the registry's own units.
quantity_recoveredQuantity recovered (NY DEC Spills).
event_dateDate reported/discharged.
closure_dateClosure or No-Further-Action date, where one exists.
distance_milesGreat-circle miles from your asset. null on a county-level match.
match_basisradius — 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, countyLocation of the finding.
source_urlLink back to the record.

Tank & receptor detail (EPA UST Finder, TX PST, NY Bulk Storage)

FieldMeaning
open_ust_countUSTs currently in use at the facility. null when EPA publishes no count — never 0.
closed_ust_countPermanently closed USTs at the facility.
temporarily_out_of_service_ust_countUSTs temporarily out of service.
tank_capacity_gallonsRegistered capacity (TX PST, NY Bulk Storage).
product_typeSubstance stored (TX PST).
owner_nameRegistered owner, where published separately from the site name.
site_typeRegistry site classification (NY Bulk Storage site type, FL facility type).
within_100yr_floodplainFEMA 100-year floodplain flag (EPA UST Finder).
within_source_water_protection_areaInside a delineated drinking-water source protection area.
within_wellhead_protection_areaInside a delineated wellhead protection area.
population_within_1500ftResidents within 1,500 ft.
private_wells_within_1500ftPrivate/domestic wells within 1,500 ft.
land_useLand-use classification at the site.
last_inspection_dateMost recent state inspection (sparse upstream: 1,453 of 742,844 facilities).
closed_with_residual_contaminationRelease closed with contamination left in place (sparse upstream: 1,002 of 530,798 releases).
coordinate_sourceHow the published coordinate was derived — how far to trust distance_miles.
epa_regionEPA region 1–10.

Case detail (CA GeoTracker, NY DEC Spills, FL DEP)

FieldMeaning
lead_agency, local_agencyOversight agencies (CA GeoTracker).
potential_contaminants_of_concernCA GeoTracker potential contaminants of concern.
potential_media_affectedCA GeoTracker potential media affected (e.g. drinking-water aquifer).
spill_causeContributing factor (NY DEC Spills).
spill_source_textSource of the release (NY DEC Spills).
waterbodyNamed waterbody affected (NY DEC Spills). NONE upstream is reported as null.
cleanup_status_codeFL DEP discharge cleanup status code.
report_phaseFL DEP report phase / subphase.
eligibility_programFL DEP state cleanup-funding eligibility and program.
discharge_scoreFL DEP priority score for the discharge.
document_urlFL DEP public document repository link.

Verdict and provenance — read these before acting on a row

FieldMeaning
phase1_flagtrue 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_flagtrue 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_completetrue when every registry applicable to this run answered for this asset.
sources_queriedEvery registry this configuration should have consulted.
sources_okThe registries that answered.
sources_failedThe 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_statusPer-registry outcome: ok, unavailable, or null (not applicable to this run).
county_records_sourceWhich registry the county-scan counters below describe.
county_records_scannedHow many county records were retrieved.
county_records_totalThe registry's exact count for that county. Kings County alone holds 24,403 NY DEC spill records.
records_truncatedtrue when the county scan hit the per-asset fetch cap and returned the most recent records only.
errorSet 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:

ColumnsInput 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_urlThe prefill's Tampa FL asset.
error, sources_failedPopulated only when a registry fails. null on a healthy run is the good outcome.

How it works

  1. 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.
  2. 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.
  3. Findings are merged, ranked nearest-first, and capped at maxResultsPerAsset.
  4. 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.

  • 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.