Legal Land Description API for Developers
Convert PLSS township, range, and section, or Texas abstract, block, and survey descriptions, to GPS coordinates with simple HTTP requests. Batch processing, autocomplete, and map tile overlays for PLSS grids plus Texas land surveys. New: energy, federal land, and Texas parcel reports as JSON, with matching vector tile bundles.
// npm install townshipamerica
import { TownshipClient } from 'townshipamerica'
const client = new TownshipClient({ apiKey: 'your_api_key' })
// PLSS (30+ states)
const plss = await client.search('14S 15E 6th Meridian')
// Texas TXSS (abstract / block / survey)
const texas = await client.search('A-175 Reeves County')
console.log(texas.features[0].properties.survey_system)Quick Start
Start converting legal land descriptions to GPS coordinates in under 5 minutes.
Create an Account
Sign up at townshipamerica.com/app and navigate to your account settings.
Get Your API Key
Generate an API key from your dashboard. Keep it secure, it's your access token.
Official SDKs Available
Install the official client for your language, full types, batch endpoints, and error handling included.
Make Your First Request
Use your API key to convert a legal land description:
curl "https://developer.townshipamerica.com/search/legal-location?location=14S+15E+6th+Meridian" \
-H "X-API-Key: your_api_key"Code Examples
curl "https://developer.townshipamerica.com/search/legal-location?location=14S+15E+6th+Meridian" \
-H "X-API-Key: 1234567890abcdefghij"// npm install townshipamerica
import { TownshipClient } from 'townshipamerica'
const client = new TownshipClient({ apiKey: '1234567890abcdefghij' })
const result = await client.search('14S 15E 6th Meridian')
console.log(result.latitude, result.longitude)# pip install townshipamerica
from townshipamerica import TownshipAmerica
client = TownshipAmerica(api_key="your_api_key")
result = client.search("14S 15E 6th Meridian")
print(result.features[0].properties)Try It Now
Live Demo/search/legal-location?location=NENE%2025%205N%2030E%20Mount%20Diablo%20MeridianAuthentication
All API requests require authentication using your API key.
Include your API key in the request header:
X-API-Key: your_api_keyBase URL:https://developer.townshipamerica.com
Convert Legal Description to Coordinates
Convert PLSS or Texas TXSS legal descriptions to coordinates and vice versa. Responses include survey_system: "PLSS" or "TXSS".
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| location | string | Required | PLSS or Texas TXSS legal land description (auto-detected) 14S 15E 6th Meridian |
Example Response
{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": { "type": "Polygon", "coordinates": [...] },
"properties": {
"shape": "grid",
"search_term": "14S 15E 6th Meridian",
"legal_location": "14S 15E 6th Meridian",
"unit": "Township",
"survey_system": "PLSS",
"county": "...", "state": "..."
}
}]
}Texas TXSS example response
{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": { "type": "Polygon", "coordinates": [...] },
"properties": {
"shape": "grid",
"search_term": "A-175 Reeves County",
"legal_location": "Abstract 175 Reeves County Texas",
"survey_system": "TXSS",
"abstract_no": "175",
"county": "Reeves",
"state": "TX"
}
}]
}Convert Coordinates to Legal Description
Get the legal land description for any GPS coordinate. Returns PLSS inside PLSS states and Texas TXSS inside Texas.
Smart Suggestions
Real-time suggestions as users type PLSS or Texas TXSS descriptions.
Batch Processing
Process up to 100 PLSS or Texas TXSS locations in a single request, mixed arrays are supported.
Map Tiles API
PLSS grid and Texas land survey (abstract / block / survey) overlay tiles for your mapping applications. List available layers with GET /layers.json.
Tile URL Pattern
https://maps.townshipamerica.com/{layer}/{z}/{x}/{y}.mvt?api_key=... Layer catalog (TileJSON URLs + source-layer names):
curl "https://maps.townshipamerica.com/layers.json?api_key=YOUR_API_KEY"MapLibre GL JS, Texas land surveys
map.addSource('texas-land-surveys', {
type: 'vector',
tiles: [
'https://maps.townshipamerica.com/texas-land-surveys/{z}/{x}/{y}.mvt' +
'?api_key=YOUR_API_KEY'
],
minzoom: 4,
maxzoom: 14
});
map.addLayer({
id: 'texas-land-surveys-fill',
type: 'fill',
source: 'texas-land-surveys',
'source-layer': 'texas-land-surveys',
paint: {
'fill-color': '#4a7c59',
'fill-opacity': 0.15
}
});Available Layers
| State | Grid Layers | Label Layers | source-layer |
|---|---|---|---|
| All PLSS States | twpfirst-divisionsecond-division | twp_labelfirst_division_labelsecond_division_label | twpfirst-divisionsecond-division |
| Texas (TXSS) | texas-land-surveys | texas-land-surveys-labels | texas-land-surveys |
Legacy slug tx_otls still resolves to texas-land-surveys.
Energy Parcel Reports
Wells, operators, federal leases, ONRR royalties, orphaned wells, pipelines, FracFocus disclosures, and siting constraints for any parcel. legal_location accepts both grids: PLSS legal descriptions (aliquot wording included) and Texas abstract/block/survey descriptions.
FracFocus rows require "Data: FracFocus.org" attribution; NREL siting scores are CC-BY 4.0. An out-of-range radius_mi is a 400, never a silent fallback.
Federal Land Parcel Reports
A 15-layer federal land report for any PLSS tract: surface management, BLM leases and rights-of-way, flood zones, mining claims, wetlands, firesheds, soils, orphaned wells, critical habitat, public access, and wildfire risk. Texas abstract input returns 400 texas_not_supported.
Scalar sections (crop_history, elevation) and geometry are include= values on /report, not routes. A layer with no_state_coverage in meta.unavailable has no data in that state at all; an empty array is only an all-clear when the layer is covered.
Texas Abstract Reports & RRC Production
GLO leases, pooled units, PSF and state agency lands, RRC wells and pipelines, pending permits, coastal erosion, and lease-level RRC production for any abstract/block/survey tract. PLSS input returns 400 plss_not_supported; an abstract matching more than one county returns 400 ambiguous_location, never a silent first-row pick.
Per-well volumes are allocated estimates: RRC reports production by lease, never by well. denominator_basis (time_varying or static) records which denominator produced them, and the decline fit is withheld below R² 0.7.
Vector Tiles
The Energy pack's map layers as vector tiles: state-regulator wells, FracFocus, orphaned wells, pipelines, sage-grouse habitat, solar zones, wind turbines, and federal subsurface minerals. Served from the maps CDN, authenticated with an api_key query parameter.
Tile URL Pattern
https://maps.townshipamerica.com/energy/{archive}/{z}/{x}/{y}.mvt?api_key=... https://maps.townshipamerica.com/energy/{archive}.json?api_key=... (TileJSON) Available Archives
Every archive's vector source-layer equals the archive name (MapLibre needs it in source-layer). Anything outside this list returns 403.
| Archive | Source Layer | Layer |
|---|---|---|
co_wells | co_wells | Colorado wells (ECMC) |
co_wells_labels | co_wells_labels | Colorado wells (labels) |
nd_wells | nd_wells | North Dakota wells (DMR) |
nd_wells_labels | nd_wells_labels | North Dakota wells (labels) |
ok_wells | ok_wells | Oklahoma wells (OCC) |
ok_wells_labels | ok_wells_labels | Oklahoma wells (labels) |
wy_wells | wy_wells | Wyoming wells (WOGCC) |
wy_wells_labels | wy_wells_labels | Wyoming wells (labels) |
nm_wells | nm_wells | New Mexico wells (OCD) |
nm_wells_labels | nm_wells_labels | New Mexico wells (labels) |
fracfocus | fracfocus | FracFocus chemical disclosures |
fracfocus_labels | fracfocus_labels | FracFocus (labels) |
usgs_orphaned_wells | usgs_orphaned_wells | USGS documented orphaned wells |
usgs_orphaned_wells_labels | usgs_orphaned_wells_labels | USGS orphaned wells (labels) |
usgs_wind_turbines | usgs_wind_turbines | USGS wind turbines |
usgs_wind_turbines_labels | usgs_wind_turbines_labels | USGS wind turbines (labels) |
sage_grouse_hma | sage_grouse_hma | BLM Sage-Grouse habitat management areas |
sage_grouse_hma_labels | sage_grouse_hma_labels | Sage-Grouse HMA (labels) |
western_solar | western_solar | BLM Western Solar Plan zones |
western_solar_labels | western_solar_labels | Western Solar (labels) |
nrel_land_of_opportunity | nrel_land_of_opportunity | NREL Land of Opportunity (CC-BY 4.0) |
nrel_land_of_opportunity_labels | nrel_land_of_opportunity_labels | NREL Land of Opportunity (labels) |
fed_subsurface_minerals | fed_subsurface_minerals | Federal subsurface mineral estate |
fed_subsurface_minerals_labels | fed_subsurface_minerals_labels | Federal subsurface minerals (labels) |
og_pipelines_natgas | og_pipelines_natgas | HIFLD natural gas pipelines |
og_pipelines_ngl | og_pipelines_ngl | HIFLD NGL pipelines |
og_pipelines_crude | og_pipelines_crude | HIFLD crude oil pipelines |
tx_pipelines | tx_pipelines | Texas RRC T-4 pipelines |
The _labels archives are the same footprint rendered as a label layer. Add them as their own source alongside the geometry archive when you want text; the pipeline archives carry their labels inline.
MapLibre Usage
const KEY = "YOUR_API_KEY";
const base = "https://maps.townshipamerica.com/energy";
// State-regulator wells: point archive + companion _labels archive.
// Every archive's source-layer equals the archive name.
map.addSource("co-wells", {
type: "vector",
tiles: [`${base}/co_wells/{z}/{x}/{y}.mvt?api_key=${KEY}`],
minzoom: 0,
maxzoom: 14
});
map.addLayer({
id: "co-wells-points",
type: "circle",
source: "co-wells",
"source-layer": "co_wells",
paint: { "circle-radius": 3, "circle-color": "#b5651d" }
});
// TileJSON works too, and carries the bounds and zoom range
map.addSource("og-pipelines-natgas", {
type: "vector",
url: `${base}/og_pipelines_natgas.json?api_key=${KEY}`
});Vector Tiles
The Federal Land pack's map layers as vector tiles: surface management, mining claims, SSURGO soils, firesheds, wildfire risk, and wetlands. Served from the maps CDN, authenticated with an api_key query parameter.
Tile URL Pattern
https://maps.townshipamerica.com/federal-land/{archive}/{z}/{x}/{y}.mvt?api_key=... https://maps.townshipamerica.com/federal-land/{archive}.json?api_key=... (TileJSON) Available Archives
Every archive's vector source-layer equals the archive name. Anything outside this list returns 403.
| Archive | Source Layer | Layer |
|---|---|---|
surface_management | surface_management | BLM Surface Management Agency |
surface_management_labels | surface_management_labels | Surface management (labels) |
mining_claims | mining_claims | BLM MLRS mining claims |
mining_claims_labels | mining_claims_labels | Mining claims (labels) |
nrcs_ssurgo_soils | nrcs_ssurgo_soils | NRCS SSURGO soils |
nrcs_ssurgo_soils_labels | nrcs_ssurgo_soils_labels | SSURGO soils (labels) |
usfs_firesheds | usfs_firesheds | USFS firesheds |
usfs_firesheds_labels | usfs_firesheds_labels | Firesheds (labels) |
usfs_wrc | usfs_wrc | USFS Wildfire Risk to Communities |
usfs_wrc_labels | usfs_wrc_labels | Wildfire risk (labels) |
usfws_wetlands | usfws_wetlands | USFWS National Wetlands Inventory |
usfws_wetlands_labels | usfws_wetlands_labels | Wetlands (labels) |
MapLibre Usage
const KEY = "YOUR_API_KEY";
const base = "https://maps.townshipamerica.com/federal-land";
// Surface management polygons. Every archive's source-layer equals
// the archive name; _labels archives are companion label layers.
map.addSource("surface-management", {
type: "vector",
tiles: [`${base}/surface_management/{z}/{x}/{y}.mvt?api_key=${KEY}`],
minzoom: 0,
maxzoom: 14
});
map.addLayer({
id: "surface-management-fill",
type: "fill",
source: "surface-management",
"source-layer": "surface_management",
paint: { "fill-color": "#3d6b99", "fill-opacity": 0.4 }
});
// TileJSON works too, and carries the bounds and zoom range
map.addSource("usfws-wetlands", {
type: "vector",
url: `${base}/usfws_wetlands.json?api_key=${KEY}`
});Vector Tiles
The Texas pack's map layers as vector tiles: the abstract/block/survey grid, GLO leases and units, PSF lands, RRC wells, permits, pipelines, coastal hazard layers, and the RRC production heatmap. Served from the maps CDN, authenticated with an api_key query parameter.
Tile URL Pattern
https://maps.townshipamerica.com/texas/{archive}/{z}/{x}/{y}.mvt?api_key=... https://maps.townshipamerica.com/texas/{archive}.json?api_key=... (TileJSON) Available Archives
Every archive's vector source-layer equals the archive name, except the tx_production_grid_* family, whose three archives all share the source-layer tx_production_grid. Anything outside this list returns 403.
| Archive | Source Layer | Layer |
|---|---|---|
texas-land-surveys | texas-land-surveys | Texas land surveys (abstract / block / survey grid) |
texas-land-surveys-labels | texas-land-surveys-labels | Texas land surveys (labels) |
tx_otls | tx_otls | Texas land surveys (legacy slug) |
tx_otls_labels | tx_otls_labels | Texas land surveys labels (legacy slug) |
tx_leases | tx_leases | GLO active O&G leases |
tx_leases_labels | tx_leases_labels | GLO leases (labels) |
tx_glo_units | tx_glo_units | GLO pooled units |
tx_glo_units_labels | tx_glo_units_labels | GLO pooled units (labels) |
tx_glo_pooling | tx_glo_pooling | GLO pooling agreements |
tx_glo_pooling_labels | tx_glo_pooling_labels | GLO pooling (labels) |
tx_glo_land_types | tx_glo_land_types | GLO land types |
tx_glo_land_types_labels | tx_glo_land_types_labels | GLO land types (labels) |
tx_psf_lands | tx_psf_lands | Permanent School Fund lands |
tx_psf_lands_labels | tx_psf_lands_labels | PSF lands (labels) |
tx_state_agency_lands | tx_state_agency_lands | State agency lands |
tx_state_agency_lands_labels | tx_state_agency_lands_labels | State agency lands (labels) |
tx_upland_leases | tx_upland_leases | GLO upland surface leases |
tx_upland_leases_labels | tx_upland_leases_labels | Upland leases (labels) |
tx_non_mineral_leases | tx_non_mineral_leases | GLO non-mineral leases |
tx_non_mineral_leases_labels | tx_non_mineral_leases_labels | Non-mineral leases (labels) |
tx_hard_minerals | tx_hard_minerals | GLO hard mineral leases |
tx_hard_minerals_labels | tx_hard_minerals_labels | Hard minerals (labels) |
tx_wells_surface | tx_wells_surface | RRC wells (surface hole) |
tx_wells_surface_labels | tx_wells_surface_labels | RRC surface wells (labels) |
tx_wells_bottom | tx_wells_bottom | RRC wells (bottom hole) |
tx_wells_bottom_labels | tx_wells_bottom_labels | RRC bottom-hole wells (labels) |
tx_uic_wells | tx_uic_wells | RRC UIC injection/disposal wells |
tx_uic_wells_labels | tx_uic_wells_labels | UIC wells (labels) |
tx_permits | tx_permits | RRC approved drilling permits (W-1) |
tx_permits_labels | tx_permits_labels | Drilling permits (labels) |
tx_pipelines | tx_pipelines | RRC T-4 pipelines |
tx_bay_tracts | tx_bay_tracts | GLO bay tracts |
tx_bay_tracts_labels | tx_bay_tracts_labels | Bay tracts (labels) |
tx_coastal_leases | tx_coastal_leases | GLO coastal leases |
tx_coastal_leases_labels | tx_coastal_leases_labels | Coastal leases (labels) |
tx_oyster_leases | tx_oyster_leases | Oyster leases |
tx_oyster_leases_labels | tx_oyster_leases_labels | Oyster leases (labels) |
tx_critical_erosion | tx_critical_erosion | GLO critical erosion areas |
tx_critical_erosion_labels | tx_critical_erosion_labels | Critical erosion (labels) |
tx_shoreline_change_rates | tx_shoreline_change_rates | Shoreline change rates |
tx_shoreline_change_rates_labels | tx_shoreline_change_rates_labels | Shoreline change (labels) |
tx_flood_hazard | tx_flood_hazard | FEMA flood hazard (Texas) |
tx_flood_hazard_labels | tx_flood_hazard_labels | Flood hazard (labels) |
tx_production_grid_county | tx_production_grid | RRC production heatmap (county rollup) |
tx_production_grid_block | tx_production_grid | RRC production heatmap (block rollup) |
tx_production_grid_abstract | tx_production_grid | RRC production heatmap (abstract) |
Zoom-Banded Rollup Family
The RRC production heatmap ships as three archives covering different zoom bands (abstract geometry is far too dense to draw at state scale). Add all three as separate sources and let the zoom ranges hand off; a client that adds only the abstract archive sees an empty map below z9. All three share the source-layer tx_production_grid.
| Zoom | Archive | Granularity |
|---|---|---|
| z4-7 | tx_production_grid_county | County |
| z7-9 | tx_production_grid_block | Block |
| z9+ | tx_production_grid_abstract | Abstract |
The _labels archives are the same footprint rendered as a label layer. tx_pipelines is the exception: its archive carries both geometry and labels.
MapLibre Usage
const KEY = "YOUR_API_KEY";
const base = "https://maps.townshipamerica.com/texas";
// The RRC production heatmap is a zoom-banded family: add all three
// sources. They SHARE the source-layer "tx_production_grid" — a client
// that adds only the abstract archive sees an empty map below z9.
map.addSource("txprod-county", {
type: "vector",
tiles: [`${base}/tx_production_grid_county/{z}/{x}/{y}.mvt?api_key=${KEY}`],
minzoom: 4,
maxzoom: 7
});
map.addSource("txprod-block", {
type: "vector",
tiles: [`${base}/tx_production_grid_block/{z}/{x}/{y}.mvt?api_key=${KEY}`],
minzoom: 7,
maxzoom: 9
});
map.addSource("txprod-abstract", {
type: "vector",
tiles: [`${base}/tx_production_grid_abstract/{z}/{x}/{y}.mvt?api_key=${KEY}`],
minzoom: 9,
maxzoom: 14
});
map.addLayer({
id: "txprod-abstract-fill",
type: "fill",
source: "txprod-abstract",
"source-layer": "tx_production_grid", // shared across all three archives
minzoom: 9,
paint: { "fill-color": "#fd8d3c", "fill-opacity": 0.55 }
});
// Every other archive's source-layer equals the archive name.
// TileJSON works too, and carries the bounds and zoom range
map.addSource("texas-land-surveys", {
type: "vector",
url: `${base}/texas-land-surveys.json?api_key=${KEY}`
});AI Agent Integration
Connect Claude Desktop, Cursor, Continue, or Cline directly to the PLSS API using the Model Context Protocol. Let AI agents convert legal land descriptions, look up coordinates, and export GeoJSON boundaries with your Township America API key.
The MCP server uses a standalone Township America API key from your dashboard. Business unlocks MCP access; quota and rate limits follow your API subscription tier (Build / Scale / Enterprise).
Available Tools (6)
| Tool | Description |
|---|---|
plss_to_coordinates | Convert a PLSS legal land description to GPS coordinates |
coordinates_to_plss | Find the PLSS description for GPS coordinates |
plss_to_geojson | Get the GeoJSON boundary polygon for a PLSS description |
validate_description | Validate and normalize a PLSS description (local, no API call) |
batch_convert | Convert up to 1,000 PLSS descriptions in one request |
Prerequisites
- , A standalone Township America API key (Build / Scale / Enterprise) from your dashboard. Business unlocks MCP server access.
- , Node.js 22+ (for
npx)
Connect from Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or ~/.config/claude/claude_desktop_config.json (Linux):
{
"mcpServers": {
"townshipamerica": {
"command": "npx",
"args": ["-y", "townshipamerica-mcp"],
"env": {
"TA_API_KEY": "your_api_key_here"
}
}
}
} Replace your_api_key_here with your Township America API key. Restart Claude Desktop after saving.
Connect from Cursor
Open Cursor Settings → MCP, or edit ~/.cursor/mcp.json:
{
"mcpServers": {
"townshipamerica": {
"command": "npx",
"args": ["-y", "townshipamerica-mcp"],
"env": {
"TA_API_KEY": "your_api_key_here"
}
}
}
}Connect from Continue
Add to ~/.continue/config.json:
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "npx",
"args": ["-y", "townshipamerica-mcp"],
"env": {
"TA_API_KEY": "your_api_key_here"
}
}
}
]
}
}Connect from Cline
Open Cline settings, navigate to MCP Servers, and add:
{
"mcpServers": {
"townshipamerica": {
"command": "npx",
"args": ["-y", "townshipamerica-mcp"],
"env": {
"TA_API_KEY": "your_api_key_here"
}
}
}
}Troubleshooting
"TA_API_KEY environment variable is not set"
Add TA_API_KEY to the env block in your MCP config file, not as a shell environment variable. The MCP host passes env vars from the config.
"Quota exceeded" error
Your quota depends on your standalone API tier. Build = 1,000 calls/month per endpoint; Scale and Enterprise go higher. Upgrade at /app/api or wait for the monthly reset.
Server not appearing in your AI assistant
Restart the AI assistant after editing the config file. Verify your config is valid JSON. Run npx townshipamerica-mcp in a terminal with TA_API_KEY set to check for startup errors.
Tool returns "Not found" for a valid description
PLSS covers 30 US states. Texas uses the TXSS survey system (abstract, block, and survey descriptions) and is fully supported. Alaska, Hawaii, and some eastern states may not resolve. Use the validate_description MCP tool to check your format.
Error Codes
| Code | Status | Description |
|---|---|---|
| 400 | Bad Request | Invalid legal land description |
| 401 | Unauthorized | Missing or invalid API key |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Server Error | Internal error — try again |
Rate Limits
Rate limits vary by plan tier.
Build
Scale
Enterprise
OpenAPI Specification
Download our OpenAPI 3.0 specification for code generation, testing, and documentation.
API Pricing
Built for developers integrating US land-location and mapping capabilities. Core APIs are priced per request; the Land Intelligence APIs below are priced per parcel report.
Build
For development & testing
- 1,000 requests/mo
- $0.02/request
- 1/sec rate limit
- Unlimited API keys
Scale
For production apps
- 10,000 requests/mo
- $0.01/request
- 5/sec rate limit
- Unlimited API keys
Enterprise
For high-volume needs
- 100,000 requests/mo
- $0.005/request
- 25/sec rate limit
- Unlimited API keys
Priced per parcel report
Go beyond coordinates with parcel-level Energy, Federal Land and Texas intelligence. One report is one parcel's intelligence returned by the API. Tiles and lookups stay on the core request-based plans above.
Parcel-level energy intelligence including wells, leases, royalties, pipelines, split estate, orphaned wells and siting constraints.
Developer
- 25 parcel reports/mo
- Unlimited API keys
Professional
- 250 parcel reports/mo
- Unlimited API keys
Business
- 1,000 parcel reports/mo
- Unlimited API keys
Allowances are hard stops: when a key reaches its monthly reports it pauses until the next month, and you can move up a tier at any time. There is no per-report overage. Annual billing saves two months.
High-volume, embedded and white-label use
Use Township America to power a product you sell. Bulk report generation, redistribution, embedded products, white labeling and custom licensing are set up together under an Enterprise agreement rather than sold off the shelf.
- High-volume and batch report generation
- Embedded and white-label products
- Redistribution and commercial licensing
- Custom limits, SLA and support terms
Self-service plans are for internal professional use and application development.
Township America self-service plans are intended for internal professional use and application development. High-volume automated processing, commercial redistribution, resale, white-label use, embedded products, or use of Township America data as a material component of a third-party commercial product requires an Enterprise agreement.
Frequently Asked Questions
Is there a free PLSS API?
The API is paid, starting at the Build tier ($20/month for 1,000 Search requests). Every plan includes a 30-day money-back guarantee, so you can build and test your integration risk-free before committing. See all plans.
How accurate is the PLSS geocoding?
Professional-grade accuracy sourced directly from BLM survey data. Results include a confidence score so your application can handle edge cases appropriately.
Can I batch convert PLSS descriptions via API?
Yes. The batch endpoint accepts arrays of up to 100 legal descriptions per request, returning coordinates for all of them in a single response. Batch conversion guide.
What response formats are supported?
All endpoints return JSON with GPS coordinates, confidence scores, parsed description components, and optionally GeoJSON geometry for boundary polygons.
Ready to convert legal land descriptions programmatically?
Get your API key and start converting township, range, and section to GPS coordinates in minutes.