EPA Sole Source Aquifer Screener — SDWA 1424(e) Review avatar

EPA Sole Source Aquifer Screener — SDWA 1424(e) Review

Pricing

from $3.30 / 1,000 results

Go to Apify Store
EPA Sole Source Aquifer Screener — SDWA 1424(e) Review

EPA Sole Source Aquifer Screener — SDWA 1424(e) Review

EPA Sole Source Aquifer screener. Batch point-in-polygon check of coordinates against EPA Sole Source Aquifers: returns whether each point is in an SSA, the aquifer name, project-review-area type (recharge vs streamflow source zone), Federal Register citation and EPA region for SDWA 1424(e) review.

Pricing

from $3.30 / 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

2 days ago

Last modified

Share

Batch point-in-polygon screen of coordinates against the EPA national Sole Source Aquifer (SSA) layer, plus a measured distance to the nearest SSA boundary. One row per site, ready for a Phase I ESA appendix, a NEPA/§1424(e) checklist, or a site-selection spreadsheet.

A Sole Source Aquifer is an aquifer EPA has designated as supplying at least 50% of the drinking water for its service area with no readily available alternative. Inside a designated SSA project review area, any project receiving federal financial assistance is subject to EPA review under Safe Drinking Water Act section 1424(e) before the funding proceeds. That review is triggered by the money, not by the permit — which is why it surprises people late.

This is a screening tool, not a determination. It reports what the EPA national SSA polygon layer (August 2019 edition) says about a coordinate. It is not an official SSA determination, not a §1424(e) review, and not legal advice. Confirm with the EPA Regional Office (epa_link) before any siting, funding, permitting or transaction decision.


What v1.1 fixed (2026-08-01)

v1.0 was correct on a healthy day and quietly wrong on a bad one. Four defects, all of the same family — a billable row asserting a negative it never verified:

  1. Any HTTP 200 without an error key was read as "not in a Sole Source Aquifer." The response parser did Array.isArray(json.features) ? json.features : [], so a 200 whose body has no features key at all became a confident clear. That shape is reachable from this exact endpoint — returnCountOnly=true returns {"count":1}. A response is now only accepted as an answer when it actually carries a features array.
  2. in_sole_source_aquifer and requires_swda_1424e_review were seeded false in the base row. They now start null and are only set to false on a path that genuinely got an answer. null = not checked; false = checked and negative. Every row now also carries ssa_layer_status.
  3. No live drift assertion. Verified live 2026-08-01: querying Cape Cod without inSR=4326 returns HTTP 200 and {"features":[]} — byte- comparable to the genuine Dallas clear. Nothing in the response distinguishes a projection false-clear from a real one, so an offline fixture can never catch it. Five live assertions now run before any billable row (see below).
  4. A total upstream outage still billed. Rows were pushed one at a time as they were produced, so an outage emitted one billable error row per asset and the run went green. Rows are now buffered and a billing gate runs before pushData: if not one asset was screened, the run fails and emits nothing.

Also recovered: Shape__Area, Shape__Length and FID were fetched on every request via outFields=* and thrown away before the row was written. And EPA publishes SSA49b three times with three different EPA_Region values ("Region 8", "Region 9" and blank); v1.0's dedupe kept whichever arrived first and silently discarded the rest, so the emitted region was arbitrary among conflicting values. Every distinct region is now retained and the disagreement is flagged.

No field was removed or renamed, and the price is unchanged.

The live drift gate

Runs once per run, before a single billable row exists. Any failure aborts with nothing emitted and nothing billed.

AssertionWhat it catches
Layer resolves with the exact 8-field schemaEPA republishing under a different structure
Polygon count inside 80–200 (live: 97)A silently truncated or half-loaded layer
Every live SSA_NAME is in the pinned 94-name vocabularyA new EPA zone type falling through the string-parse into "Aquifer Project Review Area" — the exact shape that made epa-nonattainment mis-rank every "Severe" area
Positive canary: Cape Cod (41.68, −70.30) must still hit SSA04A projection/inSR regression turning every site into a false clear
Negative control: Dallas (32.7791, −96.80) must still return nothingA spatial filter that has started matching everything

A per-feature magnitude check also guards the returned geometry: Web-Mercator metres are in the millions and |lon| can never exceed 180. This deliberately does not test distance-from-query — that mistake hard-failed every open-coast site in a sibling actor, because one legitimate polygon can be enormous.


