NY Environmental Records - Spills, Sites & Tanks avatar

NY Environmental Records - Spills, Sites & Tanks

Pricing

from $0.03 / 1,000 ny environmental records

Go to Apify Store
NY Environmental Records - Spills, Sites & Tanks

NY Environmental Records - Spills, Sites & Tanks

New York (NYSDEC) environmental data in one API: 574,559 spill incidents, 237,135 remediation sites (Superfund, Brownfield, VCP, ERP, RCRA) and 286,691 bulk storage tanks. Filter by county, ZIP, city, DEC region, facility, program, material or status; aggregate by county, program or year.

Pricing

from $0.03 / 1,000 ny environmental records

Rating

0.0

(0)

Developer

Wenhao Yang

Wenhao Yang

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

New York Environmental Records

Three New York State (NYSDEC) environmental datasets in one API and one record shape: spill incidents, remediation sites and bulk storage tanks.

Low cost

Environmental records: from $0.00005 per record, down to $0.00003 at Gold.

What you get

Every row carries corpus and recordKind so a mixed export is never ambiguous: spill, remediation-site or storage-tank.

Spills - 574,581 rows

  • programNumber (spill number), spillDate, receivedDate, closeDate
  • facilityName, address, address2, city, county, zip, region
  • materialName, materialFamily, quantity, units, recovered
  • spillSource, contributingFactor, waterbody
  • status / statusLabel - open (no close date) or closed

Remediation sites - 237,230 rows

  • programNumber, programType - HW (State Superfund), BCP (Brownfield), VCP, ERP, RCRA, plus SP (spill sites, 491 rows) and DWC (61)
  • siteClass / siteClassLabel - 02 / 03 / 04 registry classes, A active, C completed, P preliminary, PR RCRA, N no further action. (05 is a valid registry class but has no rows in this extract.)
  • facilityName, address, city, county, zip, region, latitude, longitude
  • contaminants, wasteName, controlCode, controlType, operableUnit
  • swisCode, projectName
  • ownerName, ownerAddress, ownerCity, ownerState, ownerZip
  • operatorName, disposalName, disposalAddress
  • projectCompletionDate

Bulk storage tanks - 250,803 rows (the source's 286,691 rows include 35,890 empty placeholders with no tank number, status or capacity; those are never delivered or billed)

  • programNumber, programType - PBS (petroleum) and CBS (chemical) are delivered. MOSF (major oil, 12,208 source rows) and LNG carry no tank number, status or capacity in this extract (they are facility-level registrations, mostly vessels), so no MOSF or LNG row is delivered or billed.
  • tankNumber, status / statusLabel, tankType, tankLocation, capacityGallons
  • installDate, closeDate, expirationDate
  • materialName, percentOfMaterial
  • siteType, siteStatus
  • latitude, longitude (from the source point) and the original utmX, utmY

Examples

The 50 most recent spill reports:

{ "corpus": "spills", "maxResults": 50 }

Spills in one county:

{ "county": "Erie", "maxResults": 100 }

Spills at an address (the filter matches from the start of the address string, so include the house number when the source has one):

{ "address": "100 MAIN", "maxResults": 100 }

A site by its street address:

{ "corpus": "sites", "address": "505 WINDING", "maxResults": 50 }

Gasoline spills in one county:

{ "county": "Erie", "material": "Gasoline", "maxResults": 100 }

Open spill reports only:

{ "openOnly": true, "maxResults": 100 }

Remediation sites in a county:

{ "corpus": "sites", "county": "Nassau", "maxResults": 100 }

The most serious site class (registry class 2 - a significant threat):

{ "corpus": "sites", "siteClass": "02", "maxResults": 100 }

Tanks that are still in service anywhere in a county:

{ "corpus": "tanks", "county": "Erie", "tankStatus": "In Service", "maxResults": 100 }

Every storage tank inside a latitude/longitude box around New York City:

{
"corpus": "tanks",
"north": 40.95, "south": 40.55, "east": -73.70, "west": -74.05,
"maxResults": 200
}

Remediation sites in the same box:

{
"corpus": "sites",
"north": 41.00, "south": 40.40, "east": -73.50, "west": -74.50,
"maxResults": 200
}

Spills by county:

{ "mode": "aggregate", "groupBy": "county" }

Sites by program:

{ "corpus": "sites", "mode": "aggregate", "groupBy": "programType" }

Tank capacity by status:

{ "corpus": "tanks", "mode": "aggregate", "groupBy": "tankStatus", "metric": "capacityGallons" }

Coverage and honest limits

  • Counts measured 2026-10-28 (source last updated 2026-10-28): 574,581 spill reports / 237,230 remediation-site records / 250,803 storage tanks = 1,062,614 delivered records.
  • One row is not one place. A spill row is a spill report. A remediation-site row is a site operable unit institutional/engineering-control record, so a large site legitimately appears several times (about 4% of delivered site rows are verbatim duplicates of another row - the source publishes them twice, and each is delivered and metered as a source record). A tank row is a single tank, so one facility appears once per tank. Tank rows with no tank number, no status and no capacity are dropped (35,890 source placeholders).
  • 🔴 ZIP is published on only about 10% of spill rows (57,862 of 574,581). Spill ZIP filtering returns few rows by design; county is complete on every row. A 5-digit ZIP query also matches ZIP+4 values (12903-2116).
  • 🔴 New York City is published by county name, not borough name: Manhattan is New York, Brooklyn is Kings, Staten Island is Richmond; Bronx and Queens are spelled as expected. Filtering county="New York" is Manhattan only.
  • The spill corpus publishes 87 distinct county values, because the state records where a report came from - including spills outside New York (Canada - Region 5, Connecticut - Region 1, New Jersey - Region 2, Pennsylvania - Region 3, Vermont - Region 4, ...) and reservation names. They are not separate NY counties and are returned as published.
  • 🔴 Tank percentOfMaterial is raw source data, not a percentage. The state stores it scaled (a full tank reads 10000.00) and it is populated across the programmes, not just chemical bulk storage: every delivered tank carries it (PBS 226,215 read 10000.00, CBS 2,006). It is passed through unchanged and is never presented as a percentage.
  • Tank coordinates come from the source's published point, with the original UTM easting/northing kept alongside. Spill records carry no coordinates at all - the source publishes an address, not a point, so north / south / east / west are rejected for corpus=spills rather than silently ignored.
  • Bounding-box search works on sites and tanks: give all four of north, south, east, west (longitudes negative in New York) and the predicate runs against the source's point column. A partial box, or one with the edges swapped, is rejected with an error rather than approximated. About 10% of delivered tank rows carry no published point (26,285 rows) and therefore never fall inside any box - use the address, city or county filters for those.
  • projectCompletionDate is the program's project completion date and may be a planned future date. It is not proof that remediation finished.
  • spillDate is blank on 151 spill rows and receivedDate on 503; the row is still returned with blank dates rather than dropped. installDate is blank on 50,440 delivered tanks.
  • ownerName / operatorName on remediation sites are the published site owner and operator of record (public record), not the current owner of the land and not a mailing list.
  • sourceUpdatedAt is the state's last dataset refresh date for the chosen corpus.

Also available in this account: NY Property Assessments (tax-lot assessment and sale records) and NYC HPD Violations (housing-code violations by building).