[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"guide-google-sheets-add-on":3,"related-google-sheets-add-on":473},{"id":4,"title":5,"body":6,"category":462,"description":463,"extension":464,"icon":465,"meta":466,"navigation":467,"order":468,"path":469,"seo":470,"stem":471,"__hash__":472},"guides\u002Fguides\u002Fgoogle-sheets-add-on.md","Google Sheets Add-on — PLSS to GPS Conversion in Spreadsheets",{"type":7,"value":8,"toc":435},"minimark",[9,13,21,26,77,81,84,204,208,215,219,222,232,235,241,244,248,255,258,282,285,289,292,353,356,360,364,367,371,378,382,388,392,395,399],[10,11,12],"p",{},"Convert PLSS legal land descriptions to GPS coordinates directly inside Google Sheets — no copy-pasting into a separate tool, no manual re-entry.",[10,14,15,16,20],{},"The ",[17,18,19],"strong",{},"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).",[22,23,25],"h2",{"id":24},"install-the-add-on","Install the add-on",[27,28,29,34,37,41,48,52,62,66],"steps",{},[30,31,33],"h3",{"id":32},"open-google-sheets","Open Google Sheets",[10,35,36],{},"Open any Google Sheets spreadsheet.",[30,38,40],{"id":39},"open-the-add-ons-dialog","Open the Add-ons dialog",[10,42,43,44,47],{},"Go to ",[17,45,46],{},"Extensions → Add-ons → Get add-ons",".",[30,49,51],{"id":50},"search-and-install","Search and install",[10,53,54,55,57,58,61],{},"Search for ",[17,56,19],{},", click the listing, then click ",[17,59,60],{},"Install",". Grant the requested permissions (read\u002Fwrite the current spreadsheet; show sidebar dialogs).",[30,63,65],{"id":64},"open-the-converter","Open the converter",[10,67,68,69,72,73,76],{},"After installation, the ",[17,70,71],{},"Township America"," menu appears in the menu bar. Click ",[17,74,75],{},"Extensions → Township America → Open Converter"," to open the sidebar.",[22,78,80],{"id":79},"batch-column-conversion","Batch column conversion",[10,82,83],{},"The most common workflow: convert an entire column of PLSS descriptions to lat\u002Flng pairs.",[27,85,86,90,93,160,164,168,172,197,201],{},[30,87,89],{"id":88},"enter-descriptions-in-a-column","Enter descriptions in a column",[10,91,92],{},"Put your PLSS descriptions in a spreadsheet column — one per row. For example:",[94,95,96,112],"table",{},[97,98,99],"thead",{},[100,101,102,106,109],"tr",{},[103,104,105],"th",{},"A",[103,107,108],{},"B",[103,110,111],{},"C",[113,114,115,133,142,151],"tbody",{},[100,116,117,123,128],{},[118,119,120],"td",{},[17,121,122],{},"PLSS Description",[118,124,125],{},[17,126,127],{},"Latitude",[118,129,130],{},[17,131,132],{},"Longitude",[100,134,135,138,140],{},[118,136,137],{},"NE 14 5N 3W 6th Meridian",[118,139],{},[118,141],{},[100,143,144,147,149],{},[118,145,146],{},"NENE 12 4N 5E Indian Meridian",[118,148],{},[118,150],{},[100,152,153,156,158],{},[118,154,155],{},"SW 22 3S 68W 6th PM",[118,157],{},[118,159],{},[30,161,163],{"id":162},"open-the-converter-sidebar","Open the converter sidebar",[10,165,166],{},[17,167,75],{},[30,169,171],{"id":170},"set-the-input-and-output-ranges","Set the input and output ranges",[173,174,175,187],"ul",{},[176,177,178,181,182,186],"li",{},[17,179,180],{},"Input range",": the cell range containing your descriptions (e.g. ",[183,184,185],"code",{},"A2:A100",")",[176,188,189,192,193,196],{},[17,190,191],{},"Output cell",": the first cell for latitude output (e.g. ",[183,194,195],{},"B2","). Longitude is written to the next column automatically.",[30,198,200],{"id":199},"click-convert-column","Click Convert Column",[10,202,203],{},"Results appear in the output columns. Rows that could not be converted show an error message in the cell.",[30,205,207],{"id":206},"menu-shortcut","Menu shortcut",[10,209,210,211,214],{},"Select a column of PLSS descriptions, then choose ",[17,212,213],{},"Extensions → Township America → Convert Selected Column",". Latitude and longitude are written to the adjacent two columns without opening the sidebar.",[22,216,218],{"id":217},"cell-formulas","Cell formulas",[10,220,221],{},"For single conversions or building formulas that reference other cells, use the custom functions:",[223,224,229],"pre",{"className":225,"code":227,"language":228},[226],"language-text","=PLSS_TO_LAT(\"NE 14 5N 3W 6th Meridian\")\n=PLSS_TO_LNG(\"NE 14 5N 3W 6th Meridian\")\n","text",[183,230,227],{"__ignoreMap":231},"",[10,233,234],{},"You can also reference another cell:",[223,236,239],{"className":237,"code":238,"language":228},[226],"=PLSS_TO_LAT(A2)\n=PLSS_TO_LNG(A2)\n",[183,240,238],{"__ignoreMap":231},[10,242,243],{},"Cell formulas count against the same monthly free limit as batch conversions.",[22,245,247],{"id":246},"freemium-limits-and-api-keys","Freemium limits and API keys",[10,249,250,251,254],{},"The add-on includes ",[17,252,253],{},"10 free conversions per calendar month"," — no API key required. Free conversions reset on the 1st of each month.",[10,256,257],{},"For unlimited conversions, add a Township America API key:",[259,260,261,269,272],"ol",{},[176,262,43,263,268],{},[264,265,267],"a",{"href":266},"\u002Fapi","townshipamerica.com\u002Fapi"," and subscribe to the Search API (Build tier, $40\u002Fmo — includes 1,000 conversions\u002Fmonth).",[176,270,271],{},"Create an API key in the Developer Portal.",[176,273,274,275,278,279,47],{},"In Google Sheets, open ",[17,276,277],{},"Extensions → Township America → Settings",", paste your key, and click ",[17,280,281],{},"Save Key",[10,283,284],{},"Your API key is stored securely in your Google account's user properties and is only sent to the Township America API.",[22,286,288],{"id":287},"supported-plss-formats","Supported PLSS formats",[10,290,291],{},"The add-on accepts any description format understood by the Township America API:",[94,293,294,304],{},[97,295,296],{},[100,297,298,301],{},[103,299,300],{},"Format",[103,302,303],{},"Example",[113,305,306,315,324,334,344],{},[100,307,308,311],{},[118,309,310],{},"Quarter section",[118,312,313],{},[183,314,137],{},[100,316,317,320],{},[118,318,319],{},"Quarter-quarter section",[118,321,322],{},[183,323,146],{},[100,325,326,329],{},[118,327,328],{},"Section",[118,330,331],{},[183,332,333],{},"Sec 12 T4N R5E Indian Meridian",[100,335,336,339],{},[118,337,338],{},"Township",[118,340,341],{},[183,342,343],{},"T4N R5E 6th PM",[100,345,346,349],{},[118,347,348],{},"Abbreviated PM",[118,350,351],{},[183,352,155],{},[10,354,355],{},"Coverage includes all 30 PLSS states.",[22,357,359],{"id":358},"troubleshooting","Troubleshooting",[30,361,363],{"id":362},"no-results-found","\"No results found\"",[10,365,366],{},"The description may not match a known PLSS location. Check spelling, meridian name, and township\u002Frange direction (N\u002FS, E\u002FW).",[30,368,370],{"id":369},"free-limit-reached","\"Free limit reached\"",[10,372,373,374,377],{},"You've used your 10 free conversions for the month. Add an API key in ",[17,375,376],{},"Settings"," to continue, or wait until the 1st of next month.",[30,379,381],{"id":380},"invalid-api-key","\"Invalid API key\"",[10,383,384,385,47],{},"Double-check your key in the Settings dialog. Keys are generated in the ",[264,386,387],{"href":266},"Township America Developer Portal",[30,389,391],{"id":390},"network-error","\"Network error\"",[10,393,394],{},"Google Sheets could not reach the Township America API. Check your internet connection and try again.",[22,396,398],{"id":397},"related-resources","Related resources",[173,400,401,407,414,421,428],{},[176,402,403,406],{},[264,404,405],{"href":266},"API documentation"," — full reference for the Township America REST API",[176,408,409,413],{},[264,410,412],{"href":411},"\u002Fguides\u002Fapi-integration","API integration guide"," — authenticate and make API requests from any app",[176,415,416,420],{},[264,417,419],{"href":418},"\u002Fguides\u002Fpython-sdk","Python SDK"," — convert PLSS descriptions from Python scripts",[176,422,423,427],{},[264,424,426],{"href":425},"\u002Fguides\u002Fbatch-conversion","Batch conversion"," — web-based batch processing without spreadsheets",[176,429,430,434],{},[264,431,433],{"href":432},"\u002Fcontact-us","Contact support"," — help with the add-on or API access",{"title":231,"searchDepth":436,"depth":436,"links":437},2,[438,445,452,453,454,455,461],{"id":24,"depth":436,"text":25,"children":439},[440,442,443,444],{"id":32,"depth":441,"text":33},3,{"id":39,"depth":441,"text":40},{"id":50,"depth":441,"text":51},{"id":64,"depth":441,"text":65},{"id":79,"depth":436,"text":80,"children":446},[447,448,449,450,451],{"id":88,"depth":441,"text":89},{"id":162,"depth":441,"text":163},{"id":170,"depth":441,"text":171},{"id":199,"depth":441,"text":200},{"id":206,"depth":441,"text":207},{"id":217,"depth":436,"text":218},{"id":246,"depth":436,"text":247},{"id":287,"depth":436,"text":288},{"id":358,"depth":436,"text":359,"children":456},[457,458,459,460],{"id":362,"depth":441,"text":363},{"id":369,"depth":441,"text":370},{"id":380,"depth":441,"text":381},{"id":390,"depth":441,"text":391},{"id":397,"depth":436,"text":398},"api","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.","md","i-lucide-table",{},true,6,"\u002Fguides\u002Fgoogle-sheets-add-on",{"title":5,"description":463},"guides\u002Fgoogle-sheets-add-on","z9LFqa-obnS7Wo8iDgWkSJ44arAzT9393kEIbg3C_BY",[474,1153,1839],{"id":475,"title":476,"body":477,"category":462,"description":1147,"extension":464,"icon":1148,"meta":1149,"navigation":467,"order":883,"path":411,"seo":1150,"stem":1151,"__hash__":1152},"guides\u002Fguides\u002Fapi-integration.md","Legal Land Description API Integration Guide",{"type":7,"value":478,"toc":1109},[479,482,489,493,520,526,530,533,537,540,546,550,553,558,562,565,570,574,577,582,586,596,599,603,606,611,673,679,729,732,736,740,743,747,750,754,757,761,764,768,771,775,815,819,825,845,849,852,856,859,863,866,869,872,895,1017,1029,1033,1036,1040,1050,1054,1061,1065,1098,1105],[10,480,481],{},"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,483,484],{},[485,486],"img",{"alt":487,"src":488},"Developer Portal","\u002Fimages\u002Fguides\u002Fapi-portal.webp",[22,490,492],{"id":491},"quick-start","Quick start",[27,494,495,499,506,510,513,517],{},[30,496,498],{"id":497},"get-an-api-key","Get an API key",[10,500,501,502,505],{},"Log into your Township America account and go to ",[17,503,504],{},"API"," in the main navigation. Subscribe to an API endpoint and create your first API key.",[30,507,509],{"id":508},"make-your-first-request","Make your first request",[10,511,512],{},"Add your API key to the request header and make a test request.",[30,514,516],{"id":515},"parse-the-response","Parse the response",[10,518,519],{},"All APIs return JSON with coordinates, legal descriptions, and metadata.",[10,521,522,523,47],{},"For full documentation and code examples, visit the ",[264,524,405],{"href":525},"\u002Fapp\u002Fapi",[22,527,529],{"id":528},"api-endpoints","API endpoints",[10,531,532],{},"Township America offers four distinct API endpoints:",[30,534,536],{"id":535},"search-api-20month","Search API ($20\u002Fmonth)",[10,538,539],{},"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,541,542,545],{},[17,543,544],{},"Use cases",": Property lookup, coordinate conversion, reverse geocoding",[30,547,549],{"id":548},"autocomplete-api-20month","Autocomplete API ($20\u002Fmonth)",[10,551,552],{},"Search legal land descriptions with partial text. Returns up to 10 matching results with coordinates—ideal for search boxes and type-ahead interfaces.",[10,554,555,557],{},[17,556,544],{},": Search boxes, type-ahead, field validation",[30,559,561],{"id":560},"batch-api-40month","Batch API ($40\u002Fmonth)",[10,563,564],{},"Process up to 100 records per request. Convert lists of legal land descriptions to coordinates or coordinates to legal land descriptions.",[10,566,567,569],{},[17,568,544],{},": Bulk data processing, migration, spatial analysis",[30,571,573],{"id":572},"maps-api-20month","Maps API ($20\u002Fmonth)",[10,575,576],{},"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,578,579,581],{},[17,580,544],{},": Custom mapping applications, data visualization",[22,583,585],{"id":584},"bundled-api-access","Bundled API access",[10,587,588,595],{},[17,589,590,591],{},"Pro+ ($100\u002Fmo) and Business ($40\u002Fuser\u002Fmo) include 100,000 REST API calls\u002Fmonth and ",[264,592,594],{"href":593},"\u002Fapi\u002Fmcp","MCP server access"," as part of the web app subscription — no separate API subscription needed. If you primarily use the web app and want API access on the side, Pro+ is the most cost-effective starting point.",[10,597,598],{},"For pure API integrations without the web app, see the standalone tiers below.",[22,600,602],{"id":601},"api-pricing-tiers","API pricing tiers",[10,604,605],{},"Each API offers three pricing tiers:",[10,607,608],{},[17,609,610],{},"Search, Autocomplete & Batch APIs",[94,612,613,629],{},[97,614,615],{},[100,616,617,620,623,626],{},[103,618,619],{},"Tier",[103,621,622],{},"Monthly Requests",[103,624,625],{},"Rate Limit",[103,627,628],{},"Price",[113,630,631,645,659],{},[100,632,633,636,639,642],{},[118,634,635],{},"Build",[118,637,638],{},"1,000",[118,640,641],{},"1\u002Fsec",[118,643,644],{},"$20-40\u002Fmo",[100,646,647,650,653,656],{},[118,648,649],{},"Scale",[118,651,652],{},"10,000",[118,654,655],{},"5\u002Fsec",[118,657,658],{},"$100-200\u002Fmo",[100,660,661,664,667,670],{},[118,662,663],{},"Enterprise",[118,665,666],{},"100,000",[118,668,669],{},"25\u002Fsec",[118,671,672],{},"$500-1,000\u002Fmo",[10,674,675,678],{},[17,676,677],{},"Maps API"," (higher request quotas for tile rendering)",[94,680,681,693],{},[97,682,683],{},[100,684,685,687,689,691],{},[103,686,619],{},[103,688,622],{},[103,690,625],{},[103,692,628],{},[113,694,695,706,717],{},[100,696,697,699,701,703],{},[118,698,635],{},[118,700,652],{},[118,702,641],{},[118,704,705],{},"$20\u002Fmo",[100,707,708,710,712,714],{},[118,709,649],{},[118,711,666],{},[118,713,655],{},[118,715,716],{},"$100\u002Fmo",[100,718,719,721,724,726],{},[118,720,663],{},[118,722,723],{},"1,000,000",[118,725,669],{},[118,727,728],{},"$500\u002Fmo",[10,730,731],{},"Annual billing saves two months compared to monthly billing.",[22,733,735],{"id":734},"common-integration-patterns","Common integration patterns",[30,737,739],{"id":738},"real-estate-applications","Real Estate Applications",[10,741,742],{},"Add legal land description lookup to property search interfaces. Use the Autocomplete API for type-ahead search and the Search API for coordinate conversion.",[30,744,746],{"id":745},"oil-gas-software","Oil & Gas Software",[10,748,749],{},"Integrate batch conversion for well location management. Use the Maps API to display PLSS grids in custom mapping applications.",[30,751,753],{"id":752},"mobile-field-apps","Mobile Field Apps",[10,755,756],{},"Add PLSS search and coordinate conversion for field workers. The APIs work with any mobile development framework (React Native, Flutter, native iOS\u002FAndroid).",[30,758,760],{"id":759},"gis-platforms","GIS Platforms",[10,762,763],{},"Enhance ArcGIS, QGIS, or custom GIS tools with legal land description support. Batch API enables bulk coordinate conversion for spatial analysis.",[30,765,767],{"id":766},"agriculture-technology","Agriculture Technology",[10,769,770],{},"Add quarter section lookup to farm management software. Combine with soil and boundary data for precision agriculture applications.",[22,772,774],{"id":773},"getting-an-api-key","Getting an API key",[27,776,777,781,786,790,793,797,804,808],{},[30,778,780],{"id":779},"open-the-developer-portal","Open the Developer Portal",[10,782,43,783,785],{},[17,784,504],{}," in the main navigation to access the Developer Portal.",[30,787,789],{"id":788},"subscribe-to-an-api","Subscribe to an API",[10,791,792],{},"Click on the API you want to use (Search, Autocomplete, Batch, or Maps). Select a tier and complete payment.",[30,794,796],{"id":795},"create-an-api-key","Create an API key",[10,798,799,800,803],{},"Click ",[17,801,802],{},"+ Add Key"," and give your key a descriptive name. Copy the key immediately—it won't be shown again.",[30,805,807],{"id":806},"use-your-key","Use your key",[10,809,810,811,814],{},"Include the API key in the ",[183,812,813],{},"x-api-key"," header for all requests.",[22,816,818],{"id":817},"managing-api-subscriptions","Managing API subscriptions",[10,820,821,822,824],{},"Manage your API subscriptions from the ",[17,823,504],{}," page in the main navigation. The Developer Portal provides:",[173,826,827,833,839],{},[176,828,829,832],{},[17,830,831],{},"Overview",": View all your API keys and subscriptions",[176,834,835,838],{},[17,836,837],{},"Logs",": Monitor API requests with timestamps and response codes",[176,840,841,844],{},[17,842,843],{},"Alerts",": Configure usage threshold notifications",[30,846,848],{"id":847},"usage-monitoring","Usage monitoring",[10,850,851],{},"Track your API usage in real-time from the Overview tab. Usage resets at the start of each billing period.",[30,853,855],{"id":854},"rate-limiting","Rate limiting",[10,857,858],{},"Exceeding your rate limit results in HTTP 429 Too Many Requests responses. Implement exponential backoff in your integration to handle rate limits gracefully.",[30,860,862],{"id":861},"quota-management","Quota management",[10,864,865],{},"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.",[22,867,419],{"id":868},"python-sdk",[10,870,871],{},"The official Python SDK wraps all API endpoints with typed responses, sync and async clients, and batch support. Install from PyPI:",[223,873,877],{"className":874,"code":875,"language":876,"meta":231,"style":231},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","pip install townshipamerica\n","bash",[183,878,879],{"__ignoreMap":231},[880,881,884,888,892],"span",{"class":882,"line":883},"line",1,[880,885,887],{"class":886},"sbgvK","pip",[880,889,891],{"class":890},"s_sjI"," install",[880,893,894],{"class":890}," townshipamerica\n",[223,896,900],{"className":897,"code":898,"language":899,"meta":231,"style":231},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","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","python",[183,901,902,918,923,958,984],{"__ignoreMap":231},[880,903,904,908,912,915],{"class":882,"line":883},[880,905,907],{"class":906},"sVHd0","from",[880,909,911],{"class":910},"su5hD"," townshipamerica ",[880,913,914],{"class":906},"import",[880,916,917],{"class":910}," TownshipAmerica\n",[880,919,920],{"class":882,"line":436},[880,921,922],{"emptyLinePlaceholder":467},"\n",[880,924,925,928,932,936,940,944,946,950,953,955],{"class":882,"line":441},[880,926,927],{"class":910},"client ",[880,929,931],{"class":930},"smGrS","=",[880,933,935],{"class":934},"slqww"," TownshipAmerica",[880,937,939],{"class":938},"sP7_E","(",[880,941,943],{"class":942},"s99_P","api_key",[880,945,931],{"class":930},[880,947,949],{"class":948},"sjJ54","\"",[880,951,952],{"class":890},"your_api_key",[880,954,949],{"class":948},[880,956,957],{"class":938},")\n",[880,959,961,964,966,969,971,974,976,978,980,982],{"class":882,"line":960},4,[880,962,963],{"class":910},"result ",[880,965,931],{"class":930},[880,967,968],{"class":910}," client",[880,970,47],{"class":938},[880,972,973],{"class":934},"search",[880,975,939],{"class":938},[880,977,949],{"class":948},[880,979,146],{"class":890},[880,981,949],{"class":948},[880,983,957],{"class":938},[880,985,987,991,993,996,998,1002,1005,1009,1012,1015],{"class":882,"line":986},5,[880,988,990],{"class":989},"sptTA","print",[880,992,939],{"class":938},[880,994,995],{"class":934},"result",[880,997,47],{"class":938},[880,999,1001],{"class":1000},"skxfh","features",[880,1003,1004],{"class":938},"[",[880,1006,1008],{"class":1007},"srdBf","0",[880,1010,1011],{"class":938},"].",[880,1013,1014],{"class":1000},"properties",[880,1016,957],{"class":938},[10,1018,1019,1020,1023,1024,1028],{},"MIT license. Python 3.9+. See the ",[264,1021,1022],{"href":418},"Python SDK Quick Start"," for full usage, or ",[264,1025,1027],{"href":1026},"\u002Fguides\u002Fpython-sdk-advanced","Advanced Patterns"," for async, GeoPandas, and production workflows.",[22,1030,1032],{"id":1031},"code-examples","Code examples",[10,1034,1035],{},"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.",[22,1037,1039],{"id":1038},"checking-system-health","Checking system health",[10,1041,1042,1043,1049],{},"For the current status of Township America's APIs, including uptime, response time, and incident history, visit ",[264,1044,1048],{"href":1045,"rel":1046},"https:\u002F\u002Fstatus.townshipamerica.com",[1047],"nofollow","status.townshipamerica.com",". This site provides real-time updates on API system health.",[22,1051,1053],{"id":1052},"mcp-server","MCP server",[10,1055,1056,1057,1060],{},"Pro+ and Business plans also include access to the ",[264,1058,1059],{"href":593},"MCP Server"," — a Model Context Protocol integration that lets AI agents in Claude Desktop, Cursor, Continue, or Cline call the PLSS API directly. No additional configuration beyond your Pro+ API key.",[22,1062,1064],{"id":1063},"related-guides","Related guides",[173,1066,1067,1072,1078,1085,1091],{},[176,1068,1069,1071],{},[264,1070,1022],{"href":418}," - Install and convert PLSS descriptions in four lines of Python",[176,1073,1074,1077],{},[264,1075,1076],{"href":1026},"Python SDK Advanced Patterns"," - Async, GeoPandas, and production workflows",[176,1079,1080,1084],{},[264,1081,1083],{"href":1082},"\u002Fguides\u002Faccount-management","Account Management"," - Manage billing for API subscriptions",[176,1086,1087,1090],{},[264,1088,1089],{"href":425},"Batch Conversion"," - Web interface for batch processing",[176,1092,1093,1097],{},[264,1094,1096],{"href":1095},"\u002Fguides\u002Fmap","Interactive Maps"," - Map features available through the Maps API",[10,1099,1100,1101,1104],{},"Need help with your integration? ",[264,1102,1103],{"href":432},"Contact us"," for technical support and custom API solutions.",[1106,1107,1108],"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 .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 .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}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":231,"searchDepth":436,"depth":436,"links":1110},[1111,1116,1122,1123,1124,1131,1137,1142,1143,1144,1145,1146],{"id":491,"depth":436,"text":492,"children":1112},[1113,1114,1115],{"id":497,"depth":441,"text":498},{"id":508,"depth":441,"text":509},{"id":515,"depth":441,"text":516},{"id":528,"depth":436,"text":529,"children":1117},[1118,1119,1120,1121],{"id":535,"depth":441,"text":536},{"id":548,"depth":441,"text":549},{"id":560,"depth":441,"text":561},{"id":572,"depth":441,"text":573},{"id":584,"depth":436,"text":585},{"id":601,"depth":436,"text":602},{"id":734,"depth":436,"text":735,"children":1125},[1126,1127,1128,1129,1130],{"id":738,"depth":441,"text":739},{"id":745,"depth":441,"text":746},{"id":752,"depth":441,"text":753},{"id":759,"depth":441,"text":760},{"id":766,"depth":441,"text":767},{"id":773,"depth":436,"text":774,"children":1132},[1133,1134,1135,1136],{"id":779,"depth":441,"text":780},{"id":788,"depth":441,"text":789},{"id":795,"depth":441,"text":796},{"id":806,"depth":441,"text":807},{"id":817,"depth":436,"text":818,"children":1138},[1139,1140,1141],{"id":847,"depth":441,"text":848},{"id":854,"depth":441,"text":855},{"id":861,"depth":441,"text":862},{"id":868,"depth":436,"text":419},{"id":1031,"depth":436,"text":1032},{"id":1038,"depth":436,"text":1039},{"id":1052,"depth":436,"text":1053},{"id":1063,"depth":436,"text":1064},"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":476,"description":1147},"guides\u002Fapi-integration","2a71yNr-ghCBNTHMcmJLzuDnGQvr4OOsRAFdeJIlaN4",{"id":1154,"title":1155,"body":1156,"category":462,"description":1832,"extension":464,"icon":1833,"meta":1834,"navigation":467,"order":441,"path":1835,"seo":1836,"stem":1837,"__hash__":1838},"guides\u002Fguides\u002Fenergy-pack-api.md","Energy Pack API Guide",{"type":7,"value":1157,"toc":1814},[1158,1165,1169,1172,1187,1202,1209,1249,1255,1259,1266,1286,1289,1293,1299,1310,1340,1346,1349,1379,1385,1388,1579,1585,1592,1598,1601,1607,1614,1620,1623,1629,1645,1675,1679,1682,1686,1689,1755,1773,1777,1788,1791,1806,1811],[10,1159,1160,1161,1164],{},"The Energy Pack is an add-on ($150\u002Fmo on top of Pro+ or Business, or bundled with Enterprise) that layers federal-land energy data on top of Township America's PLSS + TXSS conversion engine. Eight endpoints under ",[183,1162,1163],{},"\u002Fapi\u002Fenergy\u002F*"," answer the workflows landmen, ALTA surveyors, solar developers, and mineral-rights investors run every day.",[22,1166,1168],{"id":1167},"auth-and-gating","Auth and Gating",[10,1170,1171],{},"All Energy Pack endpoints require:",[259,1173,1174,1180],{},[176,1175,1176,1177],{},"Authenticated user (any Pro+ or higher), ",[17,1178,1179],{},"and",[176,1181,1182,1183,1186],{},"Active Energy Pack add-on subscription, ",[17,1184,1185],{},"OR"," Enterprise tier (auto-included).",[10,1188,1189,1190,1193,1194,1197,1198,1201],{},"Unauthenticated callers get ",[183,1191,1192],{},"401 Unauthorized",". Pro+ users without the add-on get ",[183,1195,1196],{},"402 Payment Required"," with a ",[183,1199,1200],{},"\u002Fpricing?addon=energy_pack"," upgrade pointer.",[10,1203,1204,1205,1208],{},"A ",[183,1206,1207],{},"GET \u002Fapi\u002Fbilling\u002Fenergy-pack-status"," endpoint lets your UI check entitlement before showing energy-related UI:",[223,1210,1212],{"className":874,"code":1211,"language":876,"meta":231,"style":231},"curl -H \"Authorization: Bearer $TA_API_KEY\" \\\n  \"https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fbilling\u002Fenergy-pack-status\"\n",[183,1213,1214,1238],{"__ignoreMap":231},[880,1215,1216,1219,1223,1226,1229,1232,1234],{"class":882,"line":883},[880,1217,1218],{"class":886},"curl",[880,1220,1222],{"class":1221},"stzsN"," -H",[880,1224,1225],{"class":948}," \"",[880,1227,1228],{"class":890},"Authorization: Bearer ",[880,1230,1231],{"class":910},"$TA_API_KEY",[880,1233,949],{"class":948},[880,1235,1237],{"class":1236},"s_hVV"," \\\n",[880,1239,1240,1243,1246],{"class":882,"line":436},[880,1241,1242],{"class":948},"  \"",[880,1244,1245],{"class":890},"https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fbilling\u002Fenergy-pack-status",[880,1247,1248],{"class":948},"\"\n",[10,1250,1251,1252,47],{},"Returns ",[183,1253,1254],{},"{ \"plan\": \"pro_plus\", \"eligible\": true, \"bundled\": false, \"entitled\": true, \"source\": \"addon\", \"pricing\": {...} }",[22,1256,1258],{"id":1257},"section-input","Section Input",[10,1260,1261,1262,1265],{},"Every spatial endpoint accepts a ",[183,1263,1264],{},"section"," query parameter that can be:",[173,1267,1268,1274,1280],{},[176,1269,1270,1271],{},"A PLSS legal description: ",[183,1272,1273],{},"?section=T2N+R3W+Sec+14+Huntsville+Meridian",[176,1275,1276,1277],{},"A Texas abstract: ",[183,1278,1279],{},"?section=A-123+Reeves+County,+TX",[176,1281,1282,1283],{},"A numeric lookup row id (internal): ",[183,1284,1285],{},"?section=42",[10,1287,1288],{},"The resolver runs the input through the unified parser (PLSS detection → TXSS fallback → lookup) and returns 404 if it can't resolve.",[22,1290,1292],{"id":1291},"endpoints","Endpoints",[30,1294,1296],{"id":1295},"get-apienergywellssectionrefbuffermiles",[183,1297,1298],{},"GET \u002Fapi\u002Fenergy\u002Fwells?section={ref}&buffer={miles}",[10,1300,1301,1302,1305,1306,1309],{},"Multi-state federal-land wells from state O&G commissions (CO\u002FND\u002FOK\u002FWY\u002FNM) plus TX RRC surface wells. Default ",[183,1303,1304],{},"buffer=0","; max ",[183,1307,1308],{},"buffer=5",". Returns up to 200 wells per state ordered by distance to section centroid.",[223,1311,1313],{"className":874,"code":1312,"language":876,"meta":231,"style":231},"curl -H \"Authorization: Bearer $TA_API_KEY\" \\\n  \"https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fenergy\u002Fwells?section=T2N+R3W+Sec+14+Wyoming&buffer=1\"\n",[183,1314,1315,1331],{"__ignoreMap":231},[880,1316,1317,1319,1321,1323,1325,1327,1329],{"class":882,"line":883},[880,1318,1218],{"class":886},[880,1320,1222],{"class":1221},[880,1322,1225],{"class":948},[880,1324,1228],{"class":890},[880,1326,1231],{"class":910},[880,1328,949],{"class":948},[880,1330,1237],{"class":1236},[880,1332,1333,1335,1338],{"class":882,"line":436},[880,1334,1242],{"class":948},[880,1336,1337],{"class":890},"https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fenergy\u002Fwells?section=T2N+R3W+Sec+14+Wyoming&buffer=1",[880,1339,1248],{"class":948},[30,1341,1343],{"id":1342},"get-apienergyleasessectionref",[183,1344,1345],{},"GET \u002Fapi\u002Fenergy\u002Fleases?section={ref}",[10,1347,1348],{},"BLM MLRS federal O&G leases intersecting a section. Returns case id, status, holder, effective \u002F expiration dates, acreage, commodity, and the polygon.",[223,1350,1352],{"className":874,"code":1351,"language":876,"meta":231,"style":231},"curl -H \"Authorization: Bearer $TA_API_KEY\" \\\n  \"https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fenergy\u002Fleases?section=T2N+R3W+Sec+14+Wyoming\"\n",[183,1353,1354,1370],{"__ignoreMap":231},[880,1355,1356,1358,1360,1362,1364,1366,1368],{"class":882,"line":883},[880,1357,1218],{"class":886},[880,1359,1222],{"class":1221},[880,1361,1225],{"class":948},[880,1363,1228],{"class":890},[880,1365,1231],{"class":910},[880,1367,949],{"class":948},[880,1369,1237],{"class":1236},[880,1371,1372,1374,1377],{"class":882,"line":436},[880,1373,1242],{"class":948},[880,1375,1376],{"class":890},"https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fenergy\u002Fleases?section=T2N+R3W+Sec+14+Wyoming",[880,1378,1248],{"class":948},[30,1380,1382],{"id":1381},"get-apienergysplit-estatesectionref",[183,1383,1384],{},"GET \u002Fapi\u002Fenergy\u002Fsplit-estate?section={ref}",[10,1386,1387],{},"Surface vs subsurface ownership flag.",[223,1389,1393],{"className":1390,"code":1391,"language":1392,"meta":231,"style":231},"language-json shiki shiki-themes material-theme-lighter github-light github-dark","{\n  \"section\": { \"input\": \"...\" },\n  \"is_split_estate\": true,\n  \"surface\": { \"type\": \"private\", \"agency\": null, \"coverage_pct\": 1.0 },\n  \"subsurface\": { \"type\": \"federal\", \"agency\": \"BLM\", \"coverage_pct\": 0.98 }\n}\n","json",[183,1394,1395,1400,1436,1453,1513,1574],{"__ignoreMap":231},[880,1396,1397],{"class":882,"line":883},[880,1398,1399],{"class":938},"{\n",[880,1401,1402,1405,1408,1410,1413,1416,1418,1422,1424,1426,1428,1431,1433],{"class":882,"line":436},[880,1403,1242],{"class":1404},"s39Yj",[880,1406,1264],{"class":1407},"sseR_",[880,1409,949],{"class":1404},[880,1411,1412],{"class":938},":",[880,1414,1415],{"class":938}," {",[880,1417,1225],{"class":1404},[880,1419,1421],{"class":1420},"sZMiF","input",[880,1423,949],{"class":1404},[880,1425,1412],{"class":938},[880,1427,1225],{"class":948},[880,1429,1430],{"class":890},"...",[880,1432,949],{"class":948},[880,1434,1435],{"class":938}," },\n",[880,1437,1438,1440,1443,1445,1447,1450],{"class":882,"line":441},[880,1439,1242],{"class":1404},[880,1441,1442],{"class":1407},"is_split_estate",[880,1444,949],{"class":1404},[880,1446,1412],{"class":938},[880,1448,1449],{"class":1404}," true",[880,1451,1452],{"class":938},",\n",[880,1454,1455,1457,1460,1462,1464,1466,1468,1471,1473,1475,1477,1480,1482,1485,1487,1490,1492,1494,1497,1499,1501,1504,1506,1508,1511],{"class":882,"line":960},[880,1456,1242],{"class":1404},[880,1458,1459],{"class":1407},"surface",[880,1461,949],{"class":1404},[880,1463,1412],{"class":938},[880,1465,1415],{"class":938},[880,1467,1225],{"class":1404},[880,1469,1470],{"class":1420},"type",[880,1472,949],{"class":1404},[880,1474,1412],{"class":938},[880,1476,1225],{"class":948},[880,1478,1479],{"class":890},"private",[880,1481,949],{"class":948},[880,1483,1484],{"class":938},",",[880,1486,1225],{"class":1404},[880,1488,1489],{"class":1420},"agency",[880,1491,949],{"class":1404},[880,1493,1412],{"class":938},[880,1495,1496],{"class":1404}," null",[880,1498,1484],{"class":938},[880,1500,1225],{"class":1404},[880,1502,1503],{"class":1420},"coverage_pct",[880,1505,949],{"class":1404},[880,1507,1412],{"class":938},[880,1509,1510],{"class":1007}," 1.0",[880,1512,1435],{"class":938},[880,1514,1515,1517,1520,1522,1524,1526,1528,1530,1532,1534,1536,1539,1541,1543,1545,1547,1549,1551,1553,1556,1558,1560,1562,1564,1566,1568,1571],{"class":882,"line":986},[880,1516,1242],{"class":1404},[880,1518,1519],{"class":1407},"subsurface",[880,1521,949],{"class":1404},[880,1523,1412],{"class":938},[880,1525,1415],{"class":938},[880,1527,1225],{"class":1404},[880,1529,1470],{"class":1420},[880,1531,949],{"class":1404},[880,1533,1412],{"class":938},[880,1535,1225],{"class":948},[880,1537,1538],{"class":890},"federal",[880,1540,949],{"class":948},[880,1542,1484],{"class":938},[880,1544,1225],{"class":1404},[880,1546,1489],{"class":1420},[880,1548,949],{"class":1404},[880,1550,1412],{"class":938},[880,1552,1225],{"class":948},[880,1554,1555],{"class":890},"BLM",[880,1557,949],{"class":948},[880,1559,1484],{"class":938},[880,1561,1225],{"class":1404},[880,1563,1503],{"class":1420},[880,1565,949],{"class":1404},[880,1567,1412],{"class":938},[880,1569,1570],{"class":1007}," 0.98",[880,1572,1573],{"class":938}," }\n",[880,1575,1576],{"class":882,"line":468},[880,1577,1578],{"class":938},"}\n",[30,1580,1582],{"id":1581},"get-apienergyoffset-operatorssectionrefbuffermiles",[183,1583,1584],{},"GET \u002Fapi\u002Fenergy\u002Foffset-operators?section={ref}&buffer={miles}",[10,1586,1587,1588,1591],{},"Distinct operators ranked by well count within a buffer. Defaults to ",[183,1589,1590],{},"buffer=1"," (landman convention for offset analysis).",[30,1593,1595],{"id":1594},"get-apienergyorphaned-wellssectionrefbuffermiles",[183,1596,1597],{},"GET \u002Fapi\u002Fenergy\u002Forphaned-wells?section={ref}&buffer={miles}",[10,1599,1600],{},"USGS Defunct\u002FOrphaned Wells inside a section + buffer. Liability screen for unplugged or improperly abandoned wells that surface during federal-leasing diligence or acquisition underwriting.",[30,1602,1604],{"id":1603},"get-apienergysage-grousesectionref",[183,1605,1606],{},"GET \u002Fapi\u002Fenergy\u002Fsage-grouse?section={ref}",[10,1608,1609,1610,1613],{},"BLM Sage-Grouse Habitat Management Area overlay. Returns ",[183,1611,1612],{},"in_habitat"," boolean plus per-designation overlap acres.",[30,1615,1617],{"id":1616},"get-apienergyrenewable-sitingsectionref",[183,1618,1619],{},"GET \u002Fapi\u002Fenergy\u002Frenewable-siting?section={ref}",[10,1621,1622],{},"Combined NREL Land of Opportunity score + BLM Western Solar Plan zone overlap + USGS Wind Turbine proximity (2 mi).",[30,1624,1626],{"id":1625},"get-apienergyroyaltiesleaselease_noyearsn",[183,1627,1628],{},"GET \u002Fapi\u002Fenergy\u002Froyalties?lease={lease_no}&years={n}",[10,1630,1631,1632,1305,1635,1638,1639,1642,1643,47],{},"ONRR (Office of Natural Resources Revenue) royalty history per BLM lease. Defaults to ",[183,1633,1634],{},"years=10",[183,1636,1637],{},"30",". Note this endpoint keys on ",[183,1640,1641],{},"lease"," (a BLM lease number), not ",[183,1644,1264],{},[223,1646,1648],{"className":874,"code":1647,"language":876,"meta":231,"style":231},"curl -H \"Authorization: Bearer $TA_API_KEY\" \\\n  \"https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fenergy\u002Froyalties?lease=WYW-0190123&years=10\"\n",[183,1649,1650,1666],{"__ignoreMap":231},[880,1651,1652,1654,1656,1658,1660,1662,1664],{"class":882,"line":883},[880,1653,1218],{"class":886},[880,1655,1222],{"class":1221},[880,1657,1225],{"class":948},[880,1659,1228],{"class":890},[880,1661,1231],{"class":910},[880,1663,949],{"class":948},[880,1665,1237],{"class":1236},[880,1667,1668,1670,1673],{"class":882,"line":436},[880,1669,1242],{"class":948},[880,1671,1672],{"class":890},"https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fenergy\u002Froyalties?lease=WYW-0190123&years=10",[880,1674,1248],{"class":948},[22,1676,1678],{"id":1677},"latency-targets","Latency Targets",[10,1680,1681],{},"The p95 latency target across all endpoints is \u003C800 ms. The spatial queries are GIST-indexed and the per-state union queries short-circuit if any state table is missing.",[22,1683,1685],{"id":1684},"stripe-checkout","Stripe Checkout",[10,1687,1688],{},"To add the Energy Pack from your application, hit the checkout endpoint:",[223,1690,1692],{"className":874,"code":1691,"language":876,"meta":231,"style":231},"curl -X POST -H \"Authorization: Bearer $TA_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"billingCycle\": \"monthly\"}' \\\n  \"https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fbilling\u002Fenergy-pack-checkout\"\n",[183,1693,1694,1716,1730,1746],{"__ignoreMap":231},[880,1695,1696,1698,1701,1704,1706,1708,1710,1712,1714],{"class":882,"line":883},[880,1697,1218],{"class":886},[880,1699,1700],{"class":1221}," -X",[880,1702,1703],{"class":890}," POST",[880,1705,1222],{"class":1221},[880,1707,1225],{"class":948},[880,1709,1228],{"class":890},[880,1711,1231],{"class":910},[880,1713,949],{"class":948},[880,1715,1237],{"class":1236},[880,1717,1718,1721,1723,1726,1728],{"class":882,"line":436},[880,1719,1720],{"class":1221},"  -H",[880,1722,1225],{"class":948},[880,1724,1725],{"class":890},"Content-Type: application\u002Fjson",[880,1727,949],{"class":948},[880,1729,1237],{"class":1236},[880,1731,1732,1735,1738,1741,1744],{"class":882,"line":441},[880,1733,1734],{"class":1221},"  -d",[880,1736,1737],{"class":948}," '",[880,1739,1740],{"class":890},"{\"billingCycle\": \"monthly\"}",[880,1742,1743],{"class":948},"'",[880,1745,1237],{"class":1236},[880,1747,1748,1750,1753],{"class":882,"line":960},[880,1749,1242],{"class":948},[880,1751,1752],{"class":890},"https:\u002F\u002Ftownshipamerica.com\u002Fapi\u002Fbilling\u002Fenergy-pack-checkout",[880,1754,1248],{"class":948},[10,1756,1757,1758,1761,1762,1765,1766,1769,1770,47],{},"Response: ",[183,1759,1760],{},"{ \"url\": \"https:\u002F\u002Fcheckout.stripe.com\u002F...\", \"session_id\": \"cs_...\" }",". Redirect the user to ",[183,1763,1764],{},"url"," to complete checkout. The webhook handler upserts the ",[183,1767,1768],{},"app.subscription_addons"," row on ",[183,1771,1772],{},"checkout.session.completed",[22,1774,1776],{"id":1775},"pricing","Pricing",[173,1778,1779,1782,1785],{},[176,1780,1781],{},"$150\u002Fmo when added to Pro+ (or higher)",[176,1783,1784],{},"$1,440\u002Fyr annual prepay (20% off)",[176,1786,1787],{},"Bundled at no additional cost with Enterprise (custom pricing)",[22,1789,1790],{"id":1063},"Related Guides",[173,1792,1793,1799],{},[176,1794,1795,1798],{},[264,1796,1797],{"href":411},"API Integration"," — general patterns",[176,1800,1801,1805],{},[264,1802,1804],{"href":1803},"\u002Fguides\u002Ftexas-api","Texas API"," — the TXSS engine that backs Texas section input",[10,1807,1808,1809,47],{},"Need help with an Energy Pack integration? ",[264,1810,1103],{"href":432},[1106,1812,1813],{},"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 .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":231,"searchDepth":436,"depth":436,"links":1815},[1816,1817,1818,1828,1829,1830,1831],{"id":1167,"depth":436,"text":1168},{"id":1257,"depth":436,"text":1258},{"id":1291,"depth":436,"text":1292,"children":1819},[1820,1821,1822,1823,1824,1825,1826,1827],{"id":1295,"depth":441,"text":1298},{"id":1342,"depth":441,"text":1345},{"id":1381,"depth":441,"text":1384},{"id":1581,"depth":441,"text":1584},{"id":1594,"depth":441,"text":1597},{"id":1603,"depth":441,"text":1606},{"id":1616,"depth":441,"text":1619},{"id":1625,"depth":441,"text":1628},{"id":1677,"depth":436,"text":1678},{"id":1684,"depth":436,"text":1685},{"id":1775,"depth":436,"text":1776},{"id":1063,"depth":436,"text":1790},"Eight Pro+-gated endpoints for federal-land energy data — wells, BLM leases, split-estate, orphaned wells, Sage-Grouse, renewable siting, and ONRR royalties. Uniform across PLSS sections and Texas abstracts.","i-lucide-zap",{},"\u002Fguides\u002Fenergy-pack-api",{"title":1155,"description":1832},"guides\u002Fenergy-pack-api","r0vmnwiLvSKCbKRuW_8lqsV-bvyk7ifYHEcJB1k4YwU",{"id":1840,"title":1841,"body":1842,"category":462,"description":3039,"extension":464,"icon":3040,"meta":3041,"navigation":467,"order":436,"path":418,"seo":3042,"stem":3043,"__hash__":3044},"guides\u002Fguides\u002Fpython-sdk.md","Python SDK Quick Start — PLSS Coordinate Conversion in Python",{"type":7,"value":1843,"toc":3025},[1844,1851,1855,1858,1870,1881,1885,2083,2093,2097,2100,2177,2196,2239,2243,2246,2333,2339,2405,2408,2411,2568,2571,2658,2662,2665,2890,2894,2901,2991,2993,3011,3022],[10,1845,1846,1847,1850],{},"Convert PLSS legal land descriptions to GPS coordinates in Python with the official ",[183,1848,1849],{},"townshipamerica"," package. MIT license, typed Pydantic v2 models, sync and async clients.",[22,1852,1854],{"id":1853},"installation","Installation",[10,1856,1857],{},"Install from PyPI with pip:",[223,1859,1860],{"className":874,"code":875,"language":876,"meta":231,"style":231},[183,1861,1862],{"__ignoreMap":231},[880,1863,1864,1866,1868],{"class":882,"line":883},[880,1865,887],{"class":886},[880,1867,891],{"class":890},[880,1869,894],{"class":890},[10,1871,1872,1873,1876,1877,1880],{},"Requires Python 3.9 or later. Dependencies (",[183,1874,1875],{},"httpx",", ",[183,1878,1879],{},"pydantic",") install automatically.",[22,1882,1884],{"id":1883},"your-first-conversion","Your first conversion",[27,1886,1887,1889,1898,1902,1905,1927,1931],{},[30,1888,498],{"id":497},[10,1890,1891,1892,1897],{},"Sign up at ",[264,1893,1896],{"href":1894,"rel":1895},"https:\u002F\u002Ftownshipamerica.com\u002Fapp",[1047],"townshipamerica.com\u002Fapp"," and subscribe to the Search API from the Developer Portal.",[30,1899,1901],{"id":1900},"set-your-api-key","Set your API key",[10,1903,1904],{},"Store your key as an environment variable — never hardcode it in source files.",[223,1906,1908],{"className":874,"code":1907,"language":876,"meta":231,"style":231},"export TOWNSHIPAMERICA_API_KEY=\"your_api_key\"\n",[183,1909,1910],{"__ignoreMap":231},[880,1911,1912,1916,1919,1921,1923,1925],{"class":882,"line":883},[880,1913,1915],{"class":1914},"sbsja","export",[880,1917,1918],{"class":910}," TOWNSHIPAMERICA_API_KEY",[880,1920,931],{"class":930},[880,1922,949],{"class":948},[880,1924,952],{"class":890},[880,1926,1248],{"class":948},[30,1928,1930],{"id":1929},"convert-a-plss-description","Convert a PLSS description",[223,1932,1934],{"className":897,"code":1933,"language":899,"meta":231,"style":231},"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",[183,1935,1936,1943,1953,1957,1991,2013,2017,2039,2059],{"__ignoreMap":231},[880,1937,1938,1940],{"class":882,"line":883},[880,1939,914],{"class":906},[880,1941,1942],{"class":910}," os\n",[880,1944,1945,1947,1949,1951],{"class":882,"line":436},[880,1946,907],{"class":906},[880,1948,911],{"class":910},[880,1950,914],{"class":906},[880,1952,917],{"class":910},[880,1954,1955],{"class":882,"line":441},[880,1956,922],{"emptyLinePlaceholder":467},[880,1958,1959,1961,1963,1965,1967,1969,1971,1974,1976,1979,1981,1983,1986,1988],{"class":882,"line":960},[880,1960,927],{"class":910},[880,1962,931],{"class":930},[880,1964,935],{"class":934},[880,1966,939],{"class":938},[880,1968,943],{"class":942},[880,1970,931],{"class":930},[880,1972,1973],{"class":934},"os",[880,1975,47],{"class":938},[880,1977,1978],{"class":1000},"environ",[880,1980,1004],{"class":938},[880,1982,949],{"class":948},[880,1984,1985],{"class":890},"TOWNSHIPAMERICA_API_KEY",[880,1987,949],{"class":948},[880,1989,1990],{"class":938},"])\n",[880,1992,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011],{"class":882,"line":986},[880,1994,963],{"class":910},[880,1996,931],{"class":930},[880,1998,968],{"class":910},[880,2000,47],{"class":938},[880,2002,973],{"class":934},[880,2004,939],{"class":938},[880,2006,949],{"class":948},[880,2008,146],{"class":890},[880,2010,949],{"class":948},[880,2012,957],{"class":938},[880,2014,2015],{"class":882,"line":468},[880,2016,922],{"emptyLinePlaceholder":467},[880,2018,2020,2023,2025,2028,2030,2032,2034,2036],{"class":882,"line":2019},7,[880,2021,2022],{"class":910},"feature ",[880,2024,931],{"class":930},[880,2026,2027],{"class":910}," result",[880,2029,47],{"class":938},[880,2031,1001],{"class":1000},[880,2033,1004],{"class":938},[880,2035,1008],{"class":1007},[880,2037,2038],{"class":938},"]\n",[880,2040,2042,2044,2046,2049,2051,2053,2055],{"class":882,"line":2041},8,[880,2043,990],{"class":989},[880,2045,939],{"class":938},[880,2047,2048],{"class":934},"feature",[880,2050,47],{"class":938},[880,2052,1014],{"class":1000},[880,2054,186],{"class":938},[880,2056,2058],{"class":2057},"sutJx","           # Section metadata\n",[880,2060,2062,2064,2066,2068,2070,2073,2075,2078,2080],{"class":882,"line":2061},9,[880,2063,990],{"class":989},[880,2065,939],{"class":938},[880,2067,2048],{"class":934},[880,2069,47],{"class":938},[880,2071,2072],{"class":1000},"geometry",[880,2074,47],{"class":938},[880,2076,2077],{"class":1000},"coordinates",[880,2079,186],{"class":938},[880,2081,2082],{"class":2057}," # Boundary polygon\n",[10,2084,2085,2086,2088,2089,2092],{},"That's it — ",[183,2087,995],{}," is a typed ",[183,2090,2091],{},"FeatureCollection"," with GeoJSON geometry and PLSS metadata.",[22,2094,2096],{"id":2095},"reverse-geocoding","Reverse geocoding",[10,2098,2099],{},"Find the PLSS legal land description at a GPS coordinate:",[223,2101,2103],{"className":897,"code":2102,"language":899,"meta":231,"style":231},"result = client.reverse(-97.5, 36.1)\n\nfeature = result.features[0]\nprint(feature.properties.descriptor)  # \"NWSE 15 4N 7W Indian Meridian\"\n",[183,2104,2105,2133,2137,2155],{"__ignoreMap":231},[880,2106,2107,2109,2111,2113,2115,2118,2120,2123,2126,2128,2131],{"class":882,"line":883},[880,2108,963],{"class":910},[880,2110,931],{"class":930},[880,2112,968],{"class":910},[880,2114,47],{"class":938},[880,2116,2117],{"class":934},"reverse",[880,2119,939],{"class":938},[880,2121,2122],{"class":930},"-",[880,2124,2125],{"class":1007},"97.5",[880,2127,1484],{"class":938},[880,2129,2130],{"class":1007}," 36.1",[880,2132,957],{"class":938},[880,2134,2135],{"class":882,"line":436},[880,2136,922],{"emptyLinePlaceholder":467},[880,2138,2139,2141,2143,2145,2147,2149,2151,2153],{"class":882,"line":441},[880,2140,2022],{"class":910},[880,2142,931],{"class":930},[880,2144,2027],{"class":910},[880,2146,47],{"class":938},[880,2148,1001],{"class":1000},[880,2150,1004],{"class":938},[880,2152,1008],{"class":1007},[880,2154,2038],{"class":938},[880,2156,2157,2159,2161,2163,2165,2167,2169,2172,2174],{"class":882,"line":960},[880,2158,990],{"class":989},[880,2160,939],{"class":938},[880,2162,2048],{"class":934},[880,2164,47],{"class":938},[880,2166,1014],{"class":1000},[880,2168,47],{"class":938},[880,2170,2171],{"class":1000},"descriptor",[880,2173,186],{"class":938},[880,2175,2176],{"class":2057},"  # \"NWSE 15 4N 7W Indian Meridian\"\n",[10,2178,15,2179,2182,2183,1876,2186,1876,2189,2192,2193,1412],{},[183,2180,2181],{},"unit"," parameter controls precision — ",[183,2184,2185],{},"\"Township\"",[183,2187,2188],{},"\"Section\"",[183,2190,2191],{},"\"Quarter Section\"",", or ",[183,2194,2195],{},"\"all\"",[223,2197,2199],{"className":897,"code":2198,"language":899,"meta":231,"style":231},"result = client.reverse(-97.5, 36.1, unit=\"Quarter Section\")\n",[183,2200,2201],{"__ignoreMap":231},[880,2202,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223,2225,2228,2230,2232,2235,2237],{"class":882,"line":883},[880,2204,963],{"class":910},[880,2206,931],{"class":930},[880,2208,968],{"class":910},[880,2210,47],{"class":938},[880,2212,2117],{"class":934},[880,2214,939],{"class":938},[880,2216,2122],{"class":930},[880,2218,2125],{"class":1007},[880,2220,1484],{"class":938},[880,2222,2130],{"class":1007},[880,2224,1484],{"class":938},[880,2226,2227],{"class":942}," unit",[880,2229,931],{"class":930},[880,2231,949],{"class":948},[880,2233,2234],{"class":890},"Quarter Section",[880,2236,949],{"class":948},[880,2238,957],{"class":938},[22,2240,2242],{"id":2241},"autocomplete","Autocomplete",[10,2244,2245],{},"Add type-ahead search for PLSS descriptions:",[223,2247,2249],{"className":897,"code":2248,"language":899,"meta":231,"style":231},"suggestions = client.autocomplete(\"T4N R5E\", limit=5)\nfor item in suggestions.results:\n    print(item.text, item.location)\n",[183,2250,2251,2285,2307],{"__ignoreMap":231},[880,2252,2253,2256,2258,2260,2262,2264,2266,2268,2271,2273,2275,2278,2280,2283],{"class":882,"line":883},[880,2254,2255],{"class":910},"suggestions ",[880,2257,931],{"class":930},[880,2259,968],{"class":910},[880,2261,47],{"class":938},[880,2263,2241],{"class":934},[880,2265,939],{"class":938},[880,2267,949],{"class":948},[880,2269,2270],{"class":890},"T4N R5E",[880,2272,949],{"class":948},[880,2274,1484],{"class":938},[880,2276,2277],{"class":942}," limit",[880,2279,931],{"class":930},[880,2281,2282],{"class":1007},"5",[880,2284,957],{"class":938},[880,2286,2287,2290,2293,2296,2299,2301,2304],{"class":882,"line":436},[880,2288,2289],{"class":906},"for",[880,2291,2292],{"class":910}," item ",[880,2294,2295],{"class":906},"in",[880,2297,2298],{"class":910}," suggestions",[880,2300,47],{"class":938},[880,2302,2303],{"class":1000},"results",[880,2305,2306],{"class":938},":\n",[880,2308,2309,2312,2314,2317,2319,2321,2323,2326,2328,2331],{"class":882,"line":441},[880,2310,2311],{"class":989},"    print",[880,2313,939],{"class":938},[880,2315,2316],{"class":934},"item",[880,2318,47],{"class":938},[880,2320,228],{"class":1000},[880,2322,1484],{"class":938},[880,2324,2325],{"class":934}," item",[880,2327,47],{"class":938},[880,2329,2330],{"class":1000},"location",[880,2332,957],{"class":938},[10,2334,15,2335,2338],{},[183,2336,2337],{},"proximity"," parameter biases results toward a GPS coordinate:",[223,2340,2342],{"className":897,"code":2341,"language":899,"meta":231,"style":231},"suggestions = client.autocomplete(\n    \"T4N\",\n    limit=5,\n    proximity=(-97.5, 36.1)\n)\n",[183,2343,2344,2359,2371,2382,2401],{"__ignoreMap":231},[880,2345,2346,2348,2350,2352,2354,2356],{"class":882,"line":883},[880,2347,2255],{"class":910},[880,2349,931],{"class":930},[880,2351,968],{"class":910},[880,2353,47],{"class":938},[880,2355,2241],{"class":934},[880,2357,2358],{"class":938},"(\n",[880,2360,2361,2364,2367,2369],{"class":882,"line":436},[880,2362,2363],{"class":948},"    \"",[880,2365,2366],{"class":890},"T4N",[880,2368,949],{"class":948},[880,2370,1452],{"class":938},[880,2372,2373,2376,2378,2380],{"class":882,"line":441},[880,2374,2375],{"class":942},"    limit",[880,2377,931],{"class":930},[880,2379,2282],{"class":1007},[880,2381,1452],{"class":938},[880,2383,2384,2387,2389,2391,2393,2395,2397,2399],{"class":882,"line":960},[880,2385,2386],{"class":942},"    proximity",[880,2388,931],{"class":930},[880,2390,939],{"class":938},[880,2392,2122],{"class":930},[880,2394,2125],{"class":1007},[880,2396,1484],{"class":938},[880,2398,2130],{"class":1007},[880,2400,957],{"class":938},[880,2402,2403],{"class":882,"line":986},[880,2404,957],{"class":938},[22,2406,426],{"id":2407},"batch-conversion",[10,2409,2410],{},"Convert up to 100 PLSS descriptions in a single request:",[223,2412,2414],{"className":897,"code":2413,"language":899,"meta":231,"style":231},"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",[183,2415,2416,2426,2436,2447,2458,2462,2466,2487,2501,2521],{"__ignoreMap":231},[880,2417,2418,2421,2423],{"class":882,"line":883},[880,2419,2420],{"class":910},"locations ",[880,2422,931],{"class":930},[880,2424,2425],{"class":938}," [\n",[880,2427,2428,2430,2432,2434],{"class":882,"line":436},[880,2429,2363],{"class":948},[880,2431,146],{"class":890},[880,2433,949],{"class":948},[880,2435,1452],{"class":938},[880,2437,2438,2440,2443,2445],{"class":882,"line":441},[880,2439,2363],{"class":948},[880,2441,2442],{"class":890},"NESW 25 5N 30E Mount Diablo Meridian",[880,2444,949],{"class":948},[880,2446,1452],{"class":938},[880,2448,2449,2451,2454,2456],{"class":882,"line":960},[880,2450,2363],{"class":948},[880,2452,2453],{"class":890},"SWNE 22 3N 7E Montana Meridian",[880,2455,949],{"class":948},[880,2457,1452],{"class":938},[880,2459,2460],{"class":882,"line":986},[880,2461,2038],{"class":938},[880,2463,2464],{"class":882,"line":468},[880,2465,922],{"emptyLinePlaceholder":467},[880,2467,2468,2471,2473,2475,2477,2480,2482,2485],{"class":882,"line":2019},[880,2469,2470],{"class":910},"results ",[880,2472,931],{"class":930},[880,2474,968],{"class":910},[880,2476,47],{"class":938},[880,2478,2479],{"class":934},"batch_search",[880,2481,939],{"class":938},[880,2483,2484],{"class":934},"locations",[880,2486,957],{"class":938},[880,2488,2489,2491,2494,2496,2499],{"class":882,"line":2041},[880,2490,2289],{"class":906},[880,2492,2493],{"class":910}," fc ",[880,2495,2295],{"class":906},[880,2497,2498],{"class":910}," results",[880,2500,2306],{"class":938},[880,2502,2503,2506,2508,2511,2513,2515,2517,2519],{"class":882,"line":2061},[880,2504,2505],{"class":910},"    feature ",[880,2507,931],{"class":930},[880,2509,2510],{"class":910}," fc",[880,2512,47],{"class":938},[880,2514,1001],{"class":1000},[880,2516,1004],{"class":938},[880,2518,1008],{"class":1007},[880,2520,2038],{"class":938},[880,2522,2524,2526,2528,2530,2532,2534,2536,2538,2540,2543,2545,2547,2549,2551,2553,2555,2558,2560,2563,2566],{"class":882,"line":2523},10,[880,2525,2311],{"class":989},[880,2527,939],{"class":938},[880,2529,2048],{"class":934},[880,2531,47],{"class":938},[880,2533,1014],{"class":1000},[880,2535,47],{"class":938},[880,2537,2171],{"class":1000},[880,2539,1484],{"class":938},[880,2541,2542],{"class":934}," feature",[880,2544,47],{"class":938},[880,2546,2072],{"class":1000},[880,2548,47],{"class":938},[880,2550,2077],{"class":1000},[880,2552,1004],{"class":938},[880,2554,1008],{"class":1007},[880,2556,2557],{"class":938},"][",[880,2559,1008],{"class":1007},[880,2561,2562],{"class":938},"][:",[880,2564,2565],{"class":1007},"2",[880,2567,1990],{"class":938},[10,2569,2570],{},"Batch reverse geocoding works the same way:",[223,2572,2574],{"className":897,"code":2573,"language":899,"meta":231,"style":231},"coordinates = [(-97.5, 36.1), (-110.0, 45.5), (-104.8, 39.7)]\nresults = client.batch_reverse(coordinates, unit=\"Section\")\n",[183,2575,2576,2627],{"__ignoreMap":231},[880,2577,2578,2581,2583,2586,2588,2590,2592,2594,2597,2600,2602,2605,2607,2610,2612,2614,2616,2619,2621,2624],{"class":882,"line":883},[880,2579,2580],{"class":910},"coordinates ",[880,2582,931],{"class":930},[880,2584,2585],{"class":938}," [(",[880,2587,2122],{"class":930},[880,2589,2125],{"class":1007},[880,2591,1484],{"class":938},[880,2593,2130],{"class":1007},[880,2595,2596],{"class":938},"),",[880,2598,2599],{"class":938}," (",[880,2601,2122],{"class":930},[880,2603,2604],{"class":1007},"110.0",[880,2606,1484],{"class":938},[880,2608,2609],{"class":1007}," 45.5",[880,2611,2596],{"class":938},[880,2613,2599],{"class":938},[880,2615,2122],{"class":930},[880,2617,2618],{"class":1007},"104.8",[880,2620,1484],{"class":938},[880,2622,2623],{"class":1007}," 39.7",[880,2625,2626],{"class":938},")]\n",[880,2628,2629,2631,2633,2635,2637,2640,2642,2644,2646,2648,2650,2652,2654,2656],{"class":882,"line":436},[880,2630,2470],{"class":910},[880,2632,931],{"class":930},[880,2634,968],{"class":910},[880,2636,47],{"class":938},[880,2638,2639],{"class":934},"batch_reverse",[880,2641,939],{"class":938},[880,2643,2077],{"class":934},[880,2645,1484],{"class":938},[880,2647,2227],{"class":942},[880,2649,931],{"class":930},[880,2651,949],{"class":948},[880,2653,328],{"class":890},[880,2655,949],{"class":948},[880,2657,957],{"class":938},[22,2659,2661],{"id":2660},"error-handling","Error handling",[10,2663,2664],{},"The SDK raises typed exceptions mapped to HTTP status codes:",[223,2666,2668],{"className":897,"code":2667,"language":899,"meta":231,"style":231},"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",[183,2669,2670,2687,2694,2701,2708,2715,2719,2723,2730,2754,2770,2796,2806,2822,2836,2864,2874],{"__ignoreMap":231},[880,2671,2672,2674,2677,2679,2682,2684],{"class":882,"line":883},[880,2673,907],{"class":906},[880,2675,2676],{"class":910}," townshipamerica",[880,2678,47],{"class":938},[880,2680,2681],{"class":910},"exceptions ",[880,2683,914],{"class":906},[880,2685,2686],{"class":938}," (\n",[880,2688,2689,2692],{"class":882,"line":436},[880,2690,2691],{"class":910},"    AuthenticationError",[880,2693,1452],{"class":938},[880,2695,2696,2699],{"class":882,"line":441},[880,2697,2698],{"class":910},"    NotFoundError",[880,2700,1452],{"class":938},[880,2702,2703,2706],{"class":882,"line":960},[880,2704,2705],{"class":910},"    RateLimitError",[880,2707,1452],{"class":938},[880,2709,2710,2713],{"class":882,"line":986},[880,2711,2712],{"class":910},"    ValidationError",[880,2714,1452],{"class":938},[880,2716,2717],{"class":882,"line":468},[880,2718,957],{"class":938},[880,2720,2721],{"class":882,"line":2019},[880,2722,922],{"emptyLinePlaceholder":467},[880,2724,2725,2728],{"class":882,"line":2041},[880,2726,2727],{"class":906},"try",[880,2729,2306],{"class":938},[880,2731,2732,2735,2737,2739,2741,2743,2745,2747,2750,2752],{"class":882,"line":2061},[880,2733,2734],{"class":910},"    result ",[880,2736,931],{"class":930},[880,2738,968],{"class":910},[880,2740,47],{"class":938},[880,2742,973],{"class":934},[880,2744,939],{"class":938},[880,2746,949],{"class":948},[880,2748,2749],{"class":890},"invalid input",[880,2751,949],{"class":948},[880,2753,957],{"class":938},[880,2755,2756,2759,2762,2765,2768],{"class":882,"line":2523},[880,2757,2758],{"class":906},"except",[880,2760,2761],{"class":910}," ValidationError ",[880,2763,2764],{"class":906},"as",[880,2766,2767],{"class":910}," e",[880,2769,2306],{"class":938},[880,2771,2773,2775,2777,2780,2783,2786,2789,2792,2794],{"class":882,"line":2772},11,[880,2774,2311],{"class":989},[880,2776,939],{"class":938},[880,2778,2779],{"class":1914},"f",[880,2781,2782],{"class":890},"\"Bad input: ",[880,2784,2785],{"class":1007},"{",[880,2787,2788],{"class":934},"e",[880,2790,2791],{"class":1007},"}",[880,2793,949],{"class":890},[880,2795,957],{"class":938},[880,2797,2799,2801,2804],{"class":882,"line":2798},12,[880,2800,2758],{"class":906},[880,2802,2803],{"class":910}," AuthenticationError",[880,2805,2306],{"class":938},[880,2807,2809,2811,2813,2815,2818,2820],{"class":882,"line":2808},13,[880,2810,2311],{"class":989},[880,2812,939],{"class":938},[880,2814,949],{"class":948},[880,2816,2817],{"class":890},"Check your API key",[880,2819,949],{"class":948},[880,2821,957],{"class":938},[880,2823,2825,2827,2830,2832,2834],{"class":882,"line":2824},14,[880,2826,2758],{"class":906},[880,2828,2829],{"class":910}," RateLimitError ",[880,2831,2764],{"class":906},[880,2833,2767],{"class":910},[880,2835,2306],{"class":938},[880,2837,2839,2841,2843,2845,2848,2850,2852,2854,2857,2859,2862],{"class":882,"line":2838},15,[880,2840,2311],{"class":989},[880,2842,939],{"class":938},[880,2844,2779],{"class":1914},[880,2846,2847],{"class":890},"\"Rate limited — retry after ",[880,2849,2785],{"class":1007},[880,2851,2788],{"class":934},[880,2853,47],{"class":938},[880,2855,2856],{"class":1000},"retry_after",[880,2858,2791],{"class":1007},[880,2860,2861],{"class":890}," seconds\"",[880,2863,957],{"class":938},[880,2865,2867,2869,2872],{"class":882,"line":2866},16,[880,2868,2758],{"class":906},[880,2870,2871],{"class":910}," NotFoundError",[880,2873,2306],{"class":938},[880,2875,2877,2879,2881,2883,2886,2888],{"class":882,"line":2876},17,[880,2878,2311],{"class":989},[880,2880,939],{"class":938},[880,2882,949],{"class":948},[880,2884,2885],{"class":890},"No PLSS data at that location",[880,2887,949],{"class":948},[880,2889,957],{"class":938},[22,2891,2893],{"id":2892},"context-manager","Context manager",[10,2895,2896,2897,2900],{},"The client supports ",[183,2898,2899],{},"with"," statements for automatic cleanup:",[223,2902,2904],{"className":897,"code":2903,"language":899,"meta":231,"style":231},"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",[183,2905,2906,2942,2964,2986],{"__ignoreMap":231},[880,2907,2908,2910,2912,2914,2916,2918,2920,2922,2924,2926,2928,2930,2932,2935,2938,2940],{"class":882,"line":883},[880,2909,2899],{"class":906},[880,2911,935],{"class":934},[880,2913,939],{"class":938},[880,2915,943],{"class":942},[880,2917,931],{"class":930},[880,2919,1973],{"class":934},[880,2921,47],{"class":938},[880,2923,1978],{"class":1000},[880,2925,1004],{"class":938},[880,2927,949],{"class":948},[880,2929,1985],{"class":890},[880,2931,949],{"class":948},[880,2933,2934],{"class":938},"])",[880,2936,2937],{"class":906}," as",[880,2939,968],{"class":910},[880,2941,2306],{"class":938},[880,2943,2944,2946,2948,2950,2952,2954,2956,2958,2960,2962],{"class":882,"line":436},[880,2945,2734],{"class":910},[880,2947,931],{"class":930},[880,2949,968],{"class":910},[880,2951,47],{"class":938},[880,2953,973],{"class":934},[880,2955,939],{"class":938},[880,2957,949],{"class":948},[880,2959,146],{"class":890},[880,2961,949],{"class":948},[880,2963,957],{"class":938},[880,2965,2966,2968,2970,2972,2974,2976,2978,2980,2982,2984],{"class":882,"line":441},[880,2967,2311],{"class":989},[880,2969,939],{"class":938},[880,2971,995],{"class":934},[880,2973,47],{"class":938},[880,2975,1001],{"class":1000},[880,2977,1004],{"class":938},[880,2979,1008],{"class":1007},[880,2981,1011],{"class":938},[880,2983,1014],{"class":1000},[880,2985,957],{"class":938},[880,2987,2988],{"class":882,"line":960},[880,2989,2990],{"class":2057},"# Connection closed automatically\n",[22,2992,1064],{"id":1063},[173,2994,2995,3001,3007],{},[176,2996,2997,3000],{},[264,2998,2999],{"href":1026},"Python SDK Async & GeoPandas Patterns"," - Async workflows, GeoPandas integration, and production patterns",[176,3002,3003,3006],{},[264,3004,3005],{"href":411},"API Integration Guide"," - REST API endpoints, pricing, and integration patterns",[176,3008,3009,1090],{},[264,3010,1089],{"href":425},[10,3012,3013,3014,3016,3017,47],{},"Need help? ",[264,3015,1103],{"href":432}," or open an issue on ",[264,3018,3021],{"href":3019,"rel":3020},"https:\u002F\u002Fgithub.com\u002Fmepa1363\u002Ftownshipamerica-web\u002Fissues",[1047],"GitHub",[1106,3023,3024],{},"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":231,"searchDepth":436,"depth":436,"links":3026},[3027,3028,3033,3034,3035,3036,3037,3038],{"id":1853,"depth":436,"text":1854},{"id":1883,"depth":436,"text":1884,"children":3029},[3030,3031,3032],{"id":497,"depth":441,"text":498},{"id":1900,"depth":441,"text":1901},{"id":1929,"depth":441,"text":1930},{"id":2095,"depth":436,"text":2096},{"id":2241,"depth":436,"text":2242},{"id":2407,"depth":436,"text":426},{"id":2660,"depth":436,"text":2661},{"id":2892,"depth":436,"text":2893},{"id":1063,"depth":436,"text":1064},"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":1841,"description":3039},"guides\u002Fpython-sdk","pYFB5zyw_PgAylATNjsk1zWojezvE8suKc6YbWGD1gE"]