USGS Landslide Proximity Screener — Hazard by Coordinate
Pricing
from $5.50 / 1,000 results
USGS Landslide Proximity Screener — Hazard by Coordinate
Landslide proximity & hazard screener: per-coordinate point-in-polygon + nearest mapped landslide over the 680k-feature USGS US Landslide Inventory. Batch lat/lon; get in_mapped_landslide, count within radius, nearest type/distance & a hazard flag.
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
8 days ago
Last modified
Categories
Share
USGS Landslide Proximity Screener - Hazard by Coordinate
Batch landslide screening by coordinate. Give it a list of lat/lon sites and it returns, per site, whether the point falls inside a mapped landslide, the exact distance in metres to the nearest real landslide polygon edge, how many mapped landslides truly intersect your search radius, which source inventory and mapping confidence produced the hit, and a plain-language audit trail explaining the verdict - computed over the USGS US Landslide Inventory v3 (680,497 mapped landslide polygons + 310,774 point records, counts verified live).
One billable row per asset, even when the site is clear - a clear row is the answer you paid for.
This is a screening tool, not a determination. It screens an inventory of landslides that were observed and mapped. It is not a susceptibility or probability model. A site that comes back clear is not inventoried, which is not the same as not susceptible. Confirm with USGS maps and a licensed geotechnical engineer.
Who it is for
- Phase I ESA and environmental due-diligence firms screening a property list for geologic hazards before a site visit.
- P&C and specialty insurers flagging landslide exposure across a book of locations.
- Geotechnical and civil engineering firms deciding which candidate sites need a slope-stability study.
- Site-selection and development teams ranking parcels by real distance to historically mapped slides.
- CRE lenders and portfolio managers adding a fast landslide-inventory check to collateral screening.
What changed in v1.1 (2026-08-01)
Every existing field is preserved with its original meaning (append-only). What was added is honesty and exactness.
1. The centroid proxy was undercounting and overstating distance. v1.0 measured everything from each record's mapped Lat_N/Lon_W - a single representative point - so a large landslide whose centroid sits outside your circle was invisible even when the landslide itself overlapped the site. Measured live north of Colorado Geological Survey polygon ply165013 (39.2709, -107.7370, 1,000 m): the proxy reported 262 m and 7 landslides; the truth is 88.4 m and 11 landslides - distance overstated 3.0x, count short by 36%. At La Conchita the proxy reports 71 within 1 km against a true 74. v1.1 adds an exact measurement using true circular search (distance + units) and real polygon outlines, and labels which method produced each number in distance_method.
2. A failed source used to look like a clear site. The old row template initialised in_mapped_landslide: false, landslide_count_within_radius: 0 and landslide_hazard_flag: false, so any path that failed to overwrite them emitted a billable row asserting "not in a landslide, nothing nearby, no hazard" that had never been checked. Now every derived answer starts null, each of the five upstream sources reports its own <source>_status, and the verdict is null - never false - if any contributing source did not answer. null means not checked; false means checked and negative.
3. Large-radius reads were silently truncated. v1.0 capped at 4,000 records per layer with no signal. A 50 km screen at La Conchita really contains 7,000 polygons, so 3,000 were dropped and the published count was computed over an arbitrary 57% subset. v1.1 reads the service's own maxRecordCount at runtime, pages to completion, cross-checks every read against an exact returnCountOnly total, and nulls the count rather than publishing a subset if it ever comes up short.
4. The run now fails instead of billing for nothing. If every asset errors, the run fails and emits zero rows. The gate runs before pushData, not after.
5. 21 live drift assertions run before any billable row. Layer names, numbering, geometry types and field sets; feature counts inside measured bands; the closed Confidence vocabulary (an unknown code fails the run rather than being silently mapped down to a wrong label); a real positive canary and a real negative control; declared SR 4326 plus a coordinate-magnitude check. Any failure stops the run and bills nothing.
6. Data that was already being fetched and thrown away is now emitted. Inv_URL, Info_Sourc, Notes, Shape__Area and Shape__Length were retrieved on every request and discarded. Inv_URL in particular is the only way to judge the mapping scale and vintage of the inventory behind a hit - and these compilations vary enormously.
How it works
For each asset the actor runs five independent upstream queries and records the outcome of each:
- Point-in-polygon (authoritative, server-side, on the ungeneralized geometry) - drives
in_mapped_landslide. - Polygon envelope and 3. point envelope bounding-box reads - drive the original v1.0 centroid-proxy fields, unchanged.
- True-circle polygon search with real outlines - drives the exact distance and count. A radius ladder probes small circles first so the reported measurement is always made at fine precision (
geometric_tolerance_m) even on a 50 km screen. - True-circle point search - on the point layer
Lat_N/Lon_Wis the location, so that distance is exact by construction.
Every input geometry carries inSR=4326 and every response asks for outSR=4326. This matters: live-verified, the identical point query without inSR returns zero features at La Conchita - a false clear indistinguishable from a real one.
Example input
{"assets": [{ "lat": 34.3617, "lon": -119.4437, "label": "La Conchita, CA (inside a mapped rock slide)" },{ "lat": 39.2709, "lon": -107.7370, "label": "N edge of CO GS mega-complex ply165013" },{ "lat": 37.6872, "lon": -97.3301, "label": "Wichita, KS (genuine clear control)" }],"radiusMeters": 1000,"preciseGeometry": true,"maxAssets": 500}
Input fields
| Field | Type | Description |
|---|---|---|
assets | array | Sites to screen. Each item is { "lat": number, "lon": number, "label": string } in WGS84 decimal degrees. One billable row per asset. |
radiusMeters | integer | Search radius, 100-50000 m (default 1000). Drives both the original proxy fields and the exact geometric search. |
preciseGeometry | boolean | Default true. Measures true distance to real polygon edges. Turn off only for very large batches. |
maxAssets | integer | Safety cap on assets per run (default 500). |
Output fields
Every field the actor declares is listed below.
Site identity
| Field | Type | Description |
|---|---|---|
asset_label | string | null |
asset_lat | number | null |
asset_lon | number | null |
radius_meters | integer | null |
checked_at | string | null |
source_url | string | null |
screen_basis | string | null |
disclaimer | string | null |
error | string | null |
Verdict and audit trail
| Field | Type | Description |
|---|---|---|
risk_level | string | null |
risk_basis | string | null |
landslide_hazard_flag | boolean | null |
in_mapped_landslide | boolean | null |
Exact geometric measurement
| Field | Type | Description |
|---|---|---|
landslide_count_within_radius_geometric | integer | null |
polygon_count_within_radius_geometric | integer | null |
point_count_within_radius_geometric | integer | null |
nearest_distance_m_geometric | number | null |
nearest_distance_km_geometric | number | null |
nearest_geometric_feature_type | string | null |
nearest_geometric_usgs_id | string | null |
nearest_geometric_ls_type | string | null |
nearest_geometric_confidence | number | null |
nearest_geometric_confidence_label | string | null |
nearest_geometric_inventory | string | null |
nearest_geometric_inventory_url | string | null |
distance_method | string | null |
geometric_tolerance_m | number | null |
geometric_geometry_truncated | boolean | null |
Containing landslide (point-in-polygon detail)
| Field | Type | Description |
|---|---|---|
containing_landslide_count | integer | null |
containing_usgs_id | string | null |
containing_ls_type | string | null |
containing_confidence | number | null |
containing_confidence_label | string | null |
containing_inventory | string | null |
containing_inventory_url | string | null |
containing_info_source | string | null |
containing_notes | string | null |
containing_date_min | string | null |
containing_date_max | string | null |
containing_fatalities | number | null |
containing_area_sq_m | number | null |
containing_area_acres | number | null |
distance_to_containing_edge_m | number | null |
Original centroid-proxy fields (v1.0, unchanged)
| Field | Type | Description |
|---|---|---|
landslide_count_within_radius | integer | null |
nearest_landslide_type | string | null |
nearest_confidence | number | null |
nearest_confidence_label | string | null |
nearest_distance_km | number | null |
nearest_usgs_id | string | null |
nearest_feature_kind | string | null |
nearest_inventory | string | null |
nearest_inventory_url | string | null |
nearest_info_source | string | null |
nearest_notes | string | null |
nearest_date_min | string | null |
nearest_date_max | string | null |
nearest_fatalities | number | null |
nearest_area_sq_m | number | null |
Within-radius rollups
| Field | Type | Description |
|---|---|---|
max_confidence_within_radius | number | null |
max_confidence_label_within_radius | string | null |
high_confidence_count_within_radius | integer | null |
landslide_types_within_radius | string | null |
distinct_landslide_type_count | integer | null |
inventories_within_radius | string | null |
distinct_inventory_count | integer | null |
fatal_landslide_count_within_radius | integer | null |
total_fatalities_within_radius | number | null |
oldest_date_min_within_radius | string | null |
newest_date_max_within_radius | string | null |
total_mapped_area_sq_m_within_radius | number | null |
Per-source outcome (null means NOT CHECKED)
| Field | Type | Description |
|---|---|---|
pip_status | string | null |
poly_envelope_status | string | null |
point_envelope_status | string | null |
poly_geometric_status | string | null |
point_geometric_status | string | null |
sources_attempted | integer | null |
sources_ok | integer | null |
sources_failed | integer | null |
sources_failed_names | string | null |
partial_result | boolean | null |
Coverage, truncation and upstream health
| Field | Type | Description |
|---|---|---|
service_max_record_count | integer | null |
poly_records_in_envelope | integer | null |
poly_records_fetched | integer | null |
poly_records_truncated | boolean | null |
point_records_in_envelope | integer | null |
point_records_fetched | integer | null |
point_records_truncated | boolean | null |
drift_checks_passed | integer | null |
drift_checks_total | integer | null |
Reading the results correctly
nullis notfalse. Anullverdict means a source did not answer, so nothing was verified. Afalsemeans the check ran and the answer was negative. Checkpartial_resultandsources_failed_nameson any row before acting on it.- Prefer the
_geometricfields.landslide_count_within_radiusandnearest_distance_kmare the original v1.0 centroid proxies and are kept for pipeline compatibility;landslide_count_within_radius_geometricandnearest_distance_m_geometricare the exact measurements. - A clear row means NOT INVENTORIED. Inventory coverage varies enormously by state and by source. Colorado and Utah have dense statewide compilations; other states have almost none.
distinct_inventory_countandnearest_geometric_inventory_urltell you which compilation answered. LS_Typeis blank on 189,640 of 680,497 polygons upstream (27.9%), so a null landslide type is normal and not a defect.Fatalitiesis non-zero on only 7 of 680,497 polygons, sofatal_landslide_count_within_radius: 0is a verified answer, not a gap.Date_Minis populated on only 65,168 of 680,497 polygons (9.6%) - most inventory polygons have no date at all.containing_area_sq_mis latitude-corrected. The rawShape__Areais in Web Mercator square metres and is inflated by1/cos^2(latitude); at La Conchita 52,172 raw becomes 35,551 real square metres.
Inputs that populate the sparser columns
A live audit of the FULL prefill dataset (2026-08-01, healthy run, the actor own prefill) found
7 of the 89 declared columns null. Two of those are good news rather than gaps:
sources_failed_names and error are null precisely because nothing failed. The other
five are the date columns, which USGS leaves blank on about 90% of inventory records. A verified
input that populates all five:
{ "assets": [ { "lat": 58.77879, "lon": -136.88841, "label": "Glacier Bay AK 2016 rock avalanche" } ], "radiusMeters": 1000 }
That is USGS AK Glacier Bay polygon ply20, dated 2016/06/27 to 2016/07/06. The mapping is
pinned by an offline fixture so it cannot silently rot.
Use as an MCP tool
This actor is available to AI agents through mcp.apify.com. Every input and output field carries a description, so an agent can call it directly and reason about the result. It composes well as one step in a site-screening chain: pass the same coordinates to the EPA contaminated-site screener, the USACE levee screener and the FEMA NRI county profile, then join on asset_label.
Typical agent prompt: "Screen these five parcels for mapped landslide hazard at 500 m and tell me which ones sit inside a mapped landslide, with the source inventory for each."
Pricing
Pay per result: $10 per 1,000 result rows ($0.01 per screened site). One row per asset, whether the site is flagged or clear. Graduated discounts apply on paid Apify plans (Bronze 20% / Silver 30% / Gold 45% / Platinum 60% / Diamond 70%).
A run that cannot verify the upstream is healthy, or in which every asset failed, fails and bills nothing.
FAQ
Is this a landslide susceptibility map?
No. It screens the USGS inventory of landslides that have been observed and mapped. A susceptibility model estimates where landslides could occur; this tells you where they have been mapped. screen_basis records this on every row.
Why do the proxy and geometric numbers disagree? Because they measure different things. The proxy measures to a record's single mapped representative point; the geometric measurement uses the real polygon outline. On large landslide complexes the difference is large - 262 m versus 88 m in the live example above.
How precise is nearest_distance_m_geometric?
No more precise than geometric_tolerance_m, which is reported on every row (typically 5.6 m). Outlines are generalized so payloads stay small; the radius ladder makes sure the measurement that is actually reported is taken on a small, finely-generalized circle.
Why did my run fail with "Upstream drift detected"?
A live assertion about the USGS service failed - a renamed layer, a collapsed feature count, an unknown Confidence code, or a spatial filter that stopped filtering. The alternative would have been to bill you for a confident wrong answer. The message names the exact check.
What does distance_to_containing_edge_m mean?
When a site is inside a mapped landslide, this is how far it is from the boundary - i.e. how deep inside the mapped feature it sits. A site 11 m inside the edge is a different engineering problem from one 400 m inside.
Can I screen thousands of sites?
Yes, up to maxAssets 5,000 per run. For very large batches set preciseGeometry: false to fall back to the proxy-only path with fewer requests - the row will say so via distance_method: "centroid_proxy_only" and the _geometric fields will be null rather than guessed.
Related actors
Same coordinate in, same asset_label out - these join cleanly into one due-diligence sheet:
- EPA Contaminated Site Screener - Superfund, RCRA, USTs and enforcement history.
- USACE Levee Flood Risk Screener - leveed areas and warning systems.
- Karst & Sinkhole Risk Screener - the other subsidence peril.
- USGS Seismic Design Screener - ASCE 7 seismic design parameters.
- FEMA NRI County Risk Profile - all 18 perils at county and tract scale.
- Site Due Diligence Bundle - 20 layers including this one, in a single call.
Data source
USGS US Landslide Inventory v3, served keyless on ArcGIS Online:
services.arcgis.com/v01gqwM5QqNysAAi - US_Landslide_poly_v2/FeatureServer/12 (US_Landslide_v3poly, 680,497 features) and US_Landslide_point_v2/FeatureServer/11 (US_Landslide_v3point, 310,774 features). Counts verified live 2026-08-01 and asserted at runtime.