[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-\u002Fblog\u002Fintegrate-legal-land-description-api-canada":3},{"id":4,"title":5,"author":6,"body":7,"category":1353,"cover":1354,"date":1355,"description":1356,"extension":1357,"meta":1358,"navigation":482,"path":1359,"seo":1360,"stem":1361,"tags":1362,"__hash__":1367},"blog\u002Fblog\u002Fintegrate-legal-land-description-api-canada.md","How to Integrate Canadian Legal Land Descriptions into Your Application Using the Township Canada API","Township Canada",{"type":8,"value":9,"toc":1341},"minimark",[10,19,22,25,30,39,42,52,55,330,333,340,344,357,360,366,373,377,380,695,700,703,713,860,868,988,991,995,1003,1009,1012,1016,1019,1030,1167,1179,1183,1186,1235,1239,1242,1298,1305,1309,1334,1337],[11,12,13,14,18],"p",{},"A property management platform in Edmonton had a problem. Their database held 4,000 well site locations - all in DLS format like ",[15,16,17],"code",{},"LSD 14-27-048-05W5",". Their map component needed GPS coordinates. A legal land description API in Canada would solve this, but building a conversion engine from raw survey data would take months of work.",[11,20,21],{},"One GET request to the Township Canada API handled the individual lookup. A batch endpoint handled the rest. Within an afternoon, the team had GPS coordinates and boundary polygons for every location in the database.",[11,23,24],{},"If your application works with Canadian land data - well sites, rural properties, field boundaries, mineral rights - here's how to add that same conversion capability.",[26,27,29],"h2",{"id":28},"what-the-api-returns","What the API Returns",[11,31,32,33,38],{},"The ",[34,35,37],"a",{"href":36},"\u002Fguides\u002Fsearch-api-guide","Township Canada Search API"," accepts a legal land description and returns a GeoJSON response with GPS coordinates and a boundary polygon. It handles DLS, LSD, NTS, FPS, Ontario lot\u002Fconcession, and every other major Canadian survey system through a single endpoint.",[11,40,41],{},"A basic request:",[43,44,49],"pre",{"className":45,"code":47,"language":48},[46],"language-text","GET https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=LSD+14-27-048-05W5\n","text",[15,50,47],{"__ignoreMap":51},"",[11,53,54],{},"The response:",[43,56,60],{"className":57,"code":58,"language":59,"meta":51,"style":51},"language-json shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","{\n  \"type\": \"FeatureCollection\",\n  \"features\": [{\n    \"type\": \"Feature\",\n    \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [[...]] },\n    \"properties\": {\n      \"search_term\": \"LSD 14-27-048-05W5\",\n      \"legal_location\": \"LSD 14-27-048-05W5\",\n      \"unit\": \"Legal Subdivision\",\n      \"survey_system\": \"DLS\",\n      \"province\": \"Alberta\"\n    }\n  }]\n}\n","json",[15,61,62,71,101,116,138,194,209,230,250,271,292,312,318,324],{"__ignoreMap":51},[63,64,67],"span",{"class":65,"line":66},"line",1,[63,68,70],{"class":69},"soVBu","{\n",[63,72,74,78,82,85,88,92,96,98],{"class":65,"line":73},2,[63,75,77],{"class":76},"s4Jsk","  \"",[63,79,81],{"class":80},"sLorS","type",[63,83,84],{"class":76},"\"",[63,86,87],{"class":69},":",[63,89,91],{"class":90},"sbYkP"," \"",[63,93,95],{"class":94},"sTbE_","FeatureCollection",[63,97,84],{"class":90},[63,99,100],{"class":69},",\n",[63,102,104,106,109,111,113],{"class":65,"line":103},3,[63,105,77],{"class":76},[63,107,108],{"class":80},"features",[63,110,84],{"class":76},[63,112,87],{"class":69},[63,114,115],{"class":69}," [{\n",[63,117,119,122,125,127,129,131,134,136],{"class":65,"line":118},4,[63,120,121],{"class":76},"    \"",[63,123,81],{"class":124},"sa2tF",[63,126,84],{"class":76},[63,128,87],{"class":69},[63,130,91],{"class":90},[63,132,133],{"class":94},"Feature",[63,135,84],{"class":90},[63,137,100],{"class":69},[63,139,141,143,146,148,150,153,155,158,160,162,164,167,169,172,174,177,179,181,184,188,191],{"class":65,"line":140},5,[63,142,121],{"class":76},[63,144,145],{"class":124},"geometry",[63,147,84],{"class":76},[63,149,87],{"class":69},[63,151,152],{"class":69}," {",[63,154,91],{"class":76},[63,156,81],{"class":157},"skNjk",[63,159,84],{"class":76},[63,161,87],{"class":69},[63,163,91],{"class":90},[63,165,166],{"class":94},"Polygon",[63,168,84],{"class":90},[63,170,171],{"class":69},",",[63,173,91],{"class":76},[63,175,176],{"class":157},"coordinates",[63,178,84],{"class":76},[63,180,87],{"class":69},[63,182,183],{"class":69}," [[",[63,185,187],{"class":186},"srjyR","...",[63,189,190],{"class":69},"]]",[63,192,193],{"class":69}," },\n",[63,195,197,199,202,204,206],{"class":65,"line":196},6,[63,198,121],{"class":76},[63,200,201],{"class":124},"properties",[63,203,84],{"class":76},[63,205,87],{"class":69},[63,207,208],{"class":69}," {\n",[63,210,212,215,218,220,222,224,226,228],{"class":65,"line":211},7,[63,213,214],{"class":76},"      \"",[63,216,217],{"class":157},"search_term",[63,219,84],{"class":76},[63,221,87],{"class":69},[63,223,91],{"class":90},[63,225,17],{"class":94},[63,227,84],{"class":90},[63,229,100],{"class":69},[63,231,233,235,238,240,242,244,246,248],{"class":65,"line":232},8,[63,234,214],{"class":76},[63,236,237],{"class":157},"legal_location",[63,239,84],{"class":76},[63,241,87],{"class":69},[63,243,91],{"class":90},[63,245,17],{"class":94},[63,247,84],{"class":90},[63,249,100],{"class":69},[63,251,253,255,258,260,262,264,267,269],{"class":65,"line":252},9,[63,254,214],{"class":76},[63,256,257],{"class":157},"unit",[63,259,84],{"class":76},[63,261,87],{"class":69},[63,263,91],{"class":90},[63,265,266],{"class":94},"Legal Subdivision",[63,268,84],{"class":90},[63,270,100],{"class":69},[63,272,274,276,279,281,283,285,288,290],{"class":65,"line":273},10,[63,275,214],{"class":76},[63,277,278],{"class":157},"survey_system",[63,280,84],{"class":76},[63,282,87],{"class":69},[63,284,91],{"class":90},[63,286,287],{"class":94},"DLS",[63,289,84],{"class":90},[63,291,100],{"class":69},[63,293,295,297,300,302,304,306,309],{"class":65,"line":294},11,[63,296,214],{"class":76},[63,298,299],{"class":157},"province",[63,301,84],{"class":76},[63,303,87],{"class":69},[63,305,91],{"class":90},[63,307,308],{"class":94},"Alberta",[63,310,311],{"class":90},"\"\n",[63,313,315],{"class":65,"line":314},12,[63,316,317],{"class":69},"    }\n",[63,319,321],{"class":65,"line":320},13,[63,322,323],{"class":69},"  }]\n",[63,325,327],{"class":65,"line":326},14,[63,328,329],{"class":69},"}\n",[11,331,332],{},"You get the parcel boundary as a polygon (useful for drawing on a map), plus metadata like survey system, province, and unit type. Response times are sub-200ms.",[11,334,335],{},[336,337],"img",{"alt":338,"src":339},"Township Canada API portal","\u002Fimages\u002Fguides\u002Fapi-portal.webp",[26,341,343],{"id":342},"step-1-get-your-api-key","Step 1: Get Your API Key",[11,345,346,347,351,352,356],{},"Sign up at ",[34,348,350],{"href":349},"\u002F","townshipcanada.com",", then generate an API key from your ",[34,353,355],{"href":354},"\u002Fguides\u002Fapi-key-management","account settings",". You can create separate keys for development, staging, and production - there's no limit on the number of keys per account.",[11,358,359],{},"Authentication is a single header:",[43,361,364],{"className":362,"code":363,"language":48},[46],"X-API-Key: your-api-key\n",[15,365,363],{"__ignoreMap":51},[11,367,32,368,372],{},[34,369,371],{"href":370},"\u002Fpricing","Search Build plan"," starts at $20\u002Fmonth and includes 1,000 requests. For teams running 500+ conversions per month, that's a fraction of what alternatives charge - SCADALink's equivalent access starts at $325\u002Fmonth.",[26,374,376],{"id":375},"step-2-make-your-first-conversion","Step 2: Make Your First Conversion",[11,378,379],{},"Here's a minimal example in JavaScript:",[43,381,385],{"className":382,"code":383,"language":384,"meta":51,"style":51},"language-javascript shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","const response = await fetch(\n  \"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=NW-25-024-01W5\",\n  {\n    headers: { \"X-API-Key\": process.env.TC_API_KEY }\n  }\n);\n\nconst data = await response.json();\nconst feature = data.features[0];\nconst [lng, lat] = feature.geometry.coordinates[0][0];\n\nconsole.log(`Location: ${feature.properties.legal_location}`);\nconsole.log(`Coordinates: ${lat}, ${lng}`);\nconsole.log(`Province: ${feature.properties.province}`);\n","javascript",[15,386,387,412,423,428,465,470,478,484,506,533,575,579,623,660],{"__ignoreMap":51},[63,388,389,393,397,400,404,408],{"class":65,"line":66},[63,390,392],{"class":391},"s5Kfy","const",[63,394,396],{"class":395},"sSC40"," response",[63,398,399],{"class":69}," =",[63,401,403],{"class":402},"siDh9"," await",[63,405,407],{"class":406},"sljsM"," fetch",[63,409,411],{"class":410},"snCua","(\n",[63,413,414,416,419,421],{"class":65,"line":73},[63,415,77],{"class":90},[63,417,418],{"class":94},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=NW-25-024-01W5",[63,420,84],{"class":90},[63,422,100],{"class":69},[63,424,425],{"class":65,"line":103},[63,426,427],{"class":69},"  {\n",[63,429,430,434,436,438,440,444,446,448,451,454,457,459,462],{"class":65,"line":118},[63,431,433],{"class":432},"suXOh","    headers",[63,435,87],{"class":69},[63,437,152],{"class":69},[63,439,91],{"class":90},[63,441,443],{"class":442},"sQtxO","X-API-Key",[63,445,84],{"class":90},[63,447,87],{"class":69},[63,449,450],{"class":395}," process",[63,452,453],{"class":69},".",[63,455,456],{"class":395},"env",[63,458,453],{"class":69},[63,460,461],{"class":395},"TC_API_KEY",[63,463,464],{"class":69}," }\n",[63,466,467],{"class":65,"line":140},[63,468,469],{"class":69},"  }\n",[63,471,472,475],{"class":65,"line":196},[63,473,474],{"class":410},")",[63,476,477],{"class":69},";\n",[63,479,480],{"class":65,"line":211},[63,481,483],{"emptyLinePlaceholder":482},true,"\n",[63,485,486,488,491,493,495,497,499,501,504],{"class":65,"line":232},[63,487,392],{"class":391},[63,489,490],{"class":395}," data",[63,492,399],{"class":69},[63,494,403],{"class":402},[63,496,396],{"class":395},[63,498,453],{"class":69},[63,500,59],{"class":406},[63,502,503],{"class":410},"()",[63,505,477],{"class":69},[63,507,508,510,513,515,517,519,521,524,528,531],{"class":65,"line":252},[63,509,392],{"class":391},[63,511,512],{"class":395}," feature",[63,514,399],{"class":69},[63,516,490],{"class":395},[63,518,453],{"class":69},[63,520,108],{"class":395},[63,522,523],{"class":410},"[",[63,525,527],{"class":526},"s7CZa","0",[63,529,530],{"class":410},"]",[63,532,477],{"class":69},[63,534,535,537,540,543,545,548,550,552,554,556,558,560,562,564,566,569,571,573],{"class":65,"line":273},[63,536,392],{"class":391},[63,538,539],{"class":69}," [",[63,541,542],{"class":395},"lng",[63,544,171],{"class":69},[63,546,547],{"class":395}," lat",[63,549,530],{"class":69},[63,551,399],{"class":69},[63,553,512],{"class":395},[63,555,453],{"class":69},[63,557,145],{"class":395},[63,559,453],{"class":69},[63,561,176],{"class":395},[63,563,523],{"class":410},[63,565,527],{"class":526},[63,567,568],{"class":410},"][",[63,570,527],{"class":526},[63,572,530],{"class":410},[63,574,477],{"class":69},[63,576,577],{"class":65,"line":294},[63,578,483],{"emptyLinePlaceholder":482},[63,580,581,584,586,589,592,595,598,602,606,608,610,612,614,617,619,621],{"class":65,"line":314},[63,582,583],{"class":395},"console",[63,585,453],{"class":69},[63,587,588],{"class":406},"log",[63,590,591],{"class":410},"(",[63,593,594],{"class":90},"`",[63,596,597],{"class":94},"Location: ",[63,599,601],{"class":600},"s8XtY","${",[63,603,605],{"class":604},"su_V2","feature",[63,607,453],{"class":69},[63,609,201],{"class":604},[63,611,453],{"class":69},[63,613,237],{"class":604},[63,615,616],{"class":600},"}",[63,618,594],{"class":90},[63,620,474],{"class":410},[63,622,477],{"class":69},[63,624,625,627,629,631,633,635,638,640,643,645,648,650,652,654,656,658],{"class":65,"line":320},[63,626,583],{"class":395},[63,628,453],{"class":69},[63,630,588],{"class":406},[63,632,591],{"class":410},[63,634,594],{"class":90},[63,636,637],{"class":94},"Coordinates: ",[63,639,601],{"class":600},[63,641,642],{"class":604},"lat",[63,644,616],{"class":600},[63,646,647],{"class":94},", ",[63,649,601],{"class":600},[63,651,542],{"class":604},[63,653,616],{"class":600},[63,655,594],{"class":90},[63,657,474],{"class":410},[63,659,477],{"class":69},[63,661,662,664,666,668,670,672,675,677,679,681,683,685,687,689,691,693],{"class":65,"line":326},[63,663,583],{"class":395},[63,665,453],{"class":69},[63,667,588],{"class":406},[63,669,591],{"class":410},[63,671,594],{"class":90},[63,673,674],{"class":94},"Province: ",[63,676,601],{"class":600},[63,678,605],{"class":604},[63,680,453],{"class":69},[63,682,201],{"class":604},[63,684,453],{"class":69},[63,686,299],{"class":604},[63,688,616],{"class":600},[63,690,594],{"class":90},[63,692,474],{"class":410},[63,694,477],{"class":69},[696,697,699],"h3",{"id":698},"sdk-options","SDK Options",[11,701,702],{},"If you'd rather skip raw HTTP calls, Township Canada has official SDKs for TypeScript and Python with the same method surface:",[11,704,705,709,710],{},[706,707,708],"strong",{},"TypeScript \u002F Node.js"," - ",[15,711,712],{},"npm install townshipcanada",[43,714,718],{"className":715,"code":716,"language":717,"meta":51,"style":51},"language-typescript shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","import { TownshipClient } from \"townshipcanada\";\n\nconst client = new TownshipClient({ apiKey: process.env.TC_API_KEY });\nconst result = await client.search(\"NW-25-024-01W5\");\nconsole.log(result.latitude, result.longitude, result.province);\n","typescript",[15,719,720,745,749,790,821],{"__ignoreMap":51},[63,721,722,725,727,730,733,736,738,741,743],{"class":65,"line":66},[63,723,724],{"class":402},"import",[63,726,152],{"class":69},[63,728,729],{"class":395}," TownshipClient",[63,731,732],{"class":69}," }",[63,734,735],{"class":402}," from",[63,737,91],{"class":90},[63,739,740],{"class":94},"townshipcanada",[63,742,84],{"class":90},[63,744,477],{"class":69},[63,746,747],{"class":65,"line":73},[63,748,483],{"emptyLinePlaceholder":482},[63,750,751,753,756,758,762,764,766,769,772,774,776,778,780,782,784,786,788],{"class":65,"line":103},[63,752,392],{"class":391},[63,754,755],{"class":395}," client",[63,757,399],{"class":69},[63,759,761],{"class":760},"sVsLi"," new",[63,763,729],{"class":406},[63,765,591],{"class":410},[63,767,768],{"class":69},"{",[63,770,771],{"class":432}," apiKey",[63,773,87],{"class":69},[63,775,450],{"class":395},[63,777,453],{"class":69},[63,779,456],{"class":395},[63,781,453],{"class":69},[63,783,461],{"class":395},[63,785,732],{"class":69},[63,787,474],{"class":410},[63,789,477],{"class":69},[63,791,792,794,797,799,801,803,805,808,810,812,815,817,819],{"class":65,"line":118},[63,793,392],{"class":391},[63,795,796],{"class":395}," result",[63,798,399],{"class":69},[63,800,403],{"class":402},[63,802,755],{"class":395},[63,804,453],{"class":69},[63,806,807],{"class":406},"search",[63,809,591],{"class":410},[63,811,84],{"class":90},[63,813,814],{"class":94},"NW-25-024-01W5",[63,816,84],{"class":90},[63,818,474],{"class":410},[63,820,477],{"class":69},[63,822,823,825,827,829,831,834,836,839,841,843,845,848,850,852,854,856,858],{"class":65,"line":140},[63,824,583],{"class":395},[63,826,453],{"class":69},[63,828,588],{"class":406},[63,830,591],{"class":410},[63,832,833],{"class":395},"result",[63,835,453],{"class":69},[63,837,838],{"class":395},"latitude",[63,840,171],{"class":69},[63,842,796],{"class":395},[63,844,453],{"class":69},[63,846,847],{"class":395},"longitude",[63,849,171],{"class":69},[63,851,796],{"class":395},[63,853,453],{"class":69},[63,855,299],{"class":395},[63,857,474],{"class":410},[63,859,477],{"class":69},[11,861,862,709,865],{},[706,863,864],{},"Python",[15,866,867],{},"pip install townshipcanada",[43,869,873],{"className":870,"code":871,"language":872,"meta":51,"style":51},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","from townshipcanada import TownshipClient\n\nclient = TownshipClient(api_key=os.environ[\"TC_API_KEY\"])\nresult = client.search(\"NW-25-024-01W5\")\nprint(result.latitude, result.longitude, result.province)\n","python",[15,874,875,889,893,932,956],{"__ignoreMap":51},[63,876,877,880,884,886],{"class":65,"line":66},[63,878,879],{"class":402},"from",[63,881,883],{"class":882},"sftqT"," townshipcanada ",[63,885,724],{"class":402},[63,887,888],{"class":882}," TownshipClient\n",[63,890,891],{"class":65,"line":73},[63,892,483],{"emptyLinePlaceholder":482},[63,894,895,898,901,904,906,910,912,915,917,921,923,925,927,929],{"class":65,"line":103},[63,896,897],{"class":882},"client ",[63,899,900],{"class":69},"=",[63,902,729],{"class":903},"siWMO",[63,905,591],{"class":69},[63,907,909],{"class":908},"sqOPj","api_key",[63,911,900],{"class":69},[63,913,914],{"class":903},"os",[63,916,453],{"class":69},[63,918,920],{"class":919},"sBPpx","environ",[63,922,523],{"class":69},[63,924,84],{"class":90},[63,926,461],{"class":94},[63,928,84],{"class":90},[63,930,931],{"class":69},"])\n",[63,933,934,937,939,941,943,945,947,949,951,953],{"class":65,"line":118},[63,935,936],{"class":882},"result ",[63,938,900],{"class":69},[63,940,755],{"class":882},[63,942,453],{"class":69},[63,944,807],{"class":903},[63,946,591],{"class":69},[63,948,84],{"class":90},[63,950,814],{"class":94},[63,952,84],{"class":90},[63,954,955],{"class":69},")\n",[63,957,958,962,964,966,968,970,972,974,976,978,980,982,984,986],{"class":65,"line":140},[63,959,961],{"class":960},"sJdAF","print",[63,963,591],{"class":69},[63,965,833],{"class":903},[63,967,453],{"class":69},[63,969,838],{"class":919},[63,971,171],{"class":69},[63,973,796],{"class":903},[63,975,453],{"class":69},[63,977,847],{"class":919},[63,979,171],{"class":69},[63,981,796],{"class":903},[63,983,453],{"class":69},[63,985,299],{"class":919},[63,987,955],{"class":69},[11,989,990],{},"Both SDKs wrap every endpoint with typed methods - no manual fetch calls or GeoJSON parsing required.",[26,992,994],{"id":993},"step-3-add-autocomplete-for-user-input","Step 3: Add Autocomplete for User Input",[11,996,997,998,1002],{},"If your application has a search field where users type legal land descriptions, the ",[34,999,1001],{"href":1000},"\u002Fguides\u002Fautocomplete-api-guide","Autocomplete API"," returns suggestions as they type. This catches formatting errors before they become bad lookups:",[43,1004,1007],{"className":1005,"code":1006,"language":48},[46],"GET https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location?location=NW-25-024\n",[15,1008,1006],{"__ignoreMap":51},[11,1010,1011],{},"The response includes matching descriptions ranked by relevance, so users pick from valid options instead of guessing at format.",[26,1013,1015],{"id":1014},"step-4-handle-bulk-data-with-the-batch-endpoint","Step 4: Handle Bulk Data with the Batch Endpoint",[11,1017,1018],{},"Most real-world integrations need to convert more than one location at a time. A pipeline company importing 230 well crossings, a crop insurance provider processing 2,000 policy applications, an O&G data team enriching a production database - these are batch jobs.",[11,1020,32,1021,1025,1026,1029],{},[34,1022,1024],{"href":1023},"\u002Fguides\u002Fbatch-api-guide","Batch API"," accepts up to 100 legal land descriptions per request. The npm SDK's ",[15,1027,1028],{},"batchSearch()"," method automatically chunks larger datasets:",[43,1031,1033],{"className":715,"code":1032,"language":717,"meta":51,"style":51},"const locations = [\n  \"LSD 06-32-048-07W5\",\n  \"NE-14-032-21W4\",\n  \"NW-25-024-01W5\"\n  \u002F\u002F ... hundreds more\n];\n\nconst batch = await client.batchSearch(locations);\nconsole.log(`Converted: ${batch.success} of ${batch.total}`);\n",[15,1034,1035,1047,1058,1069,1077,1083,1089,1093,1120],{"__ignoreMap":51},[63,1036,1037,1039,1042,1044],{"class":65,"line":66},[63,1038,392],{"class":391},[63,1040,1041],{"class":395}," locations",[63,1043,399],{"class":69},[63,1045,1046],{"class":410}," [\n",[63,1048,1049,1051,1054,1056],{"class":65,"line":73},[63,1050,77],{"class":90},[63,1052,1053],{"class":94},"LSD 06-32-048-07W5",[63,1055,84],{"class":90},[63,1057,100],{"class":69},[63,1059,1060,1062,1065,1067],{"class":65,"line":103},[63,1061,77],{"class":90},[63,1063,1064],{"class":94},"NE-14-032-21W4",[63,1066,84],{"class":90},[63,1068,100],{"class":69},[63,1070,1071,1073,1075],{"class":65,"line":118},[63,1072,77],{"class":90},[63,1074,814],{"class":94},[63,1076,311],{"class":90},[63,1078,1079],{"class":65,"line":140},[63,1080,1082],{"class":1081},"s9Tkl","  \u002F\u002F ... hundreds more\n",[63,1084,1085,1087],{"class":65,"line":196},[63,1086,530],{"class":410},[63,1088,477],{"class":69},[63,1090,1091],{"class":65,"line":211},[63,1092,483],{"emptyLinePlaceholder":482},[63,1094,1095,1097,1100,1102,1104,1106,1108,1111,1113,1116,1118],{"class":65,"line":232},[63,1096,392],{"class":391},[63,1098,1099],{"class":395}," batch",[63,1101,399],{"class":69},[63,1103,403],{"class":402},[63,1105,755],{"class":395},[63,1107,453],{"class":69},[63,1109,1110],{"class":406},"batchSearch",[63,1112,591],{"class":410},[63,1114,1115],{"class":395},"locations",[63,1117,474],{"class":410},[63,1119,477],{"class":69},[63,1121,1122,1124,1126,1128,1130,1132,1135,1137,1140,1142,1145,1147,1150,1152,1154,1156,1159,1161,1163,1165],{"class":65,"line":252},[63,1123,583],{"class":395},[63,1125,453],{"class":69},[63,1127,588],{"class":406},[63,1129,591],{"class":410},[63,1131,594],{"class":90},[63,1133,1134],{"class":94},"Converted: ",[63,1136,601],{"class":600},[63,1138,1139],{"class":604},"batch",[63,1141,453],{"class":69},[63,1143,1144],{"class":604},"success",[63,1146,616],{"class":600},[63,1148,1149],{"class":94}," of ",[63,1151,601],{"class":600},[63,1153,1139],{"class":604},[63,1155,453],{"class":69},[63,1157,1158],{"class":604},"total",[63,1160,616],{"class":600},[63,1162,594],{"class":90},[63,1164,474],{"class":410},[63,1166,477],{"class":69},[11,1168,1169,1170,1174,1175,1178],{},"For warehouse-scale conversion, Township Canada also runs as a ",[34,1171,1173],{"href":1172},"\u002Fblog\u002Fsnowflake-dls-enrichment","Snowflake External Function"," - call ",[15,1176,1177],{},"TOWNSHIP_CONVERT(lld_column)"," directly in SQL without exporting data.",[26,1180,1182],{"id":1181},"common-use-cases","Common Use Cases",[11,1184,1185],{},"A legal land description API in Canada fits wherever Canadian land locations show up in software:",[1187,1188,1189,1201,1212,1218,1229],"ul",{},[1190,1191,1192,1195,1196,1200],"li",{},[706,1193,1194],{},"Well site lookup for O&G applications"," - Field dispatch tools convert UWI locations to GPS for crew navigation. A ",[34,1197,1199],{"href":1198},"\u002Fblog\u002Foil-gas-legal-land-descriptions","detailed breakdown of energy-industry workflows"," covers the specifics.",[1190,1202,1203,1206,1207,1211],{},[706,1204,1205],{},"Rural property platforms"," - Listings in ",[34,1208,1210],{"href":1209},"\u002Flearn\u002Fsystems\u002Fdls","DLS format"," get map pins and quarter-section boundaries for buyer-facing search.",[1190,1213,1214,1217],{},[706,1215,1216],{},"Field crew dispatch tools"," - Turn legal descriptions from work orders into GPS coordinates that mobile devices can navigate to.",[1190,1219,1220,1223,1224,1228],{},[706,1221,1222],{},"Crop insurance systems"," - Batch-convert ",[34,1225,1227],{"href":1226},"\u002Flearn\u002Fhow-to\u002Fquarter-section-finder","quarter sections"," from policy applications and display them on maps for adjuster review.",[1190,1230,1231,1234],{},[706,1232,1233],{},"Data warehouse enrichment"," - Add GPS columns to tables of legal land descriptions without moving data out of Snowflake or Databricks.",[26,1236,1238],{"id":1237},"pricing-that-scales-with-your-usage","Pricing That Scales with Your Usage",[11,1240,1241],{},"The legal land description API in Canada is priced by request volume, not per-seat:",[1243,1244,1245,1261],"table",{},[1246,1247,1248],"thead",{},[1249,1250,1251,1255,1258],"tr",{},[1252,1253,1254],"th",{},"Plan",[1252,1256,1257],{},"Monthly Cost",[1252,1259,1260],{},"Requests Included",[1262,1263,1264,1276,1287],"tbody",{},[1249,1265,1266,1270,1273],{},[1267,1268,1269],"td",{},"Build",[1267,1271,1272],{},"$20\u002Fmo",[1267,1274,1275],{},"1,000",[1249,1277,1278,1281,1284],{},[1267,1279,1280],{},"Scale",[1267,1282,1283],{},"$100\u002Fmo",[1267,1285,1286],{},"10,000",[1249,1288,1289,1292,1295],{},[1267,1290,1291],{},"Enterprise",[1267,1293,1294],{},"$500\u002Fmo",[1267,1296,1297],{},"100,000",[11,1299,1300,1301,453],{},"Autocomplete, Batch, and Maps APIs are available as separate subscriptions. Full pricing details are on the ",[34,1302,1304],{"href":1303},"\u002Fapi","API page",[26,1306,1308],{"id":1307},"start-integrating","Start Integrating",[11,1310,1311,1312,1316,1317,647,1321,647,1325,1329,1330,453],{},"The setup takes less than five minutes: create an account, generate a key, and make your first request. The ",[34,1313,1315],{"href":1314},"\u002Fguides\u002Fapi-integration","API integration guide"," covers authentication, error handling, and response formats in detail. If you're building with a mapping library, Township Canada has step-by-step guides for ",[34,1318,1320],{"href":1319},"\u002Fguides\u002Fgoogle-maps-integration","Google Maps",[34,1322,1324],{"href":1323},"\u002Fguides\u002Fmapbox-integration","Mapbox GL JS",[34,1326,1328],{"href":1327},"\u002Fguides\u002Fleaflet-integration","Leaflet",", and ",[34,1331,1333],{"href":1332},"\u002Fguides\u002Fopenlayers-integration","OpenLayers",[11,1335,1336],{},"Your application handles the user experience. The API handles the conversion layer. One endpoint, any Canadian survey system, sub-200ms response.",[1338,1339,1340],"style",{},"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 .srjyR, html code.shiki .srjyR{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html .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 .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 .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 .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 .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sJdAF, html code.shiki .sJdAF{--shiki-light:#6182B8;--shiki-default:#998418;--shiki-dark:#B8A965}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 .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 .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 .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}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 .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}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}",{"title":51,"searchDepth":73,"depth":73,"links":1342},[1343,1344,1345,1348,1349,1350,1351,1352],{"id":28,"depth":73,"text":29},{"id":342,"depth":73,"text":343},{"id":375,"depth":73,"text":376,"children":1346},[1347],{"id":698,"depth":103,"text":699},{"id":993,"depth":73,"text":994},{"id":1014,"depth":73,"text":1015},{"id":1181,"depth":73,"text":1182},{"id":1237,"depth":73,"text":1238},{"id":1307,"depth":73,"text":1308},"guides","https:\u002F\u002Fb9bukyyl5yuyveqq.public.blob.vercel-storage.com\u002Fimages\u002Fblog\u002F2026-03\u002F78e9e64b-533f-429a-a69b-7a061dc4b81f.jpeg","2026-04-28","Use the legal land description API in Canada to add DLS, LSD, and NTS conversion to your app. Code examples, SDKs, and pricing.","md",{},"\u002Fblog\u002Fintegrate-legal-land-description-api-canada",{"title":5,"description":1356},"blog\u002Fintegrate-legal-land-description-api-canada",[1363,1364,1365,1366],"Developer","API","Integration","Tutorial","qKBKW1xJbvHshpoP8ywWrzuzOLE0PxV5VGT31EES5Yk"]