USGS Landslide Proximity Screener — Hazard by Coordinate avatar

USGS Landslide Proximity Screener — Hazard by Coordinate

Pricing

from $5.50 / 1,000 results

Go to Apify Store
USGS Landslide Proximity Screener — Hazard by Coordinate

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

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

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:

  1. Point-in-polygon (authoritative, server-side, on the ungeneralized geometry) - drives in_mapped_landslide.
  2. Polygon envelope and 3. point envelope bounding-box reads - drive the original v1.0 centroid-proxy fields, unchanged.
  3. 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.
  4. True-circle point search - on the point layer Lat_N/Lon_W is 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

FieldTypeDescription
assetsarraySites to screen. Each item is { "lat": number, "lon": number, "label": string } in WGS84 decimal degrees. One billable row per asset.
radiusMetersintegerSearch radius, 100-50000 m (default 1000). Drives both the original proxy fields and the exact geometric search.
preciseGeometrybooleanDefault true. Measures true distance to real polygon edges. Turn off only for very large batches.
maxAssetsintegerSafety cap on assets per run (default 500).

Output fields

Every field the actor declares is listed below.

Site identity

FieldTypeDescription
asset_labelstringnull
asset_latnumbernull
asset_lonnumbernull
radius_metersintegernull
checked_atstringnull
source_urlstringnull
screen_basisstringnull
disclaimerstringnull
errorstringnull

Verdict and audit trail

FieldTypeDescription
risk_levelstringnull
risk_basisstringnull
landslide_hazard_flagbooleannull
in_mapped_landslidebooleannull

Exact geometric measurement

FieldTypeDescription
landslide_count_within_radius_geometricintegernull
polygon_count_within_radius_geometricintegernull
point_count_within_radius_geometricintegernull
nearest_distance_m_geometricnumbernull
nearest_distance_km_geometricnumbernull
nearest_geometric_feature_typestringnull
nearest_geometric_usgs_idstringnull
nearest_geometric_ls_typestringnull
nearest_geometric_confidencenumbernull
nearest_geometric_confidence_labelstringnull
nearest_geometric_inventorystringnull
nearest_geometric_inventory_urlstringnull
distance_methodstringnull
geometric_tolerance_mnumbernull
geometric_geometry_truncatedbooleannull

Containing landslide (point-in-polygon detail)

FieldTypeDescription
containing_landslide_countintegernull
containing_usgs_idstringnull
containing_ls_typestringnull
containing_confidencenumbernull
containing_confidence_labelstringnull
containing_inventorystringnull
containing_inventory_urlstringnull
containing_info_sourcestringnull
containing_notesstringnull
containing_date_minstringnull
containing_date_maxstringnull
containing_fatalitiesnumbernull
containing_area_sq_mnumbernull
containing_area_acresnumbernull
distance_to_containing_edge_mnumbernull

Original centroid-proxy fields (v1.0, unchanged)

FieldTypeDescription
landslide_count_within_radiusintegernull
nearest_landslide_typestringnull
nearest_confidencenumbernull
nearest_confidence_labelstringnull
nearest_distance_kmnumbernull
nearest_usgs_idstringnull
nearest_feature_kindstringnull
nearest_inventorystringnull
nearest_inventory_urlstringnull
nearest_info_sourcestringnull
nearest_notesstringnull
nearest_date_minstringnull
nearest_date_maxstringnull
nearest_fatalitiesnumbernull
nearest_area_sq_mnumbernull

Within-radius rollups

FieldTypeDescription
max_confidence_within_radiusnumbernull
max_confidence_label_within_radiusstringnull
high_confidence_count_within_radiusintegernull
landslide_types_within_radiusstringnull
distinct_landslide_type_countintegernull
inventories_within_radiusstringnull
distinct_inventory_countintegernull
fatal_landslide_count_within_radiusintegernull
total_fatalities_within_radiusnumbernull
oldest_date_min_within_radiusstringnull
newest_date_max_within_radiusstringnull
total_mapped_area_sq_m_within_radiusnumbernull

Per-source outcome (null means NOT CHECKED)

FieldTypeDescription
pip_statusstringnull
poly_envelope_statusstringnull
point_envelope_statusstringnull
poly_geometric_statusstringnull
point_geometric_statusstringnull
sources_attemptedintegernull
sources_okintegernull
sources_failedintegernull
sources_failed_namesstringnull
partial_resultbooleannull

Coverage, truncation and upstream health

FieldTypeDescription
service_max_record_countintegernull
poly_records_in_envelopeintegernull
poly_records_fetchedintegernull
poly_records_truncatedbooleannull
point_records_in_envelopeintegernull
point_records_fetchedintegernull
point_records_truncatedbooleannull
drift_checks_passedintegernull
drift_checks_totalintegernull

Reading the results correctly

  • null is not false. A null verdict means a source did not answer, so nothing was verified. A false means the check ran and the answer was negative. Check partial_result and sources_failed_names on any row before acting on it.
  • Prefer the _geometric fields. landslide_count_within_radius and nearest_distance_km are the original v1.0 centroid proxies and are kept for pipeline compatibility; landslide_count_within_radius_geometric and nearest_distance_m_geometric are 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_count and nearest_geometric_inventory_url tell you which compilation answered.
  • LS_Type is blank on 189,640 of 680,497 polygons upstream (27.9%), so a null landslide type is normal and not a defect.
  • Fatalities is non-zero on only 7 of 680,497 polygons, so fatal_landslide_count_within_radius: 0 is a verified answer, not a gap.
  • Date_Min is populated on only 65,168 of 680,497 polygons (9.6%) - most inventory polygons have no date at all.
  • containing_area_sq_m is latitude-corrected. The raw Shape__Area is in Web Mercator square metres and is inflated by 1/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.

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.