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.
// 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.
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-server"],
"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-server"],
"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-server"],
"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-server"],
"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-server 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
Simple, predictable pricing.
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
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.