EPA Sole Source Aquifer Screener — SDWA 1424(e) Review
Pricing
from $3.30 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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:
- Any HTTP 200 without an
errorkey was read as "not in a Sole Source Aquifer." The response parser didArray.isArray(json.features) ? json.features : [], so a 200 whose body has nofeatureskey at all became a confident clear. That shape is reachable from this exact endpoint —returnCountOnly=truereturns{"count":1}. A response is now only accepted as an answer when it actually carries a features array. in_sole_source_aquiferandrequires_swda_1424e_reviewwere seededfalsein the base row. They now startnulland are only set tofalseon a path that genuinely got an answer.null= not checked;false= checked and negative. Every row now also carriesssa_layer_status.- No live drift assertion. Verified live 2026-08-01: querying Cape Cod
without
inSR=4326returns 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). - 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.
| Assertion | What it catches |
|---|---|
| Layer resolves with the exact 8-field schema | EPA 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 vocabulary | A 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 SSA04 | A projection/inSR regression turning every site into a false clear |
| Negative control: Dallas (32.7791, −96.80) must still return nothing | A 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_citationis 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_boundaryanddistance_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
| Field | Type | Default | Meaning |
|---|---|---|---|
assets | array (required) | — | [{ lat, lon, label }]. One billable row per asset. Omitting it fails the run before anything is billed. |
maxAssets | integer | 500 | Safety cap; extra assets are ignored. |
proximityAnalysis | boolean | true | Measure distance to the nearest SSA boundary. Turn off to halve upstream requests. |
searchRadiusMi | integer | 10 | How far to look for nearby boundaries. Beyond it the actor reports "none within the radius" rather than guessing. |
nearBoundaryMi | integer | 1 | Threshold 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
| Field | Type | Description |
|---|---|---|
asset_label | string | Your label for the point (auto-generated if omitted). |
asset_lat | number | Latitude screened (WGS84). |
asset_lon | number | Longitude screened (WGS84). |
in_sole_source_aquifer | boolean | true inside any designated SSA; false only on a verified clear; null when not checked. |
requires_swda_1424e_review | boolean | true when in an SSA: a federally assisted project here is subject to EPA §1424(e) review. null when not checked. |
sdwa_1424e_implication | string | Plain-language statement of what the result means, what review it triggers and what it does not. null when the status was not verified. |
error | string | Message for an invalid coordinate or a failed query; null on success. |
The matched aquifer
| Field | Type | Description |
|---|---|---|
ssa_name | string | Name of the primary (largest-area) matching SSA polygon. |
ssa_id | string | EPA SSA identifier of the primary polygon (SSA04, SSA47b, SSA39_SSA41). |
review_area_type | string | One of: Recharge Zone, Streamflow Source Zone, Streamflow and Recharge Source Zone, Artesian Zone, Source Area, Aquifer Project Review Area. |
review_area_type_known | boolean | true 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_citation | string | Federal Register citation of the designation, e.g. 47 FR 30282 (1982). Populated on all 97 live polygons. |
epa_region | string | EPA region label for the primary polygon (raw, as EPA publishes it). |
epa_region_number | integer | Numeric region 1–10 parsed from the label. |
epa_regions_matched | array | Every distinct region across all matching polygons. |
epa_region_conflict | boolean | true when the matching polygons disagree about the owning region — confirm from epa_link rather than trusting epa_region. |
epa_link | string | EPA regional-office contact URL for the SSA program. |
matched_aquifer_count | integer | Distinct SSA polygons containing the point (a point can be in both a recharge and a streamflow zone). |
matched_aquifers | array | Every matching polygon with its id, name, review-area type, vocabulary flag, citation, region(s), link, area, perimeter and feature id. |
primary_ssa_area_m2 | number | Mapped area of the primary polygon (m²). |
primary_ssa_perimeter_m | number | Mapped perimeter of the primary polygon (m). |
primary_ssa_feature_id | integer | Stable ArcGIS FID of the primary polygon, for citing an exact feature. |
Boundary proximity
| Field | Type | Description |
|---|---|---|
search_radius_mi | number | Radius used for the boundary-distance query. |
ssa_polygons_within_radius | integer | SSA polygons within that radius. 0 on a genuinely isolated site. |
distance_to_nearest_ssa_m | number | For 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_mi | number | The same distance in statute miles. |
nearest_ssa_id | string | SSA_ID of the nearest aquifer (outside case). |
nearest_ssa_name | string | Name of the nearest aquifer. |
nearest_ssa_review_area_type | string | Review-area type of the nearest aquifer. |
nearest_ssa_epa_region | string | EPA region of the nearest aquifer. |
nearest_ssa_federal_register_citation | string | Designation citation of the nearest aquifer. |
distance_inside_from_boundary_m | number | For a point inside an SSA: how far in from the nearest edge. Small values mean a boundary revision could change the answer. |
near_ssa_boundary | boolean | true within nearBoundaryMi of a boundary, inside or out. null when proximity was not measured. |
near_boundary_threshold_mi | number | The threshold near_ssa_boundary was evaluated against. |
distance_precision_m | number | Stated accuracy of the distance fields (25 m). |
distance_basis | string | Audit trail: exactly how the distances were computed, including the generalization tolerance and projection. |
Provenance and per-source status
| Field | Type | Description |
|---|---|---|
ssa_layer_status | string | ok / unavailable / not_applicable / not_checked. When unavailable, every aquifer verdict on the row is null — never false. |
ssa_layer_error | string | Upstream error text when the layer was unavailable. |
proximity_status | string | ok / unavailable / not_requested / not_applicable / not_checked. |
proximity_error | string | Upstream or projection-guard error text when proximity was unavailable. |
layer_name | string | Name of the EPA layer actually queried, read live. |
layer_polygon_count | integer | Live polygon count, asserted in-band before any row was emitted (97 as of 2026-08-01). |
data_vintage | string | Edition of the EPA SSA layer behind the row. |
query_basis | string | The exact spatial query used, so a result is reproducible. |
source_url | string | The EPA FeatureServer layer used. |
disclaimer | string | Informational-use disclaimer. |
checked_at | string | UTC 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.
Related actors
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.