PAD-US Protected Lands Screener — Owner & GAP Status
Pricing
from $4.40 / 1,000 results
PAD-US Protected Lands Screener — Owner & GAP Status
Protected lands + public land ownership screener. Point-in-polygon check of coordinates against USGS PAD-US: returns owner/manager agency, Federal/State/Local/Private type, designation, GAP status and public access per asset.
Pricing
from $4.40 / 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
Protected lands + public land ownership screener. Give it a list of coordinates and it does a server-side point-in-polygon check against the USGS PAD-US (Protected Areas Database of the United States — 655,335 protected-area polygons, release 4.1) and returns, for each point: whether it sits on protected land, the owner/manager agency, the owner and manager type (Federal / State / Local / Private / NGO / Tribal), the protection mechanism (Fee, Easement, Designation, Proclamation boundary), the designation (National Park, National Forest, Wilderness Area, State Park, Conservation Easement, and 60+ more), the GAP status code (1–4 biodiversity-protection level), the IUCN category, public access (Open / Restricted / Closed), and — when the parcel carries a conservation easement — the named easement holder. All PAD-US coded values are translated from raw codes to human-readable labels.
One clean, billable row per asset — even when the point is on plain private land (a useful "clear" result).
What changed in v1.1 (2026-08-01 validation pass)
v1.0 was screening a superseded PAD-US release. It queried the USGS Manager_Name
service, whose layer 0 is literally named "Protected Areas Database of the United
States (PAD-US) v3.0" and whose copyright reads "Gap Analysis Project (GAP), 2022":
439,860 polygons, last edited 2024-03-20. USGS publishes Manager_Name_PADUS
(PADUS4_1ManagerName): 655,335 polygons, last edited 2026-04-22 — 215,475 more
records, 49% more than v1.0 screened.
Measured live on 2026-08-01, point-in-polygon at 200 PAD-US 4.1 polygon centroids:
| Outcome | Count |
|---|---|
| Protected in both releases | 152 |
| Protected in 4.1 only — reported CLEAR by v1.0 | 32 (17.4% of the 184 comparable points) |
| Protected in 3.0 only | 0 |
| Centroid outside its own concave polygon in both | 16 |
The misses skew hard toward exactly the encumbrances a developer, lender or title buyer
needs to see: county Forest Conservation Act easements in Maryland, NC Division of
Mitigation Services conservation easements (GAP 2), CREP easements, municipal open
space and local parks. One concrete example — 39.10372, -76.65769: PAD-US 4.1
records two easements held by Anne Arundel County, MD; the v1.0 layer returns zero
and the actor billed a row reading on_protected_land: false.
Also in v1.1:
- A live drift gate runs before a single billable row exists. It parses the PAD-US
release out of the layer name on every run and fails rather than answer from
anything below 4.1; asserts the polygon count sits in a measured band whose floor
(500,000) is deliberately above the superseded release's 439,860; asserts all
ten coded-value domains — an unknown code fails the run rather than being passed
through by
decode()as if it were a human label; and runs four spatial canaries, including the Anne Arundel easement point (which the old source reports as clear) and a mid-Pacific negative control that must return nothing. Every measured value is logged on every run. A newer PAD-US release passes and is reported. nullnow means not checked. v1.0 emittedoverlapping_unit_count: 0on rows where the query had failed — a factual claim it never verified.on_protected_land,is_federal_land,is_conservation_protected,is_easementandoverlapping_unit_countare allnullwhenpadus_statusis notok.- Pagination and a truncation guard. v1.0 sent no
resultRecordCountorresultOffsetand never readexceededTransferLimit. Page size is now read live from the service's ownmaxRecordCount, and the run fails rather than report an overlapping-unit count from a truncated set. - Billing honesty. Rows are buffered and the gate runs before
pushData; a run in which nothing was verified bills nothing. - Nineteen columns recovered.
owner_typeandcategorywere computed by v1.0 and discarded before they reached the row.IUCN_Cat,EsmtHldr,EHoldTyp,Date_Est,Src_Date,Agg_Src,WDPA_Cd,Loc_Ds,Loc_Own,Loc_Mangwere fetched byoutFields=*on every single request and never read. - Primary-unit ranking fixed.
DESIG_RANKexisted in v1.0 and was never referenced; the live ranker substring-matched the decoded label, so "State Conservation Area" and "Local Conservation Area" both ranked level with a federal National Conservation Area. Ranking is now on the raw PAD-US code. This only affects which overlapping unit is promoted to the flat row at equal GAP status — every unit was and still is returned inoverlapping_units.
No output field was removed or renamed, and the price is unchanged.
v1.2 (2026-08-04) — a rate limit is not a source change
The v1.1 drift gate could not tell "the service did not answer" from "the service
answered, and the answer proves the source changed". ArcGIS Online replies to a
rate-limited request with HTTP 200 and an embedded error, so the HTTP-level retry
never saw it, and one such reply on one canary failed the run with
USGS PAD-US upstream drift detected — three minutes before an identical run passed.
Nothing had drifted.
v1.2 keeps every v1.1 assertion and adds:
- Two separate outcomes. Measured and wrong (wrong release, count off the band, unknown coded value, a canary that stopped hitting, a negative control that started) is still reported as drift. Could not measure (rate limit, timeout, gateway error, empty body) is reported as an upstream availability problem, with its own message and its own code path. Both still refuse to emit a land-status answer and both bill nothing — but they are different findings with different remedies.
- Transient upstream errors are retried, with backoff, including the HTTP 200 +
embedded-error shape. A structural error (e.g.
{"code":400,"message":"Invalid URL"}, the signature of a retired or renamed ArcGIS service) is not retried and is still reported as drift immediately. - The gate paces itself. Its 15 checks are spaced so the burst does not trip the rate limiter it was tripping.
- A blocked check records
null, never0. v1.1's negative control readfeatureswithout checkingerror, so an upstream failure returned zero features and the control silently passed — "could not measure" recorded as "measured and correct". A failed domain query was likewise reported as "upstream returned no distinct values at all", a measurement that never happened.
The gate is not weaker: the PAD-US 3.0 layer still fails the run on release identity and on the count floor, including while a canary is simultaneously rate-limited, and that is proven by fault injection in the offline suite.
Who it's for
- Renewable & mineral siting teams — screen solar/wind/transmission/mining coordinates for federal land, wilderness, refuges and conservation status before scoping a project.
- Land acquisition, brokers & title — flag whether a parcel centroid is public land, who owns/manages it, whether public access is restricted or closed, and whether a conservation easement encumbers it and who holds it.
- ESG / environmental consultants — Phase-I and biodiversity due-diligence: identify GAP 1–2 conservation lands and the responsible agency near a site.
- GIS & data teams — batch-enrich any address/parcel list with authoritative land-ownership and protected-status attributes without hosting the 655k-polygon dataset yourself.
Example input
{"assets": [{ "lat": 44.4605, "lon": -110.8281, "label": "Old Faithful, Yellowstone NP" },{ "lat": 32.7791, "lon": -96.8000, "label": "Downtown Dallas TX" }],"maxAssets": 500}
The first point returns on_protected_land: true, manager_agency: "National Park Service", manager_type: "Federal", owner_type: "Federal", category: "Fee", designation_type: "National Park", gap_status_code: "1", iucn_category: "II", public_access: "Open Access", unit_name: "Yellowstone National Park". The second returns on_protected_land: false (private/urban land).
An input that exercises the easement path, live-verified:
{ "assets": [{ "lat": 39.10372, "lon": -76.65769, "label": "Anne Arundel County, MD parcel" }] }
returns is_easement: true and easement_holder: "Anne Arundel County, MD" — and returned on_protected_land: false under v1.0.
Output fields — all 41
| Field | Description |
|---|---|
asset_label | Your label for the point, echoed back |
asset_lat / asset_lon | Screened coordinate (WGS84) |
on_protected_land | true inside any PAD-US polygon, false checked and negative, null not checked |
unit_name | Name of the primary protected-area unit |
manager_agency | Managing agency of the primary unit, decoded |
manager_type | Federal / State / Local Government / Private / NGO / American Indian Lands / … |
owner_name | Owning agency of the primary unit, decoded |
owner_type | Owner type — frequently differs from manager_type (land owned by one level of government and managed by another) |
category | Protection mechanism: Fee (ownership), Easement (an encumbrance on someone else's land), Designation, Marine Area, Proclamation boundary, Other, Unknown |
designation_type | Decoded designation (National Park, Wilderness Area, Conservation Easement, …) |
designation_code | Raw PAD-US Des_Tp code — the stable machine key, and what units are ranked on |
gap_status_code / gap_status_label | GAP 1–4 and its full label. 1–2 = managed for biodiversity |
iucn_category | IUCN management category (Ia, Ib, II, III, IV, V, VI, Other Conservation Area, Unassigned, N/R) |
public_access | Open Access / Restricted Access / Closed / Unknown |
acres | GIS acres of the primary unit |
state_name | State of the primary unit, decoded |
is_federal_land | True if any overlapping unit is federally owned or managed |
is_conservation_protected | True if any overlapping unit is GAP 1 or 2 |
is_easement | True if any overlapping unit is an Easement — a recorded encumbrance, not public ownership |
easement_holder | Named holder of the easement, taken from whichever overlapping unit carries one (the encumbrance is rarely on the highest-GAP unit) |
easement_holder_type | Holder type, decoded |
date_established | Year the primary unit was established, as PAD-US publishes it (sparse upstream) |
source_date | Date of the source dataset PAD-US aggregated the polygon from |
aggregator_source | The upstream dataset PAD-US compiled it from — your audit trail back to the managing agency |
wdpa_code | World Database on Protected Areas id, when present (upstream 0 is an absence sentinel and is emitted as null) |
local_designation / local_owner / local_manager | The manager's own unstandardised free-text strings |
overlapping_unit_count | How many PAD-US units contain the point. null when the query did not answer |
overlapping_units | Every containing unit, each with all of the above |
padus_status | ok or unavailable — the per-source outcome for this point |
padus_error | Upstream error when padus_status is unavailable; null on a healthy run |
padus_version | The PAD-US release this answer came from, parsed live (e.g. 4.1) |
padus_layer_name | The exact USGS layer queried, read live |
data_last_updated | ISO timestamp of USGS's last edit to the layer, read live |
error | Invalid coordinate or failed query; null on a healthy row |
disclaimer / source_url / checked_at | Advisory notice, exact layer queried, run timestamp |
A single point can fall inside several overlapping PAD-US units (e.g. a fee tract and a wilderness designation and a proclamation boundary). The flat row reports the primary unit (strongest biodiversity mandate, then designation prominence by raw code, then largest acreage); every overlapping unit is also listed in overlapping_units, and is_federal_land / is_conservation_protected / is_easement reflect any overlapping unit.
Inputs that populate the conditional columns
padus_error and error are null on a healthy run by design — that is good news, not a dead column; both paths are pinned by offline fixtures. easement_holder / easement_holder_type populate on an easement parcel (see the Anne Arundel example above) and are correctly null on a National Park. date_established is sparse upstream and is blank on many easement and local-government records.
Use as an MCP tool
This actor is callable by AI agents (Claude, Cursor, etc.) via mcp.apify.com. Its typed input (assets[]{lat,lon,label}) and field-level output descriptions make it a clean, chainable "is this coordinate on protected/public land, who manages it, and is it encumbered?" tool for siting, land-diligence and geospatial agents. Agents should check padus_status before acting on a false: this actor deliberately returns null rather than a confident negative when the query did not answer.
FAQ
Is a point on public land / a national park? Yes — pass its coordinate and read on_protected_land, unit_name, manager_agency and manager_type.
Who owns or manages this land? owner_name + owner_type and manager_agency + manager_type. These genuinely differ: an easement parcel is typically privately owned (owner_type: "Private") and locally managed.
Is the parcel encumbered by a conservation easement? is_easement and easement_holder. A PAD-US category of Easement means someone else holds a recorded interest in land you may otherwise be buying outright.
What is the GAP status of a coordinate? gap_status_code (1–4) and gap_status_label. GAP 1–2 = managed for biodiversity; is_conservation_protected is a one-glance boolean for that.
Is this federal land? is_federal_land is true if any overlapping unit is federally owned or managed.
What does null mean? Not checked. false means checked and negative. A failed lookup is never reported as unprotected land.
How current / authoritative is it? Every row carries padus_version and data_last_updated read live from USGS. This is an informational PAD-US intersection screen, not an official land-status determination. PAD-US is a compiled national inventory maintained by the USGS Gap Analysis Project and can lag ground truth. The authoritative source is the managing agency (NPS, USFS, BLM, USFWS, or the state/local/private manager). Confirm ownership, access and designation with the managing agency and a title/survey professional before any siting, acquisition, permitting, or transaction decision.
How is pricing calculated? $8 per 1,000 result rows — one row per screened asset, hit or clear. Graduated discounts apply on paid Apify plans. A run in which nothing could be verified bills nothing.
Source
USGS PAD-US Manager_Name_PADUS ArcGIS FeatureServer, layer 0 (PADUS4_1ManagerName):
https://services.arcgis.com/v01gqwM5QqNysAAi/arcgis/rest/services/Manager_Name_PADUS/FeatureServer/0
Related actors
Pairs with the rest of the site-diligence shelf: FWS Critical Habitat Screener (ESA Section 7), Tribal Land Jurisdiction Screener, USACE Levee Flood Risk Screener, BLM Mining Claims, and the all-in-one Site Due Diligence Bundle.