[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"guide-land-report-api":3,"related-land-report-api":1904},{"id":4,"title":5,"body":6,"category":1895,"description":1896,"extension":1897,"icon":1898,"meta":1899,"navigation":1076,"order":324,"path":1900,"seo":1901,"stem":1902,"__hash__":1903},"guides\u002Fguides\u002Fland-report-api.md","Land Report API Guide",{"type":7,"value":8,"toc":1871},"minimark",[9,13,18,80,94,98,120,123,131,134,138,145,218,221,225,523,551,555,561,565,769,773,776,902,906,910,943,947,1304,1308,1609,1613,1658,1662,1665,1727,1734,1741,1745,1810,1813,1817,1845,1849,1867],[10,11,12],"p",{},"The Land Report API returns multi-layer intelligence for a single legal description — federal datasets (BLM, FEMA, USFWS, USFS, NRCS, USGS, USDA) plus Texas state datasets (GLO, RRC) joined onto a PLSS section or a Texas OTLS abstract. One request, fifteen-plus layers, JSON response.",[14,15,17],"h2",{"id":16},"quick-start","Quick start",[19,20,21,26,43,47,54,58],"steps",{},[22,23,25],"h3",{"id":24},"get-a-pro-subscription-or-a-land-report-api-key","Get a Pro+ subscription or a Land Report API key",[10,27,28,29,33,34,38,39,42],{},"The Land Report is a Pro+ feature. Web app users on Pro+ \u002F Business \u002F Enterprise can use ",[30,31,32],"code",{},"GET \u002Fapi\u002Fplss\u002Fland-report"," directly with their session cookie. Developers integrating from their own apps subscribe to the standalone Land Report API at ",[35,36,37],"strong",{},"API → Land Report"," in the dashboard and use the resulting key with ",[30,40,41],{},"X-API-Key",".",[22,44,46],{"id":45},"make-a-request","Make a request",[10,48,49,50,53],{},"Send ",[30,51,52],{},"GET \u002Fland-report?description=..."," with your API key. The grid is auto-detected — pass either a PLSS section identifier or a Texas OTLS abstract.",[22,55,57],{"id":56},"parse-the-layered-response","Parse the layered response",[10,59,60,61,64,65,68,69,72,73,72,76,79],{},"The response includes a ",[30,62,63],{},"section"," block (resolved identifiers + geometry metadata) and a ",[30,66,67],{},"report"," block keyed by layer (",[30,70,71],{},"soils",", ",[30,74,75],{},"og_leases",[30,77,78],{},"flood_zones",", …). Each layer is an array of objects, empty when no records intersect the tract.",[10,81,82,83,90,91,42],{},"Try the API live at ",[84,85,89],"a",{"href":86,"rel":87},"https:\u002F\u002Fdeveloper.townshipamerica.com",[88],"nofollow","developer.townshipamerica.com"," or explore a sample report at ",[84,92,93],{"href":93},"\u002Fapp\u002Freport",[14,95,97],{"id":96},"endpoint","Endpoint",[99,100,105],"pre",{"className":101,"code":102,"language":103,"meta":104,"style":104},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","GET https:\u002F\u002Fdeveloper.townshipamerica.com\u002Fland-report?description=T4N+R5E+Sec+12+Sixth+PM\n","bash","",[30,106,107],{"__ignoreMap":104},[108,109,112,116],"span",{"class":110,"line":111},"line",1,[108,113,115],{"class":114},"sbgvK","GET",[108,117,119],{"class":118},"s_sjI"," https:\u002F\u002Fdeveloper.townshipamerica.com\u002Fland-report?description=T4N+R5E+Sec+12+Sixth+PM\n",[10,121,122],{},"Headers:",[99,124,129],{"className":125,"code":127,"language":128},[126],"language-text","X-API-Key: your_api_key\n","text",[30,130,127],{"__ignoreMap":104},[10,132,133],{},"That's the whole request surface — one query parameter, one header.",[14,135,137],{"id":136},"supported-input-formats","Supported input formats",[10,139,140,141,144],{},"The Lambda inspects the ",[30,142,143],{},"description"," string and routes to the correct grid (PLSS or Texas OTLS) automatically. You don't pass a grid hint.",[146,147,148,164],"table",{},[149,150,151],"thead",{},[152,153,154,158,161],"tr",{},[155,156,157],"th",{},"Grid",[155,159,160],{},"Format",[155,162,163],{},"Example",[165,166,167,181,193,206],"tbody",{},[152,168,169,173,176],{},[170,171,172],"td",{},"PLSS",[170,174,175],{},"Township \u002F Range \u002F Section",[170,177,178],{},[30,179,180],{},"T4N R5E Sec 12 Sixth PM",[152,182,183,185,188],{},[170,184,172],{},[170,186,187],{},"Quarter-section",[170,189,190],{},[30,191,192],{},"NESW Sec 12 T4N R5E Sixth PM",[152,194,195,198,201],{},[170,196,197],{},"Texas OTLS",[170,199,200],{},"Abstract \u002F Block \u002F County",[170,202,203],{},[30,204,205],{},"Abstract 1301 Block 4 Reeves County",[152,207,208,210,213],{},[170,209,197],{},[170,211,212],{},"Abstract \u002F Survey \u002F County",[170,214,215],{},[30,216,217],{},"Abstract 123 H&GN RR Co Reeves County",[10,219,220],{},"PLSS coverage is nationwide across all 30+ PLSS states. Texas OTLS coverage is statewide for Texas only.",[14,222,224],{"id":223},"response-shape","Response shape",[99,226,230],{"className":227,"code":228,"language":229,"meta":104,"style":104},"language-json shiki shiki-themes material-theme-lighter github-light github-dark","{\n  \"description\": \"T4N R5E Sec 12 Sixth PM\",\n  \"grid\": \"plss\",\n  \"section\": {\n    \"legal_location\": \"T4N R5E Sec 12 Sixth PM\",\n    \"state\": \"Wyoming\",\n    \"county\": \"Albany\"\n  },\n  \"report\": {\n    \"surface_management\": [...],\n    \"og_leases\": [...],\n    \"flood_zones\": [...],\n    \"soils\": [...],\n    \"elevation\": { ... },\n    \"...\": \"...\"\n  },\n  \"generated_at\": \"2026-05-22T12:34:56Z\"\n}\n","json",[30,231,232,238,265,286,300,322,343,363,369,382,404,421,438,455,476,493,498,517],{"__ignoreMap":104},[108,233,234],{"class":110,"line":111},[108,235,237],{"class":236},"sP7_E","{\n",[108,239,241,245,248,251,254,258,260,262],{"class":110,"line":240},2,[108,242,244],{"class":243},"s39Yj","  \"",[108,246,143],{"class":247},"sseR_",[108,249,250],{"class":243},"\"",[108,252,253],{"class":236},":",[108,255,257],{"class":256},"sjJ54"," \"",[108,259,180],{"class":118},[108,261,250],{"class":256},[108,263,264],{"class":236},",\n",[108,266,268,270,273,275,277,279,282,284],{"class":110,"line":267},3,[108,269,244],{"class":243},[108,271,272],{"class":247},"grid",[108,274,250],{"class":243},[108,276,253],{"class":236},[108,278,257],{"class":256},[108,280,281],{"class":118},"plss",[108,283,250],{"class":256},[108,285,264],{"class":236},[108,287,289,291,293,295,297],{"class":110,"line":288},4,[108,290,244],{"class":243},[108,292,63],{"class":247},[108,294,250],{"class":243},[108,296,253],{"class":236},[108,298,299],{"class":236}," {\n",[108,301,303,306,310,312,314,316,318,320],{"class":110,"line":302},5,[108,304,305],{"class":243},"    \"",[108,307,309],{"class":308},"sZMiF","legal_location",[108,311,250],{"class":243},[108,313,253],{"class":236},[108,315,257],{"class":256},[108,317,180],{"class":118},[108,319,250],{"class":256},[108,321,264],{"class":236},[108,323,325,327,330,332,334,336,339,341],{"class":110,"line":324},6,[108,326,305],{"class":243},[108,328,329],{"class":308},"state",[108,331,250],{"class":243},[108,333,253],{"class":236},[108,335,257],{"class":256},[108,337,338],{"class":118},"Wyoming",[108,340,250],{"class":256},[108,342,264],{"class":236},[108,344,346,348,351,353,355,357,360],{"class":110,"line":345},7,[108,347,305],{"class":243},[108,349,350],{"class":308},"county",[108,352,250],{"class":243},[108,354,253],{"class":236},[108,356,257],{"class":256},[108,358,359],{"class":118},"Albany",[108,361,362],{"class":256},"\"\n",[108,364,366],{"class":110,"line":365},8,[108,367,368],{"class":236},"  },\n",[108,370,372,374,376,378,380],{"class":110,"line":371},9,[108,373,244],{"class":243},[108,375,67],{"class":247},[108,377,250],{"class":243},[108,379,253],{"class":236},[108,381,299],{"class":236},[108,383,385,387,390,392,394,397,401],{"class":110,"line":384},10,[108,386,305],{"class":243},[108,388,389],{"class":308},"surface_management",[108,391,250],{"class":243},[108,393,253],{"class":236},[108,395,396],{"class":236}," [",[108,398,400],{"class":399},"srjyR","...",[108,402,403],{"class":236},"],\n",[108,405,407,409,411,413,415,417,419],{"class":110,"line":406},11,[108,408,305],{"class":243},[108,410,75],{"class":308},[108,412,250],{"class":243},[108,414,253],{"class":236},[108,416,396],{"class":236},[108,418,400],{"class":399},[108,420,403],{"class":236},[108,422,424,426,428,430,432,434,436],{"class":110,"line":423},12,[108,425,305],{"class":243},[108,427,78],{"class":308},[108,429,250],{"class":243},[108,431,253],{"class":236},[108,433,396],{"class":236},[108,435,400],{"class":399},[108,437,403],{"class":236},[108,439,441,443,445,447,449,451,453],{"class":110,"line":440},13,[108,442,305],{"class":243},[108,444,71],{"class":308},[108,446,250],{"class":243},[108,448,253],{"class":236},[108,450,396],{"class":236},[108,452,400],{"class":399},[108,454,403],{"class":236},[108,456,458,460,463,465,467,470,473],{"class":110,"line":457},14,[108,459,305],{"class":243},[108,461,462],{"class":308},"elevation",[108,464,250],{"class":243},[108,466,253],{"class":236},[108,468,469],{"class":236}," {",[108,471,472],{"class":399}," ...",[108,474,475],{"class":236}," },\n",[108,477,479,481,483,485,487,489,491],{"class":110,"line":478},15,[108,480,305],{"class":243},[108,482,400],{"class":308},[108,484,250],{"class":243},[108,486,253],{"class":236},[108,488,257],{"class":256},[108,490,400],{"class":118},[108,492,362],{"class":256},[108,494,496],{"class":110,"line":495},16,[108,497,368],{"class":236},[108,499,501,503,506,508,510,512,515],{"class":110,"line":500},17,[108,502,244],{"class":243},[108,504,505],{"class":247},"generated_at",[108,507,250],{"class":243},[108,509,253],{"class":236},[108,511,257],{"class":256},[108,513,514],{"class":118},"2026-05-22T12:34:56Z",[108,516,362],{"class":256},[108,518,520],{"class":110,"line":519},18,[108,521,522],{"class":236},"}\n",[10,524,525,526,528,529,72,532,72,535,72,538,541,542,545,546,548,549,42],{},"For Texas inputs the ",[30,527,63],{}," block carries ",[30,530,531],{},"survey_name",[30,533,534],{},"county_fips",[30,536,537],{},"abstract_no",[30,539,540],{},"block_no",", and ",[30,543,544],{},"acreage"," instead of ",[30,547,329],{}," + ",[30,550,350],{},[14,552,554],{"id":553},"available-layers","Available layers",[10,556,557,558,560],{},"The set of layers in the ",[30,559,67],{}," block depends on the grid.",[22,562,564],{"id":563},"plss-layers-15","PLSS layers (15)",[146,566,567,580],{},[149,568,569],{},[152,570,571,574,577],{},[155,572,573],{},"Key",[155,575,576],{},"Layer",[155,578,579],{},"Source",[165,581,582,594,606,618,630,643,656,668,681,694,707,719,731,744,757],{},[152,583,584,588,591],{},[170,585,586],{},[30,587,389],{},[170,589,590],{},"BLM Surface Management",[170,592,593],{},"BLM SMA",[152,595,596,600,603],{},[170,597,598],{},[30,599,75],{},[170,601,602],{},"Oil & Gas Leases",[170,604,605],{},"BLM MLRS",[152,607,608,613,616],{},[170,609,610],{},[30,611,612],{},"geothermal_leases",[170,614,615],{},"Geothermal Leases",[170,617,605],{},[152,619,620,625,628],{},[170,621,622],{},[30,623,624],{},"rights_of_way",[170,626,627],{},"Rights-of-Way",[170,629,605],{},[152,631,632,637,640],{},[170,633,634],{},[30,635,636],{},"mining_claims",[170,638,639],{},"Mining Claims",[170,641,642],{},"BLM",[152,644,645,650,653],{},[170,646,647],{},[30,648,649],{},"public_access",[170,651,652],{},"Public Access",[170,654,655],{},"BLM PLAD",[152,657,658,662,665],{},[170,659,660],{},[30,661,78],{},[170,663,664],{},"Flood Zones",[170,666,667],{},"FEMA NFHL",[152,669,670,675,678],{},[170,671,672],{},[30,673,674],{},"wetlands",[170,676,677],{},"Wetlands",[170,679,680],{},"USFWS NWI",[152,682,683,688,691],{},[170,684,685],{},[30,686,687],{},"critical_habitat",[170,689,690],{},"Critical Habitat",[170,692,693],{},"USFWS ECOS",[152,695,696,701,704],{},[170,697,698],{},[30,699,700],{},"fireshed",[170,702,703],{},"Wildfire (Fireshed)",[170,705,706],{},"USFS",[152,708,709,714,717],{},[170,710,711],{},[30,712,713],{},"wildfire_risk_communities",[170,715,716],{},"Wildfire Risk (WRC)",[170,718,706],{},[152,720,721,725,728],{},[170,722,723],{},[30,724,71],{},[170,726,727],{},"Soils",[170,729,730],{},"NRCS SSURGO",[152,732,733,738,741],{},[170,734,735],{},[30,736,737],{},"crop_history",[170,739,740],{},"Crop History",[170,742,743],{},"USDA CDL",[152,745,746,751,754],{},[170,747,748],{},[30,749,750],{},"orphaned_wells",[170,752,753],{},"Orphaned Wells",[170,755,756],{},"USGS DOW",[152,758,759,763,766],{},[170,760,761],{},[30,762,462],{},[170,764,765],{},"Elevation Summary",[170,767,768],{},"USGS 3DEP",[22,770,772],{"id":771},"texas-otls-layers-17","Texas OTLS layers (17)",[10,774,775],{},"Texas tracts get the federal layers above (minus the BLM-only datasets that don't apply to Texas state lands) plus Texas-specific overlays:",[146,777,778,788],{},[149,779,780],{},[152,781,782,784,786],{},[155,783,573],{},[155,785,576],{},[155,787,579],{},[165,789,790,803,815,827,839,851,864,877,890],{},[152,791,792,797,800],{},[170,793,794],{},[30,795,796],{},"state_leases",[170,798,799],{},"State O&G Leases",[170,801,802],{},"TX GLO",[152,804,805,810,813],{},[170,806,807],{},[30,808,809],{},"state_units",[170,811,812],{},"Pooled Units",[170,814,802],{},[152,816,817,822,825],{},[170,818,819],{},[30,820,821],{},"psf_lands",[170,823,824],{},"PSF Lands",[170,826,802],{},[152,828,829,834,837],{},[170,830,831],{},[30,832,833],{},"state_agency_lands",[170,835,836],{},"State Agency Lands",[170,838,802],{},[152,840,841,846,849],{},[170,842,843],{},[30,844,845],{},"upland_leases",[170,847,848],{},"Upland Surface Leases",[170,850,802],{},[152,852,853,858,861],{},[170,854,855],{},[30,856,857],{},"active_wells",[170,859,860],{},"Active Wells",[170,862,863],{},"TX RRC",[152,865,866,871,874],{},[170,867,868],{},[30,869,870],{},"pipelines",[170,872,873],{},"Pipelines",[170,875,876],{},"TX RRC T-4",[152,878,879,884,887],{},[170,880,881],{},[30,882,883],{},"pending_permits",[170,885,886],{},"Pending Permits",[170,888,889],{},"TX RRC W-1",[152,891,892,897,900],{},[170,893,894],{},[30,895,896],{},"coastal_erosion",[170,898,899],{},"Coastal Erosion",[170,901,802],{},[14,903,905],{"id":904},"code-examples","Code examples",[22,907,909],{"id":908},"curl","cURL",[99,911,913],{"className":101,"code":912,"language":103,"meta":104,"style":104},"curl \"https:\u002F\u002Fdeveloper.townshipamerica.com\u002Fland-report?description=T4N+R5E+Sec+12+Sixth+PM\" \\\n  -H \"X-API-Key: YOUR_API_KEY\"\n",[30,914,915,930],{"__ignoreMap":104},[108,916,917,919,921,924,926],{"class":110,"line":111},[108,918,908],{"class":114},[108,920,257],{"class":256},[108,922,923],{"class":118},"https:\u002F\u002Fdeveloper.townshipamerica.com\u002Fland-report?description=T4N+R5E+Sec+12+Sixth+PM",[108,925,250],{"class":256},[108,927,929],{"class":928},"s_hVV"," \\\n",[108,931,932,936,938,941],{"class":110,"line":240},[108,933,935],{"class":934},"stzsN","  -H",[108,937,257],{"class":256},[108,939,940],{"class":118},"X-API-Key: YOUR_API_KEY",[108,942,362],{"class":256},[22,944,946],{"id":945},"typescript","TypeScript",[99,948,951],{"className":949,"code":950,"language":945,"meta":104,"style":104},"language-typescript shiki shiki-themes material-theme-lighter github-light github-dark","const response = await fetch(\n  \"https:\u002F\u002Fdeveloper.townshipamerica.com\u002Fland-report\" +\n    \"?description=\" +\n    encodeURIComponent(\"T4N R5E Sec 12 Sixth PM\"),\n  {\n    headers: { \"X-API-Key\": process.env.TOWNSHIP_API_KEY }\n  }\n);\n\nconst report = await response.json();\n\n\u002F\u002F Surface ownership\nconst blmAdmin = report.report.surface_management?.[0]?.admin_unit ?? \"Private\";\n\n\u002F\u002F Flood risk\nconst inSfha = report.report.flood_zones?.some((z) => z.sfha === \"T\");\n\n\u002F\u002F Soil productivity\nconst primeAcres = report.report.soils?.filter((s) => s.prime_farmland?.startsWith(\"Prime\")).length;\n",[30,952,953,978,990,1001,1020,1025,1060,1065,1072,1078,1100,1104,1110,1159,1163,1168,1227,1231,1236],{"__ignoreMap":104},[108,954,955,959,962,966,970,974],{"class":110,"line":111},[108,956,958],{"class":957},"sbsja","const",[108,960,961],{"class":928}," response",[108,963,965],{"class":964},"smGrS"," =",[108,967,969],{"class":968},"sVHd0"," await",[108,971,973],{"class":972},"sGLFI"," fetch",[108,975,977],{"class":976},"su5hD","(\n",[108,979,980,982,985,987],{"class":110,"line":240},[108,981,244],{"class":256},[108,983,984],{"class":118},"https:\u002F\u002Fdeveloper.townshipamerica.com\u002Fland-report",[108,986,250],{"class":256},[108,988,989],{"class":964}," +\n",[108,991,992,994,997,999],{"class":110,"line":267},[108,993,305],{"class":256},[108,995,996],{"class":118},"?description=",[108,998,250],{"class":256},[108,1000,989],{"class":964},[108,1002,1003,1006,1009,1011,1013,1015,1018],{"class":110,"line":288},[108,1004,1005],{"class":972},"    encodeURIComponent",[108,1007,1008],{"class":976},"(",[108,1010,250],{"class":256},[108,1012,180],{"class":118},[108,1014,250],{"class":256},[108,1016,1017],{"class":976},")",[108,1019,264],{"class":236},[108,1021,1022],{"class":110,"line":302},[108,1023,1024],{"class":236},"  {\n",[108,1026,1027,1031,1033,1035,1037,1040,1042,1044,1047,1049,1052,1054,1057],{"class":110,"line":324},[108,1028,1030],{"class":1029},"skxfh","    headers",[108,1032,253],{"class":236},[108,1034,469],{"class":236},[108,1036,257],{"class":256},[108,1038,41],{"class":1039},"sZUrc",[108,1041,250],{"class":256},[108,1043,253],{"class":236},[108,1045,1046],{"class":976}," process",[108,1048,42],{"class":236},[108,1050,1051],{"class":976},"env",[108,1053,42],{"class":236},[108,1055,1056],{"class":928},"TOWNSHIP_API_KEY",[108,1058,1059],{"class":236}," }\n",[108,1061,1062],{"class":110,"line":345},[108,1063,1064],{"class":236},"  }\n",[108,1066,1067,1069],{"class":110,"line":365},[108,1068,1017],{"class":976},[108,1070,1071],{"class":236},";\n",[108,1073,1074],{"class":110,"line":371},[108,1075,1077],{"emptyLinePlaceholder":1076},true,"\n",[108,1079,1080,1082,1085,1087,1089,1091,1093,1095,1098],{"class":110,"line":384},[108,1081,958],{"class":957},[108,1083,1084],{"class":928}," report",[108,1086,965],{"class":964},[108,1088,969],{"class":968},[108,1090,961],{"class":976},[108,1092,42],{"class":236},[108,1094,229],{"class":972},[108,1096,1097],{"class":976},"()",[108,1099,1071],{"class":236},[108,1101,1102],{"class":110,"line":406},[108,1103,1077],{"emptyLinePlaceholder":1076},[108,1105,1106],{"class":110,"line":423},[108,1107,1109],{"class":1108},"sutJx","\u002F\u002F Surface ownership\n",[108,1111,1112,1114,1117,1119,1121,1123,1125,1127,1129,1132,1135,1139,1142,1144,1147,1150,1152,1155,1157],{"class":110,"line":440},[108,1113,958],{"class":957},[108,1115,1116],{"class":928}," blmAdmin",[108,1118,965],{"class":964},[108,1120,1084],{"class":976},[108,1122,42],{"class":236},[108,1124,67],{"class":976},[108,1126,42],{"class":236},[108,1128,389],{"class":976},[108,1130,1131],{"class":236},"?.",[108,1133,1134],{"class":976},"[",[108,1136,1138],{"class":1137},"srdBf","0",[108,1140,1141],{"class":976},"]",[108,1143,1131],{"class":236},[108,1145,1146],{"class":976},"admin_unit ",[108,1148,1149],{"class":964},"??",[108,1151,257],{"class":256},[108,1153,1154],{"class":118},"Private",[108,1156,250],{"class":256},[108,1158,1071],{"class":236},[108,1160,1161],{"class":110,"line":457},[108,1162,1077],{"emptyLinePlaceholder":1076},[108,1164,1165],{"class":110,"line":478},[108,1166,1167],{"class":1108},"\u002F\u002F Flood risk\n",[108,1169,1170,1172,1175,1177,1179,1181,1183,1185,1187,1189,1192,1194,1196,1200,1202,1205,1208,1210,1213,1216,1218,1221,1223,1225],{"class":110,"line":495},[108,1171,958],{"class":957},[108,1173,1174],{"class":928}," inSfha",[108,1176,965],{"class":964},[108,1178,1084],{"class":976},[108,1180,42],{"class":236},[108,1182,67],{"class":976},[108,1184,42],{"class":236},[108,1186,78],{"class":976},[108,1188,1131],{"class":236},[108,1190,1191],{"class":972},"some",[108,1193,1008],{"class":976},[108,1195,1008],{"class":236},[108,1197,1199],{"class":1198},"s99_P","z",[108,1201,1017],{"class":236},[108,1203,1204],{"class":957}," =>",[108,1206,1207],{"class":976}," z",[108,1209,42],{"class":236},[108,1211,1212],{"class":976},"sfha ",[108,1214,1215],{"class":964},"===",[108,1217,257],{"class":256},[108,1219,1220],{"class":118},"T",[108,1222,250],{"class":256},[108,1224,1017],{"class":976},[108,1226,1071],{"class":236},[108,1228,1229],{"class":110,"line":500},[108,1230,1077],{"emptyLinePlaceholder":1076},[108,1232,1233],{"class":110,"line":519},[108,1234,1235],{"class":1108},"\u002F\u002F Soil productivity\n",[108,1237,1239,1241,1244,1246,1248,1250,1252,1254,1256,1258,1261,1263,1265,1268,1270,1272,1275,1277,1280,1282,1285,1287,1289,1292,1294,1297,1299,1302],{"class":110,"line":1238},19,[108,1240,958],{"class":957},[108,1242,1243],{"class":928}," primeAcres",[108,1245,965],{"class":964},[108,1247,1084],{"class":976},[108,1249,42],{"class":236},[108,1251,67],{"class":976},[108,1253,42],{"class":236},[108,1255,71],{"class":976},[108,1257,1131],{"class":236},[108,1259,1260],{"class":972},"filter",[108,1262,1008],{"class":976},[108,1264,1008],{"class":236},[108,1266,1267],{"class":1198},"s",[108,1269,1017],{"class":236},[108,1271,1204],{"class":957},[108,1273,1274],{"class":976}," s",[108,1276,42],{"class":236},[108,1278,1279],{"class":976},"prime_farmland",[108,1281,1131],{"class":236},[108,1283,1284],{"class":972},"startsWith",[108,1286,1008],{"class":976},[108,1288,250],{"class":256},[108,1290,1291],{"class":118},"Prime",[108,1293,250],{"class":256},[108,1295,1296],{"class":976},"))",[108,1298,42],{"class":236},[108,1300,1301],{"class":928},"length",[108,1303,1071],{"class":236},[22,1305,1307],{"id":1306},"python","Python",[99,1309,1312],{"className":1310,"code":1311,"language":1306,"meta":104,"style":104},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","import os\nimport requests\n\nresponse = requests.get(\n    \"https:\u002F\u002Fdeveloper.townshipamerica.com\u002Fland-report\",\n    params={\"description\": \"Abstract 1301 Block 4 Reeves County\"},\n    headers={\"X-API-Key\": os.environ[\"TOWNSHIP_API_KEY\"]}\n)\nreport = response.json()\n\n# Texas state lease ownership\nfor lease in report[\"report\"].get(\"state_leases\", []):\n    print(lease[\"lessee\"], lease[\"status\"], lease[\"royalty_rate\"])\n\n# Active wells on the tract\nprint(f\"{len(report['report'].get('active_wells', []))} producing wells\")\n",[30,1313,1314,1322,1329,1333,1352,1362,1389,1424,1429,1445,1449,1454,1494,1545,1549,1554],{"__ignoreMap":104},[108,1315,1316,1319],{"class":110,"line":111},[108,1317,1318],{"class":968},"import",[108,1320,1321],{"class":976}," os\n",[108,1323,1324,1326],{"class":110,"line":240},[108,1325,1318],{"class":968},[108,1327,1328],{"class":976}," requests\n",[108,1330,1331],{"class":110,"line":267},[108,1332,1077],{"emptyLinePlaceholder":1076},[108,1334,1335,1338,1341,1344,1346,1350],{"class":110,"line":288},[108,1336,1337],{"class":976},"response ",[108,1339,1340],{"class":964},"=",[108,1342,1343],{"class":976}," requests",[108,1345,42],{"class":236},[108,1347,1349],{"class":1348},"slqww","get",[108,1351,977],{"class":236},[108,1353,1354,1356,1358,1360],{"class":110,"line":302},[108,1355,305],{"class":256},[108,1357,984],{"class":118},[108,1359,250],{"class":256},[108,1361,264],{"class":236},[108,1363,1364,1367,1369,1372,1374,1376,1378,1380,1382,1384,1386],{"class":110,"line":324},[108,1365,1366],{"class":1198},"    params",[108,1368,1340],{"class":964},[108,1370,1371],{"class":236},"{",[108,1373,250],{"class":256},[108,1375,143],{"class":118},[108,1377,250],{"class":256},[108,1379,253],{"class":236},[108,1381,257],{"class":256},[108,1383,205],{"class":118},[108,1385,250],{"class":256},[108,1387,1388],{"class":236},"},\n",[108,1390,1391,1393,1395,1397,1399,1401,1403,1405,1408,1410,1413,1415,1417,1419,1421],{"class":110,"line":345},[108,1392,1030],{"class":1198},[108,1394,1340],{"class":964},[108,1396,1371],{"class":236},[108,1398,250],{"class":256},[108,1400,41],{"class":118},[108,1402,250],{"class":256},[108,1404,253],{"class":236},[108,1406,1407],{"class":1348}," os",[108,1409,42],{"class":236},[108,1411,1412],{"class":1029},"environ",[108,1414,1134],{"class":236},[108,1416,250],{"class":256},[108,1418,1056],{"class":118},[108,1420,250],{"class":256},[108,1422,1423],{"class":236},"]}\n",[108,1425,1426],{"class":110,"line":365},[108,1427,1428],{"class":236},")\n",[108,1430,1431,1434,1436,1438,1440,1442],{"class":110,"line":371},[108,1432,1433],{"class":976},"report ",[108,1435,1340],{"class":964},[108,1437,961],{"class":976},[108,1439,42],{"class":236},[108,1441,229],{"class":1348},[108,1443,1444],{"class":236},"()\n",[108,1446,1447],{"class":110,"line":384},[108,1448,1077],{"emptyLinePlaceholder":1076},[108,1450,1451],{"class":110,"line":406},[108,1452,1453],{"class":1108},"# Texas state lease ownership\n",[108,1455,1456,1459,1462,1465,1467,1469,1471,1473,1475,1478,1480,1482,1484,1486,1488,1491],{"class":110,"line":423},[108,1457,1458],{"class":968},"for",[108,1460,1461],{"class":976}," lease ",[108,1463,1464],{"class":968},"in",[108,1466,1084],{"class":976},[108,1468,1134],{"class":236},[108,1470,250],{"class":256},[108,1472,67],{"class":118},[108,1474,250],{"class":256},[108,1476,1477],{"class":236},"].",[108,1479,1349],{"class":1348},[108,1481,1008],{"class":236},[108,1483,250],{"class":256},[108,1485,796],{"class":118},[108,1487,250],{"class":256},[108,1489,1490],{"class":236},",",[108,1492,1493],{"class":236}," []):\n",[108,1495,1496,1500,1502,1505,1507,1509,1512,1514,1517,1520,1522,1524,1527,1529,1531,1533,1535,1537,1540,1542],{"class":110,"line":440},[108,1497,1499],{"class":1498},"sptTA","    print",[108,1501,1008],{"class":236},[108,1503,1504],{"class":1348},"lease",[108,1506,1134],{"class":236},[108,1508,250],{"class":256},[108,1510,1511],{"class":118},"lessee",[108,1513,250],{"class":256},[108,1515,1516],{"class":236},"],",[108,1518,1519],{"class":1348}," lease",[108,1521,1134],{"class":236},[108,1523,250],{"class":256},[108,1525,1526],{"class":118},"status",[108,1528,250],{"class":256},[108,1530,1516],{"class":236},[108,1532,1519],{"class":1348},[108,1534,1134],{"class":236},[108,1536,250],{"class":256},[108,1538,1539],{"class":118},"royalty_rate",[108,1541,250],{"class":256},[108,1543,1544],{"class":236},"])\n",[108,1546,1547],{"class":110,"line":457},[108,1548,1077],{"emptyLinePlaceholder":1076},[108,1550,1551],{"class":110,"line":478},[108,1552,1553],{"class":1108},"# Active wells on the tract\n",[108,1555,1556,1559,1561,1564,1566,1568,1571,1573,1575,1577,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598,1601,1604,1607],{"class":110,"line":495},[108,1557,1558],{"class":1498},"print",[108,1560,1008],{"class":236},[108,1562,1563],{"class":957},"f",[108,1565,250],{"class":118},[108,1567,1371],{"class":1137},[108,1569,1570],{"class":1498},"len",[108,1572,1008],{"class":236},[108,1574,67],{"class":1348},[108,1576,1134],{"class":236},[108,1578,1579],{"class":256},"'",[108,1581,67],{"class":118},[108,1583,1579],{"class":256},[108,1585,1477],{"class":236},[108,1587,1349],{"class":1348},[108,1589,1008],{"class":236},[108,1591,1579],{"class":256},[108,1593,857],{"class":118},[108,1595,1579],{"class":256},[108,1597,1490],{"class":236},[108,1599,1600],{"class":236}," []))",[108,1602,1603],{"class":1137},"}",[108,1605,1606],{"class":118}," producing wells\"",[108,1608,1428],{"class":236},[14,1610,1612],{"id":1611},"use-cases","Use cases",[1614,1615,1616,1623,1629,1635,1641,1647],"ul",{},[1617,1618,1619,1622],"li",{},[35,1620,1621],{},"Land due diligence."," Compose a one-page tract summary for acquisitions — surface ownership, mineral split, flood exposure, prime farmland acreage, active wells.",[1617,1624,1625,1628],{},[35,1626,1627],{},"Title and lease research."," Pull federal and state leases by section \u002F abstract without scraping BLM MLRS or TX GLO portals.",[1617,1630,1631,1634],{},[35,1632,1633],{},"Underwriting and insurance."," Score wildfire risk (USFS WRC), flood exposure (FEMA NFHL), and erosion exposure (TX GLO coastal) for a portfolio.",[1617,1636,1637,1640],{},[35,1638,1639],{},"Energy operations."," Look up federal leasehold status, BLM rights-of-way, orphaned wells, and adjacent active Texas wells in one call.",[1617,1642,1643,1646],{},[35,1644,1645],{},"Conservation and habitat compliance."," Detect critical habitat (USFWS ECOS) and wetland intersections (USFWS NWI) before fieldwork.",[1617,1648,1649,1652,1653,1657],{},[35,1650,1651],{},"AI agents and LLM workflows."," The Land Report layer is exposed via the ",[84,1654,1656],{"href":1655},"\u002Fapi\u002Fmcp","MCP server"," — point Claude Desktop, Cursor, or Cline at it and let agents pull tract-level reports inside chat.",[14,1659,1661],{"id":1660},"pricing","Pricing",[10,1663,1664],{},"The Land Report API has its own tiered pricing — separate from Search \u002F Autocomplete \u002F Batch \u002F Maps.",[146,1666,1667,1683],{},[149,1668,1669],{},[152,1670,1671,1674,1677,1680],{},[155,1672,1673],{},"Tier",[155,1675,1676],{},"Monthly Reports",[155,1678,1679],{},"Rate Limit",[155,1681,1682],{},"Price",[165,1684,1685,1699,1713],{},[152,1686,1687,1690,1693,1696],{},[170,1688,1689],{},"Build",[170,1691,1692],{},"100",[170,1694,1695],{},"1\u002Fsec",[170,1697,1698],{},"$50\u002Fmo",[152,1700,1701,1704,1707,1710],{},[170,1702,1703],{},"Scale",[170,1705,1706],{},"1,000",[170,1708,1709],{},"5\u002Fsec",[170,1711,1712],{},"$250\u002Fmo",[152,1714,1715,1718,1721,1724],{},[170,1716,1717],{},"Enterprise",[170,1719,1720],{},"10,000",[170,1722,1723],{},"25\u002Fsec",[170,1725,1726],{},"$1,000\u002Fmo",[10,1728,1729,1730,42],{},"Annual billing saves two months. See live pricing on the ",[84,1731,1733],{"href":1732},"\u002Fapi","API page",[10,1735,1736,1737,1740],{},"Web app Pro+ subscribers get unlimited Land Report views inside the ",[84,1738,1739],{"href":93},"in-app workbench"," — the API tiers are for programmatic \u002F third-party app usage.",[14,1742,1744],{"id":1743},"rate-limits-and-errors","Rate limits and errors",[146,1746,1747,1757],{},[149,1748,1749],{},[152,1750,1751,1754],{},[155,1752,1753],{},"Code",[155,1755,1756],{},"Reason",[165,1758,1759,1770,1778,1786,1794,1802],{},[152,1760,1761,1764],{},[170,1762,1763],{},"400",[170,1765,1766,1767,1769],{},"Missing or unparseable ",[30,1768,143],{}," parameter",[152,1771,1772,1775],{},[170,1773,1774],{},"401",[170,1776,1777],{},"Missing or invalid API key",[152,1779,1780,1783],{},[170,1781,1782],{},"403",[170,1784,1785],{},"API key is not entitled to the Land Report API",[152,1787,1788,1791],{},[170,1789,1790],{},"404",[170,1792,1793],{},"No PLSS section or Texas abstract matched",[152,1795,1796,1799],{},[170,1797,1798],{},"429",[170,1800,1801],{},"Tier rate limit exceeded",[152,1803,1804,1807],{},[170,1805,1806],{},"500",[170,1808,1809],{},"Upstream data source failure — try again",[10,1811,1812],{},"Rate limits are enforced per API key, per second. Tier monthly caps roll over on the first of each month.",[14,1814,1816],{"id":1815},"related-guides","Related guides",[1614,1818,1819,1826,1833,1840],{},[1617,1820,1821,1825],{},[84,1822,1824],{"href":1823},"\u002Fguides\u002Fapi-integration","API integration guide"," — how to subscribe, create keys, and call the developer API in general.",[1617,1827,1828,1832],{},[84,1829,1831],{"href":1830},"\u002Fguides\u002Fsearch","Search API guide"," — convert any single PLSS description to coordinates.",[1617,1834,1835,1839],{},[84,1836,1838],{"href":1837},"\u002Fguides\u002Fpython-sdk","Python SDK guide"," — install and use the Python client.",[1617,1841,1842,1844],{},[84,1843,1656],{"href":1655}," — expose the Land Report to AI agents via Model Context Protocol.",[14,1846,1848],{"id":1847},"next-steps","Next steps",[1614,1850,1851,1857,1860],{},[1617,1852,1853,1854,1856],{},"Subscribe at ",[35,1855,37],{}," in your dashboard.",[1617,1858,1859],{},"Generate an API key on the Build, Scale, or Enterprise tier.",[1617,1861,1862,1863,1866],{},"Try a sample report inside the ",[84,1864,1865],{"href":93},"Land Report workbench"," before integrating.",[1868,1869,1870],"style",{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sseR_, html code.shiki .sseR_{--shiki-light:#9C3EDA;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srjyR, html code.shiki .srjyR{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZUrc, html code.shiki .sZUrc{--shiki-light:#E53935;--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":104,"searchDepth":240,"depth":240,"links":1872},[1873,1878,1879,1880,1881,1885,1890,1891,1892,1893,1894],{"id":16,"depth":240,"text":17,"children":1874},[1875,1876,1877],{"id":24,"depth":267,"text":25},{"id":45,"depth":267,"text":46},{"id":56,"depth":267,"text":57},{"id":96,"depth":240,"text":97},{"id":136,"depth":240,"text":137},{"id":223,"depth":240,"text":224},{"id":553,"depth":240,"text":554,"children":1882},[1883,1884],{"id":563,"depth":267,"text":564},{"id":771,"depth":267,"text":772},{"id":904,"depth":240,"text":905,"children":1886},[1887,1888,1889],{"id":908,"depth":267,"text":909},{"id":945,"depth":267,"text":946},{"id":1306,"depth":267,"text":1307},{"id":1611,"depth":240,"text":1612},{"id":1660,"depth":240,"text":1661},{"id":1743,"depth":240,"text":1744},{"id":1815,"depth":240,"text":1816},{"id":1847,"depth":240,"text":1848},"api","Pull per-tract intelligence — soils, surface and mineral estate, critical habitat, flood zones, elevation, wildfire risk, and Texas survey overlays — for any PLSS section or Texas OTLS abstract via a single REST endpoint.","md","i-lucide-file-text",{},"\u002Fguides\u002Fland-report-api",{"title":5,"description":1896},"guides\u002Fland-report-api","Ka8haQxuQ527z3uw4gZQw22jjOy5cfZGBK-YVoiKx2o",[1905,2645,3075],{"id":1906,"title":1907,"body":1908,"category":1895,"description":2639,"extension":1897,"icon":2640,"meta":2641,"navigation":1076,"order":111,"path":1823,"seo":2642,"stem":2643,"__hash__":2644},"guides\u002Fguides\u002Fapi-integration.md","Legal Land Description API Integration Guide",{"type":7,"value":1909,"toc":2600},[1910,1913,1920,1922,1949,1956,1960,1963,1967,1970,1975,1979,1982,1987,1991,1994,1999,2003,2006,2011,2015,2018,2034,2050,2057,2061,2064,2069,2120,2126,2176,2179,2183,2187,2196,2243,2254,2258,2261,2265,2268,2272,2275,2279,2282,2286,2289,2293,2334,2338,2344,2364,2368,2371,2375,2378,2382,2385,2389,2392,2408,2507,2519,2521,2524,2528,2537,2540,2553,2555,2589,2597],[10,1911,1912],{},"Integrate Township America's legal land description services directly into your applications and workflows. Our REST APIs enable PLSS-to-coordinate conversion, autocomplete search, batch processing, and interactive grid maps—all with simple JSON responses.",[10,1914,1915],{},[1916,1917],"img",{"alt":1918,"src":1919},"Developer Portal","\u002Fimages\u002Fguides\u002Fapi-portal.webp",[14,1921,17],{"id":16},[19,1923,1924,1928,1935,1939,1942,1946],{},[22,1925,1927],{"id":1926},"get-an-api-key","Get an API key",[10,1929,1930,1931,1934],{},"Log into your Township America account and go to ",[35,1932,1933],{},"API"," in the main navigation. Subscribe to an API endpoint and create your first API key.",[22,1936,1938],{"id":1937},"make-your-first-request","Make your first request",[10,1940,1941],{},"Add your API key to the request header and make a test request.",[22,1943,1945],{"id":1944},"parse-the-response","Parse the response",[10,1947,1948],{},"All APIs return JSON with coordinates, legal descriptions, and metadata.",[10,1950,1951,1952,42],{},"For full documentation and code examples, visit the ",[84,1953,1955],{"href":1954},"\u002Fapp\u002Fapi","API documentation",[14,1957,1959],{"id":1958},"api-endpoints","API endpoints",[10,1961,1962],{},"Township America offers four distinct API endpoints:",[22,1964,1966],{"id":1965},"search-api-20month","Search API ($20\u002Fmonth)",[10,1968,1969],{},"Convert legal land descriptions to geographic coordinates and vice versa. Supports PLSS (Public Land Survey System) formats including township, range, section, and quarter section descriptions.",[10,1971,1972,1974],{},[35,1973,1612],{},": Property lookup, coordinate conversion, reverse geocoding",[22,1976,1978],{"id":1977},"autocomplete-api-20month","Autocomplete API ($20\u002Fmonth)",[10,1980,1981],{},"Search legal land descriptions with partial text. Returns up to 10 matching results with coordinates—ideal for search boxes and type-ahead interfaces.",[10,1983,1984,1986],{},[35,1985,1612],{},": Search boxes, type-ahead, field validation",[22,1988,1990],{"id":1989},"batch-api-40month","Batch API ($40\u002Fmonth)",[10,1992,1993],{},"Process up to 100 records per request. Convert lists of legal land descriptions to coordinates or coordinates to legal land descriptions.",[10,1995,1996,1998],{},[35,1997,1612],{},": Bulk data processing, migration, spatial analysis",[22,2000,2002],{"id":2001},"maps-api-20month","Maps API ($20\u002Fmonth)",[10,2004,2005],{},"Display legal survey grids on maps in your web or mobile applications. Vector tiles format compatible with Mapbox GL, Leaflet, and other mapping libraries.",[10,2007,2008,2010],{},[35,2009,1612],{},": Custom mapping applications, data visualization",[14,2012,2014],{"id":2013},"web-app-api-vs-developer-api","Web app API vs developer API",[10,2016,2017],{},"Township America has two API surfaces:",[10,2019,2020,2023,2024,2027,2028,2031,2032,42],{},[35,2021,2022],{},"Session-authenticated web endpoints"," (cookie login, Pro+ gated) — ",[30,2025,2026],{},"POST \u002Fapi\u002Fconvert"," for unified PLSS + TXSS conversion and ",[30,2029,2030],{},"\u002Fapi\u002Fenergy\u002F*"," with the Energy Pack add-on. These power the web app and are documented on the ",[84,2033,1733],{"href":1732},[10,2035,2036,2039,2040,2042,2043,2046,2047,2049],{},[35,2037,2038],{},"Standalone developer API"," (API key via ",[30,2041,41],{},", sold separately) — Search, Autocomplete, Batch, and Maps at ",[84,2044,89],{"href":86,"rel":2045},[88],". Subscribe at ",[35,2048,1933],{}," in the main navigation, create a key, and use it from your own applications.",[10,2051,2052,2053,2056],{},"Pro+ and Business unlock ",[84,2054,2055],{"href":1655},"MCP server access"," for AI agent workflows, but the MCP server still requires a standalone API key from your dashboard.",[14,2058,2060],{"id":2059},"api-pricing-tiers","API pricing tiers",[10,2062,2063],{},"Each API offers three pricing tiers:",[10,2065,2066],{},[35,2067,2068],{},"Search, Autocomplete & Batch APIs",[146,2070,2071,2084],{},[149,2072,2073],{},[152,2074,2075,2077,2080,2082],{},[155,2076,1673],{},[155,2078,2079],{},"Monthly Requests",[155,2081,1679],{},[155,2083,1682],{},[165,2085,2086,2097,2108],{},[152,2087,2088,2090,2092,2094],{},[170,2089,1689],{},[170,2091,1706],{},[170,2093,1695],{},[170,2095,2096],{},"$20-40\u002Fmo",[152,2098,2099,2101,2103,2105],{},[170,2100,1703],{},[170,2102,1720],{},[170,2104,1709],{},[170,2106,2107],{},"$100-200\u002Fmo",[152,2109,2110,2112,2115,2117],{},[170,2111,1717],{},[170,2113,2114],{},"100,000",[170,2116,1723],{},[170,2118,2119],{},"$500-1,000\u002Fmo",[10,2121,2122,2125],{},[35,2123,2124],{},"Maps API"," (higher request quotas for tile rendering)",[146,2127,2128,2140],{},[149,2129,2130],{},[152,2131,2132,2134,2136,2138],{},[155,2133,1673],{},[155,2135,2079],{},[155,2137,1679],{},[155,2139,1682],{},[165,2141,2142,2153,2164],{},[152,2143,2144,2146,2148,2150],{},[170,2145,1689],{},[170,2147,1720],{},[170,2149,1695],{},[170,2151,2152],{},"$20\u002Fmo",[152,2154,2155,2157,2159,2161],{},[170,2156,1703],{},[170,2158,2114],{},[170,2160,1709],{},[170,2162,2163],{},"$100\u002Fmo",[152,2165,2166,2168,2171,2173],{},[170,2167,1717],{},[170,2169,2170],{},"1,000,000",[170,2172,1723],{},[170,2174,2175],{},"$500\u002Fmo",[10,2177,2178],{},"Annual billing saves two months compared to monthly billing.",[14,2180,2182],{"id":2181},"common-integration-patterns","Common integration patterns",[22,2184,2186],{"id":2185},"texas-txss-conversion","Texas (TXSS) conversion",[10,2188,2189,2190,2192,2193,2195],{},"Use ",[30,2191,2026],{}," with a session cookie (Pro+ web subscription) or integrate via the standalone Search\u002FBatch APIs at ",[30,2194,89],{}," for programmatic PLSS and TXSS conversion:",[99,2197,2199],{"className":101,"code":2198,"language":103,"meta":104,"style":104},"curl -X POST https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fconvert \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"description\": \"A-123 Reeves County, TX\"}'\n",[30,2200,2201,2216,2229],{"__ignoreMap":104},[108,2202,2203,2205,2208,2211,2214],{"class":110,"line":111},[108,2204,908],{"class":114},[108,2206,2207],{"class":934}," -X",[108,2209,2210],{"class":118}," POST",[108,2212,2213],{"class":118}," https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fconvert",[108,2215,929],{"class":928},[108,2217,2218,2220,2222,2225,2227],{"class":110,"line":240},[108,2219,935],{"class":934},[108,2221,257],{"class":256},[108,2223,2224],{"class":118},"Content-Type: application\u002Fjson",[108,2226,250],{"class":256},[108,2228,929],{"class":928},[108,2230,2231,2234,2237,2240],{"class":110,"line":267},[108,2232,2233],{"class":934},"  -d",[108,2235,2236],{"class":256}," '",[108,2238,2239],{"class":118},"{\"description\": \"A-123 Reeves County, TX\"}",[108,2241,2242],{"class":256},"'\n",[10,2244,2245,2246,2248,2249,2253],{},"Texas O&G overlays (RRC wells, GLO leases, Bay Tracts) are available in the Pro+ web app. Multi-state federal energy data lives under ",[30,2247,2030],{}," with the ",[84,2250,2252],{"href":2251},"\u002Fpricing\u002Fenergy-pack","Energy Pack"," add-on.",[22,2255,2257],{"id":2256},"real-estate-applications","Real Estate Applications",[10,2259,2260],{},"Add legal land description lookup to property search interfaces. Use the Autocomplete API for type-ahead search and the Search API for coordinate conversion.",[22,2262,2264],{"id":2263},"oil-gas-software","Oil & Gas Software",[10,2266,2267],{},"Integrate batch conversion for well location management. Use the Maps API to display PLSS grids in custom mapping applications.",[22,2269,2271],{"id":2270},"mobile-field-apps","Mobile Field Apps",[10,2273,2274],{},"Add PLSS search and coordinate conversion for field workers. The APIs work with any mobile development framework (React Native, Flutter, native iOS\u002FAndroid).",[22,2276,2278],{"id":2277},"gis-platforms","GIS Platforms",[10,2280,2281],{},"Enhance ArcGIS, QGIS, or custom GIS tools with legal land description support. Batch API enables bulk coordinate conversion for spatial analysis.",[22,2283,2285],{"id":2284},"agriculture-technology","Agriculture Technology",[10,2287,2288],{},"Add quarter section lookup to farm management software. Combine with soil and boundary data for precision agriculture applications.",[14,2290,2292],{"id":2291},"getting-an-api-key","Getting an API key",[19,2294,2295,2299,2305,2309,2312,2316,2323,2327],{},[22,2296,2298],{"id":2297},"open-the-developer-portal","Open the Developer Portal",[10,2300,2301,2302,2304],{},"Go to ",[35,2303,1933],{}," in the main navigation to access the Developer Portal.",[22,2306,2308],{"id":2307},"subscribe-to-an-api","Subscribe to an API",[10,2310,2311],{},"Click on the API you want to use (Search, Autocomplete, Batch, or Maps). Select a tier and complete payment.",[22,2313,2315],{"id":2314},"create-an-api-key","Create an API key",[10,2317,2318,2319,2322],{},"Click ",[35,2320,2321],{},"+ Add Key"," and give your key a descriptive name. Copy the key immediately—it won't be shown again.",[22,2324,2326],{"id":2325},"use-your-key","Use your key",[10,2328,2329,2330,2333],{},"Include the API key in the ",[30,2331,2332],{},"x-api-key"," header for all requests.",[14,2335,2337],{"id":2336},"managing-api-subscriptions","Managing API subscriptions",[10,2339,2340,2341,2343],{},"Manage your API subscriptions from the ",[35,2342,1933],{}," page in the main navigation. The Developer Portal provides:",[1614,2345,2346,2352,2358],{},[1617,2347,2348,2351],{},[35,2349,2350],{},"Overview",": View all your API keys and subscriptions",[1617,2353,2354,2357],{},[35,2355,2356],{},"Logs",": Monitor API requests with timestamps and response codes",[1617,2359,2360,2363],{},[35,2361,2362],{},"Alerts",": Configure usage threshold notifications",[22,2365,2367],{"id":2366},"usage-monitoring","Usage monitoring",[10,2369,2370],{},"Track your API usage in real-time from the Overview tab. Usage resets at the start of each billing period.",[22,2372,2374],{"id":2373},"rate-limiting","Rate limiting",[10,2376,2377],{},"Exceeding your rate limit results in HTTP 429 Too Many Requests responses. Implement exponential backoff in your integration to handle rate limits gracefully.",[22,2379,2381],{"id":2380},"quota-management","Quota management",[10,2383,2384],{},"When you reach your monthly quota, requests return HTTP 429 until the next billing cycle. Upgrade your tier for higher quotas or implement caching to reduce request volume.",[14,2386,2388],{"id":2387},"python-sdk","Python SDK",[10,2390,2391],{},"The official Python SDK wraps all API endpoints with typed responses, sync and async clients, and batch support. Install from PyPI:",[99,2393,2395],{"className":101,"code":2394,"language":103,"meta":104,"style":104},"pip install townshipamerica\n",[30,2396,2397],{"__ignoreMap":104},[108,2398,2399,2402,2405],{"class":110,"line":111},[108,2400,2401],{"class":114},"pip",[108,2403,2404],{"class":118}," install",[108,2406,2407],{"class":118}," townshipamerica\n",[99,2409,2411],{"className":1310,"code":2410,"language":1306,"meta":104,"style":104},"from townshipamerica import TownshipAmerica\n\nclient = TownshipAmerica(api_key=\"your_api_key\")\nresult = client.search(\"NENE 12 4N 5E Indian Meridian\")\nprint(result.features[0].properties)\n",[30,2412,2413,2426,2430,2456,2482],{"__ignoreMap":104},[108,2414,2415,2418,2421,2423],{"class":110,"line":111},[108,2416,2417],{"class":968},"from",[108,2419,2420],{"class":976}," townshipamerica ",[108,2422,1318],{"class":968},[108,2424,2425],{"class":976}," TownshipAmerica\n",[108,2427,2428],{"class":110,"line":240},[108,2429,1077],{"emptyLinePlaceholder":1076},[108,2431,2432,2435,2437,2440,2442,2445,2447,2449,2452,2454],{"class":110,"line":267},[108,2433,2434],{"class":976},"client ",[108,2436,1340],{"class":964},[108,2438,2439],{"class":1348}," TownshipAmerica",[108,2441,1008],{"class":236},[108,2443,2444],{"class":1198},"api_key",[108,2446,1340],{"class":964},[108,2448,250],{"class":256},[108,2450,2451],{"class":118},"your_api_key",[108,2453,250],{"class":256},[108,2455,1428],{"class":236},[108,2457,2458,2461,2463,2466,2468,2471,2473,2475,2478,2480],{"class":110,"line":288},[108,2459,2460],{"class":976},"result ",[108,2462,1340],{"class":964},[108,2464,2465],{"class":976}," client",[108,2467,42],{"class":236},[108,2469,2470],{"class":1348},"search",[108,2472,1008],{"class":236},[108,2474,250],{"class":256},[108,2476,2477],{"class":118},"NENE 12 4N 5E Indian Meridian",[108,2479,250],{"class":256},[108,2481,1428],{"class":236},[108,2483,2484,2486,2488,2491,2493,2496,2498,2500,2502,2505],{"class":110,"line":302},[108,2485,1558],{"class":1498},[108,2487,1008],{"class":236},[108,2489,2490],{"class":1348},"result",[108,2492,42],{"class":236},[108,2494,2495],{"class":1029},"features",[108,2497,1134],{"class":236},[108,2499,1138],{"class":1137},[108,2501,1477],{"class":236},[108,2503,2504],{"class":1029},"properties",[108,2506,1428],{"class":236},[10,2508,2509,2510,2513,2514,2518],{},"MIT license. Python 3.9+. See the ",[84,2511,2512],{"href":1837},"Python SDK Quick Start"," for full usage, or ",[84,2515,2517],{"href":2516},"\u002Fguides\u002Fpython-sdk-advanced","Advanced Patterns"," for async, GeoPandas, and production workflows.",[14,2520,905],{"id":904},[10,2522,2523],{},"Access code examples in JavaScript, Python, and cURL from the Developer Portal. Each API endpoint includes ready-to-use code snippets you can copy and customize.",[14,2525,2527],{"id":2526},"checking-system-health","Checking system health",[10,2529,2530,2531,2536],{},"For the current status of Township America's APIs, including uptime, response time, and incident history, visit ",[84,2532,2535],{"href":2533,"rel":2534},"https:\u002F\u002Fstatus.townshipamerica.com",[88],"status.townshipamerica.com",". This site provides real-time updates on API system health.",[14,2538,1656],{"id":2539},"mcp-server",[10,2541,2542,2543,2545,2546,2548,2549,2552],{},"Pro+ and Business plans unlock ",[84,2544,2055],{"href":1655}," — a Model Context Protocol integration for Claude Desktop, Cursor, Continue, and Cline. Create a standalone API key from ",[35,2547,1933],{}," in the main navigation and set it as ",[30,2550,2551],{},"TA_API_KEY"," in your MCP config.",[14,2554,1816],{"id":1815},[1614,2556,2557,2562,2568,2575,2582],{},[1617,2558,2559,2561],{},[84,2560,2512],{"href":1837}," - Install and convert PLSS descriptions in four lines of Python",[1617,2563,2564,2567],{},[84,2565,2566],{"href":2516},"Python SDK Advanced Patterns"," - Async, GeoPandas, and production workflows",[1617,2569,2570,2574],{},[84,2571,2573],{"href":2572},"\u002Fguides\u002Faccount-management","Account Management"," - Manage billing for API subscriptions",[1617,2576,2577,2581],{},[84,2578,2580],{"href":2579},"\u002Fguides\u002Fbatch-conversion","Batch Conversion"," - Web interface for batch processing",[1617,2583,2584,2588],{},[84,2585,2587],{"href":2586},"\u002Fguides\u002Fmap","Interactive Maps"," - Map features available through the Maps API",[10,2590,2591,2592,2596],{},"Need help with your integration? ",[84,2593,2595],{"href":2594},"\u002Fcontact-us","Contact us"," for technical support and custom API solutions.",[1868,2598,2599],{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":104,"searchDepth":240,"depth":240,"links":2601},[2602,2607,2613,2614,2615,2623,2629,2634,2635,2636,2637,2638],{"id":16,"depth":240,"text":17,"children":2603},[2604,2605,2606],{"id":1926,"depth":267,"text":1927},{"id":1937,"depth":267,"text":1938},{"id":1944,"depth":267,"text":1945},{"id":1958,"depth":240,"text":1959,"children":2608},[2609,2610,2611,2612],{"id":1965,"depth":267,"text":1966},{"id":1977,"depth":267,"text":1978},{"id":1989,"depth":267,"text":1990},{"id":2001,"depth":267,"text":2002},{"id":2013,"depth":240,"text":2014},{"id":2059,"depth":240,"text":2060},{"id":2181,"depth":240,"text":2182,"children":2616},[2617,2618,2619,2620,2621,2622],{"id":2185,"depth":267,"text":2186},{"id":2256,"depth":267,"text":2257},{"id":2263,"depth":267,"text":2264},{"id":2270,"depth":267,"text":2271},{"id":2277,"depth":267,"text":2278},{"id":2284,"depth":267,"text":2285},{"id":2291,"depth":240,"text":2292,"children":2624},[2625,2626,2627,2628],{"id":2297,"depth":267,"text":2298},{"id":2307,"depth":267,"text":2308},{"id":2314,"depth":267,"text":2315},{"id":2325,"depth":267,"text":2326},{"id":2336,"depth":240,"text":2337,"children":2630},[2631,2632,2633],{"id":2366,"depth":267,"text":2367},{"id":2373,"depth":267,"text":2374},{"id":2380,"depth":267,"text":2381},{"id":2387,"depth":240,"text":2388},{"id":904,"depth":240,"text":905},{"id":2526,"depth":240,"text":2527},{"id":2539,"depth":240,"text":1656},{"id":1815,"depth":240,"text":1816},"Integrate legal land description APIs into your applications. Convert PLSS descriptions to coordinates, add autocomplete search, process batch records, and display survey grid maps. REST API with JSON responses.","i-lucide-code",{},{"title":1907,"description":2639},"guides\u002Fapi-integration","R-q6tri2y4VKGrGCrLnMBXz278YwSt2ZYPl7VOLochU",{"id":2646,"title":2647,"body":2648,"category":1895,"description":3068,"extension":1897,"icon":3069,"meta":3070,"navigation":1076,"order":324,"path":3071,"seo":3072,"stem":3073,"__hash__":3074},"guides\u002Fguides\u002Fgoogle-sheets-add-on.md","Google Sheets Add-on — PLSS to GPS Conversion in Spreadsheets",{"type":7,"value":2649,"toc":3043},[2650,2653,2660,2664,2711,2715,2718,2827,2831,2838,2842,2845,2851,2854,2860,2863,2867,2874,2877,2899,2902,2906,2909,2968,2971,2975,2979,2982,2986,2993,2997,3003,3007,3010,3014],[10,2651,2652],{},"Convert PLSS legal land descriptions to GPS coordinates directly inside Google Sheets — no copy-pasting into a separate tool, no manual re-entry.",[10,2654,2655,2656,2659],{},"The ",[35,2657,2658],{},"Township America PLSS Converter"," add-on is available on the Google Workspace Marketplace. It supports batch column conversion, cell formulas, and a freemium model (10 free conversions\u002Fmonth, unlimited with a Township America API key).",[14,2661,2663],{"id":2662},"install-the-add-on","Install the add-on",[19,2665,2666,2670,2673,2677,2682,2686,2696,2700],{},[22,2667,2669],{"id":2668},"open-google-sheets","Open Google Sheets",[10,2671,2672],{},"Open any Google Sheets spreadsheet.",[22,2674,2676],{"id":2675},"open-the-add-ons-dialog","Open the Add-ons dialog",[10,2678,2301,2679,42],{},[35,2680,2681],{},"Extensions → Add-ons → Get add-ons",[22,2683,2685],{"id":2684},"search-and-install","Search and install",[10,2687,2688,2689,2691,2692,2695],{},"Search for ",[35,2690,2658],{},", click the listing, then click ",[35,2693,2694],{},"Install",". Grant the requested permissions (read\u002Fwrite the current spreadsheet; show sidebar dialogs).",[22,2697,2699],{"id":2698},"open-the-converter","Open the converter",[10,2701,2702,2703,2706,2707,2710],{},"After installation, the ",[35,2704,2705],{},"Township America"," menu appears in the menu bar. Click ",[35,2708,2709],{},"Extensions → Township America → Open Converter"," to open the sidebar.",[14,2712,2714],{"id":2713},"batch-column-conversion","Batch column conversion",[10,2716,2717],{},"The most common workflow: convert an entire column of PLSS descriptions to lat\u002Flng pairs.",[19,2719,2720,2724,2727,2787,2791,2795,2799,2820,2824],{},[22,2721,2723],{"id":2722},"enter-descriptions-in-a-column","Enter descriptions in a column",[10,2725,2726],{},"Put your PLSS descriptions in a spreadsheet column — one per row. For example:",[146,2728,2729,2742],{},[149,2730,2731],{},[152,2732,2733,2736,2739],{},[155,2734,2735],{},"A",[155,2737,2738],{},"B",[155,2740,2741],{},"C",[165,2743,2744,2761,2770,2778],{},[152,2745,2746,2751,2756],{},[170,2747,2748],{},[35,2749,2750],{},"PLSS Description",[170,2752,2753],{},[35,2754,2755],{},"Latitude",[170,2757,2758],{},[35,2759,2760],{},"Longitude",[152,2762,2763,2766,2768],{},[170,2764,2765],{},"NE 14 5N 3W 6th Meridian",[170,2767],{},[170,2769],{},[152,2771,2772,2774,2776],{},[170,2773,2477],{},[170,2775],{},[170,2777],{},[152,2779,2780,2783,2785],{},[170,2781,2782],{},"SW 22 3S 68W 6th PM",[170,2784],{},[170,2786],{},[22,2788,2790],{"id":2789},"open-the-converter-sidebar","Open the converter sidebar",[10,2792,2793],{},[35,2794,2709],{},[22,2796,2798],{"id":2797},"set-the-input-and-output-ranges","Set the input and output ranges",[1614,2800,2801,2810],{},[1617,2802,2803,2806,2807,1017],{},[35,2804,2805],{},"Input range",": the cell range containing your descriptions (e.g. ",[30,2808,2809],{},"A2:A100",[1617,2811,2812,2815,2816,2819],{},[35,2813,2814],{},"Output cell",": the first cell for latitude output (e.g. ",[30,2817,2818],{},"B2","). Longitude is written to the next column automatically.",[22,2821,2823],{"id":2822},"click-convert-column","Click Convert Column",[10,2825,2826],{},"Results appear in the output columns. Rows that could not be converted show an error message in the cell.",[22,2828,2830],{"id":2829},"menu-shortcut","Menu shortcut",[10,2832,2833,2834,2837],{},"Select a column of PLSS descriptions, then choose ",[35,2835,2836],{},"Extensions → Township America → Convert Selected Column",". Latitude and longitude are written to the adjacent two columns without opening the sidebar.",[14,2839,2841],{"id":2840},"cell-formulas","Cell formulas",[10,2843,2844],{},"For single conversions or building formulas that reference other cells, use the custom functions:",[99,2846,2849],{"className":2847,"code":2848,"language":128},[126],"=PLSS_TO_LAT(\"NE 14 5N 3W 6th Meridian\")\n=PLSS_TO_LNG(\"NE 14 5N 3W 6th Meridian\")\n",[30,2850,2848],{"__ignoreMap":104},[10,2852,2853],{},"You can also reference another cell:",[99,2855,2858],{"className":2856,"code":2857,"language":128},[126],"=PLSS_TO_LAT(A2)\n=PLSS_TO_LNG(A2)\n",[30,2859,2857],{"__ignoreMap":104},[10,2861,2862],{},"Cell formulas count against the same monthly free limit as batch conversions.",[14,2864,2866],{"id":2865},"freemium-limits-and-api-keys","Freemium limits and API keys",[10,2868,2869,2870,2873],{},"The add-on includes ",[35,2871,2872],{},"10 free conversions per calendar month"," — no API key required. Free conversions reset on the 1st of each month.",[10,2875,2876],{},"For unlimited conversions, add a Township America API key:",[2878,2879,2880,2886,2889],"ol",{},[1617,2881,2301,2882,2885],{},[84,2883,2884],{"href":1732},"townshipamerica.com\u002Fapi"," and subscribe to the Search API (Build tier, $40\u002Fmo — includes 1,000 conversions\u002Fmonth).",[1617,2887,2888],{},"Create an API key in the Developer Portal.",[1617,2890,2891,2892,2895,2896,42],{},"In Google Sheets, open ",[35,2893,2894],{},"Extensions → Township America → Settings",", paste your key, and click ",[35,2897,2898],{},"Save Key",[10,2900,2901],{},"Your API key is stored securely in your Google account's user properties and is only sent to the Township America API.",[14,2903,2905],{"id":2904},"supported-plss-formats","Supported PLSS formats",[10,2907,2908],{},"The add-on accepts any description format understood by the Township America API:",[146,2910,2911,2919],{},[149,2912,2913],{},[152,2914,2915,2917],{},[155,2916,160],{},[155,2918,163],{},[165,2920,2921,2930,2939,2949,2959],{},[152,2922,2923,2926],{},[170,2924,2925],{},"Quarter section",[170,2927,2928],{},[30,2929,2765],{},[152,2931,2932,2935],{},[170,2933,2934],{},"Quarter-quarter section",[170,2936,2937],{},[30,2938,2477],{},[152,2940,2941,2944],{},[170,2942,2943],{},"Section",[170,2945,2946],{},[30,2947,2948],{},"Sec 12 T4N R5E Indian Meridian",[152,2950,2951,2954],{},[170,2952,2953],{},"Township",[170,2955,2956],{},[30,2957,2958],{},"T4N R5E 6th PM",[152,2960,2961,2964],{},[170,2962,2963],{},"Abbreviated PM",[170,2965,2966],{},[30,2967,2782],{},[10,2969,2970],{},"Coverage includes all 30 PLSS states.",[14,2972,2974],{"id":2973},"troubleshooting","Troubleshooting",[22,2976,2978],{"id":2977},"no-results-found","\"No results found\"",[10,2980,2981],{},"The description may not match a known PLSS location. Check spelling, meridian name, and township\u002Frange direction (N\u002FS, E\u002FW).",[22,2983,2985],{"id":2984},"free-limit-reached","\"Free limit reached\"",[10,2987,2988,2989,2992],{},"You've used your 10 free conversions for the month. Add an API key in ",[35,2990,2991],{},"Settings"," to continue, or wait until the 1st of next month.",[22,2994,2996],{"id":2995},"invalid-api-key","\"Invalid API key\"",[10,2998,2999,3000,42],{},"Double-check your key in the Settings dialog. Keys are generated in the ",[84,3001,3002],{"href":1732},"Township America Developer Portal",[22,3004,3006],{"id":3005},"network-error","\"Network error\"",[10,3008,3009],{},"Google Sheets could not reach the Township America API. Check your internet connection and try again.",[14,3011,3013],{"id":3012},"related-resources","Related resources",[1614,3015,3016,3021,3026,3031,3037],{},[1617,3017,3018,3020],{},[84,3019,1955],{"href":1732}," — full reference for the Township America REST API",[1617,3022,3023,3025],{},[84,3024,1824],{"href":1823}," — authenticate and make API requests from any app",[1617,3027,3028,3030],{},[84,3029,2388],{"href":1837}," — convert PLSS descriptions from Python scripts",[1617,3032,3033,3036],{},[84,3034,3035],{"href":2579},"Batch conversion"," — web-based batch processing without spreadsheets",[1617,3038,3039,3042],{},[84,3040,3041],{"href":2594},"Contact support"," — help with the add-on or API access",{"title":104,"searchDepth":240,"depth":240,"links":3044},[3045,3051,3058,3059,3060,3061,3067],{"id":2662,"depth":240,"text":2663,"children":3046},[3047,3048,3049,3050],{"id":2668,"depth":267,"text":2669},{"id":2675,"depth":267,"text":2676},{"id":2684,"depth":267,"text":2685},{"id":2698,"depth":267,"text":2699},{"id":2713,"depth":240,"text":2714,"children":3052},[3053,3054,3055,3056,3057],{"id":2722,"depth":267,"text":2723},{"id":2789,"depth":267,"text":2790},{"id":2797,"depth":267,"text":2798},{"id":2822,"depth":267,"text":2823},{"id":2829,"depth":267,"text":2830},{"id":2840,"depth":240,"text":2841},{"id":2865,"depth":240,"text":2866},{"id":2904,"depth":240,"text":2905},{"id":2973,"depth":240,"text":2974,"children":3062},[3063,3064,3065,3066],{"id":2977,"depth":267,"text":2978},{"id":2984,"depth":267,"text":2985},{"id":2995,"depth":267,"text":2996},{"id":3005,"depth":267,"text":3006},{"id":3012,"depth":240,"text":3013},"Convert PLSS legal land descriptions to GPS coordinates directly in Google Sheets. Free add-on with 10 conversions\u002Fmonth, unlimited with API key. Batch column conversion, cell formulas, and API key management.","i-lucide-table",{},"\u002Fguides\u002Fgoogle-sheets-add-on",{"title":2647,"description":3068},"guides\u002Fgoogle-sheets-add-on","z9LFqa-obnS7Wo8iDgWkSJ44arAzT9393kEIbg3C_BY",{"id":3076,"title":3077,"body":3078,"category":1895,"description":4250,"extension":1897,"icon":4251,"meta":4252,"navigation":1076,"order":240,"path":1837,"seo":4253,"stem":4254,"__hash__":4255},"guides\u002Fguides\u002Fpython-sdk.md","Python SDK Quick Start — PLSS Coordinate Conversion in Python",{"type":7,"value":3079,"toc":4236},[3080,3087,3091,3094,3106,3116,3120,3310,3320,3324,3327,3404,3423,3466,3470,3473,3557,3563,3627,3630,3633,3789,3792,3879,3883,3886,4101,4105,4112,4202,4204,4222,4233],[10,3081,3082,3083,3086],{},"Convert PLSS legal land descriptions to GPS coordinates in Python with the official ",[30,3084,3085],{},"townshipamerica"," package. MIT license, typed Pydantic v2 models, sync and async clients.",[14,3088,3090],{"id":3089},"installation","Installation",[10,3092,3093],{},"Install from PyPI with pip:",[99,3095,3096],{"className":101,"code":2394,"language":103,"meta":104,"style":104},[30,3097,3098],{"__ignoreMap":104},[108,3099,3100,3102,3104],{"class":110,"line":111},[108,3101,2401],{"class":114},[108,3103,2404],{"class":118},[108,3105,2407],{"class":118},[10,3107,3108,3109,72,3112,3115],{},"Requires Python 3.9 or later. Dependencies (",[30,3110,3111],{},"httpx",[30,3113,3114],{},"pydantic",") install automatically.",[14,3117,3119],{"id":3118},"your-first-conversion","Your first conversion",[19,3121,3122,3124,3133,3137,3140,3161,3165],{},[22,3123,1927],{"id":1926},[10,3125,3126,3127,3132],{},"Sign up at ",[84,3128,3131],{"href":3129,"rel":3130},"https:\u002F\u002Ftownshipamerica.com\u002Fapp",[88],"townshipamerica.com\u002Fapp"," and subscribe to the Search API from the Developer Portal.",[22,3134,3136],{"id":3135},"set-your-api-key","Set your API key",[10,3138,3139],{},"Store your key as an environment variable — never hardcode it in source files.",[99,3141,3143],{"className":101,"code":3142,"language":103,"meta":104,"style":104},"export TOWNSHIPAMERICA_API_KEY=\"your_api_key\"\n",[30,3144,3145],{"__ignoreMap":104},[108,3146,3147,3150,3153,3155,3157,3159],{"class":110,"line":111},[108,3148,3149],{"class":957},"export",[108,3151,3152],{"class":976}," TOWNSHIPAMERICA_API_KEY",[108,3154,1340],{"class":964},[108,3156,250],{"class":256},[108,3158,2451],{"class":118},[108,3160,362],{"class":256},[22,3162,3164],{"id":3163},"convert-a-plss-description","Convert a PLSS description",[99,3166,3168],{"className":1310,"code":3167,"language":1306,"meta":104,"style":104},"import os\nfrom townshipamerica import TownshipAmerica\n\nclient = TownshipAmerica(api_key=os.environ[\"TOWNSHIPAMERICA_API_KEY\"])\nresult = client.search(\"NENE 12 4N 5E Indian Meridian\")\n\nfeature = result.features[0]\nprint(feature.properties)           # Section metadata\nprint(feature.geometry.coordinates) # Boundary polygon\n",[30,3169,3170,3176,3186,3190,3222,3244,3248,3269,3287],{"__ignoreMap":104},[108,3171,3172,3174],{"class":110,"line":111},[108,3173,1318],{"class":968},[108,3175,1321],{"class":976},[108,3177,3178,3180,3182,3184],{"class":110,"line":240},[108,3179,2417],{"class":968},[108,3181,2420],{"class":976},[108,3183,1318],{"class":968},[108,3185,2425],{"class":976},[108,3187,3188],{"class":110,"line":267},[108,3189,1077],{"emptyLinePlaceholder":1076},[108,3191,3192,3194,3196,3198,3200,3202,3204,3207,3209,3211,3213,3215,3218,3220],{"class":110,"line":288},[108,3193,2434],{"class":976},[108,3195,1340],{"class":964},[108,3197,2439],{"class":1348},[108,3199,1008],{"class":236},[108,3201,2444],{"class":1198},[108,3203,1340],{"class":964},[108,3205,3206],{"class":1348},"os",[108,3208,42],{"class":236},[108,3210,1412],{"class":1029},[108,3212,1134],{"class":236},[108,3214,250],{"class":256},[108,3216,3217],{"class":118},"TOWNSHIPAMERICA_API_KEY",[108,3219,250],{"class":256},[108,3221,1544],{"class":236},[108,3223,3224,3226,3228,3230,3232,3234,3236,3238,3240,3242],{"class":110,"line":302},[108,3225,2460],{"class":976},[108,3227,1340],{"class":964},[108,3229,2465],{"class":976},[108,3231,42],{"class":236},[108,3233,2470],{"class":1348},[108,3235,1008],{"class":236},[108,3237,250],{"class":256},[108,3239,2477],{"class":118},[108,3241,250],{"class":256},[108,3243,1428],{"class":236},[108,3245,3246],{"class":110,"line":324},[108,3247,1077],{"emptyLinePlaceholder":1076},[108,3249,3250,3253,3255,3258,3260,3262,3264,3266],{"class":110,"line":345},[108,3251,3252],{"class":976},"feature ",[108,3254,1340],{"class":964},[108,3256,3257],{"class":976}," result",[108,3259,42],{"class":236},[108,3261,2495],{"class":1029},[108,3263,1134],{"class":236},[108,3265,1138],{"class":1137},[108,3267,3268],{"class":236},"]\n",[108,3270,3271,3273,3275,3278,3280,3282,3284],{"class":110,"line":365},[108,3272,1558],{"class":1498},[108,3274,1008],{"class":236},[108,3276,3277],{"class":1348},"feature",[108,3279,42],{"class":236},[108,3281,2504],{"class":1029},[108,3283,1017],{"class":236},[108,3285,3286],{"class":1108},"           # Section metadata\n",[108,3288,3289,3291,3293,3295,3297,3300,3302,3305,3307],{"class":110,"line":371},[108,3290,1558],{"class":1498},[108,3292,1008],{"class":236},[108,3294,3277],{"class":1348},[108,3296,42],{"class":236},[108,3298,3299],{"class":1029},"geometry",[108,3301,42],{"class":236},[108,3303,3304],{"class":1029},"coordinates",[108,3306,1017],{"class":236},[108,3308,3309],{"class":1108}," # Boundary polygon\n",[10,3311,3312,3313,3315,3316,3319],{},"That's it — ",[30,3314,2490],{}," is a typed ",[30,3317,3318],{},"FeatureCollection"," with GeoJSON geometry and PLSS metadata.",[14,3321,3323],{"id":3322},"reverse-geocoding","Reverse geocoding",[10,3325,3326],{},"Find the PLSS legal land description at a GPS coordinate:",[99,3328,3330],{"className":1310,"code":3329,"language":1306,"meta":104,"style":104},"result = client.reverse(-97.5, 36.1)\n\nfeature = result.features[0]\nprint(feature.properties.descriptor)  # \"NWSE 15 4N 7W Indian Meridian\"\n",[30,3331,3332,3360,3364,3382],{"__ignoreMap":104},[108,3333,3334,3336,3338,3340,3342,3345,3347,3350,3353,3355,3358],{"class":110,"line":111},[108,3335,2460],{"class":976},[108,3337,1340],{"class":964},[108,3339,2465],{"class":976},[108,3341,42],{"class":236},[108,3343,3344],{"class":1348},"reverse",[108,3346,1008],{"class":236},[108,3348,3349],{"class":964},"-",[108,3351,3352],{"class":1137},"97.5",[108,3354,1490],{"class":236},[108,3356,3357],{"class":1137}," 36.1",[108,3359,1428],{"class":236},[108,3361,3362],{"class":110,"line":240},[108,3363,1077],{"emptyLinePlaceholder":1076},[108,3365,3366,3368,3370,3372,3374,3376,3378,3380],{"class":110,"line":267},[108,3367,3252],{"class":976},[108,3369,1340],{"class":964},[108,3371,3257],{"class":976},[108,3373,42],{"class":236},[108,3375,2495],{"class":1029},[108,3377,1134],{"class":236},[108,3379,1138],{"class":1137},[108,3381,3268],{"class":236},[108,3383,3384,3386,3388,3390,3392,3394,3396,3399,3401],{"class":110,"line":288},[108,3385,1558],{"class":1498},[108,3387,1008],{"class":236},[108,3389,3277],{"class":1348},[108,3391,42],{"class":236},[108,3393,2504],{"class":1029},[108,3395,42],{"class":236},[108,3397,3398],{"class":1029},"descriptor",[108,3400,1017],{"class":236},[108,3402,3403],{"class":1108},"  # \"NWSE 15 4N 7W Indian Meridian\"\n",[10,3405,2655,3406,3409,3410,72,3413,72,3416,3419,3420,253],{},[30,3407,3408],{},"unit"," parameter controls precision — ",[30,3411,3412],{},"\"Township\"",[30,3414,3415],{},"\"Section\"",[30,3417,3418],{},"\"Quarter Section\"",", or ",[30,3421,3422],{},"\"all\"",[99,3424,3426],{"className":1310,"code":3425,"language":1306,"meta":104,"style":104},"result = client.reverse(-97.5, 36.1, unit=\"Quarter Section\")\n",[30,3427,3428],{"__ignoreMap":104},[108,3429,3430,3432,3434,3436,3438,3440,3442,3444,3446,3448,3450,3452,3455,3457,3459,3462,3464],{"class":110,"line":111},[108,3431,2460],{"class":976},[108,3433,1340],{"class":964},[108,3435,2465],{"class":976},[108,3437,42],{"class":236},[108,3439,3344],{"class":1348},[108,3441,1008],{"class":236},[108,3443,3349],{"class":964},[108,3445,3352],{"class":1137},[108,3447,1490],{"class":236},[108,3449,3357],{"class":1137},[108,3451,1490],{"class":236},[108,3453,3454],{"class":1198}," unit",[108,3456,1340],{"class":964},[108,3458,250],{"class":256},[108,3460,3461],{"class":118},"Quarter Section",[108,3463,250],{"class":256},[108,3465,1428],{"class":236},[14,3467,3469],{"id":3468},"autocomplete","Autocomplete",[10,3471,3472],{},"Add type-ahead search for PLSS descriptions:",[99,3474,3476],{"className":1310,"code":3475,"language":1306,"meta":104,"style":104},"suggestions = client.autocomplete(\"T4N R5E\", limit=5)\nfor item in suggestions.results:\n    print(item.text, item.location)\n",[30,3477,3478,3512,3532],{"__ignoreMap":104},[108,3479,3480,3483,3485,3487,3489,3491,3493,3495,3498,3500,3502,3505,3507,3510],{"class":110,"line":111},[108,3481,3482],{"class":976},"suggestions ",[108,3484,1340],{"class":964},[108,3486,2465],{"class":976},[108,3488,42],{"class":236},[108,3490,3468],{"class":1348},[108,3492,1008],{"class":236},[108,3494,250],{"class":256},[108,3496,3497],{"class":118},"T4N R5E",[108,3499,250],{"class":256},[108,3501,1490],{"class":236},[108,3503,3504],{"class":1198}," limit",[108,3506,1340],{"class":964},[108,3508,3509],{"class":1137},"5",[108,3511,1428],{"class":236},[108,3513,3514,3516,3519,3521,3524,3526,3529],{"class":110,"line":240},[108,3515,1458],{"class":968},[108,3517,3518],{"class":976}," item ",[108,3520,1464],{"class":968},[108,3522,3523],{"class":976}," suggestions",[108,3525,42],{"class":236},[108,3527,3528],{"class":1029},"results",[108,3530,3531],{"class":236},":\n",[108,3533,3534,3536,3538,3541,3543,3545,3547,3550,3552,3555],{"class":110,"line":267},[108,3535,1499],{"class":1498},[108,3537,1008],{"class":236},[108,3539,3540],{"class":1348},"item",[108,3542,42],{"class":236},[108,3544,128],{"class":1029},[108,3546,1490],{"class":236},[108,3548,3549],{"class":1348}," item",[108,3551,42],{"class":236},[108,3553,3554],{"class":1029},"location",[108,3556,1428],{"class":236},[10,3558,2655,3559,3562],{},[30,3560,3561],{},"proximity"," parameter biases results toward a GPS coordinate:",[99,3564,3566],{"className":1310,"code":3565,"language":1306,"meta":104,"style":104},"suggestions = client.autocomplete(\n    \"T4N\",\n    limit=5,\n    proximity=(-97.5, 36.1)\n)\n",[30,3567,3568,3582,3593,3604,3623],{"__ignoreMap":104},[108,3569,3570,3572,3574,3576,3578,3580],{"class":110,"line":111},[108,3571,3482],{"class":976},[108,3573,1340],{"class":964},[108,3575,2465],{"class":976},[108,3577,42],{"class":236},[108,3579,3468],{"class":1348},[108,3581,977],{"class":236},[108,3583,3584,3586,3589,3591],{"class":110,"line":240},[108,3585,305],{"class":256},[108,3587,3588],{"class":118},"T4N",[108,3590,250],{"class":256},[108,3592,264],{"class":236},[108,3594,3595,3598,3600,3602],{"class":110,"line":267},[108,3596,3597],{"class":1198},"    limit",[108,3599,1340],{"class":964},[108,3601,3509],{"class":1137},[108,3603,264],{"class":236},[108,3605,3606,3609,3611,3613,3615,3617,3619,3621],{"class":110,"line":288},[108,3607,3608],{"class":1198},"    proximity",[108,3610,1340],{"class":964},[108,3612,1008],{"class":236},[108,3614,3349],{"class":964},[108,3616,3352],{"class":1137},[108,3618,1490],{"class":236},[108,3620,3357],{"class":1137},[108,3622,1428],{"class":236},[108,3624,3625],{"class":110,"line":302},[108,3626,1428],{"class":236},[14,3628,3035],{"id":3629},"batch-conversion",[10,3631,3632],{},"Convert up to 100 PLSS descriptions in a single request:",[99,3634,3636],{"className":1310,"code":3635,"language":1306,"meta":104,"style":104},"locations = [\n    \"NENE 12 4N 5E Indian Meridian\",\n    \"NESW 25 5N 30E Mount Diablo Meridian\",\n    \"SWNE 22 3N 7E Montana Meridian\",\n]\n\nresults = client.batch_search(locations)\nfor fc in results:\n    feature = fc.features[0]\n    print(feature.properties.descriptor, feature.geometry.coordinates[0][0][:2])\n",[30,3637,3638,3648,3658,3669,3680,3684,3688,3709,3723,3743],{"__ignoreMap":104},[108,3639,3640,3643,3645],{"class":110,"line":111},[108,3641,3642],{"class":976},"locations ",[108,3644,1340],{"class":964},[108,3646,3647],{"class":236}," [\n",[108,3649,3650,3652,3654,3656],{"class":110,"line":240},[108,3651,305],{"class":256},[108,3653,2477],{"class":118},[108,3655,250],{"class":256},[108,3657,264],{"class":236},[108,3659,3660,3662,3665,3667],{"class":110,"line":267},[108,3661,305],{"class":256},[108,3663,3664],{"class":118},"NESW 25 5N 30E Mount Diablo Meridian",[108,3666,250],{"class":256},[108,3668,264],{"class":236},[108,3670,3671,3673,3676,3678],{"class":110,"line":288},[108,3672,305],{"class":256},[108,3674,3675],{"class":118},"SWNE 22 3N 7E Montana Meridian",[108,3677,250],{"class":256},[108,3679,264],{"class":236},[108,3681,3682],{"class":110,"line":302},[108,3683,3268],{"class":236},[108,3685,3686],{"class":110,"line":324},[108,3687,1077],{"emptyLinePlaceholder":1076},[108,3689,3690,3693,3695,3697,3699,3702,3704,3707],{"class":110,"line":345},[108,3691,3692],{"class":976},"results ",[108,3694,1340],{"class":964},[108,3696,2465],{"class":976},[108,3698,42],{"class":236},[108,3700,3701],{"class":1348},"batch_search",[108,3703,1008],{"class":236},[108,3705,3706],{"class":1348},"locations",[108,3708,1428],{"class":236},[108,3710,3711,3713,3716,3718,3721],{"class":110,"line":365},[108,3712,1458],{"class":968},[108,3714,3715],{"class":976}," fc ",[108,3717,1464],{"class":968},[108,3719,3720],{"class":976}," results",[108,3722,3531],{"class":236},[108,3724,3725,3728,3730,3733,3735,3737,3739,3741],{"class":110,"line":371},[108,3726,3727],{"class":976},"    feature ",[108,3729,1340],{"class":964},[108,3731,3732],{"class":976}," fc",[108,3734,42],{"class":236},[108,3736,2495],{"class":1029},[108,3738,1134],{"class":236},[108,3740,1138],{"class":1137},[108,3742,3268],{"class":236},[108,3744,3745,3747,3749,3751,3753,3755,3757,3759,3761,3764,3766,3768,3770,3772,3774,3776,3779,3781,3784,3787],{"class":110,"line":384},[108,3746,1499],{"class":1498},[108,3748,1008],{"class":236},[108,3750,3277],{"class":1348},[108,3752,42],{"class":236},[108,3754,2504],{"class":1029},[108,3756,42],{"class":236},[108,3758,3398],{"class":1029},[108,3760,1490],{"class":236},[108,3762,3763],{"class":1348}," feature",[108,3765,42],{"class":236},[108,3767,3299],{"class":1029},[108,3769,42],{"class":236},[108,3771,3304],{"class":1029},[108,3773,1134],{"class":236},[108,3775,1138],{"class":1137},[108,3777,3778],{"class":236},"][",[108,3780,1138],{"class":1137},[108,3782,3783],{"class":236},"][:",[108,3785,3786],{"class":1137},"2",[108,3788,1544],{"class":236},[10,3790,3791],{},"Batch reverse geocoding works the same way:",[99,3793,3795],{"className":1310,"code":3794,"language":1306,"meta":104,"style":104},"coordinates = [(-97.5, 36.1), (-110.0, 45.5), (-104.8, 39.7)]\nresults = client.batch_reverse(coordinates, unit=\"Section\")\n",[30,3796,3797,3848],{"__ignoreMap":104},[108,3798,3799,3802,3804,3807,3809,3811,3813,3815,3818,3821,3823,3826,3828,3831,3833,3835,3837,3840,3842,3845],{"class":110,"line":111},[108,3800,3801],{"class":976},"coordinates ",[108,3803,1340],{"class":964},[108,3805,3806],{"class":236}," [(",[108,3808,3349],{"class":964},[108,3810,3352],{"class":1137},[108,3812,1490],{"class":236},[108,3814,3357],{"class":1137},[108,3816,3817],{"class":236},"),",[108,3819,3820],{"class":236}," (",[108,3822,3349],{"class":964},[108,3824,3825],{"class":1137},"110.0",[108,3827,1490],{"class":236},[108,3829,3830],{"class":1137}," 45.5",[108,3832,3817],{"class":236},[108,3834,3820],{"class":236},[108,3836,3349],{"class":964},[108,3838,3839],{"class":1137},"104.8",[108,3841,1490],{"class":236},[108,3843,3844],{"class":1137}," 39.7",[108,3846,3847],{"class":236},")]\n",[108,3849,3850,3852,3854,3856,3858,3861,3863,3865,3867,3869,3871,3873,3875,3877],{"class":110,"line":240},[108,3851,3692],{"class":976},[108,3853,1340],{"class":964},[108,3855,2465],{"class":976},[108,3857,42],{"class":236},[108,3859,3860],{"class":1348},"batch_reverse",[108,3862,1008],{"class":236},[108,3864,3304],{"class":1348},[108,3866,1490],{"class":236},[108,3868,3454],{"class":1198},[108,3870,1340],{"class":964},[108,3872,250],{"class":256},[108,3874,2943],{"class":118},[108,3876,250],{"class":256},[108,3878,1428],{"class":236},[14,3880,3882],{"id":3881},"error-handling","Error handling",[10,3884,3885],{},"The SDK raises typed exceptions mapped to HTTP status codes:",[99,3887,3889],{"className":1310,"code":3888,"language":1306,"meta":104,"style":104},"from townshipamerica.exceptions import (\n    AuthenticationError,\n    NotFoundError,\n    RateLimitError,\n    ValidationError,\n)\n\ntry:\n    result = client.search(\"invalid input\")\nexcept ValidationError as e:\n    print(f\"Bad input: {e}\")\nexcept AuthenticationError:\n    print(\"Check your API key\")\nexcept RateLimitError as e:\n    print(f\"Rate limited — retry after {e.retry_after} seconds\")\nexcept NotFoundError:\n    print(\"No PLSS data at that location\")\n",[30,3890,3891,3908,3915,3922,3929,3936,3940,3944,3951,3975,3991,4013,4022,4037,4050,4077,4086],{"__ignoreMap":104},[108,3892,3893,3895,3898,3900,3903,3905],{"class":110,"line":111},[108,3894,2417],{"class":968},[108,3896,3897],{"class":976}," townshipamerica",[108,3899,42],{"class":236},[108,3901,3902],{"class":976},"exceptions ",[108,3904,1318],{"class":968},[108,3906,3907],{"class":236}," (\n",[108,3909,3910,3913],{"class":110,"line":240},[108,3911,3912],{"class":976},"    AuthenticationError",[108,3914,264],{"class":236},[108,3916,3917,3920],{"class":110,"line":267},[108,3918,3919],{"class":976},"    NotFoundError",[108,3921,264],{"class":236},[108,3923,3924,3927],{"class":110,"line":288},[108,3925,3926],{"class":976},"    RateLimitError",[108,3928,264],{"class":236},[108,3930,3931,3934],{"class":110,"line":302},[108,3932,3933],{"class":976},"    ValidationError",[108,3935,264],{"class":236},[108,3937,3938],{"class":110,"line":324},[108,3939,1428],{"class":236},[108,3941,3942],{"class":110,"line":345},[108,3943,1077],{"emptyLinePlaceholder":1076},[108,3945,3946,3949],{"class":110,"line":365},[108,3947,3948],{"class":968},"try",[108,3950,3531],{"class":236},[108,3952,3953,3956,3958,3960,3962,3964,3966,3968,3971,3973],{"class":110,"line":371},[108,3954,3955],{"class":976},"    result ",[108,3957,1340],{"class":964},[108,3959,2465],{"class":976},[108,3961,42],{"class":236},[108,3963,2470],{"class":1348},[108,3965,1008],{"class":236},[108,3967,250],{"class":256},[108,3969,3970],{"class":118},"invalid input",[108,3972,250],{"class":256},[108,3974,1428],{"class":236},[108,3976,3977,3980,3983,3986,3989],{"class":110,"line":384},[108,3978,3979],{"class":968},"except",[108,3981,3982],{"class":976}," ValidationError ",[108,3984,3985],{"class":968},"as",[108,3987,3988],{"class":976}," e",[108,3990,3531],{"class":236},[108,3992,3993,3995,3997,3999,4002,4004,4007,4009,4011],{"class":110,"line":406},[108,3994,1499],{"class":1498},[108,3996,1008],{"class":236},[108,3998,1563],{"class":957},[108,4000,4001],{"class":118},"\"Bad input: ",[108,4003,1371],{"class":1137},[108,4005,4006],{"class":1348},"e",[108,4008,1603],{"class":1137},[108,4010,250],{"class":118},[108,4012,1428],{"class":236},[108,4014,4015,4017,4020],{"class":110,"line":423},[108,4016,3979],{"class":968},[108,4018,4019],{"class":976}," AuthenticationError",[108,4021,3531],{"class":236},[108,4023,4024,4026,4028,4030,4033,4035],{"class":110,"line":440},[108,4025,1499],{"class":1498},[108,4027,1008],{"class":236},[108,4029,250],{"class":256},[108,4031,4032],{"class":118},"Check your API key",[108,4034,250],{"class":256},[108,4036,1428],{"class":236},[108,4038,4039,4041,4044,4046,4048],{"class":110,"line":457},[108,4040,3979],{"class":968},[108,4042,4043],{"class":976}," RateLimitError ",[108,4045,3985],{"class":968},[108,4047,3988],{"class":976},[108,4049,3531],{"class":236},[108,4051,4052,4054,4056,4058,4061,4063,4065,4067,4070,4072,4075],{"class":110,"line":478},[108,4053,1499],{"class":1498},[108,4055,1008],{"class":236},[108,4057,1563],{"class":957},[108,4059,4060],{"class":118},"\"Rate limited — retry after ",[108,4062,1371],{"class":1137},[108,4064,4006],{"class":1348},[108,4066,42],{"class":236},[108,4068,4069],{"class":1029},"retry_after",[108,4071,1603],{"class":1137},[108,4073,4074],{"class":118}," seconds\"",[108,4076,1428],{"class":236},[108,4078,4079,4081,4084],{"class":110,"line":495},[108,4080,3979],{"class":968},[108,4082,4083],{"class":976}," NotFoundError",[108,4085,3531],{"class":236},[108,4087,4088,4090,4092,4094,4097,4099],{"class":110,"line":500},[108,4089,1499],{"class":1498},[108,4091,1008],{"class":236},[108,4093,250],{"class":256},[108,4095,4096],{"class":118},"No PLSS data at that location",[108,4098,250],{"class":256},[108,4100,1428],{"class":236},[14,4102,4104],{"id":4103},"context-manager","Context manager",[10,4106,4107,4108,4111],{},"The client supports ",[30,4109,4110],{},"with"," statements for automatic cleanup:",[99,4113,4115],{"className":1310,"code":4114,"language":1306,"meta":104,"style":104},"with TownshipAmerica(api_key=os.environ[\"TOWNSHIPAMERICA_API_KEY\"]) as client:\n    result = client.search(\"NENE 12 4N 5E Indian Meridian\")\n    print(result.features[0].properties)\n# Connection closed automatically\n",[30,4116,4117,4153,4175,4197],{"__ignoreMap":104},[108,4118,4119,4121,4123,4125,4127,4129,4131,4133,4135,4137,4139,4141,4143,4146,4149,4151],{"class":110,"line":111},[108,4120,4110],{"class":968},[108,4122,2439],{"class":1348},[108,4124,1008],{"class":236},[108,4126,2444],{"class":1198},[108,4128,1340],{"class":964},[108,4130,3206],{"class":1348},[108,4132,42],{"class":236},[108,4134,1412],{"class":1029},[108,4136,1134],{"class":236},[108,4138,250],{"class":256},[108,4140,3217],{"class":118},[108,4142,250],{"class":256},[108,4144,4145],{"class":236},"])",[108,4147,4148],{"class":968}," as",[108,4150,2465],{"class":976},[108,4152,3531],{"class":236},[108,4154,4155,4157,4159,4161,4163,4165,4167,4169,4171,4173],{"class":110,"line":240},[108,4156,3955],{"class":976},[108,4158,1340],{"class":964},[108,4160,2465],{"class":976},[108,4162,42],{"class":236},[108,4164,2470],{"class":1348},[108,4166,1008],{"class":236},[108,4168,250],{"class":256},[108,4170,2477],{"class":118},[108,4172,250],{"class":256},[108,4174,1428],{"class":236},[108,4176,4177,4179,4181,4183,4185,4187,4189,4191,4193,4195],{"class":110,"line":267},[108,4178,1499],{"class":1498},[108,4180,1008],{"class":236},[108,4182,2490],{"class":1348},[108,4184,42],{"class":236},[108,4186,2495],{"class":1029},[108,4188,1134],{"class":236},[108,4190,1138],{"class":1137},[108,4192,1477],{"class":236},[108,4194,2504],{"class":1029},[108,4196,1428],{"class":236},[108,4198,4199],{"class":110,"line":288},[108,4200,4201],{"class":1108},"# Connection closed automatically\n",[14,4203,1816],{"id":1815},[1614,4205,4206,4212,4218],{},[1617,4207,4208,4211],{},[84,4209,4210],{"href":2516},"Python SDK Async & GeoPandas Patterns"," - Async workflows, GeoPandas integration, and production patterns",[1617,4213,4214,4217],{},[84,4215,4216],{"href":1823},"API Integration Guide"," - REST API endpoints, pricing, and integration patterns",[1617,4219,4220,2581],{},[84,4221,2580],{"href":2579},[10,4223,4224,4225,4227,4228,42],{},"Need help? ",[84,4226,2595],{"href":2594}," or open an issue on ",[84,4229,4232],{"href":4230,"rel":4231},"https:\u002F\u002Fgithub.com\u002Fmepa1363\u002Ftownshipamerica-web\u002Fissues",[88],"GitHub",[1868,4234,4235],{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}",{"title":104,"searchDepth":240,"depth":240,"links":4237},[4238,4239,4244,4245,4246,4247,4248,4249],{"id":3089,"depth":240,"text":3090},{"id":3118,"depth":240,"text":3119,"children":4240},[4241,4242,4243],{"id":1926,"depth":267,"text":1927},{"id":3135,"depth":267,"text":3136},{"id":3163,"depth":267,"text":3164},{"id":3322,"depth":240,"text":3323},{"id":3468,"depth":240,"text":3469},{"id":3629,"depth":240,"text":3035},{"id":3881,"depth":240,"text":3882},{"id":4103,"depth":240,"text":4104},{"id":1815,"depth":240,"text":1816},"Install the townshipamerica Python package and convert PLSS legal land descriptions to GPS coordinates in four lines of code. Typed responses, sync and async clients.","i-lucide-terminal",{},{"title":3077,"description":4250},"guides\u002Fpython-sdk","pYFB5zyw_PgAylATNjsk1zWojezvE8suKc6YbWGD1gE"]