[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"guide-search-api-guide":3,"related-search-api-guide":8368},{"id":4,"title":5,"body":6,"category":8358,"description":8359,"draft":8360,"extension":8361,"icon":8362,"meta":8363,"navigation":1090,"order":282,"path":8364,"seo":8365,"stem":8366,"__hash__":8367},"guides\u002Fguides\u002Fsearch-api-guide.md","Using the Search API to Convert Legal Land Descriptions",{"type":7,"value":8,"toc":8340},"minimark",[9,14,23,27,55,75,79,90,95,105,111,117,122,160,165,171,176,798,804,826,841,845,851,855,934,938,944,947,951,957,1354,1358,1361,1737,1758,1762,1765,2266,2278,2282,2285,2360,2363,2695,2699,2702,4254,4258,4261,5354,5357,5386,5390,5396,6395,6397,6432,6436,6439,6446,7324,7331,8004,8007,8133,8137,8140,8146,8199,8205,8227,8233,8255,8261,8267,8270,8274,8318,8321,8337],[10,11,13],"h2",{"id":12},"what-youll-build","What You'll Build",[15,16,17,18,22],"p",{},"A working integration that converts a legal land description like ",[19,20,21],"code",{},"NW-25-24-1-W5"," into GPS coordinates (latitude, longitude, and a boundary polygon), and a reverse lookup that converts GPS coordinates back into a legal land description. By the end you'll have examples in vanilla JS, Node.js, Python, and React.",[10,24,26],{"id":25},"prerequisites","Prerequisites",[28,29,30,39,42,45,52],"ul",{},[31,32,33,34],"li",{},"A Township Canada API key - get one from the ",[35,36,38],"a",{"href":37},"\u002Fapp\u002Fapi","API page",[31,40,41],{},"Basic familiarity with fetch and async\u002Fawait",[31,43,44],{},"For the Node.js example: Node.js 18+",[31,46,47,48,51],{},"For the Python example: Python 3.8+ with the ",[19,49,50],{},"requests"," library",[31,53,54],{},"For the React example: a React project (Next.js, Vite, or Create React App)",[15,56,57,58,62,63,70,71,74],{},"The Search API is available starting at $20\u002Fmonth. See the ",[35,59,61],{"href":60},"\u002Fguides\u002Fapi-integration","API Integration Guide"," for pricing tiers and rate limits. If you prefer a typed client over raw HTTP, the ",[35,64,66,69],{"href":65},"\u002Fblog\u002Ftownshipcanada-sdk-typescript-npm-package",[19,67,68],{},"townshipcanada"," TypeScript package"," wraps these endpoints with a single ",[19,72,73],{},"search()"," call.",[10,76,78],{"id":77},"the-search-endpoints","The Search Endpoints",[15,80,81,82,85,86,89],{},"The Search API has two endpoints. Both live under ",[19,83,84],{},"https:\u002F\u002Fdeveloper.townshipcanada.com"," and require an ",[19,87,88],{},"X-API-Key"," header.",[91,92,94],"h3",{"id":93},"forward-legal-description-to-coordinates","Forward: Legal Description to Coordinates",[96,97,102],"pre",{"className":98,"code":100,"language":101},[99],"language-text","GET \u002Fsearch\u002Flegal-location\n","text",[19,103,100],{"__ignoreMap":104},"",[15,106,107],{},[108,109,110],"strong",{},"Headers:",[96,112,115],{"className":113,"code":114,"language":101},[99],"X-API-Key: YOUR_API_KEY\n",[19,116,114],{"__ignoreMap":104},[15,118,119],{},[108,120,121],{},"Query parameters:",[123,124,125,141],"table",{},[126,127,128],"thead",{},[129,130,131,135,138],"tr",{},[132,133,134],"th",{},"Parameter",[132,136,137],{},"Required",[132,139,140],{},"Description",[142,143,144],"tbody",{},[129,145,146,152,155],{},[147,148,149],"td",{},[19,150,151],{},"location",[147,153,154],{},"Yes",[147,156,157,158],{},"Legal land description, e.g. ",[19,159,21],{},[15,161,162],{},[108,163,164],{},"Example request:",[96,166,169],{"className":167,"code":168,"language":101},[99],"GET \u002Fsearch\u002Flegal-location?location=NW-25-24-1-W5\n",[19,170,168],{"__ignoreMap":104},[15,172,173],{},[108,174,175],{},"Response format:",[96,177,181],{"className":178,"code":179,"language":180,"meta":104,"style":104},"language-json shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n          [\n            [-114.06, 51.05],\n            [-114.06, 51.1],\n            [-114.01, 51.1],\n            [-114.01, 51.05],\n            [-114.06, 51.05]\n          ]\n        ]\n      },\n      \"properties\": {\n        \"shape\": \"grid\",\n        \"search_term\": \"NW-25-24-1-W5\",\n        \"legal_location\": \"NW-25-24-1-W5\",\n        \"unit\": \"Quarter Section\",\n        \"survey_system\": \"DLS\",\n        \"province\": \"Alberta\"\n      }\n    },\n    {\n      \"type\": \"Feature\",\n      \"geometry\": {\n        \"type\": \"Point\",\n        \"coordinates\": [-114.01924, 51.077932]\n      },\n      \"properties\": {\n        \"shape\": \"centroid\",\n        \"search_term\": \"NW-25-24-1-W5\",\n        \"legal_location\": \"NW-25-24-1-W5\",\n        \"unit\": \"Quarter Section\",\n        \"survey_system\": \"DLS\",\n        \"province\": \"Alberta\"\n      }\n    }\n  ]\n}\n","json",[19,182,183,192,222,237,243,265,280,302,316,322,341,355,369,382,396,402,408,414,428,449,469,489,510,531,551,557,563,568,587,600,620,644,649,662,682,701,720,739,758,775,780,786,792],{"__ignoreMap":104},[184,185,188],"span",{"class":186,"line":187},"line",1,[184,189,191],{"class":190},"soVBu","{\n",[184,193,195,199,203,206,209,213,217,219],{"class":186,"line":194},2,[184,196,198],{"class":197},"s4Jsk","  \"",[184,200,202],{"class":201},"sLorS","type",[184,204,205],{"class":197},"\"",[184,207,208],{"class":190},":",[184,210,212],{"class":211},"sbYkP"," \"",[184,214,216],{"class":215},"sTbE_","FeatureCollection",[184,218,205],{"class":211},[184,220,221],{"class":190},",\n",[184,223,225,227,230,232,234],{"class":186,"line":224},3,[184,226,198],{"class":197},[184,228,229],{"class":201},"features",[184,231,205],{"class":197},[184,233,208],{"class":190},[184,235,236],{"class":190}," [\n",[184,238,240],{"class":186,"line":239},4,[184,241,242],{"class":190},"    {\n",[184,244,246,249,252,254,256,258,261,263],{"class":186,"line":245},5,[184,247,248],{"class":197},"      \"",[184,250,202],{"class":251},"sa2tF",[184,253,205],{"class":197},[184,255,208],{"class":190},[184,257,212],{"class":211},[184,259,260],{"class":215},"Feature",[184,262,205],{"class":211},[184,264,221],{"class":190},[184,266,268,270,273,275,277],{"class":186,"line":267},6,[184,269,248],{"class":197},[184,271,272],{"class":251},"geometry",[184,274,205],{"class":197},[184,276,208],{"class":190},[184,278,279],{"class":190}," {\n",[184,281,283,286,289,291,293,295,298,300],{"class":186,"line":282},7,[184,284,285],{"class":197},"        \"",[184,287,202],{"class":288},"skNjk",[184,290,205],{"class":197},[184,292,208],{"class":190},[184,294,212],{"class":211},[184,296,297],{"class":215},"Polygon",[184,299,205],{"class":211},[184,301,221],{"class":190},[184,303,305,307,310,312,314],{"class":186,"line":304},8,[184,306,285],{"class":197},[184,308,309],{"class":288},"coordinates",[184,311,205],{"class":197},[184,313,208],{"class":190},[184,315,236],{"class":190},[184,317,319],{"class":186,"line":318},9,[184,320,321],{"class":190},"          [\n",[184,323,325,328,332,335,338],{"class":186,"line":324},10,[184,326,327],{"class":190},"            [",[184,329,331],{"class":330},"s7CZa","-114.06",[184,333,334],{"class":190},",",[184,336,337],{"class":330}," 51.05",[184,339,340],{"class":190},"],\n",[184,342,344,346,348,350,353],{"class":186,"line":343},11,[184,345,327],{"class":190},[184,347,331],{"class":330},[184,349,334],{"class":190},[184,351,352],{"class":330}," 51.1",[184,354,340],{"class":190},[184,356,358,360,363,365,367],{"class":186,"line":357},12,[184,359,327],{"class":190},[184,361,362],{"class":330},"-114.01",[184,364,334],{"class":190},[184,366,352],{"class":330},[184,368,340],{"class":190},[184,370,372,374,376,378,380],{"class":186,"line":371},13,[184,373,327],{"class":190},[184,375,362],{"class":330},[184,377,334],{"class":190},[184,379,337],{"class":330},[184,381,340],{"class":190},[184,383,385,387,389,391,393],{"class":186,"line":384},14,[184,386,327],{"class":190},[184,388,331],{"class":330},[184,390,334],{"class":190},[184,392,337],{"class":330},[184,394,395],{"class":190},"]\n",[184,397,399],{"class":186,"line":398},15,[184,400,401],{"class":190},"          ]\n",[184,403,405],{"class":186,"line":404},16,[184,406,407],{"class":190},"        ]\n",[184,409,411],{"class":186,"line":410},17,[184,412,413],{"class":190},"      },\n",[184,415,417,419,422,424,426],{"class":186,"line":416},18,[184,418,248],{"class":197},[184,420,421],{"class":251},"properties",[184,423,205],{"class":197},[184,425,208],{"class":190},[184,427,279],{"class":190},[184,429,431,433,436,438,440,442,445,447],{"class":186,"line":430},19,[184,432,285],{"class":197},[184,434,435],{"class":288},"shape",[184,437,205],{"class":197},[184,439,208],{"class":190},[184,441,212],{"class":211},[184,443,444],{"class":215},"grid",[184,446,205],{"class":211},[184,448,221],{"class":190},[184,450,452,454,457,459,461,463,465,467],{"class":186,"line":451},20,[184,453,285],{"class":197},[184,455,456],{"class":288},"search_term",[184,458,205],{"class":197},[184,460,208],{"class":190},[184,462,212],{"class":211},[184,464,21],{"class":215},[184,466,205],{"class":211},[184,468,221],{"class":190},[184,470,472,474,477,479,481,483,485,487],{"class":186,"line":471},21,[184,473,285],{"class":197},[184,475,476],{"class":288},"legal_location",[184,478,205],{"class":197},[184,480,208],{"class":190},[184,482,212],{"class":211},[184,484,21],{"class":215},[184,486,205],{"class":211},[184,488,221],{"class":190},[184,490,492,494,497,499,501,503,506,508],{"class":186,"line":491},22,[184,493,285],{"class":197},[184,495,496],{"class":288},"unit",[184,498,205],{"class":197},[184,500,208],{"class":190},[184,502,212],{"class":211},[184,504,505],{"class":215},"Quarter Section",[184,507,205],{"class":211},[184,509,221],{"class":190},[184,511,513,515,518,520,522,524,527,529],{"class":186,"line":512},23,[184,514,285],{"class":197},[184,516,517],{"class":288},"survey_system",[184,519,205],{"class":197},[184,521,208],{"class":190},[184,523,212],{"class":211},[184,525,526],{"class":215},"DLS",[184,528,205],{"class":211},[184,530,221],{"class":190},[184,532,534,536,539,541,543,545,548],{"class":186,"line":533},24,[184,535,285],{"class":197},[184,537,538],{"class":288},"province",[184,540,205],{"class":197},[184,542,208],{"class":190},[184,544,212],{"class":211},[184,546,547],{"class":215},"Alberta",[184,549,550],{"class":211},"\"\n",[184,552,554],{"class":186,"line":553},25,[184,555,556],{"class":190},"      }\n",[184,558,560],{"class":186,"line":559},26,[184,561,562],{"class":190},"    },\n",[184,564,566],{"class":186,"line":565},27,[184,567,242],{"class":190},[184,569,571,573,575,577,579,581,583,585],{"class":186,"line":570},28,[184,572,248],{"class":197},[184,574,202],{"class":251},[184,576,205],{"class":197},[184,578,208],{"class":190},[184,580,212],{"class":211},[184,582,260],{"class":215},[184,584,205],{"class":211},[184,586,221],{"class":190},[184,588,590,592,594,596,598],{"class":186,"line":589},29,[184,591,248],{"class":197},[184,593,272],{"class":251},[184,595,205],{"class":197},[184,597,208],{"class":190},[184,599,279],{"class":190},[184,601,603,605,607,609,611,613,616,618],{"class":186,"line":602},30,[184,604,285],{"class":197},[184,606,202],{"class":288},[184,608,205],{"class":197},[184,610,208],{"class":190},[184,612,212],{"class":211},[184,614,615],{"class":215},"Point",[184,617,205],{"class":211},[184,619,221],{"class":190},[184,621,623,625,627,629,631,634,637,639,642],{"class":186,"line":622},31,[184,624,285],{"class":197},[184,626,309],{"class":288},[184,628,205],{"class":197},[184,630,208],{"class":190},[184,632,633],{"class":190}," [",[184,635,636],{"class":330},"-114.01924",[184,638,334],{"class":190},[184,640,641],{"class":330}," 51.077932",[184,643,395],{"class":190},[184,645,647],{"class":186,"line":646},32,[184,648,413],{"class":190},[184,650,652,654,656,658,660],{"class":186,"line":651},33,[184,653,248],{"class":197},[184,655,421],{"class":251},[184,657,205],{"class":197},[184,659,208],{"class":190},[184,661,279],{"class":190},[184,663,665,667,669,671,673,675,678,680],{"class":186,"line":664},34,[184,666,285],{"class":197},[184,668,435],{"class":288},[184,670,205],{"class":197},[184,672,208],{"class":190},[184,674,212],{"class":211},[184,676,677],{"class":215},"centroid",[184,679,205],{"class":211},[184,681,221],{"class":190},[184,683,685,687,689,691,693,695,697,699],{"class":186,"line":684},35,[184,686,285],{"class":197},[184,688,456],{"class":288},[184,690,205],{"class":197},[184,692,208],{"class":190},[184,694,212],{"class":211},[184,696,21],{"class":215},[184,698,205],{"class":211},[184,700,221],{"class":190},[184,702,704,706,708,710,712,714,716,718],{"class":186,"line":703},36,[184,705,285],{"class":197},[184,707,476],{"class":288},[184,709,205],{"class":197},[184,711,208],{"class":190},[184,713,212],{"class":211},[184,715,21],{"class":215},[184,717,205],{"class":211},[184,719,221],{"class":190},[184,721,723,725,727,729,731,733,735,737],{"class":186,"line":722},37,[184,724,285],{"class":197},[184,726,496],{"class":288},[184,728,205],{"class":197},[184,730,208],{"class":190},[184,732,212],{"class":211},[184,734,505],{"class":215},[184,736,205],{"class":211},[184,738,221],{"class":190},[184,740,742,744,746,748,750,752,754,756],{"class":186,"line":741},38,[184,743,285],{"class":197},[184,745,517],{"class":288},[184,747,205],{"class":197},[184,749,208],{"class":190},[184,751,212],{"class":211},[184,753,526],{"class":215},[184,755,205],{"class":211},[184,757,221],{"class":190},[184,759,761,763,765,767,769,771,773],{"class":186,"line":760},39,[184,762,285],{"class":197},[184,764,538],{"class":288},[184,766,205],{"class":197},[184,768,208],{"class":190},[184,770,212],{"class":211},[184,772,547],{"class":215},[184,774,550],{"class":211},[184,776,778],{"class":186,"line":777},40,[184,779,556],{"class":190},[184,781,783],{"class":186,"line":782},41,[184,784,785],{"class":190},"    }\n",[184,787,789],{"class":186,"line":788},42,[184,790,791],{"class":190},"  ]\n",[184,793,795],{"class":186,"line":794},43,[184,796,797],{"class":190},"}\n",[15,799,800,801,803],{},"Each successful response returns a GeoJSON ",[19,802,216],{}," containing two features:",[28,805,806,819],{},[31,807,808,809,811,812,814,815,818],{},"A ",[108,810,444],{}," feature with a ",[19,813,297],{}," or ",[19,816,817],{},"MultiPolygon"," geometry representing the boundary of the legal subdivision.",[31,820,808,821,811,823,825],{},[108,822,677],{},[19,824,615],{}," geometry at the center of the subdivision.",[15,827,828,829,832,833,836,837,840],{},"Use ",[19,830,831],{},"feature.properties.shape"," to distinguish between them. The centroid coordinates are at ",[19,834,835],{},"feature.geometry.coordinates"," as ",[19,838,839],{},"[longitude, latitude]",".",[91,842,844],{"id":843},"reverse-coordinates-to-legal-description","Reverse: Coordinates to Legal Description",[96,846,849],{"className":847,"code":848,"language":101},[99],"GET \u002Fsearch\u002Fcoordinates\n",[19,850,848],{"__ignoreMap":104},[15,852,853],{},[108,854,121],{},[123,856,857,867],{},[126,858,859],{},[129,860,861,863,865],{},[132,862,134],{},[132,864,137],{},[132,866,140],{},[142,868,869,888,912],{},[129,870,871,875,877],{},[147,872,873],{},[19,874,151],{},[147,876,154],{},[147,878,879,880,883,884,887],{},"Coordinates as ",[19,881,882],{},"lng,lat"," (e.g. ",[19,885,886],{},"-114.01924,51.077932",")",[129,889,890,894,897],{},[147,891,892],{},[19,893,517],{},[147,895,896],{},"No",[147,898,899,900,902,903,902,906,902,909],{},"Filter to a specific system: ",[19,901,526],{},", ",[19,904,905],{},"NTS",[19,907,908],{},"River Lot",[19,910,911],{},"Geographic Township",[129,913,914,918,920],{},[147,915,916],{},[19,917,496],{},[147,919,896],{},[147,921,922,923,902,926,902,929,902,931],{},"Resolution level: ",[19,924,925],{},"Township",[19,927,928],{},"Section",[19,930,505],{},[19,932,933],{},"LSD",[15,935,936],{},[108,937,164],{},[96,939,942],{"className":940,"code":941,"language":101},[99],"GET \u002Fsearch\u002Fcoordinates?location=-114.01924,51.077932&unit=Quarter%20Section\n",[19,943,941],{"__ignoreMap":104},[15,945,946],{},"The response format is the same GeoJSON structure as the forward endpoint.",[10,948,950],{"id":949},"step-1-basic-forward-lookup","Step 1: Basic Forward Lookup",[15,952,953,954,956],{},"The simplest integration is a single fetch call. Pass the legal land description as the ",[19,955,151],{}," query parameter and extract the centroid coordinates from the response.",[96,958,962],{"className":959,"code":960,"language":961,"meta":104,"style":104},"language-js shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","async function searchLegalLocation(lld, apiKey) {\n  const res = await fetch(\n    `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=${encodeURIComponent(lld)}`,\n    { headers: { \"X-API-Key\": apiKey } }\n  );\n\n  if (!res.ok) {\n    throw new Error(`HTTP ${res.status}: ${await res.text()}`);\n  }\n\n  const data = await res.json();\n  const centroid = data.features.find((f) => f.properties.shape === \"centroid\");\n\n  if (!centroid) return null;\n\n  const [lng, lat] = centroid.geometry.coordinates;\n  return { descriptor: centroid.properties.legal_location, lng, lat };\n}\n","js",[19,963,964,993,1016,1047,1078,1086,1092,1116,1170,1175,1179,1200,1257,1261,1281,1285,1316,1350],{"__ignoreMap":104},[184,965,966,970,973,977,980,984,986,989,991],{"class":186,"line":187},[184,967,969],{"class":968},"s5Kfy","async",[184,971,972],{"class":968}," function",[184,974,976],{"class":975},"sljsM"," searchLegalLocation",[184,978,979],{"class":190},"(",[184,981,983],{"class":982},"sqOPj","lld",[184,985,334],{"class":190},[184,987,988],{"class":982}," apiKey",[184,990,887],{"class":190},[184,992,279],{"class":190},[184,994,995,998,1002,1005,1009,1012],{"class":186,"line":194},[184,996,997],{"class":968},"  const",[184,999,1001],{"class":1000},"sSC40"," res",[184,1003,1004],{"class":190}," =",[184,1006,1008],{"class":1007},"siDh9"," await",[184,1010,1011],{"class":975}," fetch",[184,1013,1015],{"class":1014},"sLdnO","(\n",[184,1017,1018,1021,1024,1028,1031,1034,1037,1039,1042,1045],{"class":186,"line":224},[184,1019,1020],{"class":211},"    `",[184,1022,1023],{"class":215},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=",[184,1025,1027],{"class":1026},"s8XtY","${",[184,1029,1030],{"class":975},"encodeURIComponent",[184,1032,979],{"class":1033},"snCua",[184,1035,983],{"class":1036},"su_V2",[184,1038,887],{"class":1033},[184,1040,1041],{"class":1026},"}",[184,1043,1044],{"class":211},"`",[184,1046,221],{"class":190},[184,1048,1049,1052,1056,1058,1061,1063,1066,1068,1070,1072,1075],{"class":186,"line":239},[184,1050,1051],{"class":190},"    {",[184,1053,1055],{"class":1054},"suXOh"," headers",[184,1057,208],{"class":190},[184,1059,1060],{"class":190}," {",[184,1062,212],{"class":211},[184,1064,88],{"class":1065},"sQtxO",[184,1067,205],{"class":211},[184,1069,208],{"class":190},[184,1071,988],{"class":1000},[184,1073,1074],{"class":190}," }",[184,1076,1077],{"class":190}," }\n",[184,1079,1080,1083],{"class":186,"line":245},[184,1081,1082],{"class":1014},"  )",[184,1084,1085],{"class":190},";\n",[184,1087,1088],{"class":186,"line":267},[184,1089,1091],{"emptyLinePlaceholder":1090},true,"\n",[184,1093,1094,1097,1100,1104,1107,1109,1112,1114],{"class":186,"line":282},[184,1095,1096],{"class":1007},"  if",[184,1098,1099],{"class":1014}," (",[184,1101,1103],{"class":1102},"sVsLi","!",[184,1105,1106],{"class":1000},"res",[184,1108,840],{"class":190},[184,1110,1111],{"class":1000},"ok",[184,1113,887],{"class":1014},[184,1115,279],{"class":190},[184,1117,1118,1121,1124,1127,1129,1131,1134,1136,1138,1140,1143,1145,1148,1150,1153,1155,1157,1159,1162,1164,1166,1168],{"class":186,"line":304},[184,1119,1120],{"class":1007},"    throw",[184,1122,1123],{"class":1102}," new",[184,1125,1126],{"class":975}," Error",[184,1128,979],{"class":1014},[184,1130,1044],{"class":211},[184,1132,1133],{"class":215},"HTTP ",[184,1135,1027],{"class":1026},[184,1137,1106],{"class":1036},[184,1139,840],{"class":190},[184,1141,1142],{"class":1036},"status",[184,1144,1041],{"class":1026},[184,1146,1147],{"class":215},": ",[184,1149,1027],{"class":1026},[184,1151,1152],{"class":1007},"await",[184,1154,1001],{"class":1036},[184,1156,840],{"class":190},[184,1158,101],{"class":975},[184,1160,1161],{"class":1033},"()",[184,1163,1041],{"class":1026},[184,1165,1044],{"class":211},[184,1167,887],{"class":1014},[184,1169,1085],{"class":190},[184,1171,1172],{"class":186,"line":318},[184,1173,1174],{"class":190},"  }\n",[184,1176,1177],{"class":186,"line":324},[184,1178,1091],{"emptyLinePlaceholder":1090},[184,1180,1181,1183,1186,1188,1190,1192,1194,1196,1198],{"class":186,"line":343},[184,1182,997],{"class":968},[184,1184,1185],{"class":1000}," data",[184,1187,1004],{"class":190},[184,1189,1008],{"class":1007},[184,1191,1001],{"class":1000},[184,1193,840],{"class":190},[184,1195,180],{"class":975},[184,1197,1161],{"class":1014},[184,1199,1085],{"class":190},[184,1201,1202,1204,1207,1209,1211,1213,1215,1217,1220,1222,1224,1227,1229,1233,1236,1238,1240,1242,1244,1247,1249,1251,1253,1255],{"class":186,"line":357},[184,1203,997],{"class":968},[184,1205,1206],{"class":1000}," centroid",[184,1208,1004],{"class":190},[184,1210,1185],{"class":1000},[184,1212,840],{"class":190},[184,1214,229],{"class":1000},[184,1216,840],{"class":190},[184,1218,1219],{"class":975},"find",[184,1221,979],{"class":1014},[184,1223,979],{"class":190},[184,1225,1226],{"class":982},"f",[184,1228,887],{"class":190},[184,1230,1232],{"class":1231},"sIOqK"," =>",[184,1234,1235],{"class":1000}," f",[184,1237,840],{"class":190},[184,1239,421],{"class":1000},[184,1241,840],{"class":190},[184,1243,435],{"class":1000},[184,1245,1246],{"class":1102}," ===",[184,1248,212],{"class":211},[184,1250,677],{"class":215},[184,1252,205],{"class":211},[184,1254,887],{"class":1014},[184,1256,1085],{"class":190},[184,1258,1259],{"class":186,"line":371},[184,1260,1091],{"emptyLinePlaceholder":1090},[184,1262,1263,1265,1267,1269,1271,1273,1276,1279],{"class":186,"line":384},[184,1264,1096],{"class":1007},[184,1266,1099],{"class":1014},[184,1268,1103],{"class":1102},[184,1270,677],{"class":1000},[184,1272,887],{"class":1014},[184,1274,1275],{"class":1007}," return",[184,1277,1278],{"class":1102}," null",[184,1280,1085],{"class":190},[184,1282,1283],{"class":186,"line":398},[184,1284,1091],{"emptyLinePlaceholder":1090},[184,1286,1287,1289,1291,1294,1296,1299,1302,1304,1306,1308,1310,1312,1314],{"class":186,"line":404},[184,1288,997],{"class":968},[184,1290,633],{"class":190},[184,1292,1293],{"class":1000},"lng",[184,1295,334],{"class":190},[184,1297,1298],{"class":1000}," lat",[184,1300,1301],{"class":190},"]",[184,1303,1004],{"class":190},[184,1305,1206],{"class":1000},[184,1307,840],{"class":190},[184,1309,272],{"class":1000},[184,1311,840],{"class":190},[184,1313,309],{"class":1000},[184,1315,1085],{"class":190},[184,1317,1318,1321,1323,1326,1328,1330,1332,1334,1336,1338,1340,1343,1345,1347],{"class":186,"line":410},[184,1319,1320],{"class":1007},"  return",[184,1322,1060],{"class":190},[184,1324,1325],{"class":1054}," descriptor",[184,1327,208],{"class":190},[184,1329,1206],{"class":1000},[184,1331,840],{"class":190},[184,1333,421],{"class":1000},[184,1335,840],{"class":190},[184,1337,476],{"class":1000},[184,1339,334],{"class":190},[184,1341,1342],{"class":1000}," lng",[184,1344,334],{"class":190},[184,1346,1298],{"class":1000},[184,1348,1349],{"class":190}," };\n",[184,1351,1352],{"class":186,"line":416},[184,1353,797],{"class":190},[10,1355,1357],{"id":1356},"step-2-extracting-the-boundary-polygon","Step 2: Extracting the Boundary Polygon",[15,1359,1360],{},"For mapping applications, you'll want the boundary polygon in addition to the centroid. The grid feature gives you the full outline of the legal subdivision, which you can render as a filled or stroked polygon on a map.",[96,1362,1364],{"className":959,"code":1363,"language":961,"meta":104,"style":104},"async function searchWithBoundary(lld, apiKey) {\n  const res = await fetch(\n    `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=${encodeURIComponent(lld)}`,\n    { headers: { \"X-API-Key\": apiKey } }\n  );\n\n  if (!res.ok) {\n    throw new Error(`HTTP ${res.status}: ${await res.text()}`);\n  }\n\n  const data = await res.json();\n  const grid = data.features.find((f) => f.properties.shape === \"grid\");\n  const centroid = data.features.find((f) => f.properties.shape === \"centroid\");\n\n  return {\n    descriptor: centroid?.properties.legal_location,\n    centroid: centroid?.geometry.coordinates,\n    boundary: grid?.geometry,\n    properties: centroid?.properties\n  };\n}\n",[19,1365,1366,1387,1401,1423,1447,1453,1457,1475,1521,1525,1529,1549,1600,1650,1654,1660,1680,1699,1714,1728,1733],{"__ignoreMap":104},[184,1367,1368,1370,1372,1375,1377,1379,1381,1383,1385],{"class":186,"line":187},[184,1369,969],{"class":968},[184,1371,972],{"class":968},[184,1373,1374],{"class":975}," searchWithBoundary",[184,1376,979],{"class":190},[184,1378,983],{"class":982},[184,1380,334],{"class":190},[184,1382,988],{"class":982},[184,1384,887],{"class":190},[184,1386,279],{"class":190},[184,1388,1389,1391,1393,1395,1397,1399],{"class":186,"line":194},[184,1390,997],{"class":968},[184,1392,1001],{"class":1000},[184,1394,1004],{"class":190},[184,1396,1008],{"class":1007},[184,1398,1011],{"class":975},[184,1400,1015],{"class":1014},[184,1402,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421],{"class":186,"line":224},[184,1404,1020],{"class":211},[184,1406,1023],{"class":215},[184,1408,1027],{"class":1026},[184,1410,1030],{"class":975},[184,1412,979],{"class":1033},[184,1414,983],{"class":1036},[184,1416,887],{"class":1033},[184,1418,1041],{"class":1026},[184,1420,1044],{"class":211},[184,1422,221],{"class":190},[184,1424,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445],{"class":186,"line":239},[184,1426,1051],{"class":190},[184,1428,1055],{"class":1054},[184,1430,208],{"class":190},[184,1432,1060],{"class":190},[184,1434,212],{"class":211},[184,1436,88],{"class":1065},[184,1438,205],{"class":211},[184,1440,208],{"class":190},[184,1442,988],{"class":1000},[184,1444,1074],{"class":190},[184,1446,1077],{"class":190},[184,1448,1449,1451],{"class":186,"line":245},[184,1450,1082],{"class":1014},[184,1452,1085],{"class":190},[184,1454,1455],{"class":186,"line":267},[184,1456,1091],{"emptyLinePlaceholder":1090},[184,1458,1459,1461,1463,1465,1467,1469,1471,1473],{"class":186,"line":282},[184,1460,1096],{"class":1007},[184,1462,1099],{"class":1014},[184,1464,1103],{"class":1102},[184,1466,1106],{"class":1000},[184,1468,840],{"class":190},[184,1470,1111],{"class":1000},[184,1472,887],{"class":1014},[184,1474,279],{"class":190},[184,1476,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519],{"class":186,"line":304},[184,1478,1120],{"class":1007},[184,1480,1123],{"class":1102},[184,1482,1126],{"class":975},[184,1484,979],{"class":1014},[184,1486,1044],{"class":211},[184,1488,1133],{"class":215},[184,1490,1027],{"class":1026},[184,1492,1106],{"class":1036},[184,1494,840],{"class":190},[184,1496,1142],{"class":1036},[184,1498,1041],{"class":1026},[184,1500,1147],{"class":215},[184,1502,1027],{"class":1026},[184,1504,1152],{"class":1007},[184,1506,1001],{"class":1036},[184,1508,840],{"class":190},[184,1510,101],{"class":975},[184,1512,1161],{"class":1033},[184,1514,1041],{"class":1026},[184,1516,1044],{"class":211},[184,1518,887],{"class":1014},[184,1520,1085],{"class":190},[184,1522,1523],{"class":186,"line":318},[184,1524,1174],{"class":190},[184,1526,1527],{"class":186,"line":324},[184,1528,1091],{"emptyLinePlaceholder":1090},[184,1530,1531,1533,1535,1537,1539,1541,1543,1545,1547],{"class":186,"line":343},[184,1532,997],{"class":968},[184,1534,1185],{"class":1000},[184,1536,1004],{"class":190},[184,1538,1008],{"class":1007},[184,1540,1001],{"class":1000},[184,1542,840],{"class":190},[184,1544,180],{"class":975},[184,1546,1161],{"class":1014},[184,1548,1085],{"class":190},[184,1550,1551,1553,1556,1558,1560,1562,1564,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598],{"class":186,"line":357},[184,1552,997],{"class":968},[184,1554,1555],{"class":1000}," grid",[184,1557,1004],{"class":190},[184,1559,1185],{"class":1000},[184,1561,840],{"class":190},[184,1563,229],{"class":1000},[184,1565,840],{"class":190},[184,1567,1219],{"class":975},[184,1569,979],{"class":1014},[184,1571,979],{"class":190},[184,1573,1226],{"class":982},[184,1575,887],{"class":190},[184,1577,1232],{"class":1231},[184,1579,1235],{"class":1000},[184,1581,840],{"class":190},[184,1583,421],{"class":1000},[184,1585,840],{"class":190},[184,1587,435],{"class":1000},[184,1589,1246],{"class":1102},[184,1591,212],{"class":211},[184,1593,444],{"class":215},[184,1595,205],{"class":211},[184,1597,887],{"class":1014},[184,1599,1085],{"class":190},[184,1601,1602,1604,1606,1608,1610,1612,1614,1616,1618,1620,1622,1624,1626,1628,1630,1632,1634,1636,1638,1640,1642,1644,1646,1648],{"class":186,"line":371},[184,1603,997],{"class":968},[184,1605,1206],{"class":1000},[184,1607,1004],{"class":190},[184,1609,1185],{"class":1000},[184,1611,840],{"class":190},[184,1613,229],{"class":1000},[184,1615,840],{"class":190},[184,1617,1219],{"class":975},[184,1619,979],{"class":1014},[184,1621,979],{"class":190},[184,1623,1226],{"class":982},[184,1625,887],{"class":190},[184,1627,1232],{"class":1231},[184,1629,1235],{"class":1000},[184,1631,840],{"class":190},[184,1633,421],{"class":1000},[184,1635,840],{"class":190},[184,1637,435],{"class":1000},[184,1639,1246],{"class":1102},[184,1641,212],{"class":211},[184,1643,677],{"class":215},[184,1645,205],{"class":211},[184,1647,887],{"class":1014},[184,1649,1085],{"class":190},[184,1651,1652],{"class":186,"line":384},[184,1653,1091],{"emptyLinePlaceholder":1090},[184,1655,1656,1658],{"class":186,"line":398},[184,1657,1320],{"class":1007},[184,1659,279],{"class":190},[184,1661,1662,1665,1667,1669,1672,1674,1676,1678],{"class":186,"line":404},[184,1663,1664],{"class":1054},"    descriptor",[184,1666,208],{"class":190},[184,1668,1206],{"class":1000},[184,1670,1671],{"class":190},"?.",[184,1673,421],{"class":1000},[184,1675,840],{"class":190},[184,1677,476],{"class":1000},[184,1679,221],{"class":190},[184,1681,1682,1685,1687,1689,1691,1693,1695,1697],{"class":186,"line":410},[184,1683,1684],{"class":1054},"    centroid",[184,1686,208],{"class":190},[184,1688,1206],{"class":1000},[184,1690,1671],{"class":190},[184,1692,272],{"class":1000},[184,1694,840],{"class":190},[184,1696,309],{"class":1000},[184,1698,221],{"class":190},[184,1700,1701,1704,1706,1708,1710,1712],{"class":186,"line":416},[184,1702,1703],{"class":1054},"    boundary",[184,1705,208],{"class":190},[184,1707,1555],{"class":1000},[184,1709,1671],{"class":190},[184,1711,272],{"class":1000},[184,1713,221],{"class":190},[184,1715,1716,1719,1721,1723,1725],{"class":186,"line":430},[184,1717,1718],{"class":1054},"    properties",[184,1720,208],{"class":190},[184,1722,1206],{"class":1000},[184,1724,1671],{"class":190},[184,1726,1727],{"class":1000},"properties\n",[184,1729,1730],{"class":186,"line":451},[184,1731,1732],{"class":190},"  };\n",[184,1734,1735],{"class":186,"line":471},[184,1736,797],{"class":190},[15,1738,1739,1740,1743,1744,1747,1748,1752,1753,1757],{},"You can pass ",[19,1741,1742],{},"boundary"," directly to Mapbox GL JS as a GeoJSON source, or to Leaflet's ",[19,1745,1746],{},"L.geoJSON()"," layer. See the ",[35,1749,1751],{"href":1750},"\u002Fguides\u002Fmapbox-integration","Mapbox integration guide"," and ",[35,1754,1756],{"href":1755},"\u002Fguides\u002Fleaflet-integration","Leaflet integration guide"," for complete map setup.",[10,1759,1761],{"id":1760},"step-3-reverse-geocoding","Step 3: Reverse Geocoding",[15,1763,1764],{},"Reverse geocoding converts a GPS coordinate into the legal land description at that point. This is useful for map-click interactions - a user clicks on a map, and you resolve the legal description for that location.",[96,1766,1768],{"className":959,"code":1767,"language":961,"meta":104,"style":104},"async function reverseGeocode(lng, lat, apiKey, options = {}) {\n  const params = new URLSearchParams({ location: `${lng},${lat}` });\n\n  if (options.surveySystem) params.set(\"survey_system\", options.surveySystem);\n  if (options.unit) params.set(\"unit\", options.unit);\n\n  const res = await fetch(`https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Fcoordinates?${params}`, {\n    headers: { \"X-API-Key\": apiKey }\n  });\n\n  if (!res.ok) {\n    throw new Error(`HTTP ${res.status}: ${await res.text()}`);\n  }\n\n  const data = await res.json();\n  const centroid = data.features.find((f) => f.properties.shape === \"centroid\");\n\n  if (!centroid) return null;\n\n  return {\n    descriptor: centroid.properties.legal_location,\n    surveySystem: centroid.properties.survey_system,\n    province: centroid.properties.province,\n    unit: centroid.properties.unit\n  };\n}\n",[19,1769,1770,1803,1853,1857,1900,1940,1944,1976,1997,2006,2010,2028,2074,2078,2082,2102,2152,2156,2174,2178,2184,2202,2221,2240,2258,2262],{"__ignoreMap":104},[184,1771,1772,1774,1776,1779,1781,1783,1785,1787,1789,1791,1793,1796,1798,1801],{"class":186,"line":187},[184,1773,969],{"class":968},[184,1775,972],{"class":968},[184,1777,1778],{"class":975}," reverseGeocode",[184,1780,979],{"class":190},[184,1782,1293],{"class":982},[184,1784,334],{"class":190},[184,1786,1298],{"class":982},[184,1788,334],{"class":190},[184,1790,988],{"class":982},[184,1792,334],{"class":190},[184,1794,1795],{"class":982}," options",[184,1797,1004],{"class":190},[184,1799,1800],{"class":190}," {})",[184,1802,279],{"class":190},[184,1804,1805,1807,1810,1812,1814,1817,1819,1822,1825,1827,1830,1832,1834,1836,1838,1840,1843,1845,1847,1849,1851],{"class":186,"line":194},[184,1806,997],{"class":968},[184,1808,1809],{"class":1000}," params",[184,1811,1004],{"class":190},[184,1813,1123],{"class":1102},[184,1815,1816],{"class":975}," URLSearchParams",[184,1818,979],{"class":1014},[184,1820,1821],{"class":190},"{",[184,1823,1824],{"class":1054}," location",[184,1826,208],{"class":190},[184,1828,1829],{"class":211}," `",[184,1831,1027],{"class":1026},[184,1833,1293],{"class":1036},[184,1835,1041],{"class":1026},[184,1837,334],{"class":215},[184,1839,1027],{"class":1026},[184,1841,1842],{"class":1036},"lat",[184,1844,1041],{"class":1026},[184,1846,1044],{"class":211},[184,1848,1074],{"class":190},[184,1850,887],{"class":1014},[184,1852,1085],{"class":190},[184,1854,1855],{"class":186,"line":224},[184,1856,1091],{"emptyLinePlaceholder":1090},[184,1858,1859,1861,1863,1866,1868,1871,1873,1875,1877,1880,1882,1884,1886,1888,1890,1892,1894,1896,1898],{"class":186,"line":239},[184,1860,1096],{"class":1007},[184,1862,1099],{"class":1014},[184,1864,1865],{"class":1000},"options",[184,1867,840],{"class":190},[184,1869,1870],{"class":1000},"surveySystem",[184,1872,887],{"class":1014},[184,1874,1809],{"class":1000},[184,1876,840],{"class":190},[184,1878,1879],{"class":975},"set",[184,1881,979],{"class":1014},[184,1883,205],{"class":211},[184,1885,517],{"class":215},[184,1887,205],{"class":211},[184,1889,334],{"class":190},[184,1891,1795],{"class":1000},[184,1893,840],{"class":190},[184,1895,1870],{"class":1000},[184,1897,887],{"class":1014},[184,1899,1085],{"class":190},[184,1901,1902,1904,1906,1908,1910,1912,1914,1916,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936,1938],{"class":186,"line":245},[184,1903,1096],{"class":1007},[184,1905,1099],{"class":1014},[184,1907,1865],{"class":1000},[184,1909,840],{"class":190},[184,1911,496],{"class":1000},[184,1913,887],{"class":1014},[184,1915,1809],{"class":1000},[184,1917,840],{"class":190},[184,1919,1879],{"class":975},[184,1921,979],{"class":1014},[184,1923,205],{"class":211},[184,1925,496],{"class":215},[184,1927,205],{"class":211},[184,1929,334],{"class":190},[184,1931,1795],{"class":1000},[184,1933,840],{"class":190},[184,1935,496],{"class":1000},[184,1937,887],{"class":1014},[184,1939,1085],{"class":190},[184,1941,1942],{"class":186,"line":267},[184,1943,1091],{"emptyLinePlaceholder":1090},[184,1945,1946,1948,1950,1952,1954,1956,1958,1960,1963,1965,1968,1970,1972,1974],{"class":186,"line":282},[184,1947,997],{"class":968},[184,1949,1001],{"class":1000},[184,1951,1004],{"class":190},[184,1953,1008],{"class":1007},[184,1955,1011],{"class":975},[184,1957,979],{"class":1014},[184,1959,1044],{"class":211},[184,1961,1962],{"class":215},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Fcoordinates?",[184,1964,1027],{"class":1026},[184,1966,1967],{"class":1036},"params",[184,1969,1041],{"class":1026},[184,1971,1044],{"class":211},[184,1973,334],{"class":190},[184,1975,279],{"class":190},[184,1977,1978,1981,1983,1985,1987,1989,1991,1993,1995],{"class":186,"line":304},[184,1979,1980],{"class":1054},"    headers",[184,1982,208],{"class":190},[184,1984,1060],{"class":190},[184,1986,212],{"class":211},[184,1988,88],{"class":1065},[184,1990,205],{"class":211},[184,1992,208],{"class":190},[184,1994,988],{"class":1000},[184,1996,1077],{"class":190},[184,1998,1999,2002,2004],{"class":186,"line":318},[184,2000,2001],{"class":190},"  }",[184,2003,887],{"class":1014},[184,2005,1085],{"class":190},[184,2007,2008],{"class":186,"line":324},[184,2009,1091],{"emptyLinePlaceholder":1090},[184,2011,2012,2014,2016,2018,2020,2022,2024,2026],{"class":186,"line":343},[184,2013,1096],{"class":1007},[184,2015,1099],{"class":1014},[184,2017,1103],{"class":1102},[184,2019,1106],{"class":1000},[184,2021,840],{"class":190},[184,2023,1111],{"class":1000},[184,2025,887],{"class":1014},[184,2027,279],{"class":190},[184,2029,2030,2032,2034,2036,2038,2040,2042,2044,2046,2048,2050,2052,2054,2056,2058,2060,2062,2064,2066,2068,2070,2072],{"class":186,"line":357},[184,2031,1120],{"class":1007},[184,2033,1123],{"class":1102},[184,2035,1126],{"class":975},[184,2037,979],{"class":1014},[184,2039,1044],{"class":211},[184,2041,1133],{"class":215},[184,2043,1027],{"class":1026},[184,2045,1106],{"class":1036},[184,2047,840],{"class":190},[184,2049,1142],{"class":1036},[184,2051,1041],{"class":1026},[184,2053,1147],{"class":215},[184,2055,1027],{"class":1026},[184,2057,1152],{"class":1007},[184,2059,1001],{"class":1036},[184,2061,840],{"class":190},[184,2063,101],{"class":975},[184,2065,1161],{"class":1033},[184,2067,1041],{"class":1026},[184,2069,1044],{"class":211},[184,2071,887],{"class":1014},[184,2073,1085],{"class":190},[184,2075,2076],{"class":186,"line":371},[184,2077,1174],{"class":190},[184,2079,2080],{"class":186,"line":384},[184,2081,1091],{"emptyLinePlaceholder":1090},[184,2083,2084,2086,2088,2090,2092,2094,2096,2098,2100],{"class":186,"line":398},[184,2085,997],{"class":968},[184,2087,1185],{"class":1000},[184,2089,1004],{"class":190},[184,2091,1008],{"class":1007},[184,2093,1001],{"class":1000},[184,2095,840],{"class":190},[184,2097,180],{"class":975},[184,2099,1161],{"class":1014},[184,2101,1085],{"class":190},[184,2103,2104,2106,2108,2110,2112,2114,2116,2118,2120,2122,2124,2126,2128,2130,2132,2134,2136,2138,2140,2142,2144,2146,2148,2150],{"class":186,"line":404},[184,2105,997],{"class":968},[184,2107,1206],{"class":1000},[184,2109,1004],{"class":190},[184,2111,1185],{"class":1000},[184,2113,840],{"class":190},[184,2115,229],{"class":1000},[184,2117,840],{"class":190},[184,2119,1219],{"class":975},[184,2121,979],{"class":1014},[184,2123,979],{"class":190},[184,2125,1226],{"class":982},[184,2127,887],{"class":190},[184,2129,1232],{"class":1231},[184,2131,1235],{"class":1000},[184,2133,840],{"class":190},[184,2135,421],{"class":1000},[184,2137,840],{"class":190},[184,2139,435],{"class":1000},[184,2141,1246],{"class":1102},[184,2143,212],{"class":211},[184,2145,677],{"class":215},[184,2147,205],{"class":211},[184,2149,887],{"class":1014},[184,2151,1085],{"class":190},[184,2153,2154],{"class":186,"line":410},[184,2155,1091],{"emptyLinePlaceholder":1090},[184,2157,2158,2160,2162,2164,2166,2168,2170,2172],{"class":186,"line":416},[184,2159,1096],{"class":1007},[184,2161,1099],{"class":1014},[184,2163,1103],{"class":1102},[184,2165,677],{"class":1000},[184,2167,887],{"class":1014},[184,2169,1275],{"class":1007},[184,2171,1278],{"class":1102},[184,2173,1085],{"class":190},[184,2175,2176],{"class":186,"line":430},[184,2177,1091],{"emptyLinePlaceholder":1090},[184,2179,2180,2182],{"class":186,"line":451},[184,2181,1320],{"class":1007},[184,2183,279],{"class":190},[184,2185,2186,2188,2190,2192,2194,2196,2198,2200],{"class":186,"line":471},[184,2187,1664],{"class":1054},[184,2189,208],{"class":190},[184,2191,1206],{"class":1000},[184,2193,840],{"class":190},[184,2195,421],{"class":1000},[184,2197,840],{"class":190},[184,2199,476],{"class":1000},[184,2201,221],{"class":190},[184,2203,2204,2207,2209,2211,2213,2215,2217,2219],{"class":186,"line":491},[184,2205,2206],{"class":1054},"    surveySystem",[184,2208,208],{"class":190},[184,2210,1206],{"class":1000},[184,2212,840],{"class":190},[184,2214,421],{"class":1000},[184,2216,840],{"class":190},[184,2218,517],{"class":1000},[184,2220,221],{"class":190},[184,2222,2223,2226,2228,2230,2232,2234,2236,2238],{"class":186,"line":512},[184,2224,2225],{"class":1054},"    province",[184,2227,208],{"class":190},[184,2229,1206],{"class":1000},[184,2231,840],{"class":190},[184,2233,421],{"class":1000},[184,2235,840],{"class":190},[184,2237,538],{"class":1000},[184,2239,221],{"class":190},[184,2241,2242,2245,2247,2249,2251,2253,2255],{"class":186,"line":533},[184,2243,2244],{"class":1054},"    unit",[184,2246,208],{"class":190},[184,2248,1206],{"class":1000},[184,2250,840],{"class":190},[184,2252,421],{"class":1000},[184,2254,840],{"class":190},[184,2256,2257],{"class":1000},"unit\n",[184,2259,2260],{"class":186,"line":553},[184,2261,1732],{"class":190},[184,2263,2264],{"class":186,"line":559},[184,2265,797],{"class":190},[15,2267,2268,2269,2271,2272,2274,2275,2277],{},"The ",[19,2270,496],{}," parameter controls the resolution. ",[19,2273,505],{}," returns the quarter section containing the point; ",[19,2276,933],{}," returns the more granular legal subdivision. Omitting the parameter returns the default resolution for the survey system.",[10,2279,2281],{"id":2280},"step-4-error-handling","Step 4: Error Handling",[15,2283,2284],{},"The API returns standard HTTP error codes. The most common ones you'll encounter:",[123,2286,2287,2300],{},[126,2288,2289],{},[129,2290,2291,2294,2297],{},[132,2292,2293],{},"Code",[132,2295,2296],{},"Meaning",[132,2298,2299],{},"How to handle",[142,2301,2302,2316,2327,2338,2349],{},[129,2303,2304,2307,2310],{},[147,2305,2306],{},"400",[147,2308,2309],{},"Invalid input",[147,2311,2312,2313,2315],{},"Check the ",[19,2314,151],{}," parameter format",[129,2317,2318,2321,2324],{},[147,2319,2320],{},"401",[147,2322,2323],{},"Missing or invalid key",[147,2325,2326],{},"Verify your API key",[129,2328,2329,2332,2335],{},[147,2330,2331],{},"404",[147,2333,2334],{},"Location not found",[147,2336,2337],{},"The LLD doesn't exist in the database",[129,2339,2340,2343,2346],{},[147,2341,2342],{},"429",[147,2344,2345],{},"Rate limit exceeded",[147,2347,2348],{},"Back off and retry after a delay",[129,2350,2351,2354,2357],{},[147,2352,2353],{},"500",[147,2355,2356],{},"Server error",[147,2358,2359],{},"Retry with exponential backoff",[15,2361,2362],{},"Wrap your fetch calls to handle these gracefully:",[96,2364,2366],{"className":959,"code":2365,"language":961,"meta":104,"style":104},"async function safeFetch(url, apiKey) {\n  const res = await fetch(url, {\n    headers: { \"X-API-Key\": apiKey }\n  });\n\n  if (res.status === 429) {\n    const retryAfter = parseInt(res.headers.get(\"Retry-After\") || \"2\", 10);\n    await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000));\n    return safeFetch(url, apiKey);\n  }\n\n  if (!res.ok) {\n    const body = await res.text();\n    throw new Error(`API error ${res.status}: ${body}`);\n  }\n\n  return res.json();\n}\n",[19,2367,2368,2390,2410,2430,2438,2442,2463,2520,2563,2582,2586,2590,2608,2629,2669,2673,2677,2691],{"__ignoreMap":104},[184,2369,2370,2372,2374,2377,2379,2382,2384,2386,2388],{"class":186,"line":187},[184,2371,969],{"class":968},[184,2373,972],{"class":968},[184,2375,2376],{"class":975}," safeFetch",[184,2378,979],{"class":190},[184,2380,2381],{"class":982},"url",[184,2383,334],{"class":190},[184,2385,988],{"class":982},[184,2387,887],{"class":190},[184,2389,279],{"class":190},[184,2391,2392,2394,2396,2398,2400,2402,2404,2406,2408],{"class":186,"line":194},[184,2393,997],{"class":968},[184,2395,1001],{"class":1000},[184,2397,1004],{"class":190},[184,2399,1008],{"class":1007},[184,2401,1011],{"class":975},[184,2403,979],{"class":1014},[184,2405,2381],{"class":1000},[184,2407,334],{"class":190},[184,2409,279],{"class":190},[184,2411,2412,2414,2416,2418,2420,2422,2424,2426,2428],{"class":186,"line":224},[184,2413,1980],{"class":1054},[184,2415,208],{"class":190},[184,2417,1060],{"class":190},[184,2419,212],{"class":211},[184,2421,88],{"class":1065},[184,2423,205],{"class":211},[184,2425,208],{"class":190},[184,2427,988],{"class":1000},[184,2429,1077],{"class":190},[184,2431,2432,2434,2436],{"class":186,"line":239},[184,2433,2001],{"class":190},[184,2435,887],{"class":1014},[184,2437,1085],{"class":190},[184,2439,2440],{"class":186,"line":245},[184,2441,1091],{"emptyLinePlaceholder":1090},[184,2443,2444,2446,2448,2450,2452,2454,2456,2459,2461],{"class":186,"line":267},[184,2445,1096],{"class":1007},[184,2447,1099],{"class":1014},[184,2449,1106],{"class":1000},[184,2451,840],{"class":190},[184,2453,1142],{"class":1000},[184,2455,1246],{"class":1102},[184,2457,2458],{"class":330}," 429",[184,2460,887],{"class":1014},[184,2462,279],{"class":190},[184,2464,2465,2468,2471,2473,2476,2478,2480,2482,2485,2487,2490,2492,2494,2497,2499,2501,2504,2506,2509,2511,2513,2516,2518],{"class":186,"line":282},[184,2466,2467],{"class":968},"    const",[184,2469,2470],{"class":1000}," retryAfter",[184,2472,1004],{"class":190},[184,2474,2475],{"class":975}," parseInt",[184,2477,979],{"class":1014},[184,2479,1106],{"class":1000},[184,2481,840],{"class":190},[184,2483,2484],{"class":1000},"headers",[184,2486,840],{"class":190},[184,2488,2489],{"class":975},"get",[184,2491,979],{"class":1014},[184,2493,205],{"class":211},[184,2495,2496],{"class":215},"Retry-After",[184,2498,205],{"class":211},[184,2500,887],{"class":1014},[184,2502,2503],{"class":1102}," ||",[184,2505,212],{"class":211},[184,2507,2508],{"class":215},"2",[184,2510,205],{"class":211},[184,2512,334],{"class":190},[184,2514,2515],{"class":330}," 10",[184,2517,887],{"class":1014},[184,2519,1085],{"class":190},[184,2521,2522,2525,2527,2530,2532,2534,2537,2539,2541,2544,2546,2548,2550,2552,2555,2558,2561],{"class":186,"line":304},[184,2523,2524],{"class":1007},"    await",[184,2526,1123],{"class":1102},[184,2528,2529],{"class":251}," Promise",[184,2531,979],{"class":1014},[184,2533,979],{"class":190},[184,2535,2536],{"class":982},"resolve",[184,2538,887],{"class":190},[184,2540,1232],{"class":1231},[184,2542,2543],{"class":975}," setTimeout",[184,2545,979],{"class":1014},[184,2547,2536],{"class":1000},[184,2549,334],{"class":190},[184,2551,2470],{"class":1000},[184,2553,2554],{"class":1102}," *",[184,2556,2557],{"class":330}," 1000",[184,2559,2560],{"class":1014},"))",[184,2562,1085],{"class":190},[184,2564,2565,2568,2570,2572,2574,2576,2578,2580],{"class":186,"line":318},[184,2566,2567],{"class":1007},"    return",[184,2569,2376],{"class":975},[184,2571,979],{"class":1014},[184,2573,2381],{"class":1000},[184,2575,334],{"class":190},[184,2577,988],{"class":1000},[184,2579,887],{"class":1014},[184,2581,1085],{"class":190},[184,2583,2584],{"class":186,"line":324},[184,2585,1174],{"class":190},[184,2587,2588],{"class":186,"line":343},[184,2589,1091],{"emptyLinePlaceholder":1090},[184,2591,2592,2594,2596,2598,2600,2602,2604,2606],{"class":186,"line":357},[184,2593,1096],{"class":1007},[184,2595,1099],{"class":1014},[184,2597,1103],{"class":1102},[184,2599,1106],{"class":1000},[184,2601,840],{"class":190},[184,2603,1111],{"class":1000},[184,2605,887],{"class":1014},[184,2607,279],{"class":190},[184,2609,2610,2612,2615,2617,2619,2621,2623,2625,2627],{"class":186,"line":371},[184,2611,2467],{"class":968},[184,2613,2614],{"class":1000}," body",[184,2616,1004],{"class":190},[184,2618,1008],{"class":1007},[184,2620,1001],{"class":1000},[184,2622,840],{"class":190},[184,2624,101],{"class":975},[184,2626,1161],{"class":1014},[184,2628,1085],{"class":190},[184,2630,2631,2633,2635,2637,2639,2641,2644,2646,2648,2650,2652,2654,2656,2658,2661,2663,2665,2667],{"class":186,"line":384},[184,2632,1120],{"class":1007},[184,2634,1123],{"class":1102},[184,2636,1126],{"class":975},[184,2638,979],{"class":1014},[184,2640,1044],{"class":211},[184,2642,2643],{"class":215},"API error ",[184,2645,1027],{"class":1026},[184,2647,1106],{"class":1036},[184,2649,840],{"class":190},[184,2651,1142],{"class":1036},[184,2653,1041],{"class":1026},[184,2655,1147],{"class":215},[184,2657,1027],{"class":1026},[184,2659,2660],{"class":1036},"body",[184,2662,1041],{"class":1026},[184,2664,1044],{"class":211},[184,2666,887],{"class":1014},[184,2668,1085],{"class":190},[184,2670,2671],{"class":186,"line":398},[184,2672,1174],{"class":190},[184,2674,2675],{"class":186,"line":404},[184,2676,1091],{"emptyLinePlaceholder":1090},[184,2678,2679,2681,2683,2685,2687,2689],{"class":186,"line":410},[184,2680,1320],{"class":1007},[184,2682,1001],{"class":1000},[184,2684,840],{"class":190},[184,2686,180],{"class":975},[184,2688,1161],{"class":1014},[184,2690,1085],{"class":190},[184,2692,2693],{"class":186,"line":416},[184,2694,797],{"class":190},[10,2696,2698],{"id":2697},"vanilla-js-example","Vanilla JS Example",[15,2700,2701],{},"A standalone page that performs a forward search and displays the result. No build step required.",[96,2703,2707],{"className":2704,"code":2705,"language":2706,"meta":104,"style":104},"language-html shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n  \u003Chead>\n    \u003Cmeta charset=\"UTF-8\" \u002F>\n    \u003Ctitle>Township Search\u003C\u002Ftitle>\n    \u003Cstyle>\n      body {\n        font-family: system-ui, sans-serif;\n        max-width: 480px;\n        margin: 40px auto;\n        padding: 0 20px;\n      }\n      input {\n        width: 100%;\n        padding: 10px 14px;\n        font-size: 16px;\n        box-sizing: border-box;\n        margin-bottom: 8px;\n      }\n      button {\n        padding: 10px 20px;\n        font-size: 15px;\n        cursor: pointer;\n      }\n      .result {\n        margin-top: 16px;\n        padding: 16px;\n        background: #f5f5f5;\n        border-radius: 8px;\n        font-family: monospace;\n        font-size: 14px;\n        white-space: pre-wrap;\n      }\n      .error {\n        color: #c45d3a;\n      }\n    \u003C\u002Fstyle>\n  \u003C\u002Fhead>\n  \u003Cbody>\n    \u003Ch2>Legal Land Description Lookup\u003C\u002Fh2>\n    \u003Cinput\n      id=\"lld-input\"\n      type=\"text\"\n      placeholder=\"e.g. NW-25-24-1-W5\"\n    \u002F>\n    \u003Cbutton id=\"search-btn\">Search\u003C\u002Fbutton>\n    \u003Cdiv\n      id=\"result\"\n      class=\"result\"\n      hidden\n    >\u003C\u002Fdiv>\n\n    \u003Cscript>\n      const API_KEY = \"YOUR_API_KEY\";\n      const input = document.getElementById(\"lld-input\");\n      const btn = document.getElementById(\"search-btn\");\n      const resultDiv = document.getElementById(\"result\");\n\n      async function search() {\n        const lld = input.value.trim();\n        if (!lld) return;\n\n        resultDiv.hidden = false;\n        resultDiv.className = \"result\";\n        resultDiv.textContent = \"Searching...\";\n\n        try {\n          const res = await fetch(\n            `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=${encodeURIComponent(lld)}`,\n            { headers: { \"X-API-Key\": API_KEY } }\n          );\n\n          if (!res.ok) throw new Error(`HTTP ${res.status}`);\n\n          const data = await res.json();\n          const centroid = data.features.find((f) => f.properties.shape === \"centroid\");\n\n          if (!centroid) {\n            resultDiv.textContent = \"No results found for that description.\";\n            return;\n          }\n\n          const [lng, lat] = centroid.geometry.coordinates;\n          const props = centroid.properties;\n\n          resultDiv.textContent =\n            `Descriptor: ${props.legal_location}\\n` +\n            `Latitude:   ${lat}\\n` +\n            `Longitude:  ${lng}\\n` +\n            `Province:   ${props.province}\\n` +\n            `System:     ${props.survey_system}`;\n        } catch (err) {\n          resultDiv.className = \"result error\";\n          resultDiv.textContent = `Error: ${err.message}`;\n        }\n      }\n\n      btn.addEventListener(\"click\", search);\n      input.addEventListener(\"keydown\", (e) => {\n        if (e.key === \"Enter\") search();\n      });\n    \u003C\u002Fscript>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n","html",[19,2708,2709,2725,2747,2757,2780,2801,2810,2818,2837,2853,2870,2887,2891,2898,2913,2930,2944,2956,2970,2974,2981,2997,3010,3022,3026,3037,3050,3062,3077,3090,3101,3113,3125,3129,3138,3152,3156,3165,3174,3182,3199,3206,3220,3233,3248,3254,3285,3293,3306,3320,3326,3337,3342,3352,3372,3402,3430,3458,3463,3478,3505,3523,3528,3547,3567,3588,3593,3601,3617,3641,3667,3675,3680,3727,3732,3753,3804,3809,3824,3845,3853,3859,3864,3893,3911,3916,3929,3956,3976,3996,4020,4042,4060,4080,4111,4117,4122,4127,4155,4186,4217,4227,4236,4245],{"__ignoreMap":104},[184,2710,2711,2714,2718,2722],{"class":186,"line":187},[184,2712,2713],{"class":190},"\u003C!",[184,2715,2717],{"class":2716},"sJFLg","DOCTYPE",[184,2719,2721],{"class":2720},"s5q8q"," html",[184,2723,2724],{"class":190},">\n",[184,2726,2727,2730,2732,2735,2738,2740,2743,2745],{"class":186,"line":194},[184,2728,2729],{"class":190},"\u003C",[184,2731,2706],{"class":2716},[184,2733,2734],{"class":2720}," lang",[184,2736,2737],{"class":190},"=",[184,2739,205],{"class":211},[184,2741,2742],{"class":215},"en",[184,2744,205],{"class":211},[184,2746,2724],{"class":190},[184,2748,2749,2752,2755],{"class":186,"line":224},[184,2750,2751],{"class":190},"  \u003C",[184,2753,2754],{"class":2716},"head",[184,2756,2724],{"class":190},[184,2758,2759,2762,2765,2768,2770,2772,2775,2777],{"class":186,"line":239},[184,2760,2761],{"class":190},"    \u003C",[184,2763,2764],{"class":2716},"meta",[184,2766,2767],{"class":2720}," charset",[184,2769,2737],{"class":190},[184,2771,205],{"class":211},[184,2773,2774],{"class":215},"UTF-8",[184,2776,205],{"class":211},[184,2778,2779],{"class":190}," \u002F>\n",[184,2781,2782,2784,2787,2790,2794,2797,2799],{"class":186,"line":245},[184,2783,2761],{"class":190},[184,2785,2786],{"class":2716},"title",[184,2788,2789],{"class":190},">",[184,2791,2793],{"class":2792},"sftqT","Township Search",[184,2795,2796],{"class":190},"\u003C\u002F",[184,2798,2786],{"class":2716},[184,2800,2724],{"class":190},[184,2802,2803,2805,2808],{"class":186,"line":267},[184,2804,2761],{"class":190},[184,2806,2807],{"class":2716},"style",[184,2809,2724],{"class":190},[184,2811,2812,2816],{"class":186,"line":282},[184,2813,2815],{"class":2814},"skzw8","      body",[184,2817,279],{"class":190},[184,2819,2820,2824,2826,2830,2832,2835],{"class":186,"line":304},[184,2821,2823],{"class":2822},"s5HLA","        font-family",[184,2825,208],{"class":190},[184,2827,2829],{"class":2828},"se3Ec"," system-ui",[184,2831,334],{"class":190},[184,2833,2834],{"class":2828}," sans-serif",[184,2836,1085],{"class":190},[184,2838,2839,2842,2844,2847,2851],{"class":186,"line":318},[184,2840,2841],{"class":2822},"        max-width",[184,2843,208],{"class":190},[184,2845,2846],{"class":330}," 480",[184,2848,2850],{"class":2849},"sQBxk","px",[184,2852,1085],{"class":190},[184,2854,2855,2858,2860,2863,2865,2868],{"class":186,"line":324},[184,2856,2857],{"class":2822},"        margin",[184,2859,208],{"class":190},[184,2861,2862],{"class":330}," 40",[184,2864,2850],{"class":2849},[184,2866,2867],{"class":2828}," auto",[184,2869,1085],{"class":190},[184,2871,2872,2875,2877,2880,2883,2885],{"class":186,"line":343},[184,2873,2874],{"class":2822},"        padding",[184,2876,208],{"class":190},[184,2878,2879],{"class":330}," 0",[184,2881,2882],{"class":330}," 20",[184,2884,2850],{"class":2849},[184,2886,1085],{"class":190},[184,2888,2889],{"class":186,"line":357},[184,2890,556],{"class":190},[184,2892,2893,2896],{"class":186,"line":371},[184,2894,2895],{"class":2814},"      input",[184,2897,279],{"class":190},[184,2899,2900,2903,2905,2908,2911],{"class":186,"line":384},[184,2901,2902],{"class":2822},"        width",[184,2904,208],{"class":190},[184,2906,2907],{"class":330}," 100",[184,2909,2910],{"class":2849},"%",[184,2912,1085],{"class":190},[184,2914,2915,2917,2919,2921,2923,2926,2928],{"class":186,"line":398},[184,2916,2874],{"class":2822},[184,2918,208],{"class":190},[184,2920,2515],{"class":330},[184,2922,2850],{"class":2849},[184,2924,2925],{"class":330}," 14",[184,2927,2850],{"class":2849},[184,2929,1085],{"class":190},[184,2931,2932,2935,2937,2940,2942],{"class":186,"line":404},[184,2933,2934],{"class":2822},"        font-size",[184,2936,208],{"class":190},[184,2938,2939],{"class":330}," 16",[184,2941,2850],{"class":2849},[184,2943,1085],{"class":190},[184,2945,2946,2949,2951,2954],{"class":186,"line":410},[184,2947,2948],{"class":2822},"        box-sizing",[184,2950,208],{"class":190},[184,2952,2953],{"class":2828}," border-box",[184,2955,1085],{"class":190},[184,2957,2958,2961,2963,2966,2968],{"class":186,"line":416},[184,2959,2960],{"class":2822},"        margin-bottom",[184,2962,208],{"class":190},[184,2964,2965],{"class":330}," 8",[184,2967,2850],{"class":2849},[184,2969,1085],{"class":190},[184,2971,2972],{"class":186,"line":430},[184,2973,556],{"class":190},[184,2975,2976,2979],{"class":186,"line":451},[184,2977,2978],{"class":2814},"      button",[184,2980,279],{"class":190},[184,2982,2983,2985,2987,2989,2991,2993,2995],{"class":186,"line":471},[184,2984,2874],{"class":2822},[184,2986,208],{"class":190},[184,2988,2515],{"class":330},[184,2990,2850],{"class":2849},[184,2992,2882],{"class":330},[184,2994,2850],{"class":2849},[184,2996,1085],{"class":190},[184,2998,2999,3001,3003,3006,3008],{"class":186,"line":491},[184,3000,2934],{"class":2822},[184,3002,208],{"class":190},[184,3004,3005],{"class":330}," 15",[184,3007,2850],{"class":2849},[184,3009,1085],{"class":190},[184,3011,3012,3015,3017,3020],{"class":186,"line":512},[184,3013,3014],{"class":2822},"        cursor",[184,3016,208],{"class":190},[184,3018,3019],{"class":2828}," pointer",[184,3021,1085],{"class":190},[184,3023,3024],{"class":186,"line":533},[184,3025,556],{"class":190},[184,3027,3028,3031,3035],{"class":186,"line":553},[184,3029,3030],{"class":190},"      .",[184,3032,3034],{"class":3033},"sKL33","result",[184,3036,279],{"class":190},[184,3038,3039,3042,3044,3046,3048],{"class":186,"line":559},[184,3040,3041],{"class":2822},"        margin-top",[184,3043,208],{"class":190},[184,3045,2939],{"class":330},[184,3047,2850],{"class":2849},[184,3049,1085],{"class":190},[184,3051,3052,3054,3056,3058,3060],{"class":186,"line":565},[184,3053,2874],{"class":2822},[184,3055,208],{"class":190},[184,3057,2939],{"class":330},[184,3059,2850],{"class":2849},[184,3061,1085],{"class":190},[184,3063,3064,3067,3069,3072,3075],{"class":186,"line":570},[184,3065,3066],{"class":2822},"        background",[184,3068,208],{"class":190},[184,3070,3071],{"class":190}," #",[184,3073,3074],{"class":2828},"f5f5f5",[184,3076,1085],{"class":190},[184,3078,3079,3082,3084,3086,3088],{"class":186,"line":589},[184,3080,3081],{"class":2822},"        border-radius",[184,3083,208],{"class":190},[184,3085,2965],{"class":330},[184,3087,2850],{"class":2849},[184,3089,1085],{"class":190},[184,3091,3092,3094,3096,3099],{"class":186,"line":602},[184,3093,2823],{"class":2822},[184,3095,208],{"class":190},[184,3097,3098],{"class":2828}," monospace",[184,3100,1085],{"class":190},[184,3102,3103,3105,3107,3109,3111],{"class":186,"line":622},[184,3104,2934],{"class":2822},[184,3106,208],{"class":190},[184,3108,2925],{"class":330},[184,3110,2850],{"class":2849},[184,3112,1085],{"class":190},[184,3114,3115,3118,3120,3123],{"class":186,"line":646},[184,3116,3117],{"class":2822},"        white-space",[184,3119,208],{"class":190},[184,3121,3122],{"class":2828}," pre-wrap",[184,3124,1085],{"class":190},[184,3126,3127],{"class":186,"line":651},[184,3128,556],{"class":190},[184,3130,3131,3133,3136],{"class":186,"line":664},[184,3132,3030],{"class":190},[184,3134,3135],{"class":3033},"error",[184,3137,279],{"class":190},[184,3139,3140,3143,3145,3147,3150],{"class":186,"line":684},[184,3141,3142],{"class":2822},"        color",[184,3144,208],{"class":190},[184,3146,3071],{"class":190},[184,3148,3149],{"class":2828},"c45d3a",[184,3151,1085],{"class":190},[184,3153,3154],{"class":186,"line":703},[184,3155,556],{"class":190},[184,3157,3158,3161,3163],{"class":186,"line":722},[184,3159,3160],{"class":190},"    \u003C\u002F",[184,3162,2807],{"class":2716},[184,3164,2724],{"class":190},[184,3166,3167,3170,3172],{"class":186,"line":741},[184,3168,3169],{"class":190},"  \u003C\u002F",[184,3171,2754],{"class":2716},[184,3173,2724],{"class":190},[184,3175,3176,3178,3180],{"class":186,"line":760},[184,3177,2751],{"class":190},[184,3179,2660],{"class":2716},[184,3181,2724],{"class":190},[184,3183,3184,3186,3188,3190,3193,3195,3197],{"class":186,"line":777},[184,3185,2761],{"class":190},[184,3187,10],{"class":2716},[184,3189,2789],{"class":190},[184,3191,3192],{"class":2792},"Legal Land Description Lookup",[184,3194,2796],{"class":190},[184,3196,10],{"class":2716},[184,3198,2724],{"class":190},[184,3200,3201,3203],{"class":186,"line":782},[184,3202,2761],{"class":190},[184,3204,3205],{"class":2716},"input\n",[184,3207,3208,3211,3213,3215,3218],{"class":186,"line":788},[184,3209,3210],{"class":2720},"      id",[184,3212,2737],{"class":190},[184,3214,205],{"class":211},[184,3216,3217],{"class":215},"lld-input",[184,3219,550],{"class":211},[184,3221,3222,3225,3227,3229,3231],{"class":186,"line":794},[184,3223,3224],{"class":2720},"      type",[184,3226,2737],{"class":190},[184,3228,205],{"class":211},[184,3230,101],{"class":215},[184,3232,550],{"class":211},[184,3234,3236,3239,3241,3243,3246],{"class":186,"line":3235},44,[184,3237,3238],{"class":2720},"      placeholder",[184,3240,2737],{"class":190},[184,3242,205],{"class":211},[184,3244,3245],{"class":215},"e.g. NW-25-24-1-W5",[184,3247,550],{"class":211},[184,3249,3251],{"class":186,"line":3250},45,[184,3252,3253],{"class":190},"    \u002F>\n",[184,3255,3257,3259,3262,3265,3267,3269,3272,3274,3276,3279,3281,3283],{"class":186,"line":3256},46,[184,3258,2761],{"class":190},[184,3260,3261],{"class":2716},"button",[184,3263,3264],{"class":2720}," id",[184,3266,2737],{"class":190},[184,3268,205],{"class":211},[184,3270,3271],{"class":215},"search-btn",[184,3273,205],{"class":211},[184,3275,2789],{"class":190},[184,3277,3278],{"class":2792},"Search",[184,3280,2796],{"class":190},[184,3282,3261],{"class":2716},[184,3284,2724],{"class":190},[184,3286,3288,3290],{"class":186,"line":3287},47,[184,3289,2761],{"class":190},[184,3291,3292],{"class":2716},"div\n",[184,3294,3296,3298,3300,3302,3304],{"class":186,"line":3295},48,[184,3297,3210],{"class":2720},[184,3299,2737],{"class":190},[184,3301,205],{"class":211},[184,3303,3034],{"class":215},[184,3305,550],{"class":211},[184,3307,3309,3312,3314,3316,3318],{"class":186,"line":3308},49,[184,3310,3311],{"class":2720},"      class",[184,3313,2737],{"class":190},[184,3315,205],{"class":211},[184,3317,3034],{"class":215},[184,3319,550],{"class":211},[184,3321,3323],{"class":186,"line":3322},50,[184,3324,3325],{"class":2720},"      hidden\n",[184,3327,3329,3332,3335],{"class":186,"line":3328},51,[184,3330,3331],{"class":190},"    >\u003C\u002F",[184,3333,3334],{"class":2716},"div",[184,3336,2724],{"class":190},[184,3338,3340],{"class":186,"line":3339},52,[184,3341,1091],{"emptyLinePlaceholder":1090},[184,3343,3345,3347,3350],{"class":186,"line":3344},53,[184,3346,2761],{"class":190},[184,3348,3349],{"class":2716},"script",[184,3351,2724],{"class":190},[184,3353,3355,3358,3361,3363,3365,3368,3370],{"class":186,"line":3354},54,[184,3356,3357],{"class":968},"      const",[184,3359,3360],{"class":1000}," API_KEY",[184,3362,1004],{"class":190},[184,3364,212],{"class":211},[184,3366,3367],{"class":215},"YOUR_API_KEY",[184,3369,205],{"class":211},[184,3371,1085],{"class":190},[184,3373,3375,3377,3380,3382,3385,3387,3390,3392,3394,3396,3398,3400],{"class":186,"line":3374},55,[184,3376,3357],{"class":968},[184,3378,3379],{"class":1000}," input",[184,3381,1004],{"class":190},[184,3383,3384],{"class":1000}," document",[184,3386,840],{"class":190},[184,3388,3389],{"class":975},"getElementById",[184,3391,979],{"class":1033},[184,3393,205],{"class":211},[184,3395,3217],{"class":215},[184,3397,205],{"class":211},[184,3399,887],{"class":1033},[184,3401,1085],{"class":190},[184,3403,3405,3407,3410,3412,3414,3416,3418,3420,3422,3424,3426,3428],{"class":186,"line":3404},56,[184,3406,3357],{"class":968},[184,3408,3409],{"class":1000}," btn",[184,3411,1004],{"class":190},[184,3413,3384],{"class":1000},[184,3415,840],{"class":190},[184,3417,3389],{"class":975},[184,3419,979],{"class":1033},[184,3421,205],{"class":211},[184,3423,3271],{"class":215},[184,3425,205],{"class":211},[184,3427,887],{"class":1033},[184,3429,1085],{"class":190},[184,3431,3433,3435,3438,3440,3442,3444,3446,3448,3450,3452,3454,3456],{"class":186,"line":3432},57,[184,3434,3357],{"class":968},[184,3436,3437],{"class":1000}," resultDiv",[184,3439,1004],{"class":190},[184,3441,3384],{"class":1000},[184,3443,840],{"class":190},[184,3445,3389],{"class":975},[184,3447,979],{"class":1033},[184,3449,205],{"class":211},[184,3451,3034],{"class":215},[184,3453,205],{"class":211},[184,3455,887],{"class":1033},[184,3457,1085],{"class":190},[184,3459,3461],{"class":186,"line":3460},58,[184,3462,1091],{"emptyLinePlaceholder":1090},[184,3464,3466,3469,3471,3474,3476],{"class":186,"line":3465},59,[184,3467,3468],{"class":968},"      async",[184,3470,972],{"class":968},[184,3472,3473],{"class":975}," search",[184,3475,1161],{"class":190},[184,3477,279],{"class":190},[184,3479,3481,3484,3487,3489,3491,3493,3496,3498,3501,3503],{"class":186,"line":3480},60,[184,3482,3483],{"class":968},"        const",[184,3485,3486],{"class":1000}," lld",[184,3488,1004],{"class":190},[184,3490,3379],{"class":1000},[184,3492,840],{"class":190},[184,3494,3495],{"class":1000},"value",[184,3497,840],{"class":190},[184,3499,3500],{"class":975},"trim",[184,3502,1161],{"class":1014},[184,3504,1085],{"class":190},[184,3506,3508,3511,3513,3515,3517,3519,3521],{"class":186,"line":3507},61,[184,3509,3510],{"class":1007},"        if",[184,3512,1099],{"class":1014},[184,3514,1103],{"class":1102},[184,3516,983],{"class":1000},[184,3518,887],{"class":1014},[184,3520,1275],{"class":1007},[184,3522,1085],{"class":190},[184,3524,3526],{"class":186,"line":3525},62,[184,3527,1091],{"emptyLinePlaceholder":1090},[184,3529,3531,3534,3536,3539,3541,3545],{"class":186,"line":3530},63,[184,3532,3533],{"class":1000},"        resultDiv",[184,3535,840],{"class":190},[184,3537,3538],{"class":1000},"hidden",[184,3540,1004],{"class":190},[184,3542,3544],{"class":3543},"sq3J1"," false",[184,3546,1085],{"class":190},[184,3548,3550,3552,3554,3557,3559,3561,3563,3565],{"class":186,"line":3549},64,[184,3551,3533],{"class":1000},[184,3553,840],{"class":190},[184,3555,3556],{"class":1000},"className",[184,3558,1004],{"class":190},[184,3560,212],{"class":211},[184,3562,3034],{"class":215},[184,3564,205],{"class":211},[184,3566,1085],{"class":190},[184,3568,3570,3572,3574,3577,3579,3581,3584,3586],{"class":186,"line":3569},65,[184,3571,3533],{"class":1000},[184,3573,840],{"class":190},[184,3575,3576],{"class":1000},"textContent",[184,3578,1004],{"class":190},[184,3580,212],{"class":211},[184,3582,3583],{"class":215},"Searching...",[184,3585,205],{"class":211},[184,3587,1085],{"class":190},[184,3589,3591],{"class":186,"line":3590},66,[184,3592,1091],{"emptyLinePlaceholder":1090},[184,3594,3596,3599],{"class":186,"line":3595},67,[184,3597,3598],{"class":1007},"        try",[184,3600,279],{"class":190},[184,3602,3604,3607,3609,3611,3613,3615],{"class":186,"line":3603},68,[184,3605,3606],{"class":968},"          const",[184,3608,1001],{"class":1000},[184,3610,1004],{"class":190},[184,3612,1008],{"class":1007},[184,3614,1011],{"class":975},[184,3616,1015],{"class":1014},[184,3618,3620,3623,3625,3627,3629,3631,3633,3635,3637,3639],{"class":186,"line":3619},69,[184,3621,3622],{"class":211},"            `",[184,3624,1023],{"class":215},[184,3626,1027],{"class":1026},[184,3628,1030],{"class":975},[184,3630,979],{"class":1033},[184,3632,983],{"class":1036},[184,3634,887],{"class":1033},[184,3636,1041],{"class":1026},[184,3638,1044],{"class":211},[184,3640,221],{"class":190},[184,3642,3644,3647,3649,3651,3653,3655,3657,3659,3661,3663,3665],{"class":186,"line":3643},70,[184,3645,3646],{"class":190},"            {",[184,3648,1055],{"class":1054},[184,3650,208],{"class":190},[184,3652,1060],{"class":190},[184,3654,212],{"class":211},[184,3656,88],{"class":1065},[184,3658,205],{"class":211},[184,3660,208],{"class":190},[184,3662,3360],{"class":1000},[184,3664,1074],{"class":190},[184,3666,1077],{"class":190},[184,3668,3670,3673],{"class":186,"line":3669},71,[184,3671,3672],{"class":1014},"          )",[184,3674,1085],{"class":190},[184,3676,3678],{"class":186,"line":3677},72,[184,3679,1091],{"emptyLinePlaceholder":1090},[184,3681,3683,3686,3688,3690,3692,3694,3696,3698,3701,3703,3705,3707,3709,3711,3713,3715,3717,3719,3721,3723,3725],{"class":186,"line":3682},73,[184,3684,3685],{"class":1007},"          if",[184,3687,1099],{"class":1014},[184,3689,1103],{"class":1102},[184,3691,1106],{"class":1000},[184,3693,840],{"class":190},[184,3695,1111],{"class":1000},[184,3697,887],{"class":1014},[184,3699,3700],{"class":1007}," throw",[184,3702,1123],{"class":1102},[184,3704,1126],{"class":975},[184,3706,979],{"class":1014},[184,3708,1044],{"class":211},[184,3710,1133],{"class":215},[184,3712,1027],{"class":1026},[184,3714,1106],{"class":1036},[184,3716,840],{"class":190},[184,3718,1142],{"class":1036},[184,3720,1041],{"class":1026},[184,3722,1044],{"class":211},[184,3724,887],{"class":1014},[184,3726,1085],{"class":190},[184,3728,3730],{"class":186,"line":3729},74,[184,3731,1091],{"emptyLinePlaceholder":1090},[184,3733,3735,3737,3739,3741,3743,3745,3747,3749,3751],{"class":186,"line":3734},75,[184,3736,3606],{"class":968},[184,3738,1185],{"class":1000},[184,3740,1004],{"class":190},[184,3742,1008],{"class":1007},[184,3744,1001],{"class":1000},[184,3746,840],{"class":190},[184,3748,180],{"class":975},[184,3750,1161],{"class":1014},[184,3752,1085],{"class":190},[184,3754,3756,3758,3760,3762,3764,3766,3768,3770,3772,3774,3776,3778,3780,3782,3784,3786,3788,3790,3792,3794,3796,3798,3800,3802],{"class":186,"line":3755},76,[184,3757,3606],{"class":968},[184,3759,1206],{"class":1000},[184,3761,1004],{"class":190},[184,3763,1185],{"class":1000},[184,3765,840],{"class":190},[184,3767,229],{"class":1000},[184,3769,840],{"class":190},[184,3771,1219],{"class":975},[184,3773,979],{"class":1014},[184,3775,979],{"class":190},[184,3777,1226],{"class":982},[184,3779,887],{"class":190},[184,3781,1232],{"class":1231},[184,3783,1235],{"class":1000},[184,3785,840],{"class":190},[184,3787,421],{"class":1000},[184,3789,840],{"class":190},[184,3791,435],{"class":1000},[184,3793,1246],{"class":1102},[184,3795,212],{"class":211},[184,3797,677],{"class":215},[184,3799,205],{"class":211},[184,3801,887],{"class":1014},[184,3803,1085],{"class":190},[184,3805,3807],{"class":186,"line":3806},77,[184,3808,1091],{"emptyLinePlaceholder":1090},[184,3810,3812,3814,3816,3818,3820,3822],{"class":186,"line":3811},78,[184,3813,3685],{"class":1007},[184,3815,1099],{"class":1014},[184,3817,1103],{"class":1102},[184,3819,677],{"class":1000},[184,3821,887],{"class":1014},[184,3823,279],{"class":190},[184,3825,3827,3830,3832,3834,3836,3838,3841,3843],{"class":186,"line":3826},79,[184,3828,3829],{"class":1000},"            resultDiv",[184,3831,840],{"class":190},[184,3833,3576],{"class":1000},[184,3835,1004],{"class":190},[184,3837,212],{"class":211},[184,3839,3840],{"class":215},"No results found for that description.",[184,3842,205],{"class":211},[184,3844,1085],{"class":190},[184,3846,3848,3851],{"class":186,"line":3847},80,[184,3849,3850],{"class":1007},"            return",[184,3852,1085],{"class":190},[184,3854,3856],{"class":186,"line":3855},81,[184,3857,3858],{"class":190},"          }\n",[184,3860,3862],{"class":186,"line":3861},82,[184,3863,1091],{"emptyLinePlaceholder":1090},[184,3865,3867,3869,3871,3873,3875,3877,3879,3881,3883,3885,3887,3889,3891],{"class":186,"line":3866},83,[184,3868,3606],{"class":968},[184,3870,633],{"class":190},[184,3872,1293],{"class":1000},[184,3874,334],{"class":190},[184,3876,1298],{"class":1000},[184,3878,1301],{"class":190},[184,3880,1004],{"class":190},[184,3882,1206],{"class":1000},[184,3884,840],{"class":190},[184,3886,272],{"class":1000},[184,3888,840],{"class":190},[184,3890,309],{"class":1000},[184,3892,1085],{"class":190},[184,3894,3896,3898,3901,3903,3905,3907,3909],{"class":186,"line":3895},84,[184,3897,3606],{"class":968},[184,3899,3900],{"class":1000}," props",[184,3902,1004],{"class":190},[184,3904,1206],{"class":1000},[184,3906,840],{"class":190},[184,3908,421],{"class":1000},[184,3910,1085],{"class":190},[184,3912,3914],{"class":186,"line":3913},85,[184,3915,1091],{"emptyLinePlaceholder":1090},[184,3917,3919,3922,3924,3926],{"class":186,"line":3918},86,[184,3920,3921],{"class":1000},"          resultDiv",[184,3923,840],{"class":190},[184,3925,3576],{"class":1000},[184,3927,3928],{"class":190}," =\n",[184,3930,3932,3934,3937,3939,3942,3944,3946,3948,3951,3953],{"class":186,"line":3931},87,[184,3933,3622],{"class":211},[184,3935,3936],{"class":215},"Descriptor: ",[184,3938,1027],{"class":1026},[184,3940,3941],{"class":1036},"props",[184,3943,840],{"class":190},[184,3945,476],{"class":1036},[184,3947,1041],{"class":1026},[184,3949,3950],{"class":2828},"\\n",[184,3952,1044],{"class":211},[184,3954,3955],{"class":1102}," +\n",[184,3957,3959,3961,3964,3966,3968,3970,3972,3974],{"class":186,"line":3958},88,[184,3960,3622],{"class":211},[184,3962,3963],{"class":215},"Latitude:   ",[184,3965,1027],{"class":1026},[184,3967,1842],{"class":1036},[184,3969,1041],{"class":1026},[184,3971,3950],{"class":2828},[184,3973,1044],{"class":211},[184,3975,3955],{"class":1102},[184,3977,3979,3981,3984,3986,3988,3990,3992,3994],{"class":186,"line":3978},89,[184,3980,3622],{"class":211},[184,3982,3983],{"class":215},"Longitude:  ",[184,3985,1027],{"class":1026},[184,3987,1293],{"class":1036},[184,3989,1041],{"class":1026},[184,3991,3950],{"class":2828},[184,3993,1044],{"class":211},[184,3995,3955],{"class":1102},[184,3997,3999,4001,4004,4006,4008,4010,4012,4014,4016,4018],{"class":186,"line":3998},90,[184,4000,3622],{"class":211},[184,4002,4003],{"class":215},"Province:   ",[184,4005,1027],{"class":1026},[184,4007,3941],{"class":1036},[184,4009,840],{"class":190},[184,4011,538],{"class":1036},[184,4013,1041],{"class":1026},[184,4015,3950],{"class":2828},[184,4017,1044],{"class":211},[184,4019,3955],{"class":1102},[184,4021,4023,4025,4028,4030,4032,4034,4036,4038,4040],{"class":186,"line":4022},91,[184,4024,3622],{"class":211},[184,4026,4027],{"class":215},"System:     ",[184,4029,1027],{"class":1026},[184,4031,3941],{"class":1036},[184,4033,840],{"class":190},[184,4035,517],{"class":1036},[184,4037,1041],{"class":1026},[184,4039,1044],{"class":211},[184,4041,1085],{"class":190},[184,4043,4045,4048,4051,4053,4056,4058],{"class":186,"line":4044},92,[184,4046,4047],{"class":190},"        }",[184,4049,4050],{"class":1007}," catch",[184,4052,1099],{"class":1014},[184,4054,4055],{"class":1000},"err",[184,4057,887],{"class":1014},[184,4059,279],{"class":190},[184,4061,4063,4065,4067,4069,4071,4073,4076,4078],{"class":186,"line":4062},93,[184,4064,3921],{"class":1000},[184,4066,840],{"class":190},[184,4068,3556],{"class":1000},[184,4070,1004],{"class":190},[184,4072,212],{"class":211},[184,4074,4075],{"class":215},"result error",[184,4077,205],{"class":211},[184,4079,1085],{"class":190},[184,4081,4083,4085,4087,4089,4091,4093,4096,4098,4100,4102,4105,4107,4109],{"class":186,"line":4082},94,[184,4084,3921],{"class":1000},[184,4086,840],{"class":190},[184,4088,3576],{"class":1000},[184,4090,1004],{"class":190},[184,4092,1829],{"class":211},[184,4094,4095],{"class":215},"Error: ",[184,4097,1027],{"class":1026},[184,4099,4055],{"class":1036},[184,4101,840],{"class":190},[184,4103,4104],{"class":1036},"message",[184,4106,1041],{"class":1026},[184,4108,1044],{"class":211},[184,4110,1085],{"class":190},[184,4112,4114],{"class":186,"line":4113},95,[184,4115,4116],{"class":190},"        }\n",[184,4118,4120],{"class":186,"line":4119},96,[184,4121,556],{"class":190},[184,4123,4125],{"class":186,"line":4124},97,[184,4126,1091],{"emptyLinePlaceholder":1090},[184,4128,4130,4133,4135,4138,4140,4142,4145,4147,4149,4151,4153],{"class":186,"line":4129},98,[184,4131,4132],{"class":1000},"      btn",[184,4134,840],{"class":190},[184,4136,4137],{"class":975},"addEventListener",[184,4139,979],{"class":1033},[184,4141,205],{"class":211},[184,4143,4144],{"class":215},"click",[184,4146,205],{"class":211},[184,4148,334],{"class":190},[184,4150,3473],{"class":1000},[184,4152,887],{"class":1033},[184,4154,1085],{"class":190},[184,4156,4158,4160,4162,4164,4166,4168,4171,4173,4175,4177,4180,4182,4184],{"class":186,"line":4157},99,[184,4159,2895],{"class":1000},[184,4161,840],{"class":190},[184,4163,4137],{"class":975},[184,4165,979],{"class":1033},[184,4167,205],{"class":211},[184,4169,4170],{"class":215},"keydown",[184,4172,205],{"class":211},[184,4174,334],{"class":190},[184,4176,1099],{"class":190},[184,4178,4179],{"class":982},"e",[184,4181,887],{"class":190},[184,4183,1232],{"class":1231},[184,4185,279],{"class":190},[184,4187,4189,4191,4193,4195,4197,4200,4202,4204,4207,4209,4211,4213,4215],{"class":186,"line":4188},100,[184,4190,3510],{"class":1007},[184,4192,1099],{"class":1014},[184,4194,4179],{"class":1000},[184,4196,840],{"class":190},[184,4198,4199],{"class":1000},"key",[184,4201,1246],{"class":1102},[184,4203,212],{"class":211},[184,4205,4206],{"class":215},"Enter",[184,4208,205],{"class":211},[184,4210,887],{"class":1014},[184,4212,3473],{"class":975},[184,4214,1161],{"class":1014},[184,4216,1085],{"class":190},[184,4218,4220,4223,4225],{"class":186,"line":4219},101,[184,4221,4222],{"class":190},"      }",[184,4224,887],{"class":1033},[184,4226,1085],{"class":190},[184,4228,4230,4232,4234],{"class":186,"line":4229},102,[184,4231,3160],{"class":190},[184,4233,3349],{"class":2716},[184,4235,2724],{"class":190},[184,4237,4239,4241,4243],{"class":186,"line":4238},103,[184,4240,3169],{"class":190},[184,4242,2660],{"class":2716},[184,4244,2724],{"class":190},[184,4246,4248,4250,4252],{"class":186,"line":4247},104,[184,4249,2796],{"class":190},[184,4251,2706],{"class":2716},[184,4253,2724],{"class":190},[10,4255,4257],{"id":4256},"nodejs-example","Node.js Example",[15,4259,4260],{},"A command-line script that converts a legal land description and prints the result.",[96,4262,4264],{"className":959,"code":4263,"language":961,"meta":104,"style":104},"const API_KEY = process.env.TOWNSHIP_CANADA_API_KEY;\nconst BASE_URL = \"https:\u002F\u002Fdeveloper.townshipcanada.com\";\n\nasync function searchLegal(lld) {\n  const res = await fetch(`${BASE_URL}\u002Fsearch\u002Flegal-location?location=${encodeURIComponent(lld)}`, {\n    headers: { \"X-API-Key\": API_KEY }\n  });\n\n  if (!res.ok) {\n    throw new Error(`HTTP ${res.status}: ${await res.text()}`);\n  }\n\n  const data = await res.json();\n  return data.features;\n}\n\nasync function searchCoordinates(lng, lat, unit = \"Quarter Section\") {\n  const params = new URLSearchParams({\n    location: `${lng},${lat}`,\n    unit\n  });\n\n  const res = await fetch(`${BASE_URL}\u002Fsearch\u002Fcoordinates?${params}`, {\n    headers: { \"X-API-Key\": API_KEY }\n  });\n\n  if (!res.ok) {\n    throw new Error(`HTTP ${res.status}: ${await res.text()}`);\n  }\n\n  const data = await res.json();\n  return data.features;\n}\n\nasync function main() {\n  const lld = process.argv[2] || \"NW-25-24-1-W5\";\n\n  \u002F\u002F Forward: LLD → coordinates\n  console.log(`Searching: ${lld}`);\n  const features = await searchLegal(lld);\n  const centroid = features.find((f) => f.properties.shape === \"centroid\");\n\n  if (centroid) {\n    const [lng, lat] = centroid.geometry.coordinates;\n    console.log(`  Descriptor: ${centroid.properties.legal_location}`);\n    console.log(`  Latitude:   ${lat}`);\n    console.log(`  Longitude:  ${lng}`);\n    console.log(`  Province:   ${centroid.properties.province}`);\n\n    \u002F\u002F Reverse: coordinates → LLD\n    console.log(`\\nReverse geocoding: ${lng}, ${lat}`);\n    const reverseFeatures = await searchCoordinates(lng, lat);\n    const reverseCentroid = reverseFeatures.find((f) => f.properties.shape === \"centroid\");\n\n    if (reverseCentroid) {\n      console.log(`  Resolved:   ${reverseCentroid.properties.legal_location}`);\n    }\n  } else {\n    console.log(\"  No results found.\");\n  }\n}\n\nmain().catch(console.error);\n",[19,4265,4266,4290,4307,4311,4328,4372,4392,4400,4404,4422,4468,4472,4476,4496,4508,4512,4516,4550,4566,4593,4598,4606,4610,4647,4667,4675,4679,4697,4743,4747,4751,4771,4783,4787,4791,4804,4836,4840,4846,4875,4896,4942,4946,4958,4986,5022,5049,5076,5111,5115,5120,5157,5182,5229,5233,5247,5283,5287,5296,5317,5321,5325,5329],{"__ignoreMap":104},[184,4267,4268,4271,4273,4275,4278,4280,4283,4285,4288],{"class":186,"line":187},[184,4269,4270],{"class":968},"const",[184,4272,3360],{"class":1000},[184,4274,1004],{"class":190},[184,4276,4277],{"class":1000}," process",[184,4279,840],{"class":190},[184,4281,4282],{"class":1000},"env",[184,4284,840],{"class":190},[184,4286,4287],{"class":1000},"TOWNSHIP_CANADA_API_KEY",[184,4289,1085],{"class":190},[184,4291,4292,4294,4297,4299,4301,4303,4305],{"class":186,"line":194},[184,4293,4270],{"class":968},[184,4295,4296],{"class":1000}," BASE_URL",[184,4298,1004],{"class":190},[184,4300,212],{"class":211},[184,4302,84],{"class":215},[184,4304,205],{"class":211},[184,4306,1085],{"class":190},[184,4308,4309],{"class":186,"line":224},[184,4310,1091],{"emptyLinePlaceholder":1090},[184,4312,4313,4315,4317,4320,4322,4324,4326],{"class":186,"line":239},[184,4314,969],{"class":968},[184,4316,972],{"class":968},[184,4318,4319],{"class":975}," searchLegal",[184,4321,979],{"class":190},[184,4323,983],{"class":982},[184,4325,887],{"class":190},[184,4327,279],{"class":190},[184,4329,4330,4332,4334,4336,4338,4340,4342,4344,4346,4349,4351,4354,4356,4358,4360,4362,4364,4366,4368,4370],{"class":186,"line":245},[184,4331,997],{"class":968},[184,4333,1001],{"class":1000},[184,4335,1004],{"class":190},[184,4337,1008],{"class":1007},[184,4339,1011],{"class":975},[184,4341,979],{"class":1014},[184,4343,1044],{"class":211},[184,4345,1027],{"class":1026},[184,4347,4348],{"class":1036},"BASE_URL",[184,4350,1041],{"class":1026},[184,4352,4353],{"class":215},"\u002Fsearch\u002Flegal-location?location=",[184,4355,1027],{"class":1026},[184,4357,1030],{"class":975},[184,4359,979],{"class":1033},[184,4361,983],{"class":1036},[184,4363,887],{"class":1033},[184,4365,1041],{"class":1026},[184,4367,1044],{"class":211},[184,4369,334],{"class":190},[184,4371,279],{"class":190},[184,4373,4374,4376,4378,4380,4382,4384,4386,4388,4390],{"class":186,"line":267},[184,4375,1980],{"class":1054},[184,4377,208],{"class":190},[184,4379,1060],{"class":190},[184,4381,212],{"class":211},[184,4383,88],{"class":1065},[184,4385,205],{"class":211},[184,4387,208],{"class":190},[184,4389,3360],{"class":1000},[184,4391,1077],{"class":190},[184,4393,4394,4396,4398],{"class":186,"line":282},[184,4395,2001],{"class":190},[184,4397,887],{"class":1014},[184,4399,1085],{"class":190},[184,4401,4402],{"class":186,"line":304},[184,4403,1091],{"emptyLinePlaceholder":1090},[184,4405,4406,4408,4410,4412,4414,4416,4418,4420],{"class":186,"line":318},[184,4407,1096],{"class":1007},[184,4409,1099],{"class":1014},[184,4411,1103],{"class":1102},[184,4413,1106],{"class":1000},[184,4415,840],{"class":190},[184,4417,1111],{"class":1000},[184,4419,887],{"class":1014},[184,4421,279],{"class":190},[184,4423,4424,4426,4428,4430,4432,4434,4436,4438,4440,4442,4444,4446,4448,4450,4452,4454,4456,4458,4460,4462,4464,4466],{"class":186,"line":324},[184,4425,1120],{"class":1007},[184,4427,1123],{"class":1102},[184,4429,1126],{"class":975},[184,4431,979],{"class":1014},[184,4433,1044],{"class":211},[184,4435,1133],{"class":215},[184,4437,1027],{"class":1026},[184,4439,1106],{"class":1036},[184,4441,840],{"class":190},[184,4443,1142],{"class":1036},[184,4445,1041],{"class":1026},[184,4447,1147],{"class":215},[184,4449,1027],{"class":1026},[184,4451,1152],{"class":1007},[184,4453,1001],{"class":1036},[184,4455,840],{"class":190},[184,4457,101],{"class":975},[184,4459,1161],{"class":1033},[184,4461,1041],{"class":1026},[184,4463,1044],{"class":211},[184,4465,887],{"class":1014},[184,4467,1085],{"class":190},[184,4469,4470],{"class":186,"line":343},[184,4471,1174],{"class":190},[184,4473,4474],{"class":186,"line":357},[184,4475,1091],{"emptyLinePlaceholder":1090},[184,4477,4478,4480,4482,4484,4486,4488,4490,4492,4494],{"class":186,"line":371},[184,4479,997],{"class":968},[184,4481,1185],{"class":1000},[184,4483,1004],{"class":190},[184,4485,1008],{"class":1007},[184,4487,1001],{"class":1000},[184,4489,840],{"class":190},[184,4491,180],{"class":975},[184,4493,1161],{"class":1014},[184,4495,1085],{"class":190},[184,4497,4498,4500,4502,4504,4506],{"class":186,"line":384},[184,4499,1320],{"class":1007},[184,4501,1185],{"class":1000},[184,4503,840],{"class":190},[184,4505,229],{"class":1000},[184,4507,1085],{"class":190},[184,4509,4510],{"class":186,"line":398},[184,4511,797],{"class":190},[184,4513,4514],{"class":186,"line":404},[184,4515,1091],{"emptyLinePlaceholder":1090},[184,4517,4518,4520,4522,4525,4527,4529,4531,4533,4535,4538,4540,4542,4544,4546,4548],{"class":186,"line":410},[184,4519,969],{"class":968},[184,4521,972],{"class":968},[184,4523,4524],{"class":975}," searchCoordinates",[184,4526,979],{"class":190},[184,4528,1293],{"class":982},[184,4530,334],{"class":190},[184,4532,1298],{"class":982},[184,4534,334],{"class":190},[184,4536,4537],{"class":982}," unit",[184,4539,1004],{"class":190},[184,4541,212],{"class":211},[184,4543,505],{"class":215},[184,4545,205],{"class":211},[184,4547,887],{"class":190},[184,4549,279],{"class":190},[184,4551,4552,4554,4556,4558,4560,4562,4564],{"class":186,"line":416},[184,4553,997],{"class":968},[184,4555,1809],{"class":1000},[184,4557,1004],{"class":190},[184,4559,1123],{"class":1102},[184,4561,1816],{"class":975},[184,4563,979],{"class":1014},[184,4565,191],{"class":190},[184,4567,4568,4571,4573,4575,4577,4579,4581,4583,4585,4587,4589,4591],{"class":186,"line":430},[184,4569,4570],{"class":1054},"    location",[184,4572,208],{"class":190},[184,4574,1829],{"class":211},[184,4576,1027],{"class":1026},[184,4578,1293],{"class":1036},[184,4580,1041],{"class":1026},[184,4582,334],{"class":215},[184,4584,1027],{"class":1026},[184,4586,1842],{"class":1036},[184,4588,1041],{"class":1026},[184,4590,1044],{"class":211},[184,4592,221],{"class":190},[184,4594,4595],{"class":186,"line":451},[184,4596,4597],{"class":1000},"    unit\n",[184,4599,4600,4602,4604],{"class":186,"line":471},[184,4601,2001],{"class":190},[184,4603,887],{"class":1014},[184,4605,1085],{"class":190},[184,4607,4608],{"class":186,"line":491},[184,4609,1091],{"emptyLinePlaceholder":1090},[184,4611,4612,4614,4616,4618,4620,4622,4624,4626,4628,4630,4632,4635,4637,4639,4641,4643,4645],{"class":186,"line":512},[184,4613,997],{"class":968},[184,4615,1001],{"class":1000},[184,4617,1004],{"class":190},[184,4619,1008],{"class":1007},[184,4621,1011],{"class":975},[184,4623,979],{"class":1014},[184,4625,1044],{"class":211},[184,4627,1027],{"class":1026},[184,4629,4348],{"class":1036},[184,4631,1041],{"class":1026},[184,4633,4634],{"class":215},"\u002Fsearch\u002Fcoordinates?",[184,4636,1027],{"class":1026},[184,4638,1967],{"class":1036},[184,4640,1041],{"class":1026},[184,4642,1044],{"class":211},[184,4644,334],{"class":190},[184,4646,279],{"class":190},[184,4648,4649,4651,4653,4655,4657,4659,4661,4663,4665],{"class":186,"line":533},[184,4650,1980],{"class":1054},[184,4652,208],{"class":190},[184,4654,1060],{"class":190},[184,4656,212],{"class":211},[184,4658,88],{"class":1065},[184,4660,205],{"class":211},[184,4662,208],{"class":190},[184,4664,3360],{"class":1000},[184,4666,1077],{"class":190},[184,4668,4669,4671,4673],{"class":186,"line":553},[184,4670,2001],{"class":190},[184,4672,887],{"class":1014},[184,4674,1085],{"class":190},[184,4676,4677],{"class":186,"line":559},[184,4678,1091],{"emptyLinePlaceholder":1090},[184,4680,4681,4683,4685,4687,4689,4691,4693,4695],{"class":186,"line":565},[184,4682,1096],{"class":1007},[184,4684,1099],{"class":1014},[184,4686,1103],{"class":1102},[184,4688,1106],{"class":1000},[184,4690,840],{"class":190},[184,4692,1111],{"class":1000},[184,4694,887],{"class":1014},[184,4696,279],{"class":190},[184,4698,4699,4701,4703,4705,4707,4709,4711,4713,4715,4717,4719,4721,4723,4725,4727,4729,4731,4733,4735,4737,4739,4741],{"class":186,"line":570},[184,4700,1120],{"class":1007},[184,4702,1123],{"class":1102},[184,4704,1126],{"class":975},[184,4706,979],{"class":1014},[184,4708,1044],{"class":211},[184,4710,1133],{"class":215},[184,4712,1027],{"class":1026},[184,4714,1106],{"class":1036},[184,4716,840],{"class":190},[184,4718,1142],{"class":1036},[184,4720,1041],{"class":1026},[184,4722,1147],{"class":215},[184,4724,1027],{"class":1026},[184,4726,1152],{"class":1007},[184,4728,1001],{"class":1036},[184,4730,840],{"class":190},[184,4732,101],{"class":975},[184,4734,1161],{"class":1033},[184,4736,1041],{"class":1026},[184,4738,1044],{"class":211},[184,4740,887],{"class":1014},[184,4742,1085],{"class":190},[184,4744,4745],{"class":186,"line":589},[184,4746,1174],{"class":190},[184,4748,4749],{"class":186,"line":602},[184,4750,1091],{"emptyLinePlaceholder":1090},[184,4752,4753,4755,4757,4759,4761,4763,4765,4767,4769],{"class":186,"line":622},[184,4754,997],{"class":968},[184,4756,1185],{"class":1000},[184,4758,1004],{"class":190},[184,4760,1008],{"class":1007},[184,4762,1001],{"class":1000},[184,4764,840],{"class":190},[184,4766,180],{"class":975},[184,4768,1161],{"class":1014},[184,4770,1085],{"class":190},[184,4772,4773,4775,4777,4779,4781],{"class":186,"line":646},[184,4774,1320],{"class":1007},[184,4776,1185],{"class":1000},[184,4778,840],{"class":190},[184,4780,229],{"class":1000},[184,4782,1085],{"class":190},[184,4784,4785],{"class":186,"line":651},[184,4786,797],{"class":190},[184,4788,4789],{"class":186,"line":664},[184,4790,1091],{"emptyLinePlaceholder":1090},[184,4792,4793,4795,4797,4800,4802],{"class":186,"line":684},[184,4794,969],{"class":968},[184,4796,972],{"class":968},[184,4798,4799],{"class":975}," main",[184,4801,1161],{"class":190},[184,4803,279],{"class":190},[184,4805,4806,4808,4810,4812,4814,4816,4819,4822,4824,4826,4828,4830,4832,4834],{"class":186,"line":703},[184,4807,997],{"class":968},[184,4809,3486],{"class":1000},[184,4811,1004],{"class":190},[184,4813,4277],{"class":1000},[184,4815,840],{"class":190},[184,4817,4818],{"class":1000},"argv",[184,4820,4821],{"class":1014},"[",[184,4823,2508],{"class":330},[184,4825,1301],{"class":1014},[184,4827,2503],{"class":1102},[184,4829,212],{"class":211},[184,4831,21],{"class":215},[184,4833,205],{"class":211},[184,4835,1085],{"class":190},[184,4837,4838],{"class":186,"line":722},[184,4839,1091],{"emptyLinePlaceholder":1090},[184,4841,4842],{"class":186,"line":741},[184,4843,4845],{"class":4844},"s9Tkl","  \u002F\u002F Forward: LLD → coordinates\n",[184,4847,4848,4851,4853,4856,4858,4860,4863,4865,4867,4869,4871,4873],{"class":186,"line":760},[184,4849,4850],{"class":1000},"  console",[184,4852,840],{"class":190},[184,4854,4855],{"class":975},"log",[184,4857,979],{"class":1014},[184,4859,1044],{"class":211},[184,4861,4862],{"class":215},"Searching: ",[184,4864,1027],{"class":1026},[184,4866,983],{"class":1036},[184,4868,1041],{"class":1026},[184,4870,1044],{"class":211},[184,4872,887],{"class":1014},[184,4874,1085],{"class":190},[184,4876,4877,4879,4882,4884,4886,4888,4890,4892,4894],{"class":186,"line":777},[184,4878,997],{"class":968},[184,4880,4881],{"class":1000}," features",[184,4883,1004],{"class":190},[184,4885,1008],{"class":1007},[184,4887,4319],{"class":975},[184,4889,979],{"class":1014},[184,4891,983],{"class":1000},[184,4893,887],{"class":1014},[184,4895,1085],{"class":190},[184,4897,4898,4900,4902,4904,4906,4908,4910,4912,4914,4916,4918,4920,4922,4924,4926,4928,4930,4932,4934,4936,4938,4940],{"class":186,"line":782},[184,4899,997],{"class":968},[184,4901,1206],{"class":1000},[184,4903,1004],{"class":190},[184,4905,4881],{"class":1000},[184,4907,840],{"class":190},[184,4909,1219],{"class":975},[184,4911,979],{"class":1014},[184,4913,979],{"class":190},[184,4915,1226],{"class":982},[184,4917,887],{"class":190},[184,4919,1232],{"class":1231},[184,4921,1235],{"class":1000},[184,4923,840],{"class":190},[184,4925,421],{"class":1000},[184,4927,840],{"class":190},[184,4929,435],{"class":1000},[184,4931,1246],{"class":1102},[184,4933,212],{"class":211},[184,4935,677],{"class":215},[184,4937,205],{"class":211},[184,4939,887],{"class":1014},[184,4941,1085],{"class":190},[184,4943,4944],{"class":186,"line":788},[184,4945,1091],{"emptyLinePlaceholder":1090},[184,4947,4948,4950,4952,4954,4956],{"class":186,"line":794},[184,4949,1096],{"class":1007},[184,4951,1099],{"class":1014},[184,4953,677],{"class":1000},[184,4955,887],{"class":1014},[184,4957,279],{"class":190},[184,4959,4960,4962,4964,4966,4968,4970,4972,4974,4976,4978,4980,4982,4984],{"class":186,"line":3235},[184,4961,2467],{"class":968},[184,4963,633],{"class":190},[184,4965,1293],{"class":1000},[184,4967,334],{"class":190},[184,4969,1298],{"class":1000},[184,4971,1301],{"class":190},[184,4973,1004],{"class":190},[184,4975,1206],{"class":1000},[184,4977,840],{"class":190},[184,4979,272],{"class":1000},[184,4981,840],{"class":190},[184,4983,309],{"class":1000},[184,4985,1085],{"class":190},[184,4987,4988,4991,4993,4995,4997,4999,5002,5004,5006,5008,5010,5012,5014,5016,5018,5020],{"class":186,"line":3250},[184,4989,4990],{"class":1000},"    console",[184,4992,840],{"class":190},[184,4994,4855],{"class":975},[184,4996,979],{"class":1014},[184,4998,1044],{"class":211},[184,5000,5001],{"class":215},"  Descriptor: ",[184,5003,1027],{"class":1026},[184,5005,677],{"class":1036},[184,5007,840],{"class":190},[184,5009,421],{"class":1036},[184,5011,840],{"class":190},[184,5013,476],{"class":1036},[184,5015,1041],{"class":1026},[184,5017,1044],{"class":211},[184,5019,887],{"class":1014},[184,5021,1085],{"class":190},[184,5023,5024,5026,5028,5030,5032,5034,5037,5039,5041,5043,5045,5047],{"class":186,"line":3256},[184,5025,4990],{"class":1000},[184,5027,840],{"class":190},[184,5029,4855],{"class":975},[184,5031,979],{"class":1014},[184,5033,1044],{"class":211},[184,5035,5036],{"class":215},"  Latitude:   ",[184,5038,1027],{"class":1026},[184,5040,1842],{"class":1036},[184,5042,1041],{"class":1026},[184,5044,1044],{"class":211},[184,5046,887],{"class":1014},[184,5048,1085],{"class":190},[184,5050,5051,5053,5055,5057,5059,5061,5064,5066,5068,5070,5072,5074],{"class":186,"line":3287},[184,5052,4990],{"class":1000},[184,5054,840],{"class":190},[184,5056,4855],{"class":975},[184,5058,979],{"class":1014},[184,5060,1044],{"class":211},[184,5062,5063],{"class":215},"  Longitude:  ",[184,5065,1027],{"class":1026},[184,5067,1293],{"class":1036},[184,5069,1041],{"class":1026},[184,5071,1044],{"class":211},[184,5073,887],{"class":1014},[184,5075,1085],{"class":190},[184,5077,5078,5080,5082,5084,5086,5088,5091,5093,5095,5097,5099,5101,5103,5105,5107,5109],{"class":186,"line":3295},[184,5079,4990],{"class":1000},[184,5081,840],{"class":190},[184,5083,4855],{"class":975},[184,5085,979],{"class":1014},[184,5087,1044],{"class":211},[184,5089,5090],{"class":215},"  Province:   ",[184,5092,1027],{"class":1026},[184,5094,677],{"class":1036},[184,5096,840],{"class":190},[184,5098,421],{"class":1036},[184,5100,840],{"class":190},[184,5102,538],{"class":1036},[184,5104,1041],{"class":1026},[184,5106,1044],{"class":211},[184,5108,887],{"class":1014},[184,5110,1085],{"class":190},[184,5112,5113],{"class":186,"line":3308},[184,5114,1091],{"emptyLinePlaceholder":1090},[184,5116,5117],{"class":186,"line":3322},[184,5118,5119],{"class":4844},"    \u002F\u002F Reverse: coordinates → LLD\n",[184,5121,5122,5124,5126,5128,5130,5132,5134,5137,5139,5141,5143,5145,5147,5149,5151,5153,5155],{"class":186,"line":3328},[184,5123,4990],{"class":1000},[184,5125,840],{"class":190},[184,5127,4855],{"class":975},[184,5129,979],{"class":1014},[184,5131,1044],{"class":211},[184,5133,3950],{"class":2828},[184,5135,5136],{"class":215},"Reverse geocoding: ",[184,5138,1027],{"class":1026},[184,5140,1293],{"class":1036},[184,5142,1041],{"class":1026},[184,5144,902],{"class":215},[184,5146,1027],{"class":1026},[184,5148,1842],{"class":1036},[184,5150,1041],{"class":1026},[184,5152,1044],{"class":211},[184,5154,887],{"class":1014},[184,5156,1085],{"class":190},[184,5158,5159,5161,5164,5166,5168,5170,5172,5174,5176,5178,5180],{"class":186,"line":3339},[184,5160,2467],{"class":968},[184,5162,5163],{"class":1000}," reverseFeatures",[184,5165,1004],{"class":190},[184,5167,1008],{"class":1007},[184,5169,4524],{"class":975},[184,5171,979],{"class":1014},[184,5173,1293],{"class":1000},[184,5175,334],{"class":190},[184,5177,1298],{"class":1000},[184,5179,887],{"class":1014},[184,5181,1085],{"class":190},[184,5183,5184,5186,5189,5191,5193,5195,5197,5199,5201,5203,5205,5207,5209,5211,5213,5215,5217,5219,5221,5223,5225,5227],{"class":186,"line":3344},[184,5185,2467],{"class":968},[184,5187,5188],{"class":1000}," reverseCentroid",[184,5190,1004],{"class":190},[184,5192,5163],{"class":1000},[184,5194,840],{"class":190},[184,5196,1219],{"class":975},[184,5198,979],{"class":1014},[184,5200,979],{"class":190},[184,5202,1226],{"class":982},[184,5204,887],{"class":190},[184,5206,1232],{"class":1231},[184,5208,1235],{"class":1000},[184,5210,840],{"class":190},[184,5212,421],{"class":1000},[184,5214,840],{"class":190},[184,5216,435],{"class":1000},[184,5218,1246],{"class":1102},[184,5220,212],{"class":211},[184,5222,677],{"class":215},[184,5224,205],{"class":211},[184,5226,887],{"class":1014},[184,5228,1085],{"class":190},[184,5230,5231],{"class":186,"line":3354},[184,5232,1091],{"emptyLinePlaceholder":1090},[184,5234,5235,5238,5240,5243,5245],{"class":186,"line":3374},[184,5236,5237],{"class":1007},"    if",[184,5239,1099],{"class":1014},[184,5241,5242],{"class":1000},"reverseCentroid",[184,5244,887],{"class":1014},[184,5246,279],{"class":190},[184,5248,5249,5252,5254,5256,5258,5260,5263,5265,5267,5269,5271,5273,5275,5277,5279,5281],{"class":186,"line":3404},[184,5250,5251],{"class":1000},"      console",[184,5253,840],{"class":190},[184,5255,4855],{"class":975},[184,5257,979],{"class":1014},[184,5259,1044],{"class":211},[184,5261,5262],{"class":215},"  Resolved:   ",[184,5264,1027],{"class":1026},[184,5266,5242],{"class":1036},[184,5268,840],{"class":190},[184,5270,421],{"class":1036},[184,5272,840],{"class":190},[184,5274,476],{"class":1036},[184,5276,1041],{"class":1026},[184,5278,1044],{"class":211},[184,5280,887],{"class":1014},[184,5282,1085],{"class":190},[184,5284,5285],{"class":186,"line":3432},[184,5286,785],{"class":190},[184,5288,5289,5291,5294],{"class":186,"line":3460},[184,5290,2001],{"class":190},[184,5292,5293],{"class":1007}," else",[184,5295,279],{"class":190},[184,5297,5298,5300,5302,5304,5306,5308,5311,5313,5315],{"class":186,"line":3465},[184,5299,4990],{"class":1000},[184,5301,840],{"class":190},[184,5303,4855],{"class":975},[184,5305,979],{"class":1014},[184,5307,205],{"class":211},[184,5309,5310],{"class":215},"  No results found.",[184,5312,205],{"class":211},[184,5314,887],{"class":1014},[184,5316,1085],{"class":190},[184,5318,5319],{"class":186,"line":3480},[184,5320,1174],{"class":190},[184,5322,5323],{"class":186,"line":3507},[184,5324,797],{"class":190},[184,5326,5327],{"class":186,"line":3525},[184,5328,1091],{"emptyLinePlaceholder":1090},[184,5330,5331,5334,5336,5338,5341,5343,5346,5348,5350,5352],{"class":186,"line":3530},[184,5332,5333],{"class":975},"main",[184,5335,1161],{"class":1033},[184,5337,840],{"class":190},[184,5339,5340],{"class":975},"catch",[184,5342,979],{"class":1033},[184,5344,5345],{"class":1000},"console",[184,5347,840],{"class":190},[184,5349,3135],{"class":1000},[184,5351,887],{"class":1033},[184,5353,1085],{"class":190},[15,5355,5356],{},"Run it with:",[96,5358,5362],{"className":5359,"code":5360,"language":5361,"meta":104,"style":104},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","TOWNSHIP_CANADA_API_KEY=your_key_here node search.js \"NW-25-24-1-W5\"\n","bash",[19,5363,5364],{"__ignoreMap":104},[184,5365,5366,5368,5370,5373,5377,5380,5382,5384],{"class":186,"line":187},[184,5367,4287],{"class":1000},[184,5369,2737],{"class":190},[184,5371,5372],{"class":215},"your_key_here",[184,5374,5376],{"class":5375},"sYn-s"," node",[184,5378,5379],{"class":215}," search.js",[184,5381,212],{"class":211},[184,5383,21],{"class":215},[184,5385,550],{"class":211},[10,5387,5389],{"id":5388},"python-example","Python Example",[15,5391,5392,5393,5395],{},"The same forward and reverse workflow using the ",[19,5394,50],{}," library.",[96,5397,5401],{"className":5398,"code":5399,"language":5400,"meta":104,"style":104},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","import os\nimport sys\n\nimport requests\n\nAPI_KEY = os.environ[\"TOWNSHIP_CANADA_API_KEY\"]\nBASE_URL = \"https:\u002F\u002Fdeveloper.townshipcanada.com\"\nHEADERS = {\"X-API-Key\": API_KEY}\n\n\ndef search_legal(lld):\n    response = requests.get(\n        f\"{BASE_URL}\u002Fsearch\u002Flegal-location\",\n        params={\"location\": lld},\n        headers=HEADERS,\n        timeout=10,\n    )\n    response.raise_for_status()\n    return response.json()[\"features\"]\n\n\ndef search_coordinates(lng, lat, unit=\"Quarter Section\"):\n    response = requests.get(\n        f\"{BASE_URL}\u002Fsearch\u002Fcoordinates\",\n        params={\"location\": f\"{lng},{lat}\", \"unit\": unit},\n        headers=HEADERS,\n        timeout=10,\n    )\n    response.raise_for_status()\n    return response.json()[\"features\"]\n\n\ndef main():\n    lld = sys.argv[1] if len(sys.argv) > 1 else \"NW-25-24-1-W5\"\n\n    # Forward: LLD → coordinates\n    print(f\"Searching: {lld}\")\n    features = search_legal(lld)\n    centroid = next((f for f in features if f[\"properties\"][\"shape\"] == \"centroid\"), None)\n\n    if centroid:\n        lng, lat = centroid[\"geometry\"][\"coordinates\"]\n        props = centroid[\"properties\"]\n        print(f\"  Descriptor: {props['legal_location']}\")\n        print(f\"  Latitude:   {lat}\")\n        print(f\"  Longitude:  {lng}\")\n        print(f\"  Province:   {props['province']}\")\n\n        # Reverse: coordinates → LLD\n        print(f\"\\nReverse geocoding: {lng}, {lat}\")\n        reverse_features = search_coordinates(lng, lat)\n        reverse_centroid = next(\n            (f for f in reverse_features if f[\"properties\"][\"shape\"] == \"centroid\"), None\n        )\n        if reverse_centroid:\n            print(f\"  Resolved:   {reverse_centroid['properties']['legal_location']}\")\n    else:\n        print(\"  No results found.\")\n\n\nif __name__ == \"__main__\":\n    main()\n","python",[19,5402,5403,5411,5418,5422,5429,5433,5459,5471,5492,5496,5500,5516,5533,5553,5574,5585,5597,5602,5615,5637,5641,5645,5674,5688,5705,5753,5763,5773,5777,5787,5807,5811,5815,5824,5877,5881,5886,5909,5924,5993,5997,6006,6038,6057,6090,6111,6132,6163,6167,6172,6204,6223,6234,6285,6290,6299,6340,6347,6361,6365,6369,6388],{"__ignoreMap":104},[184,5404,5405,5408],{"class":186,"line":187},[184,5406,5407],{"class":1007},"import",[184,5409,5410],{"class":2792}," os\n",[184,5412,5413,5415],{"class":186,"line":194},[184,5414,5407],{"class":1007},[184,5416,5417],{"class":2792}," sys\n",[184,5419,5420],{"class":186,"line":224},[184,5421,1091],{"emptyLinePlaceholder":1090},[184,5423,5424,5426],{"class":186,"line":239},[184,5425,5407],{"class":1007},[184,5427,5428],{"class":2792}," requests\n",[184,5430,5431],{"class":186,"line":245},[184,5432,1091],{"emptyLinePlaceholder":1090},[184,5434,5435,5438,5440,5443,5445,5449,5451,5453,5455,5457],{"class":186,"line":267},[184,5436,5437],{"class":2828},"API_KEY",[184,5439,1004],{"class":190},[184,5441,5442],{"class":2792}," os",[184,5444,840],{"class":190},[184,5446,5448],{"class":5447},"sBPpx","environ",[184,5450,4821],{"class":190},[184,5452,205],{"class":211},[184,5454,4287],{"class":215},[184,5456,205],{"class":211},[184,5458,395],{"class":190},[184,5460,5461,5463,5465,5467,5469],{"class":186,"line":282},[184,5462,4348],{"class":2828},[184,5464,1004],{"class":190},[184,5466,212],{"class":211},[184,5468,84],{"class":215},[184,5470,550],{"class":211},[184,5472,5473,5476,5478,5480,5482,5484,5486,5488,5490],{"class":186,"line":304},[184,5474,5475],{"class":2828},"HEADERS",[184,5477,1004],{"class":190},[184,5479,1060],{"class":190},[184,5481,205],{"class":211},[184,5483,88],{"class":215},[184,5485,205],{"class":211},[184,5487,208],{"class":190},[184,5489,3360],{"class":2828},[184,5491,797],{"class":190},[184,5493,5494],{"class":186,"line":318},[184,5495,1091],{"emptyLinePlaceholder":1090},[184,5497,5498],{"class":186,"line":324},[184,5499,1091],{"emptyLinePlaceholder":1090},[184,5501,5502,5505,5508,5510,5513],{"class":186,"line":343},[184,5503,5504],{"class":968},"def",[184,5506,5507],{"class":975}," search_legal",[184,5509,979],{"class":190},[184,5511,983],{"class":5512},"sCyAa",[184,5514,5515],{"class":190},"):\n",[184,5517,5518,5521,5523,5526,5528,5531],{"class":186,"line":357},[184,5519,5520],{"class":2792},"    response ",[184,5522,2737],{"class":190},[184,5524,5525],{"class":2792}," requests",[184,5527,840],{"class":190},[184,5529,2489],{"class":5530},"siWMO",[184,5532,1015],{"class":190},[184,5534,5535,5538,5540,5543,5546,5548,5551],{"class":186,"line":371},[184,5536,5537],{"class":968},"        f",[184,5539,205],{"class":215},[184,5541,1821],{"class":5542},"s3h35",[184,5544,4348],{"class":5545},"s6DHA",[184,5547,1041],{"class":5542},[184,5549,5550],{"class":215},"\u002Fsearch\u002Flegal-location\"",[184,5552,221],{"class":190},[184,5554,5555,5558,5561,5563,5565,5567,5569,5571],{"class":186,"line":384},[184,5556,5557],{"class":982},"        params",[184,5559,5560],{"class":190},"={",[184,5562,205],{"class":211},[184,5564,151],{"class":215},[184,5566,205],{"class":211},[184,5568,208],{"class":190},[184,5570,3486],{"class":5530},[184,5572,5573],{"class":190},"},\n",[184,5575,5576,5579,5581,5583],{"class":186,"line":398},[184,5577,5578],{"class":982},"        headers",[184,5580,2737],{"class":190},[184,5582,5475],{"class":5545},[184,5584,221],{"class":190},[184,5586,5587,5590,5592,5595],{"class":186,"line":404},[184,5588,5589],{"class":982},"        timeout",[184,5591,2737],{"class":190},[184,5593,5594],{"class":330},"10",[184,5596,221],{"class":190},[184,5598,5599],{"class":186,"line":410},[184,5600,5601],{"class":190},"    )\n",[184,5603,5604,5607,5609,5612],{"class":186,"line":416},[184,5605,5606],{"class":2792},"    response",[184,5608,840],{"class":190},[184,5610,5611],{"class":5530},"raise_for_status",[184,5613,5614],{"class":190},"()\n",[184,5616,5617,5619,5622,5624,5626,5629,5631,5633,5635],{"class":186,"line":430},[184,5618,2567],{"class":1007},[184,5620,5621],{"class":2792}," response",[184,5623,840],{"class":190},[184,5625,180],{"class":5530},[184,5627,5628],{"class":190},"()[",[184,5630,205],{"class":211},[184,5632,229],{"class":215},[184,5634,205],{"class":211},[184,5636,395],{"class":190},[184,5638,5639],{"class":186,"line":451},[184,5640,1091],{"emptyLinePlaceholder":1090},[184,5642,5643],{"class":186,"line":471},[184,5644,1091],{"emptyLinePlaceholder":1090},[184,5646,5647,5649,5652,5654,5656,5658,5660,5662,5664,5666,5668,5670,5672],{"class":186,"line":491},[184,5648,5504],{"class":968},[184,5650,5651],{"class":975}," search_coordinates",[184,5653,979],{"class":190},[184,5655,1293],{"class":5512},[184,5657,334],{"class":190},[184,5659,1298],{"class":5512},[184,5661,334],{"class":190},[184,5663,4537],{"class":5512},[184,5665,2737],{"class":1102},[184,5667,205],{"class":211},[184,5669,505],{"class":215},[184,5671,205],{"class":211},[184,5673,5515],{"class":190},[184,5675,5676,5678,5680,5682,5684,5686],{"class":186,"line":512},[184,5677,5520],{"class":2792},[184,5679,2737],{"class":190},[184,5681,5525],{"class":2792},[184,5683,840],{"class":190},[184,5685,2489],{"class":5530},[184,5687,1015],{"class":190},[184,5689,5690,5692,5694,5696,5698,5700,5703],{"class":186,"line":533},[184,5691,5537],{"class":968},[184,5693,205],{"class":215},[184,5695,1821],{"class":5542},[184,5697,4348],{"class":5545},[184,5699,1041],{"class":5542},[184,5701,5702],{"class":215},"\u002Fsearch\u002Fcoordinates\"",[184,5704,221],{"class":190},[184,5706,5707,5709,5711,5713,5715,5717,5719,5721,5723,5725,5727,5729,5731,5733,5735,5737,5739,5741,5743,5745,5747,5749,5751],{"class":186,"line":553},[184,5708,5557],{"class":982},[184,5710,5560],{"class":190},[184,5712,205],{"class":211},[184,5714,151],{"class":215},[184,5716,205],{"class":211},[184,5718,208],{"class":190},[184,5720,1235],{"class":968},[184,5722,205],{"class":215},[184,5724,1821],{"class":5542},[184,5726,1293],{"class":5530},[184,5728,1041],{"class":5542},[184,5730,334],{"class":215},[184,5732,1821],{"class":5542},[184,5734,1842],{"class":5530},[184,5736,1041],{"class":5542},[184,5738,205],{"class":215},[184,5740,334],{"class":190},[184,5742,212],{"class":211},[184,5744,496],{"class":215},[184,5746,205],{"class":211},[184,5748,208],{"class":190},[184,5750,4537],{"class":5530},[184,5752,5573],{"class":190},[184,5754,5755,5757,5759,5761],{"class":186,"line":559},[184,5756,5578],{"class":982},[184,5758,2737],{"class":190},[184,5760,5475],{"class":5545},[184,5762,221],{"class":190},[184,5764,5765,5767,5769,5771],{"class":186,"line":565},[184,5766,5589],{"class":982},[184,5768,2737],{"class":190},[184,5770,5594],{"class":330},[184,5772,221],{"class":190},[184,5774,5775],{"class":186,"line":570},[184,5776,5601],{"class":190},[184,5778,5779,5781,5783,5785],{"class":186,"line":589},[184,5780,5606],{"class":2792},[184,5782,840],{"class":190},[184,5784,5611],{"class":5530},[184,5786,5614],{"class":190},[184,5788,5789,5791,5793,5795,5797,5799,5801,5803,5805],{"class":186,"line":602},[184,5790,2567],{"class":1007},[184,5792,5621],{"class":2792},[184,5794,840],{"class":190},[184,5796,180],{"class":5530},[184,5798,5628],{"class":190},[184,5800,205],{"class":211},[184,5802,229],{"class":215},[184,5804,205],{"class":211},[184,5806,395],{"class":190},[184,5808,5809],{"class":186,"line":622},[184,5810,1091],{"emptyLinePlaceholder":1090},[184,5812,5813],{"class":186,"line":646},[184,5814,1091],{"emptyLinePlaceholder":1090},[184,5816,5817,5819,5821],{"class":186,"line":651},[184,5818,5504],{"class":968},[184,5820,4799],{"class":975},[184,5822,5823],{"class":190},"():\n",[184,5825,5826,5829,5831,5834,5836,5838,5840,5843,5845,5848,5852,5854,5857,5859,5861,5863,5866,5869,5871,5873,5875],{"class":186,"line":664},[184,5827,5828],{"class":2792},"    lld ",[184,5830,2737],{"class":190},[184,5832,5833],{"class":2792}," sys",[184,5835,840],{"class":190},[184,5837,4818],{"class":5447},[184,5839,4821],{"class":190},[184,5841,5842],{"class":330},"1",[184,5844,1301],{"class":190},[184,5846,5847],{"class":1007}," if",[184,5849,5851],{"class":5850},"sJdAF"," len",[184,5853,979],{"class":190},[184,5855,5856],{"class":5530},"sys",[184,5858,840],{"class":190},[184,5860,4818],{"class":5447},[184,5862,887],{"class":190},[184,5864,5865],{"class":1102}," >",[184,5867,5868],{"class":330}," 1",[184,5870,5293],{"class":1007},[184,5872,212],{"class":211},[184,5874,21],{"class":215},[184,5876,550],{"class":211},[184,5878,5879],{"class":186,"line":684},[184,5880,1091],{"emptyLinePlaceholder":1090},[184,5882,5883],{"class":186,"line":703},[184,5884,5885],{"class":4844},"    # Forward: LLD → coordinates\n",[184,5887,5888,5891,5893,5895,5898,5900,5902,5904,5906],{"class":186,"line":722},[184,5889,5890],{"class":5850},"    print",[184,5892,979],{"class":190},[184,5894,1226],{"class":968},[184,5896,5897],{"class":215},"\"Searching: ",[184,5899,1821],{"class":5542},[184,5901,983],{"class":5530},[184,5903,1041],{"class":5542},[184,5905,205],{"class":215},[184,5907,5908],{"class":190},")\n",[184,5910,5911,5914,5916,5918,5920,5922],{"class":186,"line":741},[184,5912,5913],{"class":2792},"    features ",[184,5915,2737],{"class":190},[184,5917,5507],{"class":5530},[184,5919,979],{"class":190},[184,5921,983],{"class":5530},[184,5923,5908],{"class":190},[184,5925,5926,5929,5931,5934,5937,5940,5943,5946,5949,5952,5955,5957,5959,5961,5963,5965,5968,5970,5972,5974,5976,5979,5981,5983,5985,5988,5991],{"class":186,"line":760},[184,5927,5928],{"class":2792},"    centroid ",[184,5930,2737],{"class":190},[184,5932,5933],{"class":5850}," next",[184,5935,5936],{"class":190},"((",[184,5938,5939],{"class":5530},"f ",[184,5941,5942],{"class":1007},"for",[184,5944,5945],{"class":5530}," f ",[184,5947,5948],{"class":1007},"in",[184,5950,5951],{"class":5530}," features ",[184,5953,5954],{"class":1007},"if",[184,5956,1235],{"class":5530},[184,5958,4821],{"class":190},[184,5960,205],{"class":211},[184,5962,421],{"class":215},[184,5964,205],{"class":211},[184,5966,5967],{"class":190},"][",[184,5969,205],{"class":211},[184,5971,435],{"class":215},[184,5973,205],{"class":211},[184,5975,1301],{"class":190},[184,5977,5978],{"class":1102}," ==",[184,5980,212],{"class":211},[184,5982,677],{"class":215},[184,5984,205],{"class":211},[184,5986,5987],{"class":190},"),",[184,5989,5990],{"class":1026}," None",[184,5992,5908],{"class":190},[184,5994,5995],{"class":186,"line":777},[184,5996,1091],{"emptyLinePlaceholder":1090},[184,5998,5999,6001,6003],{"class":186,"line":782},[184,6000,5237],{"class":1007},[184,6002,1206],{"class":2792},[184,6004,6005],{"class":190},":\n",[184,6007,6008,6011,6013,6016,6018,6020,6022,6024,6026,6028,6030,6032,6034,6036],{"class":186,"line":788},[184,6009,6010],{"class":2792},"        lng",[184,6012,334],{"class":190},[184,6014,6015],{"class":2792}," lat ",[184,6017,2737],{"class":190},[184,6019,1206],{"class":2792},[184,6021,4821],{"class":190},[184,6023,205],{"class":211},[184,6025,272],{"class":215},[184,6027,205],{"class":211},[184,6029,5967],{"class":190},[184,6031,205],{"class":211},[184,6033,309],{"class":215},[184,6035,205],{"class":211},[184,6037,395],{"class":190},[184,6039,6040,6043,6045,6047,6049,6051,6053,6055],{"class":186,"line":794},[184,6041,6042],{"class":2792},"        props ",[184,6044,2737],{"class":190},[184,6046,1206],{"class":2792},[184,6048,4821],{"class":190},[184,6050,205],{"class":211},[184,6052,421],{"class":215},[184,6054,205],{"class":211},[184,6056,395],{"class":190},[184,6058,6059,6062,6064,6066,6069,6071,6073,6075,6078,6080,6082,6084,6086,6088],{"class":186,"line":3235},[184,6060,6061],{"class":5850},"        print",[184,6063,979],{"class":190},[184,6065,1226],{"class":968},[184,6067,6068],{"class":215},"\"  Descriptor: ",[184,6070,1821],{"class":5542},[184,6072,3941],{"class":5530},[184,6074,4821],{"class":190},[184,6076,6077],{"class":211},"'",[184,6079,476],{"class":215},[184,6081,6077],{"class":211},[184,6083,1301],{"class":190},[184,6085,1041],{"class":5542},[184,6087,205],{"class":215},[184,6089,5908],{"class":190},[184,6091,6092,6094,6096,6098,6101,6103,6105,6107,6109],{"class":186,"line":3250},[184,6093,6061],{"class":5850},[184,6095,979],{"class":190},[184,6097,1226],{"class":968},[184,6099,6100],{"class":215},"\"  Latitude:   ",[184,6102,1821],{"class":5542},[184,6104,1842],{"class":5530},[184,6106,1041],{"class":5542},[184,6108,205],{"class":215},[184,6110,5908],{"class":190},[184,6112,6113,6115,6117,6119,6122,6124,6126,6128,6130],{"class":186,"line":3256},[184,6114,6061],{"class":5850},[184,6116,979],{"class":190},[184,6118,1226],{"class":968},[184,6120,6121],{"class":215},"\"  Longitude:  ",[184,6123,1821],{"class":5542},[184,6125,1293],{"class":5530},[184,6127,1041],{"class":5542},[184,6129,205],{"class":215},[184,6131,5908],{"class":190},[184,6133,6134,6136,6138,6140,6143,6145,6147,6149,6151,6153,6155,6157,6159,6161],{"class":186,"line":3287},[184,6135,6061],{"class":5850},[184,6137,979],{"class":190},[184,6139,1226],{"class":968},[184,6141,6142],{"class":215},"\"  Province:   ",[184,6144,1821],{"class":5542},[184,6146,3941],{"class":5530},[184,6148,4821],{"class":190},[184,6150,6077],{"class":211},[184,6152,538],{"class":215},[184,6154,6077],{"class":211},[184,6156,1301],{"class":190},[184,6158,1041],{"class":5542},[184,6160,205],{"class":215},[184,6162,5908],{"class":190},[184,6164,6165],{"class":186,"line":3295},[184,6166,1091],{"emptyLinePlaceholder":1090},[184,6168,6169],{"class":186,"line":3308},[184,6170,6171],{"class":4844},"        # Reverse: coordinates → LLD\n",[184,6173,6174,6176,6178,6180,6182,6184,6186,6188,6190,6192,6194,6196,6198,6200,6202],{"class":186,"line":3322},[184,6175,6061],{"class":5850},[184,6177,979],{"class":190},[184,6179,1226],{"class":968},[184,6181,205],{"class":215},[184,6183,3950],{"class":2828},[184,6185,5136],{"class":215},[184,6187,1821],{"class":5542},[184,6189,1293],{"class":5530},[184,6191,1041],{"class":5542},[184,6193,902],{"class":215},[184,6195,1821],{"class":5542},[184,6197,1842],{"class":5530},[184,6199,1041],{"class":5542},[184,6201,205],{"class":215},[184,6203,5908],{"class":190},[184,6205,6206,6209,6211,6213,6215,6217,6219,6221],{"class":186,"line":3328},[184,6207,6208],{"class":2792},"        reverse_features ",[184,6210,2737],{"class":190},[184,6212,5651],{"class":5530},[184,6214,979],{"class":190},[184,6216,1293],{"class":5530},[184,6218,334],{"class":190},[184,6220,1298],{"class":5530},[184,6222,5908],{"class":190},[184,6224,6225,6228,6230,6232],{"class":186,"line":3339},[184,6226,6227],{"class":2792},"        reverse_centroid ",[184,6229,2737],{"class":190},[184,6231,5933],{"class":5850},[184,6233,1015],{"class":190},[184,6235,6236,6239,6241,6243,6245,6247,6250,6252,6254,6256,6258,6260,6262,6264,6266,6268,6270,6272,6274,6276,6278,6280,6282],{"class":186,"line":3344},[184,6237,6238],{"class":190},"            (",[184,6240,5939],{"class":5530},[184,6242,5942],{"class":1007},[184,6244,5945],{"class":5530},[184,6246,5948],{"class":1007},[184,6248,6249],{"class":5530}," reverse_features ",[184,6251,5954],{"class":1007},[184,6253,1235],{"class":5530},[184,6255,4821],{"class":190},[184,6257,205],{"class":211},[184,6259,421],{"class":215},[184,6261,205],{"class":211},[184,6263,5967],{"class":190},[184,6265,205],{"class":211},[184,6267,435],{"class":215},[184,6269,205],{"class":211},[184,6271,1301],{"class":190},[184,6273,5978],{"class":1102},[184,6275,212],{"class":211},[184,6277,677],{"class":215},[184,6279,205],{"class":211},[184,6281,5987],{"class":190},[184,6283,6284],{"class":1026}," None\n",[184,6286,6287],{"class":186,"line":3354},[184,6288,6289],{"class":190},"        )\n",[184,6291,6292,6294,6297],{"class":186,"line":3374},[184,6293,3510],{"class":1007},[184,6295,6296],{"class":2792}," reverse_centroid",[184,6298,6005],{"class":190},[184,6300,6301,6304,6306,6308,6311,6313,6316,6318,6320,6322,6324,6326,6328,6330,6332,6334,6336,6338],{"class":186,"line":3404},[184,6302,6303],{"class":5850},"            print",[184,6305,979],{"class":190},[184,6307,1226],{"class":968},[184,6309,6310],{"class":215},"\"  Resolved:   ",[184,6312,1821],{"class":5542},[184,6314,6315],{"class":5530},"reverse_centroid",[184,6317,4821],{"class":190},[184,6319,6077],{"class":211},[184,6321,421],{"class":215},[184,6323,6077],{"class":211},[184,6325,5967],{"class":190},[184,6327,6077],{"class":211},[184,6329,476],{"class":215},[184,6331,6077],{"class":211},[184,6333,1301],{"class":190},[184,6335,1041],{"class":5542},[184,6337,205],{"class":215},[184,6339,5908],{"class":190},[184,6341,6342,6345],{"class":186,"line":3432},[184,6343,6344],{"class":1007},"    else",[184,6346,6005],{"class":190},[184,6348,6349,6351,6353,6355,6357,6359],{"class":186,"line":3460},[184,6350,6061],{"class":5850},[184,6352,979],{"class":190},[184,6354,205],{"class":211},[184,6356,5310],{"class":215},[184,6358,205],{"class":211},[184,6360,5908],{"class":190},[184,6362,6363],{"class":186,"line":3465},[184,6364,1091],{"emptyLinePlaceholder":1090},[184,6366,6367],{"class":186,"line":3480},[184,6368,1091],{"emptyLinePlaceholder":1090},[184,6370,6371,6373,6377,6379,6381,6384,6386],{"class":186,"line":3507},[184,6372,5954],{"class":1007},[184,6374,6376],{"class":6375},"s131V"," __name__",[184,6378,5978],{"class":1102},[184,6380,212],{"class":211},[184,6382,6383],{"class":215},"__main__",[184,6385,205],{"class":211},[184,6387,6005],{"class":190},[184,6389,6390,6393],{"class":186,"line":3525},[184,6391,6392],{"class":5530},"    main",[184,6394,5614],{"class":190},[15,6396,5356],{},[96,6398,6400],{"className":5359,"code":6399,"language":5361,"meta":104,"style":104},"pip install requests\nTOWNSHIP_CANADA_API_KEY=your_key_here python search.py \"NW-25-24-1-W5\"\n",[19,6401,6402,6412],{"__ignoreMap":104},[184,6403,6404,6407,6410],{"class":186,"line":187},[184,6405,6406],{"class":5375},"pip",[184,6408,6409],{"class":215}," install",[184,6411,5428],{"class":215},[184,6413,6414,6416,6418,6420,6423,6426,6428,6430],{"class":186,"line":194},[184,6415,4287],{"class":1000},[184,6417,2737],{"class":190},[184,6419,5372],{"class":215},[184,6421,6422],{"class":5375}," python",[184,6424,6425],{"class":215}," search.py",[184,6427,212],{"class":211},[184,6429,21],{"class":215},[184,6431,550],{"class":211},[10,6433,6435],{"id":6434},"react-example","React Example",[15,6437,6438],{},"A hook and component for forward search with loading and error states.",[15,6440,6441],{},[108,6442,6443],{},[19,6444,6445],{},"hooks\u002FuseSearchApi.js",[96,6447,6449],{"className":959,"code":6448,"language":961,"meta":104,"style":104},"import { useState, useCallback } from \"react\";\n\nexport function useSearchApi(apiKey) {\n  const [result, setResult] = useState(null);\n  const [isLoading, setIsLoading] = useState(false);\n  const [error, setError] = useState(null);\n\n  const search = useCallback(\n    async (lld) => {\n      if (!lld.trim()) return;\n\n      setIsLoading(true);\n      setError(null);\n      setResult(null);\n\n      try {\n        const res = await fetch(\n          `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=${encodeURIComponent(lld)}`,\n          { headers: { \"X-API-Key\": apiKey } }\n        );\n\n        if (!res.ok) {\n          throw new Error(res.status === 404 ? \"Location not found\" : `HTTP ${res.status}`);\n        }\n\n        const data = await res.json();\n        const centroid = data.features.find((f) => f.properties.shape === \"centroid\");\n        const grid = data.features.find((f) => f.properties.shape === \"grid\");\n\n        if (!centroid) {\n          setError(\"No results found\");\n          return;\n        }\n\n        const [lng, lat] = centroid.geometry.coordinates;\n        setResult({\n          descriptor: centroid.properties.legal_location,\n          lat,\n          lng,\n          province: centroid.properties.province,\n          surveySystem: centroid.properties.survey_system,\n          boundary: grid?.geometry || null\n        });\n      } catch (err) {\n        setError(err.message);\n      } finally {\n        setIsLoading(false);\n      }\n    },\n    [apiKey]\n  );\n\n  const clear = useCallback(() => {\n    setResult(null);\n    setError(null);\n  }, []);\n\n  return { result, isLoading, error, search, clear };\n}\n",[19,6450,6451,6479,6483,6502,6530,6559,6586,6590,6602,6617,6639,6643,6657,6670,6683,6687,6694,6708,6731,6756,6763,6767,6785,6839,6843,6847,6867,6917,6967,6971,6985,7003,7010,7014,7018,7046,7055,7074,7081,7088,7107,7126,7144,7152,7166,7183,7192,7205,7209,7213,7222,7228,7232,7251,7264,7277,7287,7291,7320],{"__ignoreMap":104},[184,6452,6453,6455,6457,6460,6462,6465,6467,6470,6472,6475,6477],{"class":186,"line":187},[184,6454,5407],{"class":1007},[184,6456,1060],{"class":190},[184,6458,6459],{"class":1000}," useState",[184,6461,334],{"class":190},[184,6463,6464],{"class":1000}," useCallback",[184,6466,1074],{"class":190},[184,6468,6469],{"class":1007}," from",[184,6471,212],{"class":211},[184,6473,6474],{"class":215},"react",[184,6476,205],{"class":211},[184,6478,1085],{"class":190},[184,6480,6481],{"class":186,"line":194},[184,6482,1091],{"emptyLinePlaceholder":1090},[184,6484,6485,6488,6490,6493,6495,6498,6500],{"class":186,"line":224},[184,6486,6487],{"class":1007},"export",[184,6489,972],{"class":968},[184,6491,6492],{"class":975}," useSearchApi",[184,6494,979],{"class":190},[184,6496,6497],{"class":982},"apiKey",[184,6499,887],{"class":190},[184,6501,279],{"class":190},[184,6503,6504,6506,6508,6510,6512,6515,6517,6519,6521,6523,6526,6528],{"class":186,"line":239},[184,6505,997],{"class":968},[184,6507,633],{"class":190},[184,6509,3034],{"class":1000},[184,6511,334],{"class":190},[184,6513,6514],{"class":1000}," setResult",[184,6516,1301],{"class":190},[184,6518,1004],{"class":190},[184,6520,6459],{"class":975},[184,6522,979],{"class":1014},[184,6524,6525],{"class":1102},"null",[184,6527,887],{"class":1014},[184,6529,1085],{"class":190},[184,6531,6532,6534,6536,6539,6541,6544,6546,6548,6550,6552,6555,6557],{"class":186,"line":245},[184,6533,997],{"class":968},[184,6535,633],{"class":190},[184,6537,6538],{"class":1000},"isLoading",[184,6540,334],{"class":190},[184,6542,6543],{"class":1000}," setIsLoading",[184,6545,1301],{"class":190},[184,6547,1004],{"class":190},[184,6549,6459],{"class":975},[184,6551,979],{"class":1014},[184,6553,6554],{"class":3543},"false",[184,6556,887],{"class":1014},[184,6558,1085],{"class":190},[184,6560,6561,6563,6565,6567,6569,6572,6574,6576,6578,6580,6582,6584],{"class":186,"line":267},[184,6562,997],{"class":968},[184,6564,633],{"class":190},[184,6566,3135],{"class":1000},[184,6568,334],{"class":190},[184,6570,6571],{"class":1000}," setError",[184,6573,1301],{"class":190},[184,6575,1004],{"class":190},[184,6577,6459],{"class":975},[184,6579,979],{"class":1014},[184,6581,6525],{"class":1102},[184,6583,887],{"class":1014},[184,6585,1085],{"class":190},[184,6587,6588],{"class":186,"line":282},[184,6589,1091],{"emptyLinePlaceholder":1090},[184,6591,6592,6594,6596,6598,6600],{"class":186,"line":304},[184,6593,997],{"class":968},[184,6595,3473],{"class":1000},[184,6597,1004],{"class":190},[184,6599,6464],{"class":975},[184,6601,1015],{"class":1014},[184,6603,6604,6607,6609,6611,6613,6615],{"class":186,"line":318},[184,6605,6606],{"class":968},"    async",[184,6608,1099],{"class":190},[184,6610,983],{"class":982},[184,6612,887],{"class":190},[184,6614,1232],{"class":1231},[184,6616,279],{"class":190},[184,6618,6619,6622,6624,6626,6628,6630,6632,6635,6637],{"class":186,"line":324},[184,6620,6621],{"class":1007},"      if",[184,6623,1099],{"class":1014},[184,6625,1103],{"class":1102},[184,6627,983],{"class":1000},[184,6629,840],{"class":190},[184,6631,3500],{"class":975},[184,6633,6634],{"class":1014},"())",[184,6636,1275],{"class":1007},[184,6638,1085],{"class":190},[184,6640,6641],{"class":186,"line":343},[184,6642,1091],{"emptyLinePlaceholder":1090},[184,6644,6645,6648,6650,6653,6655],{"class":186,"line":357},[184,6646,6647],{"class":975},"      setIsLoading",[184,6649,979],{"class":1014},[184,6651,6652],{"class":3543},"true",[184,6654,887],{"class":1014},[184,6656,1085],{"class":190},[184,6658,6659,6662,6664,6666,6668],{"class":186,"line":371},[184,6660,6661],{"class":975},"      setError",[184,6663,979],{"class":1014},[184,6665,6525],{"class":1102},[184,6667,887],{"class":1014},[184,6669,1085],{"class":190},[184,6671,6672,6675,6677,6679,6681],{"class":186,"line":384},[184,6673,6674],{"class":975},"      setResult",[184,6676,979],{"class":1014},[184,6678,6525],{"class":1102},[184,6680,887],{"class":1014},[184,6682,1085],{"class":190},[184,6684,6685],{"class":186,"line":398},[184,6686,1091],{"emptyLinePlaceholder":1090},[184,6688,6689,6692],{"class":186,"line":404},[184,6690,6691],{"class":1007},"      try",[184,6693,279],{"class":190},[184,6695,6696,6698,6700,6702,6704,6706],{"class":186,"line":410},[184,6697,3483],{"class":968},[184,6699,1001],{"class":1000},[184,6701,1004],{"class":190},[184,6703,1008],{"class":1007},[184,6705,1011],{"class":975},[184,6707,1015],{"class":1014},[184,6709,6710,6713,6715,6717,6719,6721,6723,6725,6727,6729],{"class":186,"line":416},[184,6711,6712],{"class":211},"          `",[184,6714,1023],{"class":215},[184,6716,1027],{"class":1026},[184,6718,1030],{"class":975},[184,6720,979],{"class":1033},[184,6722,983],{"class":1036},[184,6724,887],{"class":1033},[184,6726,1041],{"class":1026},[184,6728,1044],{"class":211},[184,6730,221],{"class":190},[184,6732,6733,6736,6738,6740,6742,6744,6746,6748,6750,6752,6754],{"class":186,"line":430},[184,6734,6735],{"class":190},"          {",[184,6737,1055],{"class":1054},[184,6739,208],{"class":190},[184,6741,1060],{"class":190},[184,6743,212],{"class":211},[184,6745,88],{"class":1065},[184,6747,205],{"class":211},[184,6749,208],{"class":190},[184,6751,988],{"class":1000},[184,6753,1074],{"class":190},[184,6755,1077],{"class":190},[184,6757,6758,6761],{"class":186,"line":451},[184,6759,6760],{"class":1014},"        )",[184,6762,1085],{"class":190},[184,6764,6765],{"class":186,"line":471},[184,6766,1091],{"emptyLinePlaceholder":1090},[184,6768,6769,6771,6773,6775,6777,6779,6781,6783],{"class":186,"line":491},[184,6770,3510],{"class":1007},[184,6772,1099],{"class":1014},[184,6774,1103],{"class":1102},[184,6776,1106],{"class":1000},[184,6778,840],{"class":190},[184,6780,1111],{"class":1000},[184,6782,887],{"class":1014},[184,6784,279],{"class":190},[184,6786,6787,6790,6792,6794,6796,6798,6800,6802,6804,6807,6810,6812,6814,6816,6819,6821,6823,6825,6827,6829,6831,6833,6835,6837],{"class":186,"line":512},[184,6788,6789],{"class":1007},"          throw",[184,6791,1123],{"class":1102},[184,6793,1126],{"class":975},[184,6795,979],{"class":1014},[184,6797,1106],{"class":1000},[184,6799,840],{"class":190},[184,6801,1142],{"class":1000},[184,6803,1246],{"class":1102},[184,6805,6806],{"class":330}," 404",[184,6808,6809],{"class":1102}," ?",[184,6811,212],{"class":211},[184,6813,2334],{"class":215},[184,6815,205],{"class":211},[184,6817,6818],{"class":1102}," :",[184,6820,1829],{"class":211},[184,6822,1133],{"class":215},[184,6824,1027],{"class":1026},[184,6826,1106],{"class":1036},[184,6828,840],{"class":190},[184,6830,1142],{"class":1036},[184,6832,1041],{"class":1026},[184,6834,1044],{"class":211},[184,6836,887],{"class":1014},[184,6838,1085],{"class":190},[184,6840,6841],{"class":186,"line":533},[184,6842,4116],{"class":190},[184,6844,6845],{"class":186,"line":553},[184,6846,1091],{"emptyLinePlaceholder":1090},[184,6848,6849,6851,6853,6855,6857,6859,6861,6863,6865],{"class":186,"line":559},[184,6850,3483],{"class":968},[184,6852,1185],{"class":1000},[184,6854,1004],{"class":190},[184,6856,1008],{"class":1007},[184,6858,1001],{"class":1000},[184,6860,840],{"class":190},[184,6862,180],{"class":975},[184,6864,1161],{"class":1014},[184,6866,1085],{"class":190},[184,6868,6869,6871,6873,6875,6877,6879,6881,6883,6885,6887,6889,6891,6893,6895,6897,6899,6901,6903,6905,6907,6909,6911,6913,6915],{"class":186,"line":565},[184,6870,3483],{"class":968},[184,6872,1206],{"class":1000},[184,6874,1004],{"class":190},[184,6876,1185],{"class":1000},[184,6878,840],{"class":190},[184,6880,229],{"class":1000},[184,6882,840],{"class":190},[184,6884,1219],{"class":975},[184,6886,979],{"class":1014},[184,6888,979],{"class":190},[184,6890,1226],{"class":982},[184,6892,887],{"class":190},[184,6894,1232],{"class":1231},[184,6896,1235],{"class":1000},[184,6898,840],{"class":190},[184,6900,421],{"class":1000},[184,6902,840],{"class":190},[184,6904,435],{"class":1000},[184,6906,1246],{"class":1102},[184,6908,212],{"class":211},[184,6910,677],{"class":215},[184,6912,205],{"class":211},[184,6914,887],{"class":1014},[184,6916,1085],{"class":190},[184,6918,6919,6921,6923,6925,6927,6929,6931,6933,6935,6937,6939,6941,6943,6945,6947,6949,6951,6953,6955,6957,6959,6961,6963,6965],{"class":186,"line":570},[184,6920,3483],{"class":968},[184,6922,1555],{"class":1000},[184,6924,1004],{"class":190},[184,6926,1185],{"class":1000},[184,6928,840],{"class":190},[184,6930,229],{"class":1000},[184,6932,840],{"class":190},[184,6934,1219],{"class":975},[184,6936,979],{"class":1014},[184,6938,979],{"class":190},[184,6940,1226],{"class":982},[184,6942,887],{"class":190},[184,6944,1232],{"class":1231},[184,6946,1235],{"class":1000},[184,6948,840],{"class":190},[184,6950,421],{"class":1000},[184,6952,840],{"class":190},[184,6954,435],{"class":1000},[184,6956,1246],{"class":1102},[184,6958,212],{"class":211},[184,6960,444],{"class":215},[184,6962,205],{"class":211},[184,6964,887],{"class":1014},[184,6966,1085],{"class":190},[184,6968,6969],{"class":186,"line":589},[184,6970,1091],{"emptyLinePlaceholder":1090},[184,6972,6973,6975,6977,6979,6981,6983],{"class":186,"line":602},[184,6974,3510],{"class":1007},[184,6976,1099],{"class":1014},[184,6978,1103],{"class":1102},[184,6980,677],{"class":1000},[184,6982,887],{"class":1014},[184,6984,279],{"class":190},[184,6986,6987,6990,6992,6994,6997,6999,7001],{"class":186,"line":622},[184,6988,6989],{"class":975},"          setError",[184,6991,979],{"class":1014},[184,6993,205],{"class":211},[184,6995,6996],{"class":215},"No results found",[184,6998,205],{"class":211},[184,7000,887],{"class":1014},[184,7002,1085],{"class":190},[184,7004,7005,7008],{"class":186,"line":646},[184,7006,7007],{"class":1007},"          return",[184,7009,1085],{"class":190},[184,7011,7012],{"class":186,"line":651},[184,7013,4116],{"class":190},[184,7015,7016],{"class":186,"line":664},[184,7017,1091],{"emptyLinePlaceholder":1090},[184,7019,7020,7022,7024,7026,7028,7030,7032,7034,7036,7038,7040,7042,7044],{"class":186,"line":684},[184,7021,3483],{"class":968},[184,7023,633],{"class":190},[184,7025,1293],{"class":1000},[184,7027,334],{"class":190},[184,7029,1298],{"class":1000},[184,7031,1301],{"class":190},[184,7033,1004],{"class":190},[184,7035,1206],{"class":1000},[184,7037,840],{"class":190},[184,7039,272],{"class":1000},[184,7041,840],{"class":190},[184,7043,309],{"class":1000},[184,7045,1085],{"class":190},[184,7047,7048,7051,7053],{"class":186,"line":703},[184,7049,7050],{"class":975},"        setResult",[184,7052,979],{"class":1014},[184,7054,191],{"class":190},[184,7056,7057,7060,7062,7064,7066,7068,7070,7072],{"class":186,"line":722},[184,7058,7059],{"class":1054},"          descriptor",[184,7061,208],{"class":190},[184,7063,1206],{"class":1000},[184,7065,840],{"class":190},[184,7067,421],{"class":1000},[184,7069,840],{"class":190},[184,7071,476],{"class":1000},[184,7073,221],{"class":190},[184,7075,7076,7079],{"class":186,"line":741},[184,7077,7078],{"class":1000},"          lat",[184,7080,221],{"class":190},[184,7082,7083,7086],{"class":186,"line":760},[184,7084,7085],{"class":1000},"          lng",[184,7087,221],{"class":190},[184,7089,7090,7093,7095,7097,7099,7101,7103,7105],{"class":186,"line":777},[184,7091,7092],{"class":1054},"          province",[184,7094,208],{"class":190},[184,7096,1206],{"class":1000},[184,7098,840],{"class":190},[184,7100,421],{"class":1000},[184,7102,840],{"class":190},[184,7104,538],{"class":1000},[184,7106,221],{"class":190},[184,7108,7109,7112,7114,7116,7118,7120,7122,7124],{"class":186,"line":782},[184,7110,7111],{"class":1054},"          surveySystem",[184,7113,208],{"class":190},[184,7115,1206],{"class":1000},[184,7117,840],{"class":190},[184,7119,421],{"class":1000},[184,7121,840],{"class":190},[184,7123,517],{"class":1000},[184,7125,221],{"class":190},[184,7127,7128,7131,7133,7135,7137,7139,7141],{"class":186,"line":788},[184,7129,7130],{"class":1054},"          boundary",[184,7132,208],{"class":190},[184,7134,1555],{"class":1000},[184,7136,1671],{"class":190},[184,7138,272],{"class":1000},[184,7140,2503],{"class":1102},[184,7142,7143],{"class":1102}," null\n",[184,7145,7146,7148,7150],{"class":186,"line":794},[184,7147,4047],{"class":190},[184,7149,887],{"class":1014},[184,7151,1085],{"class":190},[184,7153,7154,7156,7158,7160,7162,7164],{"class":186,"line":3235},[184,7155,4222],{"class":190},[184,7157,4050],{"class":1007},[184,7159,1099],{"class":1014},[184,7161,4055],{"class":1000},[184,7163,887],{"class":1014},[184,7165,279],{"class":190},[184,7167,7168,7171,7173,7175,7177,7179,7181],{"class":186,"line":3250},[184,7169,7170],{"class":975},"        setError",[184,7172,979],{"class":1014},[184,7174,4055],{"class":1000},[184,7176,840],{"class":190},[184,7178,4104],{"class":1000},[184,7180,887],{"class":1014},[184,7182,1085],{"class":190},[184,7184,7185,7187,7190],{"class":186,"line":3256},[184,7186,4222],{"class":190},[184,7188,7189],{"class":1007}," finally",[184,7191,279],{"class":190},[184,7193,7194,7197,7199,7201,7203],{"class":186,"line":3287},[184,7195,7196],{"class":975},"        setIsLoading",[184,7198,979],{"class":1014},[184,7200,6554],{"class":3543},[184,7202,887],{"class":1014},[184,7204,1085],{"class":190},[184,7206,7207],{"class":186,"line":3295},[184,7208,556],{"class":190},[184,7210,7211],{"class":186,"line":3308},[184,7212,562],{"class":190},[184,7214,7215,7218,7220],{"class":186,"line":3322},[184,7216,7217],{"class":1014},"    [",[184,7219,6497],{"class":1000},[184,7221,395],{"class":1014},[184,7223,7224,7226],{"class":186,"line":3328},[184,7225,1082],{"class":1014},[184,7227,1085],{"class":190},[184,7229,7230],{"class":186,"line":3339},[184,7231,1091],{"emptyLinePlaceholder":1090},[184,7233,7234,7236,7239,7241,7243,7245,7247,7249],{"class":186,"line":3344},[184,7235,997],{"class":968},[184,7237,7238],{"class":1000}," clear",[184,7240,1004],{"class":190},[184,7242,6464],{"class":975},[184,7244,979],{"class":1014},[184,7246,1161],{"class":190},[184,7248,1232],{"class":1231},[184,7250,279],{"class":190},[184,7252,7253,7256,7258,7260,7262],{"class":186,"line":3354},[184,7254,7255],{"class":975},"    setResult",[184,7257,979],{"class":1014},[184,7259,6525],{"class":1102},[184,7261,887],{"class":1014},[184,7263,1085],{"class":190},[184,7265,7266,7269,7271,7273,7275],{"class":186,"line":3374},[184,7267,7268],{"class":975},"    setError",[184,7270,979],{"class":1014},[184,7272,6525],{"class":1102},[184,7274,887],{"class":1014},[184,7276,1085],{"class":190},[184,7278,7279,7282,7285],{"class":186,"line":3404},[184,7280,7281],{"class":190},"  },",[184,7283,7284],{"class":1014}," [])",[184,7286,1085],{"class":190},[184,7288,7289],{"class":186,"line":3432},[184,7290,1091],{"emptyLinePlaceholder":1090},[184,7292,7293,7295,7297,7300,7302,7305,7307,7310,7312,7314,7316,7318],{"class":186,"line":3460},[184,7294,1320],{"class":1007},[184,7296,1060],{"class":190},[184,7298,7299],{"class":1000}," result",[184,7301,334],{"class":190},[184,7303,7304],{"class":1000}," isLoading",[184,7306,334],{"class":190},[184,7308,7309],{"class":1000}," error",[184,7311,334],{"class":190},[184,7313,3473],{"class":1000},[184,7315,334],{"class":190},[184,7317,7238],{"class":1000},[184,7319,1349],{"class":190},[184,7321,7322],{"class":186,"line":3465},[184,7323,797],{"class":190},[15,7325,7326],{},[108,7327,7328],{},[19,7329,7330],{},"components\u002FLldSearch.jsx",[96,7332,7334],{"className":959,"code":7333,"language":961,"meta":104,"style":104},"import { useState } from \"react\";\nimport { useSearchApi } from \"..\u002Fhooks\u002FuseSearchApi\";\n\nexport function LldSearch({ apiKey, onResult }) {\n  const [query, setQuery] = useState(\"\");\n  const { result, isLoading, error, search, clear } = useSearchApi(apiKey);\n\n  function handleSubmit(e) {\n    e.preventDefault();\n    search(query);\n  }\n\n  \u002F\u002F Notify parent when result changes\n  if (result && onResult) {\n    onResult(result);\n  }\n\n  return (\n    \u003Cdiv className=\"search-wrapper\">\n      \u003Cform onSubmit={handleSubmit}>\n        \u003Cinput\n          type=\"text\"\n          value={query}\n          onChange={(e) => setQuery(e.target.value)}\n          placeholder=\"e.g. NW-25-24-1-W5\"\n        \u002F>\n        \u003Cbutton\n          type=\"submit\"\n          disabled={isLoading}\n        >\n          {isLoading ? \"Searching...\" : \"Search\"}\n        \u003C\u002Fbutton>\n      \u003C\u002Fform>\n\n      {error && \u003Cp className=\"error\">{error}\u003C\u002Fp>}\n\n      {result && (\n        \u003Cdiv className=\"result\">\n          \u003Ch3>{result.descriptor}\u003C\u002Fh3>\n          \u003Cp>Latitude: {result.lat}\u003C\u002Fp>\n          \u003Cp>Longitude: {result.lng}\u003C\u002Fp>\n          \u003Cp>Province: {result.province}\u003C\u002Fp>\n          \u003Cp>System: {result.surveySystem}\u003C\u002Fp>\n        \u003C\u002Fdiv>\n      )}\n    \u003C\u002Fdiv>\n  );\n}\n",[19,7335,7336,7356,7377,7381,7405,7434,7472,7476,7492,7506,7519,7523,7527,7532,7549,7562,7566,7570,7577,7597,7616,7623,7636,7647,7680,7693,7698,7705,7718,7729,7734,7758,7767,7776,7780,7817,7821,7831,7849,7871,7896,7921,7946,7971,7979,7986,7994,8000],{"__ignoreMap":104},[184,7337,7338,7340,7342,7344,7346,7348,7350,7352,7354],{"class":186,"line":187},[184,7339,5407],{"class":1007},[184,7341,1060],{"class":190},[184,7343,6459],{"class":1000},[184,7345,1074],{"class":190},[184,7347,6469],{"class":1007},[184,7349,212],{"class":211},[184,7351,6474],{"class":215},[184,7353,205],{"class":211},[184,7355,1085],{"class":190},[184,7357,7358,7360,7362,7364,7366,7368,7370,7373,7375],{"class":186,"line":194},[184,7359,5407],{"class":1007},[184,7361,1060],{"class":190},[184,7363,6492],{"class":1000},[184,7365,1074],{"class":190},[184,7367,6469],{"class":1007},[184,7369,212],{"class":211},[184,7371,7372],{"class":215},"..\u002Fhooks\u002FuseSearchApi",[184,7374,205],{"class":211},[184,7376,1085],{"class":190},[184,7378,7379],{"class":186,"line":224},[184,7380,1091],{"emptyLinePlaceholder":1090},[184,7382,7383,7385,7387,7390,7393,7395,7397,7400,7403],{"class":186,"line":239},[184,7384,6487],{"class":1007},[184,7386,972],{"class":968},[184,7388,7389],{"class":975}," LldSearch",[184,7391,7392],{"class":190},"({",[184,7394,988],{"class":982},[184,7396,334],{"class":190},[184,7398,7399],{"class":982}," onResult",[184,7401,7402],{"class":190}," })",[184,7404,279],{"class":190},[184,7406,7407,7409,7411,7414,7416,7419,7421,7423,7425,7427,7430,7432],{"class":186,"line":245},[184,7408,997],{"class":968},[184,7410,633],{"class":190},[184,7412,7413],{"class":1000},"query",[184,7415,334],{"class":190},[184,7417,7418],{"class":1000}," setQuery",[184,7420,1301],{"class":190},[184,7422,1004],{"class":190},[184,7424,6459],{"class":975},[184,7426,979],{"class":1014},[184,7428,7429],{"class":211},"\"\"",[184,7431,887],{"class":1014},[184,7433,1085],{"class":190},[184,7435,7436,7438,7440,7442,7444,7446,7448,7450,7452,7454,7456,7458,7460,7462,7464,7466,7468,7470],{"class":186,"line":267},[184,7437,997],{"class":968},[184,7439,1060],{"class":190},[184,7441,7299],{"class":1000},[184,7443,334],{"class":190},[184,7445,7304],{"class":1000},[184,7447,334],{"class":190},[184,7449,7309],{"class":1000},[184,7451,334],{"class":190},[184,7453,3473],{"class":1000},[184,7455,334],{"class":190},[184,7457,7238],{"class":1000},[184,7459,1074],{"class":190},[184,7461,1004],{"class":190},[184,7463,6492],{"class":975},[184,7465,979],{"class":1014},[184,7467,6497],{"class":1000},[184,7469,887],{"class":1014},[184,7471,1085],{"class":190},[184,7473,7474],{"class":186,"line":282},[184,7475,1091],{"emptyLinePlaceholder":1090},[184,7477,7478,7481,7484,7486,7488,7490],{"class":186,"line":304},[184,7479,7480],{"class":968},"  function",[184,7482,7483],{"class":975}," handleSubmit",[184,7485,979],{"class":190},[184,7487,4179],{"class":982},[184,7489,887],{"class":190},[184,7491,279],{"class":190},[184,7493,7494,7497,7499,7502,7504],{"class":186,"line":318},[184,7495,7496],{"class":1000},"    e",[184,7498,840],{"class":190},[184,7500,7501],{"class":975},"preventDefault",[184,7503,1161],{"class":1014},[184,7505,1085],{"class":190},[184,7507,7508,7511,7513,7515,7517],{"class":186,"line":324},[184,7509,7510],{"class":975},"    search",[184,7512,979],{"class":1014},[184,7514,7413],{"class":1000},[184,7516,887],{"class":1014},[184,7518,1085],{"class":190},[184,7520,7521],{"class":186,"line":343},[184,7522,1174],{"class":190},[184,7524,7525],{"class":186,"line":357},[184,7526,1091],{"emptyLinePlaceholder":1090},[184,7528,7529],{"class":186,"line":371},[184,7530,7531],{"class":4844},"  \u002F\u002F Notify parent when result changes\n",[184,7533,7534,7536,7538,7540,7543,7545,7547],{"class":186,"line":384},[184,7535,1096],{"class":1007},[184,7537,1099],{"class":1014},[184,7539,3034],{"class":1000},[184,7541,7542],{"class":1102}," &&",[184,7544,7399],{"class":1000},[184,7546,887],{"class":1014},[184,7548,279],{"class":190},[184,7550,7551,7554,7556,7558,7560],{"class":186,"line":398},[184,7552,7553],{"class":975},"    onResult",[184,7555,979],{"class":1014},[184,7557,3034],{"class":1000},[184,7559,887],{"class":1014},[184,7561,1085],{"class":190},[184,7563,7564],{"class":186,"line":404},[184,7565,1174],{"class":190},[184,7567,7568],{"class":186,"line":410},[184,7569,1091],{"emptyLinePlaceholder":1090},[184,7571,7572,7574],{"class":186,"line":416},[184,7573,1320],{"class":1007},[184,7575,7576],{"class":1014}," (\n",[184,7578,7579,7581,7583,7586,7588,7590,7593,7595],{"class":186,"line":430},[184,7580,2761],{"class":190},[184,7582,3334],{"class":2716},[184,7584,7585],{"class":2720}," className",[184,7587,2737],{"class":190},[184,7589,205],{"class":211},[184,7591,7592],{"class":215},"search-wrapper",[184,7594,205],{"class":211},[184,7596,2724],{"class":190},[184,7598,7599,7602,7605,7608,7610,7613],{"class":186,"line":451},[184,7600,7601],{"class":190},"      \u003C",[184,7603,7604],{"class":2716},"form",[184,7606,7607],{"class":2720}," onSubmit",[184,7609,5560],{"class":190},[184,7611,7612],{"class":1000},"handleSubmit",[184,7614,7615],{"class":190},"}>\n",[184,7617,7618,7621],{"class":186,"line":471},[184,7619,7620],{"class":190},"        \u003C",[184,7622,3205],{"class":2716},[184,7624,7625,7628,7630,7632,7634],{"class":186,"line":491},[184,7626,7627],{"class":2720},"          type",[184,7629,2737],{"class":190},[184,7631,205],{"class":211},[184,7633,101],{"class":215},[184,7635,550],{"class":211},[184,7637,7638,7641,7643,7645],{"class":186,"line":512},[184,7639,7640],{"class":2720},"          value",[184,7642,5560],{"class":190},[184,7644,7413],{"class":1000},[184,7646,797],{"class":190},[184,7648,7649,7652,7655,7657,7659,7661,7663,7665,7667,7669,7672,7674,7676,7678],{"class":186,"line":533},[184,7650,7651],{"class":2720},"          onChange",[184,7653,7654],{"class":190},"={(",[184,7656,4179],{"class":982},[184,7658,887],{"class":190},[184,7660,1232],{"class":1231},[184,7662,7418],{"class":975},[184,7664,979],{"class":1033},[184,7666,4179],{"class":1000},[184,7668,840],{"class":190},[184,7670,7671],{"class":1000},"target",[184,7673,840],{"class":190},[184,7675,3495],{"class":1000},[184,7677,887],{"class":1033},[184,7679,797],{"class":190},[184,7681,7682,7685,7687,7689,7691],{"class":186,"line":553},[184,7683,7684],{"class":2720},"          placeholder",[184,7686,2737],{"class":190},[184,7688,205],{"class":211},[184,7690,3245],{"class":215},[184,7692,550],{"class":211},[184,7694,7695],{"class":186,"line":559},[184,7696,7697],{"class":190},"        \u002F>\n",[184,7699,7700,7702],{"class":186,"line":565},[184,7701,7620],{"class":190},[184,7703,7704],{"class":2716},"button\n",[184,7706,7707,7709,7711,7713,7716],{"class":186,"line":570},[184,7708,7627],{"class":2720},[184,7710,2737],{"class":190},[184,7712,205],{"class":211},[184,7714,7715],{"class":215},"submit",[184,7717,550],{"class":211},[184,7719,7720,7723,7725,7727],{"class":186,"line":589},[184,7721,7722],{"class":2720},"          disabled",[184,7724,5560],{"class":190},[184,7726,6538],{"class":1000},[184,7728,797],{"class":190},[184,7730,7731],{"class":186,"line":602},[184,7732,7733],{"class":190},"        >\n",[184,7735,7736,7738,7740,7742,7744,7746,7748,7750,7752,7754,7756],{"class":186,"line":622},[184,7737,6735],{"class":190},[184,7739,6538],{"class":1000},[184,7741,6809],{"class":1102},[184,7743,212],{"class":211},[184,7745,3583],{"class":215},[184,7747,205],{"class":211},[184,7749,6818],{"class":1102},[184,7751,212],{"class":211},[184,7753,3278],{"class":215},[184,7755,205],{"class":211},[184,7757,797],{"class":190},[184,7759,7760,7763,7765],{"class":186,"line":646},[184,7761,7762],{"class":190},"        \u003C\u002F",[184,7764,3261],{"class":2716},[184,7766,2724],{"class":190},[184,7768,7769,7772,7774],{"class":186,"line":651},[184,7770,7771],{"class":190},"      \u003C\u002F",[184,7773,7604],{"class":2716},[184,7775,2724],{"class":190},[184,7777,7778],{"class":186,"line":664},[184,7779,1091],{"emptyLinePlaceholder":1090},[184,7781,7782,7785,7787,7789,7792,7794,7796,7798,7800,7802,7804,7807,7809,7812,7814],{"class":186,"line":684},[184,7783,7784],{"class":190},"      {",[184,7786,3135],{"class":1000},[184,7788,7542],{"class":1102},[184,7790,7791],{"class":190}," \u003C",[184,7793,15],{"class":2716},[184,7795,7585],{"class":2720},[184,7797,2737],{"class":190},[184,7799,205],{"class":211},[184,7801,3135],{"class":215},[184,7803,205],{"class":211},[184,7805,7806],{"class":190},">{",[184,7808,3135],{"class":1000},[184,7810,7811],{"class":190},"}\u003C\u002F",[184,7813,15],{"class":2716},[184,7815,7816],{"class":190},">}\n",[184,7818,7819],{"class":186,"line":703},[184,7820,1091],{"emptyLinePlaceholder":1090},[184,7822,7823,7825,7827,7829],{"class":186,"line":722},[184,7824,7784],{"class":190},[184,7826,3034],{"class":1000},[184,7828,7542],{"class":1102},[184,7830,7576],{"class":1033},[184,7832,7833,7835,7837,7839,7841,7843,7845,7847],{"class":186,"line":741},[184,7834,7620],{"class":190},[184,7836,3334],{"class":2716},[184,7838,7585],{"class":2720},[184,7840,2737],{"class":190},[184,7842,205],{"class":211},[184,7844,3034],{"class":215},[184,7846,205],{"class":211},[184,7848,2724],{"class":190},[184,7850,7851,7854,7856,7858,7860,7862,7865,7867,7869],{"class":186,"line":760},[184,7852,7853],{"class":190},"          \u003C",[184,7855,91],{"class":2716},[184,7857,7806],{"class":190},[184,7859,3034],{"class":1000},[184,7861,840],{"class":190},[184,7863,7864],{"class":1000},"descriptor",[184,7866,7811],{"class":190},[184,7868,91],{"class":2716},[184,7870,2724],{"class":190},[184,7872,7873,7875,7877,7879,7882,7884,7886,7888,7890,7892,7894],{"class":186,"line":777},[184,7874,7853],{"class":190},[184,7876,15],{"class":2716},[184,7878,2789],{"class":190},[184,7880,7881],{"class":2792},"Latitude: ",[184,7883,1821],{"class":190},[184,7885,3034],{"class":1000},[184,7887,840],{"class":190},[184,7889,1842],{"class":1000},[184,7891,7811],{"class":190},[184,7893,15],{"class":2716},[184,7895,2724],{"class":190},[184,7897,7898,7900,7902,7904,7907,7909,7911,7913,7915,7917,7919],{"class":186,"line":782},[184,7899,7853],{"class":190},[184,7901,15],{"class":2716},[184,7903,2789],{"class":190},[184,7905,7906],{"class":2792},"Longitude: ",[184,7908,1821],{"class":190},[184,7910,3034],{"class":1000},[184,7912,840],{"class":190},[184,7914,1293],{"class":1000},[184,7916,7811],{"class":190},[184,7918,15],{"class":2716},[184,7920,2724],{"class":190},[184,7922,7923,7925,7927,7929,7932,7934,7936,7938,7940,7942,7944],{"class":186,"line":788},[184,7924,7853],{"class":190},[184,7926,15],{"class":2716},[184,7928,2789],{"class":190},[184,7930,7931],{"class":2792},"Province: ",[184,7933,1821],{"class":190},[184,7935,3034],{"class":1000},[184,7937,840],{"class":190},[184,7939,538],{"class":1000},[184,7941,7811],{"class":190},[184,7943,15],{"class":2716},[184,7945,2724],{"class":190},[184,7947,7948,7950,7952,7954,7957,7959,7961,7963,7965,7967,7969],{"class":186,"line":794},[184,7949,7853],{"class":190},[184,7951,15],{"class":2716},[184,7953,2789],{"class":190},[184,7955,7956],{"class":2792},"System: ",[184,7958,1821],{"class":190},[184,7960,3034],{"class":1000},[184,7962,840],{"class":190},[184,7964,1870],{"class":1000},[184,7966,7811],{"class":190},[184,7968,15],{"class":2716},[184,7970,2724],{"class":190},[184,7972,7973,7975,7977],{"class":186,"line":3235},[184,7974,7762],{"class":190},[184,7976,3334],{"class":2716},[184,7978,2724],{"class":190},[184,7980,7981,7984],{"class":186,"line":3250},[184,7982,7983],{"class":1033},"      )",[184,7985,797],{"class":190},[184,7987,7988,7990,7992],{"class":186,"line":3256},[184,7989,3160],{"class":190},[184,7991,3334],{"class":2716},[184,7993,2724],{"class":190},[184,7995,7996,7998],{"class":186,"line":3287},[184,7997,1082],{"class":1014},[184,7999,1085],{"class":190},[184,8001,8002],{"class":186,"line":3295},[184,8003,797],{"class":190},[15,8005,8006],{},"Usage in a parent component:",[96,8008,8010],{"className":959,"code":8009,"language":961,"meta":104,"style":104},"\u003CLldSearch\n  apiKey=\"YOUR_API_KEY\"\n  onResult={({ lng, lat, boundary }) => {\n    map.flyTo({ center: [lng, lat], zoom: 12 });\n    if (boundary) addBoundaryLayer(boundary);\n  }}\n\u002F>\n",[19,8011,8012,8019,8032,8057,8102,8123,8128],{"__ignoreMap":104},[184,8013,8014,8016],{"class":186,"line":187},[184,8015,2729],{"class":190},[184,8017,8018],{"class":251},"LldSearch\n",[184,8020,8021,8024,8026,8028,8030],{"class":186,"line":194},[184,8022,8023],{"class":2720},"  apiKey",[184,8025,2737],{"class":190},[184,8027,205],{"class":211},[184,8029,3367],{"class":215},[184,8031,550],{"class":211},[184,8033,8034,8037,8040,8042,8044,8046,8048,8051,8053,8055],{"class":186,"line":224},[184,8035,8036],{"class":2720},"  onResult",[184,8038,8039],{"class":190},"={({",[184,8041,1342],{"class":982},[184,8043,334],{"class":190},[184,8045,1298],{"class":982},[184,8047,334],{"class":190},[184,8049,8050],{"class":982}," boundary",[184,8052,7402],{"class":190},[184,8054,1232],{"class":1231},[184,8056,279],{"class":190},[184,8058,8059,8062,8064,8067,8069,8071,8074,8076,8078,8080,8082,8084,8086,8088,8091,8093,8096,8098,8100],{"class":186,"line":239},[184,8060,8061],{"class":1000},"    map",[184,8063,840],{"class":190},[184,8065,8066],{"class":975},"flyTo",[184,8068,979],{"class":1014},[184,8070,1821],{"class":190},[184,8072,8073],{"class":1054}," center",[184,8075,208],{"class":190},[184,8077,633],{"class":1014},[184,8079,1293],{"class":1000},[184,8081,334],{"class":190},[184,8083,1298],{"class":1000},[184,8085,1301],{"class":1014},[184,8087,334],{"class":190},[184,8089,8090],{"class":1054}," zoom",[184,8092,208],{"class":190},[184,8094,8095],{"class":330}," 12",[184,8097,1074],{"class":190},[184,8099,887],{"class":1014},[184,8101,1085],{"class":190},[184,8103,8104,8106,8108,8110,8112,8115,8117,8119,8121],{"class":186,"line":245},[184,8105,5237],{"class":1007},[184,8107,1099],{"class":1014},[184,8109,1742],{"class":1000},[184,8111,887],{"class":1014},[184,8113,8114],{"class":975}," addBoundaryLayer",[184,8116,979],{"class":1014},[184,8118,1742],{"class":1000},[184,8120,887],{"class":1014},[184,8122,1085],{"class":190},[184,8124,8125],{"class":186,"line":267},[184,8126,8127],{"class":190},"  }}\n",[184,8129,8130],{"class":186,"line":282},[184,8131,8132],{"class":190},"\u002F>\n",[10,8134,8136],{"id":8135},"supported-land-description-formats","Supported Land Description Formats",[15,8138,8139],{},"The Search API accepts all major Canadian survey systems. The format follows each system's standard notation:",[15,8141,8142,8145],{},[108,8143,8144],{},"DLS (Dominion Land Survey)"," - Alberta, Saskatchewan, Manitoba, BC Peace River",[123,8147,8148,8161],{},[126,8149,8150],{},[129,8151,8152,8155,8158],{},[132,8153,8154],{},"Level",[132,8156,8157],{},"Format",[132,8159,8160],{},"Example",[142,8162,8163,8175,8187],{},[129,8164,8165,8167,8170],{},[147,8166,928],{},[147,8168,8169],{},"Section-Twp-Rge-Mer",[147,8171,8172],{},[19,8173,8174],{},"25-24-1-W5",[129,8176,8177,8179,8182],{},[147,8178,505],{},[147,8180,8181],{},"Quarter-Section-Twp-Rge-Mer",[147,8183,8184],{},[19,8185,8186],{},"SW-25-24-1-W5",[129,8188,8189,8191,8194],{},[147,8190,933],{},[147,8192,8193],{},"LSD-Section-Twp-Rge-Mer",[147,8195,8196],{},[19,8197,8198],{},"7-25-24-1-W5",[15,8200,8201,8204],{},[108,8202,8203],{},"NTS (National Topographic System)"," - British Columbia",[123,8206,8207,8215],{},[126,8208,8209],{},[129,8210,8211,8213],{},[132,8212,8157],{},[132,8214,8160],{},[142,8216,8217],{},[129,8218,8219,8222],{},[147,8220,8221],{},"QuarterUnit-Unit-Block\u002FMapSeries-MapArea-MapSheet",[147,8223,8224],{},[19,8225,8226],{},"A-2-F\u002F93-P-8",[15,8228,8229,8232],{},[108,8230,8231],{},"Geographic Townships"," - Ontario",[123,8234,8235,8243],{},[126,8236,8237],{},[129,8238,8239,8241],{},[132,8240,8157],{},[132,8242,8160],{},[142,8244,8245],{},[129,8246,8247,8250],{},[147,8248,8249],{},"Lot-Concession-Township",[147,8251,8252],{},[19,8253,8254],{},"Lot 2 Con 4 Osprey",[15,8256,8257,8260],{},[108,8258,8259],{},"River\u002FParish Lots"," - Manitoba (along rivers)",[15,8262,8263,8266],{},[108,8264,8265],{},"FPS (Federal Permit System)"," - Northwest Territories, Nunavut, offshore areas",[15,8268,8269],{},"The API normalizes whitespace, dashes, and common abbreviations. You don't need to pre-format user input.",[10,8271,8273],{"id":8272},"next-steps","Next Steps",[28,8275,8276,8286,8297,8308],{},[31,8277,8278,8281,8282,814,8284,840],{},[108,8279,8280],{},"Display results on a map",": pass the boundary polygon and centroid to your map - see the ",[35,8283,1751],{"href":1750},[35,8285,1756],{"href":1755},[31,8287,8288,8291,8292,8296],{},[108,8289,8290],{},"Add type-ahead search",": use the ",[35,8293,8295],{"href":8294},"\u002Fguides\u002Fautocomplete-api-guide","Autocomplete API guide"," for search-as-you-type.",[31,8298,8299,8302,8303,8307],{},[108,8300,8301],{},"Bulk conversion",": for more than a handful of lookups, the ",[35,8304,8306],{"href":8305},"\u002Fguides\u002Fbatch-api-guide","Batch API guide"," handles datasets of any size.",[31,8309,8310,8313,8314,840],{},[108,8311,8312],{},"API key management",": covered in the ",[35,8315,8317],{"href":8316},"\u002Fguides\u002Fapi-key-management","API key management guide",[8319,8320],"hr",{},[15,8322,8323,8324,8327,8328,8327,8331,8327,8334],{},"Related guides: ",[35,8325,8326],{"href":60},"API Integration"," · ",[35,8329,8330],{"href":8294},"Autocomplete API Guide",[35,8332,8333],{"href":8305},"Batch API Guide",[35,8335,8336],{"href":1750},"Mapbox Integration",[2807,8338,8339],{},"html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s4Jsk, html code.shiki .s4Jsk{--shiki-light:#39ADB5;--shiki-default:#99841877;--shiki-dark:#B8A96577}html pre.shiki code .sLorS, html code.shiki .sLorS{--shiki-light:#9C3EDA;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .skNjk, html code.shiki .skNjk{--shiki-light:#F76D47;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}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 .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .sLdnO, html code.shiki .sLdnO{--shiki-light:#E53935;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .su_V2, html code.shiki .su_V2{--shiki-light:#90A4AE;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .suXOh, html code.shiki .suXOh{--shiki-light:#E53935;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sQtxO, html code.shiki .sQtxO{--shiki-light:#E53935;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sIOqK, html code.shiki .sIOqK{--shiki-light:#9C3EDA;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sJFLg, html code.shiki .sJFLg{--shiki-light:#E53935;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s5q8q, html code.shiki .s5q8q{--shiki-light:#9C3EDA;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .skzw8, html code.shiki .skzw8{--shiki-light:#E2931D;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s5HLA, html code.shiki .s5HLA{--shiki-light:#8796B0;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sQBxk, html code.shiki .sQBxk{--shiki-light:#F76D47;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sKL33, html code.shiki .sKL33{--shiki-light:#E2931D;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .sq3J1, html code.shiki .sq3J1{--shiki-light:#FF5370;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sCyAa, html code.shiki .sCyAa{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#393A34;--shiki-default-font-style:inherit;--shiki-dark:#DBD7CAEE;--shiki-dark-font-style:inherit}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .s3h35, html code.shiki .s3h35{--shiki-light:#F76D47;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .s6DHA, html code.shiki .s6DHA{--shiki-light:#6182B8;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sJdAF, html code.shiki .sJdAF{--shiki-light:#6182B8;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s131V, html code.shiki .s131V{--shiki-light:#90A4AE;--shiki-default:#998418;--shiki-dark:#B8A965}",{"title":104,"searchDepth":194,"depth":194,"links":8341},[8342,8343,8344,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357],{"id":12,"depth":194,"text":13},{"id":25,"depth":194,"text":26},{"id":77,"depth":194,"text":78,"children":8345},[8346,8347],{"id":93,"depth":224,"text":94},{"id":843,"depth":224,"text":844},{"id":949,"depth":194,"text":950},{"id":1356,"depth":194,"text":1357},{"id":1760,"depth":194,"text":1761},{"id":2280,"depth":194,"text":2281},{"id":2697,"depth":194,"text":2698},{"id":4256,"depth":194,"text":4257},{"id":5388,"depth":194,"text":5389},{"id":6434,"depth":194,"text":6435},{"id":8135,"depth":194,"text":8136},{"id":8272,"depth":194,"text":8273},"api","Convert Canadian legal land descriptions to GPS coordinates and reverse-geocode coordinates back to legal descriptions using the Township Canada Search API. Includes error handling and examples in vanilla JS, Node.js, Python, and React.",false,"md","i-lucide-map-pin",{},"\u002Fguides\u002Fsearch-api-guide",{"title":5,"description":8359},"guides\u002Fsearch-api-guide","PbRrQQEPL3RwS6qAi1Un0p6Q3CdiRvgQALVck-rMcAw",[8369,8851,9708],{"id":8370,"title":8371,"body":8372,"category":8358,"description":8845,"draft":8360,"extension":8361,"icon":8846,"meta":8847,"navigation":1090,"order":187,"path":60,"seo":8848,"stem":8849,"__hash__":8850},"guides\u002Fguides\u002Fapi-integration.md","Legal Land Description API Integration Guide",{"type":7,"value":8373,"toc":8810},[8374,8377,8384,8388,8416,8423,8427,8430,8434,8437,8443,8447,8450,8455,8459,8462,8467,8471,8474,8479,8483,8486,8491,8553,8559,8609,8612,8616,8620,8623,8627,8630,8634,8637,8641,8644,8648,8651,8655,8696,8700,8706,8726,8730,8733,8737,8740,8744,8747,8751,8754,8758,8768,8772,8802],[15,8375,8376],{},"Integrate Township Canada's legal land description services directly into your applications and workflows. Our REST APIs enable LLD-to-coordinate conversion, autocomplete search, batch processing, and interactive grid maps-all with simple JSON responses.",[15,8378,8379],{},[8380,8381],"img",{"alt":8382,"src":8383},"Developer Portal","\u002Fimages\u002Fguides\u002Fapi-portal.webp",[10,8385,8387],{"id":8386},"quick-start","Quick start",[8389,8390,8391,8395,8402,8406,8409,8413],"steps",{},[91,8392,8394],{"id":8393},"get-an-api-key","Get an API key",[15,8396,8397,8398,8401],{},"Log into your Township Canada account and go to ",[108,8399,8400],{},"API"," in the main navigation. Subscribe to an API endpoint and create your first API key.",[91,8403,8405],{"id":8404},"make-your-first-request","Make your first request",[15,8407,8408],{},"Add your API key to the request header and make a test request.",[91,8410,8412],{"id":8411},"parse-the-response","Parse the response",[15,8414,8415],{},"All APIs return JSON with coordinates, legal descriptions, and metadata.",[15,8417,8418,8419,840],{},"For full documentation and code examples, visit the ",[35,8420,8422],{"href":8421},"\u002Fapi","API documentation",[10,8424,8426],{"id":8425},"api-endpoints","API endpoints",[15,8428,8429],{},"Township Canada offers four distinct API endpoints:",[91,8431,8433],{"id":8432},"search-api-20month","Search API ($20\u002Fmonth)",[15,8435,8436],{},"Convert legal land descriptions to geographic coordinates and vice versa. Supports DLS, NTS, Geographic Townships, and FPS formats.",[15,8438,8439,8442],{},[108,8440,8441],{},"Use cases",": Property lookup, coordinate conversion, reverse geocoding",[91,8444,8446],{"id":8445},"autocomplete-api-20month","Autocomplete API ($20\u002Fmonth)",[15,8448,8449],{},"Search legal land descriptions with partial text. Returns up to 10 matching results with coordinates-ideal for search boxes and type-ahead interfaces.",[15,8451,8452,8454],{},[108,8453,8441],{},": Search boxes, type-ahead, field validation",[91,8456,8458],{"id":8457},"batch-api-40month","Batch API ($40\u002Fmonth)",[15,8460,8461],{},"Process up to 100 records per request. Convert lists of legal land descriptions to coordinates or coordinates to legal land descriptions.",[15,8463,8464,8466],{},[108,8465,8441],{},": Bulk data processing, migration, spatial analysis",[91,8468,8470],{"id":8469},"maps-api-20month","Maps API ($20\u002Fmonth)",[15,8472,8473],{},"Display legal survey grids on maps in your web or mobile applications. Vector tiles format compatible with Mapbox GL, Leaflet, and other mapping libraries.",[15,8475,8476,8478],{},[108,8477,8441],{},": Custom mapping applications, data visualization",[10,8480,8482],{"id":8481},"api-pricing-tiers","API pricing tiers",[15,8484,8485],{},"Each API offers three pricing tiers:",[15,8487,8488],{},[108,8489,8490],{},"Search, Autocomplete & Batch APIs",[123,8492,8493,8509],{},[126,8494,8495],{},[129,8496,8497,8500,8503,8506],{},[132,8498,8499],{},"Tier",[132,8501,8502],{},"Monthly Requests",[132,8504,8505],{},"Rate Limit",[132,8507,8508],{},"Price",[142,8510,8511,8525,8539],{},[129,8512,8513,8516,8519,8522],{},[147,8514,8515],{},"Build",[147,8517,8518],{},"1,000",[147,8520,8521],{},"1\u002Fsec",[147,8523,8524],{},"$20-40\u002Fmo",[129,8526,8527,8530,8533,8536],{},[147,8528,8529],{},"Scale",[147,8531,8532],{},"10,000",[147,8534,8535],{},"5\u002Fsec",[147,8537,8538],{},"$100-200\u002Fmo",[129,8540,8541,8544,8547,8550],{},[147,8542,8543],{},"Enterprise",[147,8545,8546],{},"100,000",[147,8548,8549],{},"25\u002Fsec",[147,8551,8552],{},"$500-1,000\u002Fmo",[15,8554,8555,8558],{},[108,8556,8557],{},"Maps API"," (higher request quotas for tile rendering)",[123,8560,8561,8573],{},[126,8562,8563],{},[129,8564,8565,8567,8569,8571],{},[132,8566,8499],{},[132,8568,8502],{},[132,8570,8505],{},[132,8572,8508],{},[142,8574,8575,8586,8597],{},[129,8576,8577,8579,8581,8583],{},[147,8578,8515],{},[147,8580,8532],{},[147,8582,8521],{},[147,8584,8585],{},"$20\u002Fmo",[129,8587,8588,8590,8592,8594],{},[147,8589,8529],{},[147,8591,8546],{},[147,8593,8535],{},[147,8595,8596],{},"$100\u002Fmo",[129,8598,8599,8601,8604,8606],{},[147,8600,8543],{},[147,8602,8603],{},"1,000,000",[147,8605,8549],{},[147,8607,8608],{},"$500\u002Fmo",[15,8610,8611],{},"Annual billing saves two months compared to monthly billing.",[10,8613,8615],{"id":8614},"common-integration-patterns","Common integration patterns",[91,8617,8619],{"id":8618},"real-estate-applications","Real Estate Applications",[15,8621,8622],{},"Add legal land description lookup to property search interfaces. Use the Autocomplete API for type-ahead search and the Search API for coordinate conversion.",[91,8624,8626],{"id":8625},"oil-gas-software","Oil & Gas Software",[15,8628,8629],{},"Integrate batch conversion for well location management. Use the Maps API to display DLS\u002FNTS grids in custom mapping applications.",[91,8631,8633],{"id":8632},"mobile-field-apps","Mobile Field Apps",[15,8635,8636],{},"Add LLD search and coordinate conversion for field workers. The APIs work with any mobile development framework (React Native, Flutter, native iOS\u002FAndroid).",[91,8638,8640],{"id":8639},"gis-platforms","GIS Platforms",[15,8642,8643],{},"Enhance ArcGIS, QGIS, or custom GIS tools with legal land description support. Batch API enables bulk coordinate conversion for spatial analysis.",[91,8645,8647],{"id":8646},"agriculture-technology","Agriculture Technology",[15,8649,8650],{},"Add quarter section and LSD lookup to farm management software. Combine with soil and boundary data for precision agriculture applications.",[10,8652,8654],{"id":8653},"getting-an-api-key","Getting an API key",[8389,8656,8657,8661,8667,8671,8674,8678,8685,8689],{},[91,8658,8660],{"id":8659},"open-the-developer-portal","Open the Developer Portal",[15,8662,8663,8664,8666],{},"Go to ",[108,8665,8400],{}," in the main navigation to access the Developer Portal.",[91,8668,8670],{"id":8669},"subscribe-to-an-api","Subscribe to an API",[15,8672,8673],{},"Click on the API you want to use (Search, Autocomplete, Batch, or Maps). Select a tier and complete payment.",[91,8675,8677],{"id":8676},"create-an-api-key","Create an API key",[15,8679,8680,8681,8684],{},"Click ",[108,8682,8683],{},"+ Add Key"," and give your key a descriptive name. Copy the key immediately-it won't be shown again.",[91,8686,8688],{"id":8687},"use-your-key","Use your key",[15,8690,8691,8692,8695],{},"Include the API key in the ",[19,8693,8694],{},"x-api-key"," header for all requests.",[10,8697,8699],{"id":8698},"managing-api-subscriptions","Managing API subscriptions",[15,8701,8702,8703,8705],{},"Manage your API subscriptions from the ",[108,8704,8400],{}," page in the main navigation. The Developer Portal provides:",[28,8707,8708,8714,8720],{},[31,8709,8710,8713],{},[108,8711,8712],{},"Overview",": View all your API keys and subscriptions",[31,8715,8716,8719],{},[108,8717,8718],{},"Logs",": Monitor API requests with timestamps and response codes",[31,8721,8722,8725],{},[108,8723,8724],{},"Alerts",": Configure usage threshold notifications",[91,8727,8729],{"id":8728},"usage-monitoring","Usage monitoring",[15,8731,8732],{},"Track your API usage in real-time from the Overview tab. Usage resets at the start of each billing period.",[91,8734,8736],{"id":8735},"rate-limiting","Rate limiting",[15,8738,8739],{},"Exceeding your rate limit results in HTTP 429 Too Many Requests responses. Implement exponential backoff in your integration to handle rate limits gracefully.",[91,8741,8743],{"id":8742},"quota-management","Quota management",[15,8745,8746],{},"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.",[10,8748,8750],{"id":8749},"code-examples","Code examples",[15,8752,8753],{},"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.",[10,8755,8757],{"id":8756},"checking-system-health","Checking system health",[15,8759,8760,8761,8767],{},"For the current status of Township Canada's APIs, including uptime, response time, and incident history, visit ",[35,8762,8766],{"href":8763,"rel":8764},"https:\u002F\u002Fstatus.townshipcanada.com",[8765],"nofollow","status.townshipcanada.com",". This site provides real-time updates on API system health.",[10,8769,8771],{"id":8770},"related-guides","Related guides",[28,8773,8774,8781,8788,8795],{},[31,8775,8776,8780],{},[35,8777,8779],{"href":8778},"\u002Fguides\u002Faccount-management","Account Management"," - Manage billing for API subscriptions",[31,8782,8783,8787],{},[35,8784,8786],{"href":8785},"\u002Fguides\u002Fbatch-conversion","Batch Conversion"," - Web interface for batch processing",[31,8789,8790,8794],{},[35,8791,8793],{"href":8792},"\u002Fguides\u002Fmap","Interactive Maps"," - Map features available through the Maps API",[31,8796,8797,8801],{},[35,8798,8799],{"href":65},[19,8800,68],{}," - Official TypeScript SDK for Node.js developers",[15,8803,8804,8805,8809],{},"Need help with your integration? ",[35,8806,8808],{"href":8807},"\u002Fcontact-us","Contact us"," for technical support and custom API solutions.",{"title":104,"searchDepth":194,"depth":194,"links":8811},[8812,8817,8823,8824,8831,8837,8842,8843,8844],{"id":8386,"depth":194,"text":8387,"children":8813},[8814,8815,8816],{"id":8393,"depth":224,"text":8394},{"id":8404,"depth":224,"text":8405},{"id":8411,"depth":224,"text":8412},{"id":8425,"depth":194,"text":8426,"children":8818},[8819,8820,8821,8822],{"id":8432,"depth":224,"text":8433},{"id":8445,"depth":224,"text":8446},{"id":8457,"depth":224,"text":8458},{"id":8469,"depth":224,"text":8470},{"id":8481,"depth":194,"text":8482},{"id":8614,"depth":194,"text":8615,"children":8825},[8826,8827,8828,8829,8830],{"id":8618,"depth":224,"text":8619},{"id":8625,"depth":224,"text":8626},{"id":8632,"depth":224,"text":8633},{"id":8639,"depth":224,"text":8640},{"id":8646,"depth":224,"text":8647},{"id":8653,"depth":194,"text":8654,"children":8832},[8833,8834,8835,8836],{"id":8659,"depth":224,"text":8660},{"id":8669,"depth":224,"text":8670},{"id":8676,"depth":224,"text":8677},{"id":8687,"depth":224,"text":8688},{"id":8698,"depth":194,"text":8699,"children":8838},[8839,8840,8841],{"id":8728,"depth":224,"text":8729},{"id":8735,"depth":224,"text":8736},{"id":8742,"depth":224,"text":8743},{"id":8749,"depth":194,"text":8750},{"id":8756,"depth":194,"text":8757},{"id":8770,"depth":194,"text":8771},"Integrate legal land description APIs into your applications. Convert LLDs to coordinates, add autocomplete search, process batch records, and display DLS\u002FNTS grid maps. REST API with JSON responses.","i-lucide-code",{},{"title":8371,"description":8845},"guides\u002Fapi-integration","0skTidP_JHbRyEgb2lLso64Jt5ActydUoBJbxBER46M",{"id":8852,"title":8853,"body":8854,"category":8358,"description":9702,"draft":8360,"extension":8361,"icon":9703,"meta":9704,"navigation":1090,"order":343,"path":8316,"seo":9705,"stem":9706,"__hash__":9707},"guides\u002Fguides\u002Fapi-key-management.md","Managing API Keys for Development, Staging, and Production",{"type":7,"value":8855,"toc":9686},[8856,8859,8862,8866,8872,8895,8898,8904,8908,8911,8917,8920,8984,8987,8991,8994,8998,9005,9019,9022,9136,9139,9177,9180,9185,9197,9203,9354,9358,9367,9392,9399,9418,9422,9425,9451,9454,9458,9461,9465,9468,9492,9495,9590,9593,9597,9600,9603,9606,9610,9613,9628,9634,9640,9646,9652,9654,9683],[15,8857,8858],{},"Most API integrations span multiple environments-local development, a staging server, and production. Using a single API key across all three creates problems: one accidental revocation takes everything down, you can't track which environment is generating traffic, and debugging becomes harder when all requests look identical in the logs.",[15,8860,8861],{},"Township Canada lets you create unlimited API keys on paid plans. The recommended approach is one key per environment, per project.",[10,8863,8865],{"id":8864},"creating-api-keys","Creating API keys",[15,8867,8868,8869,8871],{},"API keys are managed from the ",[35,8870,8382],{"href":37},". To create a new key:",[8873,8874,8875,8880,8884,8887,8892],"ol",{},[31,8876,8663,8877,8879],{},[108,8878,8400],{}," in the main navigation",[31,8881,8680,8882],{},[108,8883,8683],{},[31,8885,8886],{},"Enter a descriptive name (see naming conventions below)",[31,8888,8680,8889],{},[108,8890,8891],{},"Create",[31,8893,8894],{},"Copy the key immediately - it will not be shown again",[15,8896,8897],{},"Each key displays its name, creation date, and last-used timestamp. Keys can be revoked individually without affecting any other key on your account.",[8899,8900,8901],"warning",{},[15,8902,8903],{},"Copy your key before closing the dialog. Township Canada does not store the full key value after creation. If you lose it, revoke the key and create a new one.",[10,8905,8907],{"id":8906},"naming-conventions","Naming conventions",[15,8909,8910],{},"A consistent naming pattern makes it easy to identify keys at a glance, especially once you have several. Use the format:",[96,8912,8915],{"className":8913,"code":8914,"language":101},[99],"{Environment} - {Project} {Version}\n",[19,8916,8914],{"__ignoreMap":104},[15,8918,8919],{},"Examples:",[123,8921,8922,8932],{},[126,8923,8924],{},[129,8925,8926,8929],{},[132,8927,8928],{},"Key name",[132,8930,8931],{},"What it's for",[142,8933,8934,8944,8954,8964,8974],{},[129,8935,8936,8941],{},[147,8937,8938],{},[19,8939,8940],{},"Production - Well Mapper v2",[147,8942,8943],{},"Live production traffic for version 2 of your app",[129,8945,8946,8951],{},[147,8947,8948],{},[19,8949,8950],{},"Staging - Well Mapper v2",[147,8952,8953],{},"Pre-release testing against real data",[129,8955,8956,8961],{},[147,8957,8958],{},[19,8959,8960],{},"Dev - Local Testing",[147,8962,8963],{},"Your local development environment",[129,8965,8966,8971],{},[147,8967,8968],{},[19,8969,8970],{},"CI - Well Mapper",[147,8972,8973],{},"Automated tests in your CI pipeline",[129,8975,8976,8981],{},[147,8977,8978],{},[19,8979,8980],{},"Dev - Jane Smith",[147,8982,8983],{},"A team member's personal development key",[15,8985,8986],{},"Avoid generic names like \"API Key 1\" or \"Test Key\". When you're reviewing keys six months from now, a descriptive name tells you exactly what to keep and what to revoke.",[10,8988,8990],{"id":8989},"environment-variable-setup","Environment variable setup",[15,8992,8993],{},"Never hardcode an API key in your source code. Use environment variables so keys stay out of version control.",[91,8995,8997],{"id":8996},"nodejs","Node.js",[15,8999,9000,9001,9004],{},"Create a ",[19,9002,9003],{},".env"," file in your project root:",[96,9006,9008],{"className":5359,"code":9007,"language":5361,"meta":104,"style":104},"TOWNSHIP_CANADA_API_KEY=tc_live_your_key_here\n",[19,9009,9010],{"__ignoreMap":104},[184,9011,9012,9014,9016],{"class":186,"line":187},[184,9013,4287],{"class":1000},[184,9015,2737],{"class":190},[184,9017,9018],{"class":215},"tc_live_your_key_here\n",[15,9020,9021],{},"Load and use it in your application:",[96,9023,9027],{"className":9024,"code":9025,"language":9026,"meta":104,"style":104},"language-javascript shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","\u002F\u002F Make sure dotenv is loaded early (e.g., in your entry file)\nrequire(\"dotenv\").config();\n\nconst response = await fetch(\n  \"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=NW-36-42-3-W5\",\n  {\n    headers: {\n      \"X-API-Key\": process.env.TOWNSHIP_CANADA_API_KEY\n    }\n  }\n);\n","javascript",[19,9028,9029,9034,9059,9063,9077,9088,9093,9101,9122,9126,9130],{"__ignoreMap":104},[184,9030,9031],{"class":186,"line":187},[184,9032,9033],{"class":4844},"\u002F\u002F Make sure dotenv is loaded early (e.g., in your entry file)\n",[184,9035,9036,9039,9041,9043,9046,9048,9050,9052,9055,9057],{"class":186,"line":194},[184,9037,9038],{"class":975},"require",[184,9040,979],{"class":1033},[184,9042,205],{"class":211},[184,9044,9045],{"class":215},"dotenv",[184,9047,205],{"class":211},[184,9049,887],{"class":1033},[184,9051,840],{"class":190},[184,9053,9054],{"class":975},"config",[184,9056,1161],{"class":1033},[184,9058,1085],{"class":190},[184,9060,9061],{"class":186,"line":224},[184,9062,1091],{"emptyLinePlaceholder":1090},[184,9064,9065,9067,9069,9071,9073,9075],{"class":186,"line":239},[184,9066,4270],{"class":968},[184,9068,5621],{"class":1000},[184,9070,1004],{"class":190},[184,9072,1008],{"class":1007},[184,9074,1011],{"class":975},[184,9076,1015],{"class":1033},[184,9078,9079,9081,9084,9086],{"class":186,"line":245},[184,9080,198],{"class":211},[184,9082,9083],{"class":215},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=NW-36-42-3-W5",[184,9085,205],{"class":211},[184,9087,221],{"class":190},[184,9089,9090],{"class":186,"line":267},[184,9091,9092],{"class":190},"  {\n",[184,9094,9095,9097,9099],{"class":186,"line":282},[184,9096,1980],{"class":1054},[184,9098,208],{"class":190},[184,9100,279],{"class":190},[184,9102,9103,9105,9107,9109,9111,9113,9115,9117,9119],{"class":186,"line":304},[184,9104,248],{"class":211},[184,9106,88],{"class":1065},[184,9108,205],{"class":211},[184,9110,208],{"class":190},[184,9112,4277],{"class":1000},[184,9114,840],{"class":190},[184,9116,4282],{"class":1000},[184,9118,840],{"class":190},[184,9120,9121],{"class":1000},"TOWNSHIP_CANADA_API_KEY\n",[184,9123,9124],{"class":186,"line":318},[184,9125,785],{"class":190},[184,9127,9128],{"class":186,"line":324},[184,9129,1174],{"class":190},[184,9131,9132,9134],{"class":186,"line":343},[184,9133,887],{"class":1033},[184,9135,1085],{"class":190},[15,9137,9138],{},"For the Maps API tiles, pass the key as a query parameter instead:",[96,9140,9142],{"className":9024,"code":9141,"language":9026,"meta":104,"style":104},"const tileUrl = `https:\u002F\u002Fmaps.townshipcanada.com\u002Fgrid\u002Fdls\u002Ftwp\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=${process.env.TOWNSHIP_CANADA_API_KEY}`;\n",[19,9143,9144],{"__ignoreMap":104},[184,9145,9146,9148,9151,9153,9155,9158,9160,9163,9165,9167,9169,9171,9173,9175],{"class":186,"line":187},[184,9147,4270],{"class":968},[184,9149,9150],{"class":1000}," tileUrl",[184,9152,1004],{"class":190},[184,9154,1829],{"class":211},[184,9156,9157],{"class":215},"https:\u002F\u002Fmaps.townshipcanada.com\u002Fgrid\u002Fdls\u002Ftwp\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=",[184,9159,1027],{"class":1026},[184,9161,9162],{"class":1036},"process",[184,9164,840],{"class":190},[184,9166,4282],{"class":1036},[184,9168,840],{"class":190},[184,9170,4287],{"class":1036},[184,9172,1041],{"class":1026},[184,9174,1044],{"class":211},[184,9176,1085],{"class":190},[91,9178,9179],{"id":5400},"Python",[15,9181,9000,9182,9184],{},[19,9183,9003],{}," file:",[96,9186,9187],{"className":5359,"code":9007,"language":5361,"meta":104,"style":104},[19,9188,9189],{"__ignoreMap":104},[184,9190,9191,9193,9195],{"class":186,"line":187},[184,9192,4287],{"class":1000},[184,9194,2737],{"class":190},[184,9196,9018],{"class":215},[15,9198,9199,9200,208],{},"Load it using ",[19,9201,9202],{},"python-dotenv",[96,9204,9206],{"className":5398,"code":9205,"language":5400,"meta":104,"style":104},"import os\nfrom dotenv import load_dotenv\nimport requests\n\nload_dotenv()\n\napi_key = os.environ.get('TOWNSHIP_CANADA_API_KEY')\n\nresponse = requests.get(\n    'https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location',\n    headers={'X-API-Key': api_key},\n    params={'location': '10-15-23-4-W4'}\n)\n",[19,9207,9208,9214,9227,9233,9237,9244,9248,9275,9279,9294,9306,9325,9350],{"__ignoreMap":104},[184,9209,9210,9212],{"class":186,"line":187},[184,9211,5407],{"class":1007},[184,9213,5410],{"class":2792},[184,9215,9216,9219,9222,9224],{"class":186,"line":194},[184,9217,9218],{"class":1007},"from",[184,9220,9221],{"class":2792}," dotenv ",[184,9223,5407],{"class":1007},[184,9225,9226],{"class":2792}," load_dotenv\n",[184,9228,9229,9231],{"class":186,"line":224},[184,9230,5407],{"class":1007},[184,9232,5428],{"class":2792},[184,9234,9235],{"class":186,"line":239},[184,9236,1091],{"emptyLinePlaceholder":1090},[184,9238,9239,9242],{"class":186,"line":245},[184,9240,9241],{"class":5530},"load_dotenv",[184,9243,5614],{"class":190},[184,9245,9246],{"class":186,"line":267},[184,9247,1091],{"emptyLinePlaceholder":1090},[184,9249,9250,9253,9255,9257,9259,9261,9263,9265,9267,9269,9271,9273],{"class":186,"line":282},[184,9251,9252],{"class":2792},"api_key ",[184,9254,2737],{"class":190},[184,9256,5442],{"class":2792},[184,9258,840],{"class":190},[184,9260,5448],{"class":5447},[184,9262,840],{"class":190},[184,9264,2489],{"class":5530},[184,9266,979],{"class":190},[184,9268,6077],{"class":211},[184,9270,4287],{"class":215},[184,9272,6077],{"class":211},[184,9274,5908],{"class":190},[184,9276,9277],{"class":186,"line":304},[184,9278,1091],{"emptyLinePlaceholder":1090},[184,9280,9281,9284,9286,9288,9290,9292],{"class":186,"line":318},[184,9282,9283],{"class":2792},"response ",[184,9285,2737],{"class":190},[184,9287,5525],{"class":2792},[184,9289,840],{"class":190},[184,9291,2489],{"class":5530},[184,9293,1015],{"class":190},[184,9295,9296,9299,9302,9304],{"class":186,"line":324},[184,9297,9298],{"class":211},"    '",[184,9300,9301],{"class":215},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location",[184,9303,6077],{"class":211},[184,9305,221],{"class":190},[184,9307,9308,9310,9312,9314,9316,9318,9320,9323],{"class":186,"line":343},[184,9309,1980],{"class":982},[184,9311,5560],{"class":190},[184,9313,6077],{"class":211},[184,9315,88],{"class":215},[184,9317,6077],{"class":211},[184,9319,208],{"class":190},[184,9321,9322],{"class":5530}," api_key",[184,9324,5573],{"class":190},[184,9326,9327,9330,9332,9334,9336,9338,9340,9343,9346,9348],{"class":186,"line":357},[184,9328,9329],{"class":982},"    params",[184,9331,5560],{"class":190},[184,9333,6077],{"class":211},[184,9335,151],{"class":215},[184,9337,6077],{"class":211},[184,9339,208],{"class":190},[184,9341,9342],{"class":211}," '",[184,9344,9345],{"class":215},"10-15-23-4-W4",[184,9347,6077],{"class":211},[184,9349,797],{"class":190},[184,9351,9352],{"class":186,"line":371},[184,9353,5908],{"class":190},[91,9355,9357],{"id":9356},"keeping-keys-out-of-git","Keeping keys out of git",[15,9359,9360,9361,9363,9364,9184],{},"Add ",[19,9362,9003],{}," to your ",[19,9365,9366],{},".gitignore",[96,9368,9370],{"className":5359,"code":9369,"language":5361,"meta":104,"style":104},"# .gitignore\n.env\n.env.local\n.env.*.local\n",[19,9371,9372,9377,9382,9387],{"__ignoreMap":104},[184,9373,9374],{"class":186,"line":187},[184,9375,9376],{"class":4844},"# .gitignore\n",[184,9378,9379],{"class":186,"line":194},[184,9380,9381],{"class":5375},".env\n",[184,9383,9384],{"class":186,"line":224},[184,9385,9386],{"class":5375},".env.local\n",[184,9388,9389],{"class":186,"line":239},[184,9390,9391],{"class":5375},".env.*.local\n",[15,9393,9394,9395,9398],{},"Commit a ",[19,9396,9397],{},".env.example"," file with placeholder values instead. Other developers on your team know what variables to set without seeing real credentials:",[96,9400,9402],{"className":5359,"code":9401,"language":5361,"meta":104,"style":104},"# .env.example\nTOWNSHIP_CANADA_API_KEY=your_api_key_here\n",[19,9403,9404,9409],{"__ignoreMap":104},[184,9405,9406],{"class":186,"line":187},[184,9407,9408],{"class":4844},"# .env.example\n",[184,9410,9411,9413,9415],{"class":186,"line":194},[184,9412,4287],{"class":1000},[184,9414,2737],{"class":190},[184,9416,9417],{"class":215},"your_api_key_here\n",[10,9419,9421],{"id":9420},"key-rotation-without-downtime","Key rotation without downtime",[15,9423,9424],{},"Rotating a production key requires a brief overlap period where both the old and new key are valid. Follow this sequence:",[8873,9426,9427,9433,9439,9445],{},[31,9428,9429,9432],{},[108,9430,9431],{},"Create the new key"," in the Developer Portal with the same name (add \"v2\" or today's date to distinguish it)",[31,9434,9435,9438],{},[108,9436,9437],{},"Update your deployment"," - set the new key value in your environment variables or secrets manager",[31,9440,9441,9444],{},[108,9442,9443],{},"Deploy and verify"," - confirm requests are succeeding with the new key in your application logs",[31,9446,9447,9450],{},[108,9448,9449],{},"Revoke the old key"," - only after confirming the new key is working",[15,9452,9453],{},"Never revoke the old key before confirming the new one works. A failed deploy with no fallback means downtime.",[10,9455,9457],{"id":9456},"cicd-secrets","CI\u002FCD secrets",[15,9459,9460],{},"Automated pipelines need API keys without human involvement. Store keys in your CI provider's secrets store, not in configuration files.",[91,9462,9464],{"id":9463},"github-actions","GitHub Actions",[15,9466,9467],{},"Add your API key as a repository secret:",[8873,9469,9470,9476,9481,9487],{},[31,9471,8663,9472,9475],{},[108,9473,9474],{},"Settings → Secrets and variables → Actions"," in your GitHub repository",[31,9477,8680,9478],{},[108,9479,9480],{},"New repository secret",[31,9482,9483,9484,9486],{},"Name it ",[19,9485,4287],{}," and paste your CI key value",[31,9488,8680,9489],{},[108,9490,9491],{},"Add secret",[15,9493,9494],{},"Reference it in your workflow file:",[96,9496,9500],{"className":9497,"code":9498,"language":9499,"meta":104,"style":104},"language-yaml shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# .github\u002Fworkflows\u002Ftest.yml\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - name: Run integration tests\n        env:\n          TOWNSHIP_CANADA_API_KEY: ${{ secrets.TOWNSHIP_CANADA_API_KEY }}\n        run: npm test\n","yaml",[19,9501,9502,9507,9514,9521,9531,9538,9551,9563,9570,9580],{"__ignoreMap":104},[184,9503,9504],{"class":186,"line":187},[184,9505,9506],{"class":4844},"# .github\u002Fworkflows\u002Ftest.yml\n",[184,9508,9509,9512],{"class":186,"line":194},[184,9510,9511],{"class":1054},"jobs",[184,9513,6005],{"class":190},[184,9515,9516,9519],{"class":186,"line":224},[184,9517,9518],{"class":1054},"  test",[184,9520,6005],{"class":190},[184,9522,9523,9526,9528],{"class":186,"line":239},[184,9524,9525],{"class":1054},"    runs-on",[184,9527,208],{"class":190},[184,9529,9530],{"class":215}," ubuntu-latest\n",[184,9532,9533,9536],{"class":186,"line":245},[184,9534,9535],{"class":1054},"    steps",[184,9537,6005],{"class":190},[184,9539,9540,9543,9546,9548],{"class":186,"line":267},[184,9541,9542],{"class":190},"      -",[184,9544,9545],{"class":1054}," uses",[184,9547,208],{"class":190},[184,9549,9550],{"class":215}," actions\u002Fcheckout@v4\n",[184,9552,9553,9555,9558,9560],{"class":186,"line":282},[184,9554,9542],{"class":190},[184,9556,9557],{"class":1054}," name",[184,9559,208],{"class":190},[184,9561,9562],{"class":215}," Run integration tests\n",[184,9564,9565,9568],{"class":186,"line":304},[184,9566,9567],{"class":1054},"        env",[184,9569,6005],{"class":190},[184,9571,9572,9575,9577],{"class":186,"line":318},[184,9573,9574],{"class":1054},"          TOWNSHIP_CANADA_API_KEY",[184,9576,208],{"class":190},[184,9578,9579],{"class":215}," ${{ secrets.TOWNSHIP_CANADA_API_KEY }}\n",[184,9581,9582,9585,9587],{"class":186,"line":324},[184,9583,9584],{"class":1054},"        run",[184,9586,208],{"class":190},[184,9588,9589],{"class":215}," npm test\n",[15,9591,9592],{},"The same pattern applies to other CI platforms - GitLab CI uses project variables, Bitbucket Pipelines uses repository variables, and CircleCI uses environment variables in project settings. The key principle is the same: the secret is stored in the platform, referenced by name in the config file, and never written to disk or logs.",[10,9594,9596],{"id":9595},"team-key-management","Team key management",[15,9598,9599],{},"On the Business plan, account admins can view all API keys created by team members - including the key name, creator, creation date, and last-used timestamp. This makes it possible to audit which keys are active, identify keys that haven't been used recently, and revoke credentials when a team member leaves.",[15,9601,9602],{},"Individual developers see only their own keys. Admins see keys across the entire team.",[15,9604,9605],{},"If your team uses a shared integration (for example, a company-wide internal tool), create that key under an admin account rather than a personal one. That way the key doesn't become inaccessible if the original creator's account is deactivated.",[10,9607,9609],{"id":9608},"security-practices","Security practices",[15,9611,9612],{},"A few habits that prevent the most common problems:",[15,9614,9615,9618,9619,9621,9622,9627],{},[108,9616,9617],{},"Don't commit keys."," The ",[19,9620,9366],{}," pattern above covers most cases. For extra protection, consider a tool like ",[35,9623,9626],{"href":9624,"rel":9625},"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fgit-secrets",[8765],"git-secrets"," that scans commits for credential patterns before they're pushed.",[15,9629,9630,9633],{},[108,9631,9632],{},"Use separate keys for separate projects."," If Project A's key is ever compromised, you revoke that key without touching Project B. It also makes usage monitoring cleaner - each key's activity in the logs maps to exactly one project.",[15,9635,9636,9639],{},[108,9637,9638],{},"Rotate keys periodically."," There's no hard rule on frequency, but a yearly rotation for production keys is a reasonable baseline. After a team member departure, rotate any keys they had access to.",[15,9641,9642,9645],{},[108,9643,9644],{},"Delete unused keys."," Old keys from completed projects or former team members are attack surface with no benefit. If a key hasn't been used in 90 days and you don't recognize its purpose, revoke it.",[15,9647,9648,9651],{},[108,9649,9650],{},"Treat keys like passwords."," Don't paste them into chat messages, emails, or support tickets. If you need to share a key temporarily, do it through a password manager or secrets vault.",[10,9653,8771],{"id":8770},[28,9655,9656,9661,9666,9671,9676],{},[31,9657,9658,9660],{},[35,9659,8326],{"href":60}," - Get started with the Township Canada API",[31,9662,9663,9665],{},[35,9664,8333],{"href":8305}," - Process multiple records in a single request",[31,9667,9668,9670],{},[35,9669,8330],{"href":8294}," - Add LLD search suggestions to your app",[31,9672,9673,9675],{},[35,9674,8779],{"href":8778}," - Manage subscriptions and billing",[31,9677,9678,9682],{},[35,9679,9681],{"href":9680},"\u002Fpricing","Pricing"," - API plan tiers and request quotas",[2807,9684,9685],{},"html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}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 .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .suXOh, html code.shiki .suXOh{--shiki-light:#E53935;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sQtxO, html code.shiki .sQtxO{--shiki-light:#E53935;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .su_V2, html code.shiki .su_V2{--shiki-light:#90A4AE;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}",{"title":104,"searchDepth":194,"depth":194,"links":9687},[9688,9689,9690,9695,9696,9699,9700,9701],{"id":8864,"depth":194,"text":8865},{"id":8906,"depth":194,"text":8907},{"id":8989,"depth":194,"text":8990,"children":9691},[9692,9693,9694],{"id":8996,"depth":224,"text":8997},{"id":5400,"depth":224,"text":9179},{"id":9356,"depth":224,"text":9357},{"id":9420,"depth":194,"text":9421},{"id":9456,"depth":194,"text":9457,"children":9697},[9698],{"id":9463,"depth":224,"text":9464},{"id":9595,"depth":194,"text":9596},{"id":9608,"depth":194,"text":9609},{"id":8770,"depth":194,"text":8771},"Create and manage multiple Township Canada API keys for different environments. Naming conventions, key rotation, environment variables, and CI\u002FCD setup.","i-lucide-key-round",{},{"title":8853,"description":9702},"guides\u002Fapi-key-management","y5S7M5b-MjrYZXjYnpDKKgJzo3-V9wx-qk4t04QBnso",{"id":9709,"title":9710,"body":9711,"category":8358,"description":10677,"draft":8360,"extension":8361,"icon":10678,"meta":10679,"navigation":1090,"order":304,"path":10680,"seo":10681,"stem":10682,"__hash__":10683},"guides\u002Fguides\u002Fapi-troubleshooting.md","API Troubleshooting & Best Practices",{"type":7,"value":9712,"toc":10655},[9713,9719,9723,9727,9753,9759,9764,9781,9814,9817,9821,9826,9859,9863,9890,9894,9900,9905,9910,9923,9927,9930,9935,9946,9951,9981,9985,9995,10000,10018,10022,10029,10064,10068,10072,10174,10253,10257,10464,10468,10471,10477,10481,10484,10541,10544,10558,10562,10566,10572,10576,10579,10609,10613,10620,10622,10652],[15,9714,9715,9718],{},[108,9716,9717],{},"Getting errors from the Township Canada API?"," This guide covers the most common issues developers run into - authentication failures, CORS blocks, rate limits, and unexpected empty responses - with clear fixes for each one.",[10,9720,9722],{"id":9721},"common-errors-and-what-they-mean","Common errors and what they mean",[91,9724,9726],{"id":9725},"forbidden-http-403","Forbidden (HTTP 403)",[96,9728,9730],{"className":178,"code":9729,"language":180,"meta":104,"style":104},"{ \"message\": \"Forbidden\" }\n",[19,9731,9732],{"__ignoreMap":104},[184,9733,9734,9736,9738,9740,9742,9744,9746,9749,9751],{"class":186,"line":187},[184,9735,1821],{"class":190},[184,9737,212],{"class":197},[184,9739,4104],{"class":201},[184,9741,205],{"class":197},[184,9743,208],{"class":190},[184,9745,212],{"class":211},[184,9747,9748],{"class":215},"Forbidden",[184,9750,205],{"class":211},[184,9752,1077],{"class":190},[15,9754,9755,9758],{},[108,9756,9757],{},"Cause:"," Your API key is missing, invalid, or not included correctly.",[15,9760,9761],{},[108,9762,9763],{},"Fix:",[8873,9765,9766,9772,9778],{},[31,9767,9768,9769],{},"Confirm your API key exists: go to ",[108,9770,9771],{},"My Account → API Access",[31,9773,9774,9775,9777],{},"Include it in the ",[19,9776,88],{}," header (not as a URL parameter)",[31,9779,9780],{},"Test with curl:",[96,9782,9784],{"className":5359,"code":9783,"language":5361,"meta":104,"style":104},"curl -H \"X-API-Key: YOUR_KEY\" \\\n  \"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?q=SW-25-24-1-W5\"\n",[19,9785,9786,9805],{"__ignoreMap":104},[184,9787,9788,9791,9795,9797,9800,9802],{"class":186,"line":187},[184,9789,9790],{"class":5375},"curl",[184,9792,9794],{"class":9793},"sz9Cv"," -H",[184,9796,212],{"class":211},[184,9798,9799],{"class":215},"X-API-Key: YOUR_KEY",[184,9801,205],{"class":211},[184,9803,9804],{"class":2828}," \\\n",[184,9806,9807,9809,9812],{"class":186,"line":194},[184,9808,198],{"class":211},[184,9810,9811],{"class":215},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?q=SW-25-24-1-W5",[184,9813,550],{"class":211},[15,9815,9816],{},"If you get a valid JSON response, your key works. If you still get Forbidden, the key may have been rotated - generate a new one from your account page.",[91,9818,9820],{"id":9819},"too-many-requests-http-429","Too Many Requests (HTTP 429)",[15,9822,9823,9825],{},[108,9824,9757],{}," You exceeded the rate limit for your API tier.",[123,9827,9828,9836],{},[126,9829,9830],{},[129,9831,9832,9834],{},[132,9833,8499],{},[132,9835,8505],{},[142,9837,9838,9845,9852],{},[129,9839,9840,9842],{},[147,9841,8515],{},[147,9843,9844],{},"1 request\u002Fsecond",[129,9846,9847,9849],{},[147,9848,8529],{},[147,9850,9851],{},"5 requests\u002Fsecond",[129,9853,9854,9856],{},[147,9855,8543],{},[147,9857,9858],{},"25 requests\u002Fsecond",[15,9860,9861],{},[108,9862,9763],{},[28,9864,9865,9876,9883],{},[31,9866,9867,9868,9871,9872,9875],{},"Add a delay between requests: ",[19,9869,9870],{},"await new Promise(r => setTimeout(r, 1000))"," in JavaScript, or ",[19,9873,9874],{},"time.sleep(1)"," in Python",[31,9877,9878,9879,9882],{},"Use the ",[35,9880,9881],{"href":8305},"Batch API"," instead of looping single calls - it processes up to 100 records per request",[31,9884,9885,9886,9889],{},"If you consistently need higher throughput, ",[35,9887,9888],{"href":8807},"contact us"," about upgrading your tier",[91,9891,9893],{"id":9892},"cors-policy-error","CORS Policy Error",[96,9895,9898],{"className":9896,"code":9897,"language":101},[99],"Access to fetch at 'https:\u002F\u002Fdeveloper.townshipcanada.com\u002F...' has been blocked by CORS policy\n",[19,9899,9897],{"__ignoreMap":104},[15,9901,9902,9904],{},[108,9903,9757],{}," You are calling the API directly from a browser (client-side JavaScript). The API is designed for server-to-server calls and does not include CORS headers by default.",[15,9906,9907],{},[108,9908,9909],{},"Fix options:",[8873,9911,9912,9918],{},[31,9913,9914,9917],{},[108,9915,9916],{},"Proxy through your backend"," - Make the API call from your server (Node.js, Python, etc.) and return the result to your frontend",[31,9919,9920,9922],{},[108,9921,8808],{}," - If you need direct browser access, we can add your domain to the CORS allowlist",[91,9924,9926],{"id":9925},"empty-response-no-features","Empty Response (no features)",[15,9928,9929],{},"The API returns a valid HTTP 200 response, but the result contains no features or coordinates.",[15,9931,9932],{},[108,9933,9934],{},"Possible causes:",[28,9936,9937,9940,9943],{},[31,9938,9939],{},"The legal description does not exist (e.g., a township\u002Frange combination that was never surveyed)",[31,9941,9942],{},"The description is at a resolution not supported for that region",[31,9944,9945],{},"Format is slightly wrong - the API is stricter than the web app",[15,9947,9948],{},[108,9949,9950],{},"Debugging steps:",[8873,9952,9953,9961,9971,9974],{},[31,9954,9955,9956,9960],{},"Try the same description in the ",[35,9957,9959],{"href":9958},"\u002Fapp","web app search box"," - does it work there?",[31,9962,9963,9964,9967,9968,887],{},"Check that you included the full meridian (e.g., ",[19,9965,9966],{},"W5"," not just ",[19,9969,9970],{},"5",[31,9972,9973],{},"Verify component ranges: LSD 1–16, Section 1–36, Township 1–126, Range 1–34",[31,9975,2312,9976,9980],{},[35,9977,9979],{"href":9978},"\u002Fguides\u002Fcoverage","Coverage Guide"," for resolution limits by region",[91,9982,9984],{"id":9983},"database-errors-28000-08006","Database Errors (28000, 08006)",[15,9986,9987,9988,814,9991,9994],{},"Errors with codes like ",[19,9989,9990],{},"28000",[19,9992,9993],{},"08006"," indicate a service disruption, not an issue with your code.",[15,9996,9997],{},[108,9998,9999],{},"What to do:",[28,10001,10002,10010,10013],{},[31,10003,2312,10004,10009],{},[35,10005,10008],{"href":10006,"rel":10007},"https:\u002F\u002Fstatus.townshipcanada.com\u002F",[8765],"status page"," for incident reports",[31,10011,10012],{},"Wait a few minutes and retry",[31,10014,10015,10016],{},"If the issue persists beyond 15 minutes, ",[35,10017,9888],{"href":8807},[10,10019,10021],{"id":10020},"api-key-setup","API key setup",[15,10023,10024,10025,10028],{},"Quick recap of key setup (see the ",[35,10026,10027],{"href":8316},"full API key management guide"," for details):",[8873,10030,10031,10037,10046,10052,10058],{},[31,10032,10033,10036],{},[108,10034,10035],{},"Find your key:"," My Account → API Access",[31,10038,10039,10042,10043,10045],{},[108,10040,10041],{},"Include in requests:"," Add the ",[19,10044,88],{}," header to every request",[31,10047,10048,10051],{},[108,10049,10050],{},"Test before coding:"," Use curl or Postman to confirm the key works",[31,10053,10054,10057],{},[108,10055,10056],{},"Name your keys:"," Use descriptive names like \"production-backend\" or \"staging-test\" to keep track of which key is used where",[31,10059,10060,10063],{},[108,10061,10062],{},"Rotate regularly:"," Generate new keys periodically and phase out old ones",[10,10065,10067],{"id":10066},"rate-limiting-best-practices","Rate limiting best practices",[91,10069,10071],{"id":10070},"add-delay-between-requests","Add delay between requests",[96,10073,10075],{"className":9024,"code":10074,"language":9026,"meta":104,"style":104},"\u002F\u002F JavaScript - simple delay\nfor (const query of queries) {\n  const result = await fetch(url + query, { headers });\n  await new Promise((r) => setTimeout(r, 1000));\n}\n",[19,10076,10077,10082,10103,10136,10170],{"__ignoreMap":104},[184,10078,10079],{"class":186,"line":187},[184,10080,10081],{"class":4844},"\u002F\u002F JavaScript - simple delay\n",[184,10083,10084,10086,10088,10090,10093,10096,10099,10101],{"class":186,"line":194},[184,10085,5942],{"class":1007},[184,10087,1099],{"class":1033},[184,10089,4270],{"class":968},[184,10091,10092],{"class":1000}," query",[184,10094,10095],{"class":1102}," of",[184,10097,10098],{"class":1000}," queries",[184,10100,887],{"class":1033},[184,10102,279],{"class":190},[184,10104,10105,10107,10109,10111,10113,10115,10117,10119,10122,10124,10126,10128,10130,10132,10134],{"class":186,"line":224},[184,10106,997],{"class":968},[184,10108,7299],{"class":1000},[184,10110,1004],{"class":190},[184,10112,1008],{"class":1007},[184,10114,1011],{"class":975},[184,10116,979],{"class":1014},[184,10118,2381],{"class":1000},[184,10120,10121],{"class":1102}," +",[184,10123,10092],{"class":1000},[184,10125,334],{"class":190},[184,10127,1060],{"class":190},[184,10129,1055],{"class":1000},[184,10131,1074],{"class":190},[184,10133,887],{"class":1014},[184,10135,1085],{"class":190},[184,10137,10138,10141,10143,10145,10147,10149,10152,10154,10156,10158,10160,10162,10164,10166,10168],{"class":186,"line":239},[184,10139,10140],{"class":1007},"  await",[184,10142,1123],{"class":1102},[184,10144,2529],{"class":251},[184,10146,979],{"class":1014},[184,10148,979],{"class":190},[184,10150,10151],{"class":982},"r",[184,10153,887],{"class":190},[184,10155,1232],{"class":1231},[184,10157,2543],{"class":975},[184,10159,979],{"class":1014},[184,10161,10151],{"class":1000},[184,10163,334],{"class":190},[184,10165,2557],{"class":330},[184,10167,2560],{"class":1014},[184,10169,1085],{"class":190},[184,10171,10172],{"class":186,"line":245},[184,10173,797],{"class":190},[96,10175,10177],{"className":5398,"code":10176,"language":5400,"meta":104,"style":104},"# Python - simple delay\nimport time\nfor query in queries:\n    result = requests.get(url + query, headers=headers)\n    time.sleep(1)\n",[19,10178,10179,10184,10191,10204,10237],{"__ignoreMap":104},[184,10180,10181],{"class":186,"line":187},[184,10182,10183],{"class":4844},"# Python - simple delay\n",[184,10185,10186,10188],{"class":186,"line":194},[184,10187,5407],{"class":1007},[184,10189,10190],{"class":2792}," time\n",[184,10192,10193,10195,10198,10200,10202],{"class":186,"line":224},[184,10194,5942],{"class":1007},[184,10196,10197],{"class":2792}," query ",[184,10199,5948],{"class":1007},[184,10201,10098],{"class":2792},[184,10203,6005],{"class":190},[184,10205,10206,10209,10211,10213,10215,10217,10219,10222,10225,10227,10229,10231,10233,10235],{"class":186,"line":239},[184,10207,10208],{"class":2792},"    result ",[184,10210,2737],{"class":190},[184,10212,5525],{"class":2792},[184,10214,840],{"class":190},[184,10216,2489],{"class":5530},[184,10218,979],{"class":190},[184,10220,10221],{"class":5530},"url ",[184,10223,10224],{"class":1102},"+",[184,10226,10092],{"class":5530},[184,10228,334],{"class":190},[184,10230,1055],{"class":982},[184,10232,2737],{"class":190},[184,10234,2484],{"class":5530},[184,10236,5908],{"class":190},[184,10238,10239,10242,10244,10247,10249,10251],{"class":186,"line":245},[184,10240,10241],{"class":2792},"    time",[184,10243,840],{"class":190},[184,10245,10246],{"class":5530},"sleep",[184,10248,979],{"class":190},[184,10250,5842],{"class":330},[184,10252,5908],{"class":190},[91,10254,10256],{"id":10255},"use-exponential-backoff-on-429","Use exponential backoff on 429",[96,10258,10260],{"className":9024,"code":10259,"language":9026,"meta":104,"style":104},"async function fetchWithBackoff(url, headers, maxRetries = 3) {\n  for (let i = 0; i \u003C maxRetries; i++) {\n    const res = await fetch(url, { headers });\n    if (res.status !== 429) return res;\n    await new Promise((r) => setTimeout(r, 1000 * Math.pow(2, i)));\n  }\n  throw new Error(\"Rate limit exceeded after retries\");\n}\n",[19,10261,10262,10293,10330,10358,10383,10434,10438,10460],{"__ignoreMap":104},[184,10263,10264,10266,10268,10271,10273,10275,10277,10279,10281,10284,10286,10289,10291],{"class":186,"line":187},[184,10265,969],{"class":968},[184,10267,972],{"class":968},[184,10269,10270],{"class":975}," fetchWithBackoff",[184,10272,979],{"class":190},[184,10274,2381],{"class":982},[184,10276,334],{"class":190},[184,10278,1055],{"class":982},[184,10280,334],{"class":190},[184,10282,10283],{"class":982}," maxRetries",[184,10285,1004],{"class":190},[184,10287,10288],{"class":330}," 3",[184,10290,887],{"class":190},[184,10292,279],{"class":190},[184,10294,10295,10298,10300,10303,10306,10308,10310,10313,10315,10317,10319,10321,10323,10326,10328],{"class":186,"line":194},[184,10296,10297],{"class":1007},"  for",[184,10299,1099],{"class":1014},[184,10301,10302],{"class":968},"let",[184,10304,10305],{"class":1000}," i",[184,10307,1004],{"class":190},[184,10309,2879],{"class":330},[184,10311,10312],{"class":190},";",[184,10314,10305],{"class":1000},[184,10316,7791],{"class":190},[184,10318,10283],{"class":1000},[184,10320,10312],{"class":190},[184,10322,10305],{"class":1000},[184,10324,10325],{"class":1102},"++",[184,10327,887],{"class":1014},[184,10329,279],{"class":190},[184,10331,10332,10334,10336,10338,10340,10342,10344,10346,10348,10350,10352,10354,10356],{"class":186,"line":224},[184,10333,2467],{"class":968},[184,10335,1001],{"class":1000},[184,10337,1004],{"class":190},[184,10339,1008],{"class":1007},[184,10341,1011],{"class":975},[184,10343,979],{"class":1014},[184,10345,2381],{"class":1000},[184,10347,334],{"class":190},[184,10349,1060],{"class":190},[184,10351,1055],{"class":1000},[184,10353,1074],{"class":190},[184,10355,887],{"class":1014},[184,10357,1085],{"class":190},[184,10359,10360,10362,10364,10366,10368,10370,10373,10375,10377,10379,10381],{"class":186,"line":239},[184,10361,5237],{"class":1007},[184,10363,1099],{"class":1014},[184,10365,1106],{"class":1000},[184,10367,840],{"class":190},[184,10369,1142],{"class":1000},[184,10371,10372],{"class":1102}," !==",[184,10374,2458],{"class":330},[184,10376,887],{"class":1014},[184,10378,1275],{"class":1007},[184,10380,1001],{"class":1000},[184,10382,1085],{"class":190},[184,10384,10385,10387,10389,10391,10393,10395,10397,10399,10401,10403,10405,10407,10409,10411,10413,10416,10418,10421,10423,10425,10427,10429,10432],{"class":186,"line":245},[184,10386,2524],{"class":1007},[184,10388,1123],{"class":1102},[184,10390,2529],{"class":251},[184,10392,979],{"class":1014},[184,10394,979],{"class":190},[184,10396,10151],{"class":982},[184,10398,887],{"class":190},[184,10400,1232],{"class":1231},[184,10402,2543],{"class":975},[184,10404,979],{"class":1014},[184,10406,10151],{"class":1000},[184,10408,334],{"class":190},[184,10410,2557],{"class":330},[184,10412,2554],{"class":1102},[184,10414,10415],{"class":1000}," Math",[184,10417,840],{"class":190},[184,10419,10420],{"class":975},"pow",[184,10422,979],{"class":1014},[184,10424,2508],{"class":330},[184,10426,334],{"class":190},[184,10428,10305],{"class":1000},[184,10430,10431],{"class":1014},")))",[184,10433,1085],{"class":190},[184,10435,10436],{"class":186,"line":267},[184,10437,1174],{"class":190},[184,10439,10440,10443,10445,10447,10449,10451,10454,10456,10458],{"class":186,"line":282},[184,10441,10442],{"class":1007},"  throw",[184,10444,1123],{"class":1102},[184,10446,1126],{"class":975},[184,10448,979],{"class":1014},[184,10450,205],{"class":211},[184,10452,10453],{"class":215},"Rate limit exceeded after retries",[184,10455,205],{"class":211},[184,10457,887],{"class":1014},[184,10459,1085],{"class":190},[184,10461,10462],{"class":186,"line":304},[184,10463,797],{"class":190},[91,10465,10467],{"id":10466},"use-the-batch-api-for-bulk-work","Use the Batch API for bulk work",[15,10469,10470],{},"Instead of looping 1,000 single calls (which takes 17+ minutes at 1\u002Fsec), use the Batch API to process 100 records per call - the same 1,000 records take 10 calls.",[15,10472,10473,10474,10476],{},"See the ",[35,10475,8333],{"href":8305}," for chunking examples in Node.js and Python.",[10,10478,10480],{"id":10479},"format-differences-web-app-vs-api","Format differences: web app vs. API",[15,10482,10483],{},"The web app's search box is more forgiving than the API:",[123,10485,10486,10498],{},[126,10487,10488],{},[129,10489,10490,10493,10496],{},[132,10491,10492],{},"Issue",[132,10494,10495],{},"Web App",[132,10497,8400],{},[142,10499,10500,10511,10522,10531],{},[129,10501,10502,10505,10508],{},[147,10503,10504],{},"Missing \"W\" on meridian",[147,10506,10507],{},"May auto-correct",[147,10509,10510],{},"Returns empty",[129,10512,10513,10516,10519],{},[147,10514,10515],{},"Extra spaces",[147,10517,10518],{},"Handled",[147,10520,10521],{},"May cause issues",[129,10523,10524,10527,10529],{},[147,10525,10526],{},"Mixed case",[147,10528,10518],{},[147,10530,10518],{},[129,10532,10533,10536,10539],{},[147,10534,10535],{},"Partial descriptions",[147,10537,10538],{},"Shows suggestions",[147,10540,10510],{},[15,10542,10543],{},"When building API integrations, always normalize your input first:",[28,10545,10546,10549,10552,10555],{},[31,10547,10548],{},"Include dashes between all components",[31,10550,10551],{},"Add the \"W\" prefix on meridians",[31,10553,10554],{},"Remove extra text, parentheses, and place names",[31,10556,10557],{},"Trim whitespace",[10,10559,10561],{"id":10560},"integration-patterns","Integration patterns",[91,10563,10565],{"id":10564},"caching","Caching",[15,10567,10568,10569,10571],{},"If your application looks up the same legal descriptions repeatedly, cache the results. Legal land descriptions map to fixed coordinates - the result for ",[19,10570,8186],{}," will not change.",[91,10573,10575],{"id":10574},"error-handling","Error handling",[15,10577,10578],{},"Always handle these response codes:",[28,10580,10581,10587,10592,10598,10603],{},[31,10582,10583,10586],{},[108,10584,10585],{},"200"," - Success, parse the result",[31,10588,10589,10591],{},[108,10590,2306],{}," - Bad request, check your input format",[31,10593,10594,10597],{},[108,10595,10596],{},"403"," - Authentication failed, check your API key",[31,10599,10600,10602],{},[108,10601,2342],{}," - Rate limited, wait and retry",[31,10604,10605,10608],{},[108,10606,10607],{},"500\u002F502\u002F503"," - Server issue, retry after a short delay",[91,10610,10612],{"id":10611},"openapi-spec","OpenAPI spec",[15,10614,10615,10616,10619],{},"Download the OpenAPI specification at ",[35,10617,10618],{"href":10618},"\u002Fopenapi.yaml"," and import it into Postman, Swagger UI, or Insomnia for interactive testing and documentation.",[10,10621,8771],{"id":8770},[28,10623,10624,10629,10635,10641,10646],{},[31,10625,10626,10628],{},[35,10627,61],{"href":60}," - getting started with the API",[31,10630,10631,10634],{},[35,10632,10633],{"href":8316},"API Key Management"," - creating and managing API keys",[31,10636,10637,10640],{},[35,10638,10639],{"href":8364},"Search API Guide"," - single-location lookups",[31,10642,10643,10645],{},[35,10644,8333],{"href":8305}," - bulk conversions",[31,10647,10648,10651],{},[35,10649,10650],{"href":9978},"Coverage & Limitations"," - what regions and resolutions are supported",[2807,10653,10654],{},"html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s4Jsk, html code.shiki .s4Jsk{--shiki-light:#39ADB5;--shiki-default:#99841877;--shiki-dark:#B8A96577}html pre.shiki code .sLorS, html code.shiki .sLorS{--shiki-light:#9C3EDA;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}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 .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sLdnO, html code.shiki .sLdnO{--shiki-light:#E53935;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sIOqK, html code.shiki .sIOqK{--shiki-light:#9C3EDA;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}",{"title":104,"searchDepth":194,"depth":194,"links":10656},[10657,10664,10665,10670,10671,10676],{"id":9721,"depth":194,"text":9722,"children":10658},[10659,10660,10661,10662,10663],{"id":9725,"depth":224,"text":9726},{"id":9819,"depth":224,"text":9820},{"id":9892,"depth":224,"text":9893},{"id":9925,"depth":224,"text":9926},{"id":9983,"depth":224,"text":9984},{"id":10020,"depth":194,"text":10021},{"id":10066,"depth":194,"text":10067,"children":10666},[10667,10668,10669],{"id":10070,"depth":224,"text":10071},{"id":10255,"depth":224,"text":10256},{"id":10466,"depth":224,"text":10467},{"id":10479,"depth":194,"text":10480},{"id":10560,"depth":194,"text":10561,"children":10672},[10673,10674,10675],{"id":10564,"depth":224,"text":10565},{"id":10574,"depth":224,"text":10575},{"id":10611,"depth":224,"text":10612},{"id":8770,"depth":194,"text":8771},"Fix common Township Canada API errors including Forbidden responses, CORS issues, rate limiting, and empty results. Includes debugging tips and integration patterns.","i-lucide-bug",{},"\u002Fguides\u002Fapi-troubleshooting",{"title":9710,"description":10677},"guides\u002Fapi-troubleshooting","YhFOkUOkxRyXExvO-F29ZJyxlbLEw9dMy2FCmSMog7U"]