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
TractBuilder REST API — hero visual.

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.

HTTPS JSON OpenAPI 3 GeoJSON out

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

curl C# Python

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 UI for the TractBuilder REST API with the full endpoint list expanded.

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.

🔐
legal:quarter legal:metesbounds landgrid:read

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