# Tribal Land Jurisdiction Screener — Reservation & THPO Check (`malonestar/tribal-land-jurisdiction-screener`) Actor

Tribal land jurisdiction API. Batch point-in-polygon screen of coordinates against American Indian reservations, trust land, Hawaiian Home Lands and Alaska Native / tribal statistical areas. Flags Section 106 THPO consultation, civil/regulatory jurisdiction and trust-land lending/title.

- **URL**: https://apify.com/malonestar/tribal-land-jurisdiction-screener.md
- **Developed by:** [Kyle Maloney](https://apify.com/malonestar) (community)
- **Categories:** Agents, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.40 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Tribal Land Jurisdiction Screener — Reservation, Trust Land & THPO Check

**Tribal land jurisdiction API.** Give it a batch of coordinates and it runs a
server-side point-in-polygon check against the U.S. Census Bureau's American
Indian, Alaska Native, and Native Hawaiian Areas (AIANNH) boundaries and returns,
per point, whether it falls on **tribal land** — plus the area name and type, the
land area, and ready-to-use flags for **Section 106 THPO consultation**,
**civil/regulatory jurisdiction**, and **trust-land lending/title** review.

The transform is the value: raw Census/USGS layers give you a polygon dump. This
actor normalizes the feature-type codes, separates *legal reservation/trust land*
from *Census statistical areas*, and emits one clean, chainable row per asset.

### Who it's for
- **Section 106 / cultural-resource consultants** — flag when a project site sits
  on tribal land so review routes through the **Tribal Historic Preservation
  Office (THPO)** instead of the SHPO.
- **GovCon, energy & infrastructure siting** — screen candidate sites (towers,
  pipelines, solar/wind, ROW) for tribal jurisdiction before diligence.
- **Gaming / land-into-trust / economic development** — confirm reservation or
  off-reservation trust status.
- **Lenders, title & real-estate diligence** — trust and restricted-fee land has
  distinct foreclosure, mortgage, leasehold and title rules (BIA-approved leases,
  HUD Section 184).
- **AI agents** — a clean geospatial tool for "is this coordinate on tribal land,
  and what regimes apply?"

### Example input
```json
{
  "assets": [
    { "lat": 36.07, "lon": -109.55, "label": "Navajo Nation, AZ" },
    { "lat": 32.7791, "lon": -96.8, "label": "Downtown Dallas TX" }
  ],
  "maxAssets": 500
}
````

#### Verified sample run

A real 6-site run (2026-07-21) returned 6 rows and 0 errors. Every hit came back as
area type **"Federal American Indian Reservation / Off-Reservation Trust Land"** with
`section106_thpo_consultation: true`:

| Asset | On tribal land | Area name | THPO consultation |
|---|---|---|---|
| Navajo Nation, AZ | true | Navajo Nation | true |
| Pine Ridge Reservation, SD | true | Pine Ridge | true |
| Wind River Reservation, WY | true | Wind River | true |
| Gila River Indian Community, AZ | true | Gila River | true |
| Osage OTSA, OK | true | Osage | true |
| Downtown Dallas, TX (control) | false | — | false |

The control point returned a clean, billable "no tribal jurisdiction" row rather than an
error. This exact run is published as the actor's example task, so you can open it and
re-run it as-is.

### Output fields (one row per asset)

| Field | Meaning |
|---|---|
| `asset_label`, `asset_lat`, `asset_lon` | The screened point, echoed back |
| `on_tribal_land` | True if the point is inside any AIANNH area |
| `area_name` / `area_full_name` | Area name (e.g. Navajo Nation) |
| `area_type_code` / `area_type` | MTFCC code + decoded type (reservation/trust, Hawaiian Home Land, ANVSA, OTSA, SDTSA, TDSA, joint-use) |
| `land_tenure_class` | Reservation / Trust land vs Statistical area vs Alaska Native Corporation |
| `reservation_authority` | Federal or State reservation |
| `geoid`, `aiannh_code`, `aiannh_class_code` | Census identifiers |
| `land_area_sqm` / `land_area_sqmi` | Land area of the area |
| `water_area_sqm` | Water area of the area |
| `centroid_lat` / `centroid_lon` | Centroid of the matched area |
| `is_reservation_or_trust_land` | Legal Indian country (federal reservation / trust / HHL) |
| `is_statistical_area` | Census tabulation geography only — **not** a legal jurisdiction boundary |
| `section106_thpo_consultation` | Any tribal hit → THPO cultural review may apply |
| `civil_regulatory_jurisdiction` | Reservation/trust → distinct tax/permit/gaming/land-into-trust regimes |
| `lending_title_review` | Reservation/trust → distinct foreclosure/mortgage/title rules |
| `overlapping_area_count` | How many AIANNH areas the point falls in |
| `overlapping_areas` | All areas the point falls in |
| `source`, `source_url`, `checked_at`, `disclaimer` | Provenance |

### Data sources (keyless, authoritative)

- **Primary:** U.S. Census Bureau TIGERweb **AIANNHA** MapServer (layer 47) —
  federal & state American Indian reservations, off-reservation trust land,
  Hawaiian Home Lands, and Alaska Native / tribal statistical areas (2025 vintage).
- **Fallback / cross-check:** USGS The National Map **govunits** "Native American
  Area" layer — used automatically if the Census service is unavailable, so a
  source outage still returns a graceful result.

### Use as an MCP tool

This actor is a clean, chainable tool for AI agents (Claude, Cursor, etc.) via
[mcp.apify.com](https://mcp.apify.com). Field-level output descriptions let an
agent call it as a "tribal-land jurisdiction" lookup and pass results downstream
(e.g. into a §106 consultation or siting workflow).

### FAQ

**Is this a legal land-status or jurisdiction determination?** No. It is an
informational intersection screen. Census *statistical areas* (ANVSA/OTSA/SDTSA/
TDSA) approximate tribal areas for tabulation and are **not** legal jurisdiction
boundaries. Always confirm Indian-country status, jurisdiction and title with the
affected Tribe, the BIA, the THPO, and legal counsel.

**How do I check if a coordinate is on an Indian reservation?** Pass it in
`assets` and read `is_reservation_or_trust_land` and `area_type`.

**Does it cover Alaska and Hawaii?** Yes — Alaska Native Village Statistical Areas
and Hawaiian Home Lands are included. (Alaska Native Regional Corporations are a
separate Census layer and are decoded if present.)

**How is it billed?** One result row per screened asset (Pay-Per-Event). Empty or
invalid inputs cost nothing beyond the tiny actor start.

**What coordinate system?** WGS84 decimal degrees (`lat`, `lon`).

### Related screeners

This actor is part of a family of single-coordinate federal due-diligence screeners that
all take the same `assets[]{lat,lon,label}` input shape, so you can run several over the
same site list and join the results per site.

- [Site Due Diligence Bundle](https://apify.com/malonestar/site-due-diligence-bundle) — 15 federal overlays for one coordinate in a single call.
- [National Register of Historic Places Screener](https://apify.com/malonestar/nrhp-historic-place-screener) — the other half of the Section 106 question: listed historic properties and districts.
- [Wild & Scenic River Proximity Screener](https://apify.com/malonestar/wild-scenic-river-proximity-screener) — designated Wild & Scenic River corridors and Section 7 exposure.
- [BLM Sage-Grouse Siting Screener](https://apify.com/malonestar/blm-sage-grouse-siting-screener) — greater sage-grouse priority and general habitat management areas.
- [Section 368 Energy Corridor Screener](https://apify.com/malonestar/energy-corridor-368-screener) — designated Section 368 west-wide energy corridors.
- [FEMA National Risk Index County Risk Profile](https://apify.com/malonestar/fema-nri-county-risk-profile) — FEMA National Risk Index perils for the site's county and tract.

# Actor input Schema

## `assets` (type: `array`):

List of points to screen against American Indian reservations, off-reservation trust land, Hawaiian Home Lands and Alaska Native / tribal statistical areas (U.S. Census AIANNH). Each item is an object with numeric lat and lon (WGS84 decimal degrees) and an optional label. One billable result row is returned per asset. Example: \[{"lat":36.07,"lon":-109.55,"label":"Navajo Nation, AZ"}].

## `maxAssets` (type: `integer`):

Maximum number of assets to screen from the assets list (safety cap). Extra assets beyond this are ignored.

## Actor input object example

```json
{
  "assets": [
    {
      "lat": 36.07,
      "lon": -109.55,
      "label": "Navajo Nation, AZ (on reservation/trust land)"
    },
    {
      "lat": 32.7791,
      "lon": -96.8,
      "label": "Downtown Dallas TX (non-tribal control)"
    }
  ],
  "maxAssets": 500
}
```

# Actor output Schema

## `results` (type: `string`):

The default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "assets": [
        {
            "lat": 36.07,
            "lon": -109.55,
            "label": "Navajo Nation, AZ (on reservation/trust land)"
        },
        {
            "lat": 32.7791,
            "lon": -96.8,
            "label": "Downtown Dallas TX (non-tribal control)"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("malonestar/tribal-land-jurisdiction-screener").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "assets": [
        {
            "lat": 36.07,
            "lon": -109.55,
            "label": "Navajo Nation, AZ (on reservation/trust land)",
        },
        {
            "lat": 32.7791,
            "lon": -96.8,
            "label": "Downtown Dallas TX (non-tribal control)",
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("malonestar/tribal-land-jurisdiction-screener").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "assets": [
    {
      "lat": 36.07,
      "lon": -109.55,
      "label": "Navajo Nation, AZ (on reservation/trust land)"
    },
    {
      "lat": 32.7791,
      "lon": -96.8,
      "label": "Downtown Dallas TX (non-tribal control)"
    }
  ]
}' |
apify call malonestar/tribal-land-jurisdiction-screener --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=malonestar/tribal-land-jurisdiction-screener",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Tribal Land Jurisdiction Screener — Reservation & THPO Check",
        "description": "Tribal land jurisdiction API. Batch point-in-polygon screen of coordinates against American Indian reservations, trust land, Hawaiian Home Lands and Alaska Native / tribal statistical areas. Flags Section 106 THPO consultation, civil/regulatory jurisdiction and trust-land lending/title.",
        "version": "1.0",
        "x-build-id": "uZ7jkgiMybjLfnJeu"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/malonestar~tribal-land-jurisdiction-screener/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-malonestar-tribal-land-jurisdiction-screener",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/malonestar~tribal-land-jurisdiction-screener/runs": {
            "post": {
                "operationId": "runs-sync-malonestar-tribal-land-jurisdiction-screener",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/malonestar~tribal-land-jurisdiction-screener/run-sync": {
            "post": {
                "operationId": "run-sync-malonestar-tribal-land-jurisdiction-screener",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "assets": {
                        "title": "Assets (coordinates to screen)",
                        "type": "array",
                        "description": "List of points to screen against American Indian reservations, off-reservation trust land, Hawaiian Home Lands and Alaska Native / tribal statistical areas (U.S. Census AIANNH). Each item is an object with numeric lat and lon (WGS84 decimal degrees) and an optional label. One billable result row is returned per asset. Example: [{\"lat\":36.07,\"lon\":-109.55,\"label\":\"Navajo Nation, AZ\"}]."
                    },
                    "maxAssets": {
                        "title": "Max assets",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of assets to screen from the assets list (safety cap). Extra assets beyond this are ignored.",
                        "default": 500
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
