[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-\u002Fblog\u002Fplss-parcel-boundary-polygon-geojson-api":3},{"id":4,"title":5,"body":6,"cover":1062,"date":1063,"description":1064,"draft":1065,"extension":1066,"meta":1067,"navigation":607,"path":1070,"seo":1071,"stem":1072,"tags":1073,"__hash__":1079},"blog\u002Fblog\u002Fplss-parcel-boundary-polygon-geojson-api.md","PLSS Parcel Boundary Polygons: Section and Quarter-Section Shapes Now in the API",{"type":7,"value":8,"toc":1052},"minimark",[9,13,16,21,24,27,36,40,52,55,58,437,440,444,451,454,457,461,464,471,482,485,489,492,498,507,513,519,523,526,534,537,543,557,565,569,580,772,775,1018,1030,1034,1040,1043,1048],[10,11,12],"p",{},"A centroid tells you where the center of a parcel is. A PLSS parcel boundary polygon tells you what the parcel actually looks like on the ground.",[10,14,15],{},"For most mapping workflows, a single point is not enough. If you are checking whether a pipeline right-of-way crosses Section 12, detecting overlap between a mineral lease and a surface agreement, or verifying that a 160-acre NE¼ description matches the actual quarter-section boundary, you need the shape — not the pin. The Township America API now returns that shape: a full GeoJSON Polygon boundary for every Section and Quarter-Section lookup, sourced from official BLM CadNSDI survey data.",[17,18,20],"h2",{"id":19},"why-centroid-coordinates-fall-short","Why centroid coordinates fall short",[10,22,23],{},"A centroid is useful for many workflows. It gets you through APD filings when coordinates are all that is required, and it drops a pin on a map for quick verification. But a PLSS parcel boundary polygon is a different kind of data.",[10,25,26],{},"When you query T4N R5E Sec 12 NE¼, 6th Principal Meridian, the centroid gives you a single latitude\u002Flongitude pair near the center of that quarter section. What you cannot determine from that point alone: where the exact boundary runs, whether a project footprint fits inside the 160-acre quarter, or how the quarter-section line aligns against neighboring parcels. For spatial analysis — the kind GIS analysts and survey teams do every day — you need the closed polygon.",[10,28,29,30,35],{},"The PLSS is not a uniform grid. Sections vary in size due to survey corrections, natural features, and convergence adjustments. The ",[31,32,34],"a",{"href":33},"\u002Fblog\u002Fwhy-approximate-isnt-good-enough-plss-conversion-accuracy","accuracy gap between a calculated centroid and the actual BLM-surveyed boundary"," can exceed 200 meters in irregular townships. With polygon output, you get the actual surveyed boundary — not a box inferred from grid math.",[17,37,39],{"id":38},"how-plss-polygon-output-works","How PLSS polygon output works",[10,41,42,43,47,48,51],{},"Every API response already returns a GeoJSON FeatureCollection. The ",[44,45,46],"code",{},"geometry"," field now includes the full PLSS parcel boundary polygon, returned as a ",[44,49,50],{},"GeoJSON Polygon"," type — a closed ring of coordinates tracing the exact perimeter of the described parcel.",[10,53,54],{},"The polygon coordinates come from official BLM CadNSDI survey data, the same source used for centroid lookups. No additional parameters are required — polygon geometry is included in every response by default.",[10,56,57],{},"Here is what the response looks like for a quarter-section lookup:",[59,60,65],"pre",{"className":61,"code":62,"language":63,"meta":64,"style":64},"language-json shiki shiki-themes material-theme-lighter github-light github-dark","{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n          [\n            [-105.2341, 40.4412],\n            [-105.2185, 40.4413],\n            [-105.2186, 40.4524],\n            [-105.2342, 40.4523],\n            [-105.2341, 40.4412]\n          ]\n        ]\n      },\n      \"properties\": {\n        \"description\": \"T4N R5E Sec 12 NE¼, 6th Principal Meridian\",\n        \"state\": \"Colorado\",\n        \"county\": \"Larimer\",\n        \"meridian\": \"Sixth Principal Meridian\",\n        \"acres\": 159.8\n      }\n    }\n  ]\n}\n","json","",[44,66,67,76,106,121,127,149,163,185,199,205,223,238,253,268,282,288,294,300,314,335,356,377,398,413,419,425,431],{"__ignoreMap":64},[68,69,72],"span",{"class":70,"line":71},"line",1,[68,73,75],{"class":74},"sP7_E","{\n",[68,77,79,83,87,90,93,97,101,103],{"class":70,"line":78},2,[68,80,82],{"class":81},"s39Yj","  \"",[68,84,86],{"class":85},"sseR_","type",[68,88,89],{"class":81},"\"",[68,91,92],{"class":74},":",[68,94,96],{"class":95},"sjJ54"," \"",[68,98,100],{"class":99},"s_sjI","FeatureCollection",[68,102,89],{"class":95},[68,104,105],{"class":74},",\n",[68,107,109,111,114,116,118],{"class":70,"line":108},3,[68,110,82],{"class":81},[68,112,113],{"class":85},"features",[68,115,89],{"class":81},[68,117,92],{"class":74},[68,119,120],{"class":74}," [\n",[68,122,124],{"class":70,"line":123},4,[68,125,126],{"class":74},"    {\n",[68,128,130,133,136,138,140,142,145,147],{"class":70,"line":129},5,[68,131,132],{"class":81},"      \"",[68,134,86],{"class":135},"sZMiF",[68,137,89],{"class":81},[68,139,92],{"class":74},[68,141,96],{"class":95},[68,143,144],{"class":99},"Feature",[68,146,89],{"class":95},[68,148,105],{"class":74},[68,150,152,154,156,158,160],{"class":70,"line":151},6,[68,153,132],{"class":81},[68,155,46],{"class":135},[68,157,89],{"class":81},[68,159,92],{"class":74},[68,161,162],{"class":74}," {\n",[68,164,166,169,172,174,176,178,181,183],{"class":70,"line":165},7,[68,167,168],{"class":81},"        \"",[68,170,86],{"class":171},"srdBf",[68,173,89],{"class":81},[68,175,92],{"class":74},[68,177,96],{"class":95},[68,179,180],{"class":99},"Polygon",[68,182,89],{"class":95},[68,184,105],{"class":74},[68,186,188,190,193,195,197],{"class":70,"line":187},8,[68,189,168],{"class":81},[68,191,192],{"class":171},"coordinates",[68,194,89],{"class":81},[68,196,92],{"class":74},[68,198,120],{"class":74},[68,200,202],{"class":70,"line":201},9,[68,203,204],{"class":74},"          [\n",[68,206,208,211,214,217,220],{"class":70,"line":207},10,[68,209,210],{"class":74},"            [",[68,212,213],{"class":171},"-105.2341",[68,215,216],{"class":74},",",[68,218,219],{"class":171}," 40.4412",[68,221,222],{"class":74},"],\n",[68,224,226,228,231,233,236],{"class":70,"line":225},11,[68,227,210],{"class":74},[68,229,230],{"class":171},"-105.2185",[68,232,216],{"class":74},[68,234,235],{"class":171}," 40.4413",[68,237,222],{"class":74},[68,239,241,243,246,248,251],{"class":70,"line":240},12,[68,242,210],{"class":74},[68,244,245],{"class":171},"-105.2186",[68,247,216],{"class":74},[68,249,250],{"class":171}," 40.4524",[68,252,222],{"class":74},[68,254,256,258,261,263,266],{"class":70,"line":255},13,[68,257,210],{"class":74},[68,259,260],{"class":171},"-105.2342",[68,262,216],{"class":74},[68,264,265],{"class":171}," 40.4523",[68,267,222],{"class":74},[68,269,271,273,275,277,279],{"class":70,"line":270},14,[68,272,210],{"class":74},[68,274,213],{"class":171},[68,276,216],{"class":74},[68,278,219],{"class":171},[68,280,281],{"class":74},"]\n",[68,283,285],{"class":70,"line":284},15,[68,286,287],{"class":74},"          ]\n",[68,289,291],{"class":70,"line":290},16,[68,292,293],{"class":74},"        ]\n",[68,295,297],{"class":70,"line":296},17,[68,298,299],{"class":74},"      },\n",[68,301,303,305,308,310,312],{"class":70,"line":302},18,[68,304,132],{"class":81},[68,306,307],{"class":135},"properties",[68,309,89],{"class":81},[68,311,92],{"class":74},[68,313,162],{"class":74},[68,315,317,319,322,324,326,328,331,333],{"class":70,"line":316},19,[68,318,168],{"class":81},[68,320,321],{"class":171},"description",[68,323,89],{"class":81},[68,325,92],{"class":74},[68,327,96],{"class":95},[68,329,330],{"class":99},"T4N R5E Sec 12 NE¼, 6th Principal Meridian",[68,332,89],{"class":95},[68,334,105],{"class":74},[68,336,338,340,343,345,347,349,352,354],{"class":70,"line":337},20,[68,339,168],{"class":81},[68,341,342],{"class":171},"state",[68,344,89],{"class":81},[68,346,92],{"class":74},[68,348,96],{"class":95},[68,350,351],{"class":99},"Colorado",[68,353,89],{"class":95},[68,355,105],{"class":74},[68,357,359,361,364,366,368,370,373,375],{"class":70,"line":358},21,[68,360,168],{"class":81},[68,362,363],{"class":171},"county",[68,365,89],{"class":81},[68,367,92],{"class":74},[68,369,96],{"class":95},[68,371,372],{"class":99},"Larimer",[68,374,89],{"class":95},[68,376,105],{"class":74},[68,378,380,382,385,387,389,391,394,396],{"class":70,"line":379},22,[68,381,168],{"class":81},[68,383,384],{"class":171},"meridian",[68,386,89],{"class":81},[68,388,92],{"class":74},[68,390,96],{"class":95},[68,392,393],{"class":99},"Sixth Principal Meridian",[68,395,89],{"class":95},[68,397,105],{"class":74},[68,399,401,403,406,408,410],{"class":70,"line":400},23,[68,402,168],{"class":81},[68,404,405],{"class":171},"acres",[68,407,89],{"class":81},[68,409,92],{"class":74},[68,411,412],{"class":171}," 159.8\n",[68,414,416],{"class":70,"line":415},24,[68,417,418],{"class":74},"      }\n",[68,420,422],{"class":70,"line":421},25,[68,423,424],{"class":74},"    }\n",[68,426,428],{"class":70,"line":427},26,[68,429,430],{"class":74},"  ]\n",[68,432,434],{"class":70,"line":433},27,[68,435,436],{"class":74},"}\n",[10,438,439],{},"The ring closes back on itself — that is the GeoJSON Polygon specification. Drop it into QGIS, ArcGIS, Leaflet, or any GIS tool that reads GeoJSON and the quarter-section boundary renders immediately, no conversion needed.",[17,441,443],{"id":442},"a-real-example-t4n-r5e-sec-12-ne-6th-principal-meridian","A real example: T4N R5E Sec 12 NE¼, 6th Principal Meridian",[10,445,446,447,450],{},"This quarter section sits in Larimer County, Colorado, northeast of Fort Collins. The ",[31,448,393],{"href":449},"\u002Fguides\u002Ftownship-range-system"," governs most of eastern Colorado and Nebraska. In a perfectly square township, the NE¼ of Section 12 would be a tidy 160-acre rectangle. In practice, Section 12 is on the eastern edge of its township row — where convergence adjustments accumulate — and the actual parcel shape reflects that.",[10,452,453],{},"With centroid output, you get a single point: approximately 40.448°N, 105.226°W. With PLSS parcel boundary polygon output, you get the full boundary ring — all five coordinate pairs that define the closed shape. When you overlay that polygon on a topographic base map, you can see exactly where the quarter-section lines fall relative to roads, waterways, and adjacent parcels.",[10,455,456],{},"For a landman tracking mineral leases across several sections, that distinction matters. The polygon shows whether the lease block is contiguous, where gap parcels might exist, and how the section boundary compares to the well spacing unit.",[17,458,460],{"id":459},"section-vs-quarter-section-precision","Section vs. quarter-section precision",[10,462,463],{},"The API returns polygon boundaries at two levels of detail.",[10,465,466,470],{},[467,468,469],"strong",{},"Full Section",": The complete Section boundary — 640 acres in a regular township, or the actual surveyed acreage where the grid is irregular. Section polygons are useful for visualizing the PLSS grid, checking multi-section project areas, and building spatial indexes.",[10,472,473,476,477,481],{},[467,474,475],{},"Quarter Section and aliquot parts",": The boundary of the described ",[31,478,480],{"href":479},"\u002Flearn\u002Fglossary\u002Faliquot-parts","aliquot part"," — NE¼, SW¼, NW¼ NE¼, and so on, down to the quarter-quarter section level (40 acres). Quarter-section polygons are what precision workflows require: lease verification, acreage calculation, overlap detection, and environmental review at the parcel level.",[10,483,484],{},"Both levels draw from the same BLM CadNSDI source data. Both are returned in every API response. You do not specify a geometry type separately — the polygon is always included alongside the centroid.",[17,486,488],{"id":487},"what-you-can-build-with-polygon-output","What you can build with polygon output",[10,490,491],{},"The shift from centroid to polygon opens several workflows that a point coordinate cannot support.",[10,493,494,497],{},[467,495,496],{},"Overlap detection."," If you have two mineral leases described as adjacent quarter sections, you can test whether their polygon boundaries share a clean edge — or whether a gap or overlap exists due to survey irregularity. Standard GIS intersection tools handle this in milliseconds once you have the polygon geometries.",[10,499,500,503,504,506],{},[467,501,502],{},"Acreage verification."," A lease agreement referencing \"the NE¼ of Section 12 containing 160 acres, more or less\" can now be checked against the actual polygon area. For parcels near rivers or township boundaries, the actual surveyed acreage often differs from 160. The ",[44,505,405],{}," property in the API response reflects the BLM-recorded area for that specific parcel.",[10,508,509,512],{},[467,510,511],{},"Mapping and visualization."," Renewable energy siting teams, land agents, and title examiners building mapping applications no longer need to maintain separate PLSS polygon datasets. The API returns the shape directly, ready for QGIS, ArcGIS Online, Leaflet, or Mapbox.",[10,514,515,518],{},[467,516,517],{},"Multi-section project areas."," For large pipeline surveys or BLM right-of-way applications covering dozens of sections, batch polygon output lets you assemble a complete project footprint by unioning individual section polygons — no manual boundary tracing required.",[17,520,522],{"id":521},"api-reference","API reference",[10,524,525],{},"The PLSS parcel boundary polygon is available through the standard search endpoint:",[59,527,532],{"className":528,"code":530,"language":531},[529],"language-text","GET https:\u002F\u002Fdeveloper.townshipamerica.com\u002Fsearch\u002Flegal-location\n    ?location=T4N+R5E+Sec+12+NE+6th+Principal+Meridian\n","text",[44,533,530],{"__ignoreMap":64},[10,535,536],{},"Headers:",[59,538,541],{"className":539,"code":540,"language":531},[529],"x-api-key: your-api-key\n",[44,542,540],{"__ignoreMap":64},[10,544,545,546,549,550,552,553,556],{},"The response includes both the centroid ",[44,547,548],{},"Point"," geometry and the full boundary ",[44,551,180],{}," geometry in every lookup. No extra query parameters are needed. For batch workflows, the ",[44,554,555],{},"\u002Fbatch\u002Fsearch"," endpoint accepts up to 100 PLSS descriptions per request and returns polygon boundaries for each — useful when you need shapes for an entire project area at once.",[10,558,559,560,564],{},"For complete endpoint documentation, request formats, and rate limits, see the ",[31,561,563],{"href":562},"\u002Fapi","PLSS API reference",".",[17,566,568],{"id":567},"python-sdk-polygon-output-in-four-lines","Python SDK: polygon output in four lines",[10,570,571,572,579],{},"The ",[31,573,575,578],{"href":574},"\u002Fblog\u002Fpython-sdk-plss-pip-install-townshipamerica",[44,576,577],{},"townshipamerica"," Python SDK"," includes polygon geometry in its typed Pydantic response models. No raw JSON parsing required:",[59,581,585],{"className":582,"code":583,"language":584,"meta":64,"style":64},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","from townshipamerica import TownshipAmerica\n\nclient = TownshipAmerica(api_key=\"your-api-key\")\nresult = client.search(\"T4N R5E Sec 12 NE 6th Principal Meridian\")\n\n# Centroid coordinates\nprint(result.centroid.geometry.latitude, result.centroid.geometry.longitude)\n\n# Full boundary polygon — list of [lon, lat] pairs\npolygon_coords = result.features[0].geometry.coordinates\nprint(polygon_coords)\n","python",[44,586,587,603,609,641,667,671,677,723,727,732,761],{"__ignoreMap":64},[68,588,589,593,597,600],{"class":70,"line":71},[68,590,592],{"class":591},"sVHd0","from",[68,594,596],{"class":595},"su5hD"," townshipamerica ",[68,598,599],{"class":591},"import",[68,601,602],{"class":595}," TownshipAmerica\n",[68,604,605],{"class":70,"line":78},[68,606,608],{"emptyLinePlaceholder":607},true,"\n",[68,610,611,614,618,622,625,629,631,633,636,638],{"class":70,"line":108},[68,612,613],{"class":595},"client ",[68,615,617],{"class":616},"smGrS","=",[68,619,621],{"class":620},"slqww"," TownshipAmerica",[68,623,624],{"class":74},"(",[68,626,628],{"class":627},"s99_P","api_key",[68,630,617],{"class":616},[68,632,89],{"class":95},[68,634,635],{"class":99},"your-api-key",[68,637,89],{"class":95},[68,639,640],{"class":74},")\n",[68,642,643,646,648,651,653,656,658,660,663,665],{"class":70,"line":123},[68,644,645],{"class":595},"result ",[68,647,617],{"class":616},[68,649,650],{"class":595}," client",[68,652,564],{"class":74},[68,654,655],{"class":620},"search",[68,657,624],{"class":74},[68,659,89],{"class":95},[68,661,662],{"class":99},"T4N R5E Sec 12 NE 6th Principal Meridian",[68,664,89],{"class":95},[68,666,640],{"class":74},[68,668,669],{"class":70,"line":129},[68,670,608],{"emptyLinePlaceholder":607},[68,672,673],{"class":70,"line":151},[68,674,676],{"class":675},"sutJx","# Centroid coordinates\n",[68,678,679,683,685,688,690,694,696,698,700,703,705,708,710,712,714,716,718,721],{"class":70,"line":165},[68,680,682],{"class":681},"sptTA","print",[68,684,624],{"class":74},[68,686,687],{"class":620},"result",[68,689,564],{"class":74},[68,691,693],{"class":692},"skxfh","centroid",[68,695,564],{"class":74},[68,697,46],{"class":692},[68,699,564],{"class":74},[68,701,702],{"class":692},"latitude",[68,704,216],{"class":74},[68,706,707],{"class":620}," result",[68,709,564],{"class":74},[68,711,693],{"class":692},[68,713,564],{"class":74},[68,715,46],{"class":692},[68,717,564],{"class":74},[68,719,720],{"class":692},"longitude",[68,722,640],{"class":74},[68,724,725],{"class":70,"line":187},[68,726,608],{"emptyLinePlaceholder":607},[68,728,729],{"class":70,"line":201},[68,730,731],{"class":675},"# Full boundary polygon — list of [lon, lat] pairs\n",[68,733,734,737,739,741,743,745,748,751,754,756,758],{"class":70,"line":207},[68,735,736],{"class":595},"polygon_coords ",[68,738,617],{"class":616},[68,740,707],{"class":595},[68,742,564],{"class":74},[68,744,113],{"class":692},[68,746,747],{"class":74},"[",[68,749,750],{"class":171},"0",[68,752,753],{"class":74},"].",[68,755,46],{"class":692},[68,757,564],{"class":74},[68,759,760],{"class":692},"coordinates\n",[68,762,763,765,767,770],{"class":70,"line":225},[68,764,682],{"class":681},[68,766,624],{"class":74},[68,768,769],{"class":620},"polygon_coords",[68,771,640],{"class":74},[10,773,774],{},"To load polygon results into GeoPandas for spatial analysis:",[59,776,778],{"className":582,"code":777,"language":584,"meta":64,"style":64},"import geopandas as gpd\nfrom shapely.geometry import shape\n\nfeatures = result.features\ngdf = gpd.GeoDataFrame(\n    [f.properties for f in features],\n    geometry=[shape(f.geometry.dict()) for f in features],\n    crs=\"EPSG:4326\"\n)\n\n# Spatial joins, area calculations, overlap detection\nprint(gdf[[\"description\", \"acres\", \"geometry\"]])\n\n# Export to shapefile or GeoJSON for QGIS \u002F ArcGIS\ngdf.to_file(\"parcels.geojson\", driver=\"GeoJSON\")\n",[44,779,780,793,810,814,828,846,872,910,925,929,933,938,975,979,984],{"__ignoreMap":64},[68,781,782,784,787,790],{"class":70,"line":71},[68,783,599],{"class":591},[68,785,786],{"class":595}," geopandas ",[68,788,789],{"class":591},"as",[68,791,792],{"class":595}," gpd\n",[68,794,795,797,800,802,805,807],{"class":70,"line":78},[68,796,592],{"class":591},[68,798,799],{"class":595}," shapely",[68,801,564],{"class":74},[68,803,804],{"class":595},"geometry ",[68,806,599],{"class":591},[68,808,809],{"class":595}," shape\n",[68,811,812],{"class":70,"line":108},[68,813,608],{"emptyLinePlaceholder":607},[68,815,816,819,821,823,825],{"class":70,"line":123},[68,817,818],{"class":595},"features ",[68,820,617],{"class":616},[68,822,707],{"class":595},[68,824,564],{"class":74},[68,826,827],{"class":692},"features\n",[68,829,830,833,835,838,840,843],{"class":70,"line":129},[68,831,832],{"class":595},"gdf ",[68,834,617],{"class":616},[68,836,837],{"class":595}," gpd",[68,839,564],{"class":74},[68,841,842],{"class":620},"GeoDataFrame",[68,844,845],{"class":74},"(\n",[68,847,848,851,854,856,858,861,864,867,870],{"class":70,"line":151},[68,849,850],{"class":74},"    [",[68,852,853],{"class":620},"f",[68,855,564],{"class":74},[68,857,307],{"class":692},[68,859,860],{"class":591}," for",[68,862,863],{"class":620}," f ",[68,865,866],{"class":591},"in",[68,868,869],{"class":620}," features",[68,871,222],{"class":74},[68,873,874,877,879,881,884,886,888,890,892,894,897,900,902,904,906,908],{"class":70,"line":165},[68,875,876],{"class":627},"    geometry",[68,878,617],{"class":616},[68,880,747],{"class":74},[68,882,883],{"class":620},"shape",[68,885,624],{"class":74},[68,887,853],{"class":620},[68,889,564],{"class":74},[68,891,46],{"class":692},[68,893,564],{"class":74},[68,895,896],{"class":620},"dict",[68,898,899],{"class":74},"())",[68,901,860],{"class":591},[68,903,863],{"class":620},[68,905,866],{"class":591},[68,907,869],{"class":620},[68,909,222],{"class":74},[68,911,912,915,917,919,922],{"class":70,"line":187},[68,913,914],{"class":627},"    crs",[68,916,617],{"class":616},[68,918,89],{"class":95},[68,920,921],{"class":99},"EPSG:4326",[68,923,924],{"class":95},"\"\n",[68,926,927],{"class":70,"line":201},[68,928,640],{"class":74},[68,930,931],{"class":70,"line":207},[68,932,608],{"emptyLinePlaceholder":607},[68,934,935],{"class":70,"line":225},[68,936,937],{"class":675},"# Spatial joins, area calculations, overlap detection\n",[68,939,940,942,944,947,950,952,954,956,958,960,962,964,966,968,970,972],{"class":70,"line":240},[68,941,682],{"class":681},[68,943,624],{"class":74},[68,945,946],{"class":620},"gdf",[68,948,949],{"class":74},"[[",[68,951,89],{"class":95},[68,953,321],{"class":99},[68,955,89],{"class":95},[68,957,216],{"class":74},[68,959,96],{"class":95},[68,961,405],{"class":99},[68,963,89],{"class":95},[68,965,216],{"class":74},[68,967,96],{"class":95},[68,969,46],{"class":99},[68,971,89],{"class":95},[68,973,974],{"class":74},"]])\n",[68,976,977],{"class":70,"line":255},[68,978,608],{"emptyLinePlaceholder":607},[68,980,981],{"class":70,"line":270},[68,982,983],{"class":675},"# Export to shapefile or GeoJSON for QGIS \u002F ArcGIS\n",[68,985,986,988,990,993,995,997,1000,1002,1004,1007,1009,1011,1014,1016],{"class":70,"line":284},[68,987,946],{"class":595},[68,989,564],{"class":74},[68,991,992],{"class":620},"to_file",[68,994,624],{"class":74},[68,996,89],{"class":95},[68,998,999],{"class":99},"parcels.geojson",[68,1001,89],{"class":95},[68,1003,216],{"class":74},[68,1005,1006],{"class":627}," driver",[68,1008,617],{"class":616},[68,1010,89],{"class":95},[68,1012,1013],{"class":99},"GeoJSON",[68,1015,89],{"class":95},[68,1017,640],{"class":74},[10,1019,1020,1021,1024,1025,1029],{},"The GeoDataFrame is ready for ",[44,1022,1023],{},".plot()",", spatial joins, or any GeoPandas operation. For teams already running ",[31,1026,1028],{"href":1027},"\u002Fblog\u002Fhow-landmen-use-plss-api-apd-workflows","APD and oil and gas permit workflows"," through the API, section and quarter-section shapes are now available in the same pipeline — no separate geometry request.",[17,1031,1033],{"id":1032},"access-polygon-output","Access polygon output",[10,1035,1036,1037,1039],{},"Polygon boundaries are available on all paid plans and are returned by default — no changes to existing code needed if you already call the search endpoint. The ",[44,1038,46],{}," field is populated in every response.",[10,1041,1042],{},"Free tier accounts (50 conversions per month) also receive polygon output in their API responses. Upgrading to Pro adds unlimited conversions, batch polygon requests across all 30 PLSS states and all 37 principal meridians, and priority support for GIS and developer teams.",[10,1044,1045],{},[31,1046,1047],{"href":562},"See the API documentation and pricing →",[1049,1050,1051],"style",{},"html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sseR_, html code.shiki .sseR_{--shiki-light:#9C3EDA;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":64,"searchDepth":78,"depth":78,"links":1053},[1054,1055,1056,1057,1058,1059,1060,1061],{"id":19,"depth":78,"text":20},{"id":38,"depth":78,"text":39},{"id":442,"depth":78,"text":443},{"id":459,"depth":78,"text":460},{"id":487,"depth":78,"text":488},{"id":521,"depth":78,"text":522},{"id":567,"depth":78,"text":568},{"id":1032,"depth":78,"text":1033},"https:\u002F\u002Fhswwubqgpp6hnvaz.public.blob.vercel-storage.com\u002Fimages\u002Fblog\u002F2026-05\u002F901514f3-357f-49ba-8b2f-d262f6944fab.jpeg","2026-05-05T10:00:00Z","The Township America API now returns full GeoJSON polygon boundaries for PLSS sections and quarter-sections. Use PLSS parcel boundary polygons directly in QGIS, ArcGIS, or Leaflet without post-processing.",false,"md",{"author":1068,"category":1069},"Township America","product","\u002Fblog\u002Fplss-parcel-boundary-polygon-geojson-api",{"title":5,"description":1064},"blog\u002Fplss-parcel-boundary-polygon-geojson-api",[1074,1013,1075,1076,180,1077,1078],"API","GIS","PLSS","Spatial Data","Developer","DLzbC-zGT4qwjdwSZc9PyXNbBD8qWTPdztJof4cyCxo"]