TractBuilder REST API
Every legal description capability in our desktop tools, exposed as HTTPS JSON endpoints. Quarter aliquots, run metes and bounds, AI-parse paragraph descriptions, and query PLSS sections from any language, any platform, any backend.
- GeoJSON responses you can drop straight into a map
- AI parsing for the hardest paragraph-form legal descriptions
- Live demo in the TractBuilder Pro portal — curl, C#, and Python snippets included
- Scoped API keys for per-service traceability and cost control
Your backend, our geometry.
If your application intakes legal descriptions — a title system, an abstracting pipeline, a landman portal, an AI agent — the TractBuilder REST API turns them into geometry without you writing a parser. POST a description; get GeoJSON back. That's the whole contract.
A Single POST Returns Geometry
No SDK required. If your platform can speak JSON over HTTPS, you can integrate in an afternoon — here's the same call in the three languages we ship snippets for.
# Quarter an aliquot against a TRS lookup curl -X POST https://pro.tractbuilder.com/api/v1/legal/quarter-by-trs \ -H "Authorization: Bearer $TRACTBUILDER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "meridian": "6", "township": 1, "townshipDirection": "N", "range": 68, "rangeDirection": "W", "section": 14, "legalDescription": "NE1/4 NW1/4" }' # 200 OK { "geometry": { "type": "Polygon", "coordinates": [[...]] }, "acres": 40.0, "crs": "EPSG:4326" }
// Quarter an aliquot against a TRS lookup using System.Net.Http.Json; var http = new HttpClient(); http.DefaultRequestHeaders.Add( "Authorization", $"Bearer {Environment.GetEnvironmentVariable("TRACTBUILDER_API_KEY")}"); var request = new { meridian = "6", township = 1, townshipDirection = "N", range = 68, rangeDirection = "W", section = 14, legalDescription = "NE1/4 NW1/4" }; var resp = await http.PostAsJsonAsync( "https://pro.tractbuilder.com/api/v1/legal/quarter-by-trs", request); var result = await resp.Content.ReadFromJsonAsync<QuarterResult>(); Console.WriteLine($"Acres: {result.Acres}");
# Quarter an aliquot against a TRS lookup import os, requests response = requests.post( "https://pro.tractbuilder.com/api/v1/legal/quarter-by-trs", headers={"Authorization": f"Bearer {os.environ['TRACTBUILDER_API_KEY']}"}, json={ "meridian": "6", "township": 1, "townshipDirection": "N", "range": 68, "rangeDirection": "W", "section": 14, "legalDescription": "NE1/4 NW1/4", }, ) data = response.json() print(f"Acres: {data['acres']}")
Endpoint Reference
Full OpenAPI schema lives in the interactive Swagger console — every endpoint documented, versioned, and runnable from your browser.
| Method | Path | Scope | Purpose |
|---|---|---|---|
| POST | /api/v1/legal/quarter |
legal:quarter | Quarter an aliquot description against an explicit section polygon. |
| POST | /api/v1/legal/quarter-by-trs |
legal:quarter | Quarter an aliquot description with a TRS lookup — no section layer needed. |
| POST | /api/v1/legal/metes-bounds |
legal:metesbounds | Execute a metes and bounds description; returns polygon, closure, and area. |
| POST | /api/v1/legal/metes-bounds/parse-text |
legal:metesbounds | AI-parse a paragraph-form description into structured calls. |
| POST | /api/v1/legal/analyze-columns |
legal:quarter | Detect column mapping for a spreadsheet (PLSS, Texas, Texas OTLS). |
| GET | /api/v1/sections/query |
landgrid:read | Search sections by TRS, bbox, or county. |
| GET | /api/v1/sections/{id} |
landgrid:read | Fetch a single section by identifier. |
| GET | /api/v1/sections/states |
landgrid:read | List states with PLSS coverage. |
| GET | /api/v1/sections/counties |
landgrid:read | List counties for a given state. |
| GET | /api/v1/sections/meridians |
landgrid:read | List meridians for a given state. |
Built for Integration
Snippets in the Languages You Use
Every endpoint in the Pro portal demo ships with ready-to-copy snippets in curl, C#, and Python. Paste, swap your key, ship — no SDK install required.
Interactive Swagger Console
Browse every endpoint, expand the schema, paste your key, and hit the API live from your browser. Responses render inline so you can eyeball GeoJSON before you wire it up.
Scoped Keys, Full Visibility
Issue one key per integration, one key per team, one key per environment. Every call is logged against the key that made it — so you get per-service traceability for audits and per-service usage numbers for cost control.
What You Can Build
Automated Title Intake
Pipe deeds through your OCR and AI stack, then POST the extracted legals to our API for verified geometry. Render on your map, attach to your file, ship the report.
AI Agent Backends
LLM-driven workflows that need to ground a legal description in a real polygon. Our AI parser is purpose-built for surveying prose; combine with /quarter-by-trs or /metes-bounds for end-to-end mapping.
Custom Dashboards & Portals
Build the internal tool your team actually needs. Section lookups, tract visualizations, batch imports — all backed by the same geometry engine that powers our desktop tools.
Start building with the TractBuilder API today.
The REST API is included with every TractBuilder Pro subscription. Start a free trial and get scoped keys for your integration — plus the desktop tools and Online Mapping while you're at it.
Start Free Trial View Swagger