Who uses this

  • Phase I ESA / environmental due-diligence consultants — an SSA hit is a named regulatory overlay for the records-review section, and federal_register_citation is the citation the report needs.
  • Federally-funded infrastructure and housing developers (SRF, HUD, USDA-RD, DOT, FEMA) — find the §1424(e) trigger during site selection, not during the funding review.
  • Renewable-energy and data-centre site selectors — screen a whole candidate list in one call and rank by near_ssa_boundary and distance_to_nearest_ssa_mi.
  • Land and title teams — an SSA overlay is a disclosure-relevant condition.
  • AI agents — one clean tool call per coordinate batch; see the MCP note below.

Example input

{
"assets": [
{ "lat": 41.68, "lon": -70.30, "label": "Cape Cod, MA" },
{ "lat": 29.60, "lon": -98.50, "label": "San Antonio, TX" },
{ "lat": 42.90, "lon": -112.45, "label": "Pocatello, ID" },
{ "lat": 40.970, "lon": -74.165, "label": "Wyckoff, NJ" },
{ "lat": 32.7791,"lon": -96.80, "label": "Dallas, TX (control)" }
],
"maxAssets": 500,
"proximityAnalysis": true,
"searchRadiusMi": 10,
"nearBoundaryMi": 1
}

Live result from that exact input (2026-08-01): Cape Cod → SSA04, 2,788 m in from the edge. San Antonio → SSA47b, Edwards Aquifer I Recharge Zone. Pocatello → SSA49b, and only 1,526 m from the boundary, so near_ssa_boundary is true. Wyckoff → clear, but the Ridgewood Area Aquifers SSA is 0.555 mi away, so near_ssa_boundary is true there too. Dallas → clear, no SSA within 10 miles.

Input fields

FieldTypeDefaultMeaning
assetsarray (required)[{ lat, lon, label }]. One billable row per asset. Omitting it fails the run before anything is billed.
maxAssetsinteger500Safety cap; extra assets are ignored.
proximityAnalysisbooleantrueMeasure distance to the nearest SSA boundary. Turn off to halve upstream requests.
searchRadiusMiinteger10How far to look for nearby boundaries. Beyond it the actor reports "none within the radius" rather than guessing.
nearBoundaryMiinteger1Threshold for near_ssa_boundary.

Output fields

Every field below is declared in the dataset schema and emitted on every row. null always means not checked — never a negative.

Site and verdict

FieldTypeDescription
asset_labelstringYour label for the point (auto-generated if omitted).
asset_latnumberLatitude screened (WGS84).
asset_lonnumberLongitude screened (WGS84).
in_sole_source_aquiferbooleantrue inside any designated SSA; false only on a verified clear; null when not checked.
requires_swda_1424e_reviewbooleantrue when in an SSA: a federally assisted project here is subject to EPA §1424(e) review. null when not checked.
sdwa_1424e_implicationstringPlain-language statement of what the result means, what review it triggers and what it does not. null when the status was not verified.
errorstringMessage for an invalid coordinate or a failed query; null on success.

The matched aquifer

FieldTypeDescription
ssa_namestringName of the primary (largest-area) matching SSA polygon.
ssa_idstringEPA SSA identifier of the primary polygon (SSA04, SSA47b, SSA39_SSA41).
review_area_typestringOne of: Recharge Zone, Streamflow Source Zone, Streamflow and Recharge Source Zone, Artesian Zone, Source Area, Aquifer Project Review Area.
review_area_type_knownbooleantrue when the polygon's name is in the pinned 94-name vocabulary, i.e. the type was validated against that exact string rather than defaulted. An unknown name fails the whole run before billing.
federal_register_citationstringFederal Register citation of the designation, e.g. 47 FR 30282 (1982). Populated on all 97 live polygons.
epa_regionstringEPA region label for the primary polygon (raw, as EPA publishes it).
epa_region_numberintegerNumeric region 1–10 parsed from the label.
epa_regions_matchedarrayEvery distinct region across all matching polygons.
epa_region_conflictbooleantrue when the matching polygons disagree about the owning region — confirm from epa_link rather than trusting epa_region.
epa_linkstringEPA regional-office contact URL for the SSA program.
matched_aquifer_countintegerDistinct SSA polygons containing the point (a point can be in both a recharge and a streamflow zone).
matched_aquifersarrayEvery matching polygon with its id, name, review-area type, vocabulary flag, citation, region(s), link, area, perimeter and feature id.
primary_ssa_area_m2numberMapped area of the primary polygon (m²).
primary_ssa_perimeter_mnumberMapped perimeter of the primary polygon (m).
primary_ssa_feature_idintegerStable ArcGIS FID of the primary polygon, for citing an exact feature.

Boundary proximity

