curl "https://client.tukanmx.com/tukan-atlas/polygons/detailed/?entity_type_id=MUNICIPALITY&entity_code=16053&valid_to=null" \
-H "Authorization: Token $API_TUKAN"
import os
import requests
headers = {"Authorization": f"Token {os.environ['API_TUKAN']}"}
resp = requests.get(
"https://client.tukanmx.com/tukan-atlas/polygons/detailed/",
headers=headers,
params={
"entity_type_id": "MUNICIPALITY",
"entity_code": "16053",
"valid_to": "null",
},
)
resp.raise_for_status()
p = resp.json()["results"][0]
print("centro:", p["centroid_lat"], p["centroid_lon"])
curl "https://client.tukanmx.com/tukan-atlas/polygons/detailed/?entity_type_id=MUNICIPALITY&entity_code=16053&valid_to=null&geometry=true" \
-H "Authorization: Token $API_TUKAN"
{
"count": 1,
"page": 1,
"page_size": 100,
"results": [
{
"polygon_code": "mex_municipality_16053_20250101",
"entity_type_id": "MUNICIPALITY",
"entity_code": "16053",
"valid_from": "2025-01-01",
"valid_to": null,
"area_km2": 1184.81,
"source_id": "MEX_INEGI",
"bbox_west": -101.5089,
"bbox_east": -101.0426,
"bbox_south": 19.4472,
"bbox_north": 19.8623,
"centroid_lon": -101.2791,
"centroid_lat": 19.6666
}
]
}
{
"count": 1,
"page": 1,
"page_size": 20,
"results": [
{
"polygon_code": "mex_municipality_16053_20250101",
"entity_type_id": "MUNICIPALITY",
"entity_code": "16053",
"valid_from": "2025-01-01",
"valid_to": null,
"area_km2": 1184.81,
"source_id": "MEX_INEGI",
"bbox_west": -101.5089,
"bbox_east": -101.0426,
"bbox_south": 19.4472,
"bbox_north": 19.8623,
"centroid_lon": -101.2791,
"centroid_lat": 19.6666,
"geometry": {"type": "MultiPolygon", "coordinates": ["..."]}
}
]
}
Polígonos
Las versiones vigentes e históricas de la geometría de cada entidad, con su bounding box y centroide.
curl "https://client.tukanmx.com/tukan-atlas/polygons/detailed/?entity_type_id=MUNICIPALITY&entity_code=16053&valid_to=null" \
-H "Authorization: Token $API_TUKAN"
import os
import requests
headers = {"Authorization": f"Token {os.environ['API_TUKAN']}"}
resp = requests.get(
"https://client.tukanmx.com/tukan-atlas/polygons/detailed/",
headers=headers,
params={
"entity_type_id": "MUNICIPALITY",
"entity_code": "16053",
"valid_to": "null",
},
)
resp.raise_for_status()
p = resp.json()["results"][0]
print("centro:", p["centroid_lat"], p["centroid_lon"])
curl "https://client.tukanmx.com/tukan-atlas/polygons/detailed/?entity_type_id=MUNICIPALITY&entity_code=16053&valid_to=null&geometry=true" \
-H "Authorization: Token $API_TUKAN"
{
"count": 1,
"page": 1,
"page_size": 100,
"results": [
{
"polygon_code": "mex_municipality_16053_20250101",
"entity_type_id": "MUNICIPALITY",
"entity_code": "16053",
"valid_from": "2025-01-01",
"valid_to": null,
"area_km2": 1184.81,
"source_id": "MEX_INEGI",
"bbox_west": -101.5089,
"bbox_east": -101.0426,
"bbox_south": 19.4472,
"bbox_north": 19.8623,
"centroid_lon": -101.2791,
"centroid_lat": 19.6666
}
]
}
{
"count": 1,
"page": 1,
"page_size": 20,
"results": [
{
"polygon_code": "mex_municipality_16053_20250101",
"entity_type_id": "MUNICIPALITY",
"entity_code": "16053",
"valid_from": "2025-01-01",
"valid_to": null,
"area_km2": 1184.81,
"source_id": "MEX_INEGI",
"bbox_west": -101.5089,
"bbox_east": -101.0426,
"bbox_south": 19.4472,
"bbox_north": 19.8623,
"centroid_lon": -101.2791,
"centroid_lat": 19.6666,
"geometry": {"type": "MultiPolygon", "coordinates": ["..."]}
}
]
}
valid_from y valid_to). La regla de oro es que valid_to en null es la versión vigente hoy, así que para casi cualquier análisis conviene filtrar ?valid_to=null.
Con el bbox y el centroide resuelves los casos de mapa más comunes.
- Centrar y hacer zoom, porque el bbox define el encuadre exacto de la entidad.
- Colocar un marcador o etiqueta, usando el centroide como punto representativo.
- Filtrar espacialmente, descartando entidades cuyo bbox ni siquiera intersecta tu área de interés antes de hacer cálculos finos.
Geometría completa (?geometry=true)
Si necesitas la geometría, pídela explícitamente con ?geometry=true: la respuesta incluye un campo geometry en formato GeoJSON (Polygon o MultiPolygon), listo para usarse tal cual en librerías de mapas como Leaflet, Mapbox GL o deck.gl.
- Es opt-in a propósito: sin
geometry=truela respuesta no cambia. Este es un listado paginado genérico y una consulta poco filtrada (por ejemplo solo?entity_type_id=MUNICIPALITY) puede matchear cientos de filas — regresar geometría completa en cada una reventaría el tamaño de la respuesta para quien no la pidió. - Tope de 20 resultados: al pedir
geometry=true,page_sizese limita a 20 como máximo y el total de resultados filtrados no puede superar 20 — acota tus filtros (por ejemplo a un soloentity_code) o la solicitud regresa 400. - Las coordenadas vienen redondeadas a 6 decimales (~11cm de precisión).
geometryregresanullen una fila si pedistegeometry=truepero ese polígono en particular no tiene geometría almacenada.
curl "https://client.tukanmx.com/tukan-atlas/polygons/detailed/?entity_type_id=MUNICIPALITY&entity_code=16053&valid_to=null" \
-H "Authorization: Token $API_TUKAN"
import os
import requests
headers = {"Authorization": f"Token {os.environ['API_TUKAN']}"}
resp = requests.get(
"https://client.tukanmx.com/tukan-atlas/polygons/detailed/",
headers=headers,
params={
"entity_type_id": "MUNICIPALITY",
"entity_code": "16053",
"valid_to": "null",
},
)
resp.raise_for_status()
p = resp.json()["results"][0]
print("centro:", p["centroid_lat"], p["centroid_lon"])
curl "https://client.tukanmx.com/tukan-atlas/polygons/detailed/?entity_type_id=MUNICIPALITY&entity_code=16053&valid_to=null&geometry=true" \
-H "Authorization: Token $API_TUKAN"
{
"count": 1,
"page": 1,
"page_size": 100,
"results": [
{
"polygon_code": "mex_municipality_16053_20250101",
"entity_type_id": "MUNICIPALITY",
"entity_code": "16053",
"valid_from": "2025-01-01",
"valid_to": null,
"area_km2": 1184.81,
"source_id": "MEX_INEGI",
"bbox_west": -101.5089,
"bbox_east": -101.0426,
"bbox_south": 19.4472,
"bbox_north": 19.8623,
"centroid_lon": -101.2791,
"centroid_lat": 19.6666
}
]
}
{
"count": 1,
"page": 1,
"page_size": 20,
"results": [
{
"polygon_code": "mex_municipality_16053_20250101",
"entity_type_id": "MUNICIPALITY",
"entity_code": "16053",
"valid_from": "2025-01-01",
"valid_to": null,
"area_km2": 1184.81,
"source_id": "MEX_INEGI",
"bbox_west": -101.5089,
"bbox_east": -101.0426,
"bbox_south": 19.4472,
"bbox_north": 19.8623,
"centroid_lon": -101.2791,
"centroid_lat": 19.6666,
"geometry": {"type": "MultiPolygon", "coordinates": ["..."]}
}
]
}
Autorizaciones
Token de autenticación. Formato requerido: Token tu-token (la palabra Token, un espacio y tu token). Solicita tu token escribiendo a contacto@tukanmx.com.
Parámetros de consulta
Número de página
Resultados por página
Tipo de entidad geográfica del polígono
COUNTRY, STATE, MUNICIPALITY, ZIPCODE, LOCALITY, AGEB, URBAN_BLOCK, RURAL_BLOCK, NEIGHBORHOOD "ZIPCODE"
Código geográfico de la entidad (coincidencia exacta)
"16053"
Código único del polígono (coincidencia exacta)
"mex_municipality_16053_20250101"
Fuente del polígono (coincidencia exacta)
"MEX_INEGI"
Fecha de expiración del polígono (YYYY-MM-DD). Usa null para filtrar solo polígonos vigentes.
null
Fecha de inicio de validez del polígono (YYYY-MM-DD)
"2020-01-01"
Búsqueda global en polygon_code y entity_code
Si es true, incluye la geometría completa del polígono (GeoJSON Polygon o MultiPolygon, coordenadas redondeadas a 6 decimales). Es opt-in: sin este parámetro la respuesta no cambia. Al pedir geometry=true en el listado, page_size se limita a 20 como máximo y el total de resultados filtrados no puede superar 20 (acota tus filtros, por ejemplo a un solo entity_code, o la solicitud regresa 400).
true
¿Esta página le ayudó?