FieldTypeDescription
search_radius_minumberRadius used for the boundary-distance query.
ssa_polygons_within_radiusintegerSSA polygons within that radius. 0 on a genuinely isolated site.
distance_to_nearest_ssa_mnumberFor a point outside every SSA: shortest distance to the nearest SSA boundary. null when inside one, when nothing is in range, or when proximity did not answer.
distance_to_nearest_ssa_minumberThe same distance in statute miles.
nearest_ssa_idstringSSA_ID of the nearest aquifer (outside case).
nearest_ssa_namestringName of the nearest aquifer.
nearest_ssa_review_area_typestringReview-area type of the nearest aquifer.
nearest_ssa_epa_regionstringEPA region of the nearest aquifer.
nearest_ssa_federal_register_citationstringDesignation citation of the nearest aquifer.
distance_inside_from_boundary_mnumberFor a point inside an SSA: how far in from the nearest edge. Small values mean a boundary revision could change the answer.
near_ssa_boundarybooleantrue within nearBoundaryMi of a boundary, inside or out. null when proximity was not measured.
near_boundary_threshold_minumberThe threshold near_ssa_boundary was evaluated against.
distance_precision_mnumberStated accuracy of the distance fields (25 m).
distance_basisstringAudit trail: exactly how the distances were computed, including the generalization tolerance and projection.

Provenance and per-source status

FieldTypeDescription
ssa_layer_statusstringok / unavailable / not_applicable / not_checked. When unavailable, every aquifer verdict on the row is null — never false.
ssa_layer_errorstringUpstream error text when the layer was unavailable.
proximity_statusstringok / unavailable / not_requested / not_applicable / not_checked.
proximity_errorstringUpstream or projection-guard error text when proximity was unavailable.
layer_namestringName of the EPA layer actually queried, read live.
layer_polygon_countintegerLive polygon count, asserted in-band before any row was emitted (97 as of 2026-08-01).
data_vintagestringEdition of the EPA SSA layer behind the row.
query_basisstringThe exact spatial query used, so a result is reproducible.
source_urlstringThe EPA FeatureServer layer used.
disclaimerstringInformational-use disclaimer.
checked_atstringUTC timestamp of the run.

Legitimately empty on a healthy run: error, ssa_layer_error and proximity_error are null when nothing went wrong — that is good news, not a dead column. Each is pinned by an offline fixture. To see them populated live, pass a deliberately bad coordinate, e.g. {"assets":[{"lat":999,"lon":0,"label":"bad"}]}error populated, ssa_layer_status: "not_applicable". epa_region_conflict reads true only where EPA's own region values disagree (the SSA49b rows); it is false on every other hit and null on a clear.


Use as an MCP tool

Available to AI agents through mcp.apify.com. Give it a list of coordinates and it returns one structured verdict per site. The ssa_layer_status / proximity_status fields exist so an agent can tell "no aquifer here" from "the aquifer layer did not answer" — the distinction that matters most when an agent is chaining decisions.

Pricing

Pay per result — $6 per 1,000 rows. One row per screened asset. Graduated paid-plan discounts apply automatically. A run that fails the drift gate or the billing gate emits zero rows and therefore costs zero.

FAQ

Does a hit mean I cannot build here? No. It means a federally assisted project at that location goes through EPA §1424(e) review. Most projects clear it; the cost is schedule, so find out early.

My site is 0.3 miles outside an SSA. Does that matter? Possibly. Boundaries are 2019-vintage and get revised, and groundwater does not respect polygons. That is what near_ssa_boundary and distance_to_nearest_ssa_mi are for — the call is the Regional Office's, not this actor's.

Why is epa_region null on my Idaho hit? Because EPA publishes that polygon with a blank EPA_Region. The actor reports the blank honestly rather than inventing a region. Use epa_link for the contact list.

What if EPA republishes the layer? The run fails loudly with the specific assertion that broke, and bills nothing — rather than returning plausible answers from a layer nobody validated.

Is a clear result trustworthy? A false is only ever written after a successful query against a layer that passed all five live assertions in the same run. If anything was unavailable you get null plus a status field.

Screens the same coordinate against neighbouring regulatory overlays:

  • EPA Contaminated Site Screener — Superfund/RCRA/UST/ECHO at ASTM distances.
  • NHD Surface Water & Clean Water Act §404 Screener — jurisdictional waters.
  • FWS Wetlands Proximity Screener — NWI wetlands.
  • EPA Impaired Waters (303d) Screener — impaired receiving waters.
  • Karst & Sinkhole Risk Screener — the geology that makes an aquifer vulnerable.
  • Site Due Diligence Bundle — 20 layers for one coordinate in one call.