> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usecroma.com/llms.txt
> Use this file to discover all available pages before exploring further.

# IGAC

> El catastro nacional de Colombia, a cargo del IGAC: cada predio, terreno, construcción, manzana y zona que administra, los valores de tierra con que se arman los avalúos, quién lleva el catastro de cada municipio y el avalúo vigente de cualquier predio del IGAC.

El Instituto Geográfico Agustín Codazzi (IGAC) es la autoridad catastral nacional de Colombia y el gestor catastral de 842 de sus 1.122 municipios. Su catastro es el registro sobre el que se cobra el impuesto predial: cada predio con su número predial de 30 dígitos, dirección, áreas, destino y construcciones, los polígonos de terrenos y construcciones, las manzanas, veredas y sectores donde están, y las zonas homogéneas con los valores de tierra con que se calcula cada avalúo.

Esta fuente guarda ese catastro completo, cerca de 6,8 millones de predios, 5,1 millones de terrenos y 3,8 millones de construcciones, refrescado desde la publicación mensual del IGAC, más las estadísticas del IGAC para cada municipio del país y el mapa de quién administra cada uno. Lo único que el registro abierto no trae es el avalúo: la consulta del predio se lo pide al catastro del IGAC, guarda la respuesta y después la sirve desde la copia de Croma.

El IGAC administra 842 de los 1.122 municipios de Colombia. Bogotá, Medellín, Cali, Barranquilla, el departamento de Antioquia y unos treinta municipios más llevan su propio catastro y no están en esta fuente; `igac_cadastral_managers` dice quién administra cada uno.

Busca predios por municipio, manzana o dirección; lee el avalúo de un predio por su número o por un punto en el mapa; y luego trae el terreno, sus construcciones, sus placas y las zonas a su alrededor.

## Buscar predios

`POST /co/igac/properties-search/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

Una sola búsqueda sobre cada predio del catastro del IGAC, acotada a un municipio, una manzana o un número anterior, y luego afinada por dirección, destino o zona.

| Campo | Tipo | Notas |
| - | - | - |
| `municipality_code` | string | Código DANE de cinco dígitos, opcional, p. ej. `17013` (Aguadas). Se requiere uno de `municipality_code`, `block_code` o `previous_cadastral_number`. |
| `query` | string | Palabras opcionales que se buscan en la dirección o el nombre del predio, p. ej. `calle 10`. |
| `block_code` | string | Código opcional de manzana o vereda, 17 dígitos: los primeros 17 de cualquier número predial en ella, p. ej. `17013000100000001`. |
| `economic_destination` | string | Código opcional de destino como lo asigna el IGAC: `A` Habitacional, `B` Industrial, `C` Comercial, `D` Agropecuario, `I` Institucional, `L` Agrícola, `M` Pecuario, `S` Lote urbanizado no construido, entre otros. |
| `zone` | enum | Opcional: `urban` o `rural`. |
| `previous_cadastral_number` | string | Número opcional de 20 dígitos que el predio tenía antes de la numeración nacional. |
| `page` | integer | Número de página, empieza en 1. Por defecto `1`. |
| `per_page` | integer | Resultados por página (1-100). Por defecto `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/properties-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "municipality_code": "17013",
        "economic_destination": "C",
        "zone": "urban"
      }'
```

Devuelve `as_of`, los filtros aplicados, `total` y `total_is_exact`, `page`, `per_page`, `total_pages`, `count` y `results[]`. Cada predio incluye `cadastral_number` (30 dígitos), `previous_cadastral_number` (el anterior de 20), `department_code`, `municipality_code`, `zone` (`urban` o `rural`), `zone_code`, `sector_code`, `block_code` (la manzana o vereda, los primeros 17 dígitos), `condition_code`, `address`, `economic_destination_code` y `economic_destination` (p. ej. `A` Habitacional, `C` Comercial, `D` Agropecuario), `land_area_m2`, `built_area_m2`, `land_zones[]` (`physical_zone_code`, `economic_zone_code`, `area_m2`), `buildings[]` (`rooms`, `bathrooms`, `shops`, `floors`, `typology_code`, `use_code`, `use`, `score`, `built_area_m2`) y `building_count`. Propietarios, avalúos y folios de matrícula no están en el registro abierto del IGAC; el avalúo sale de la consulta del predio.

<Note>
  El IGAC administra 842 de los 1.122 municipios de Colombia. Bogotá, Medellín, Cali, Barranquilla, el departamento de Antioquia y unos treinta municipios más llevan su propio catastro y no están en esta fuente; `igac_cadastral_managers` dice quién administra cada uno.
</Note>

## Un predio, con su avalúo

`POST /co/igac/property/v1` <a className="dataset-pill" href="/es/datasets#lookups">Lookup</a>

El predio tal como lo tiene hoy el catastro del IGAC, avalúo catastral incluido: la única cifra que el registro abierto no trae.

<Note>
  Responde desde la copia de Croma cuando tiene una respuesta reciente para la llave; si no, lee la fuente y guarda la respuesta. Cada respuesta dice cuándo se consultó la fuente por última vez (`checked_at`) y de dónde salió la respuesta (`served_from`).
</Note>

| Campo | Tipo | Notas |
| - | - | - |
| `cadastral_number` | string | **Obligatorio.** El número predial nacional de 30 dígitos del predio, p. ej. `170130001000000010001000000000`. Se ignoran espacios, puntos y guiones. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/property/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "cadastral_number": "170130001000000010001000000000" }'
```

Devuelve `found`, `cadastral_number`, `checked_at` (cuándo se consultó al IGAC por última vez), `served_from` (`copy`, `upstream` o `stale`) y `property`. `property` incluye `cadastral_number`, `previous_cadastral_number`, `department_code`, `municipality_code`, `municipality`, `address`, `land_area_m2`, `built_area_m2`, `economic_destination_code`, `economic_destination`, `appraisal` (el avalúo catastral vigente en pesos), `buildings[]` (`area_m2`, `use_code`, `use`, `score`, `floors`, `rooms`, `shops`, `bathrooms`), `latitude`, `longitude`, `geometry` (el terreno como GeoJSON en WGS84) y `checked_at`. `geometry` es GeoJSON en WGS84 (EPSG:4326), longitud primero, tal como lo dibuja el IGAC: referencial en ubicación y dimensiones, no certifica linderos.

<Note>
  Un número bajo el cual el catastro del IGAC no tiene predio devuelve `found: false` con HTTP 200, no un error. El IGAC administra 842 de los 1.122 municipios de Colombia. Bogotá, Medellín, Cali, Barranquilla, el departamento de Antioquia y unos treinta municipios más llevan su propio catastro y no están en esta fuente; `igac_cadastral_managers` dice quién administra cada uno.
</Note>

## El predio en un punto

`POST /co/igac/property-by-point/v1` <a className="dataset-pill" href="/es/datasets#lookups">Lookup</a>

Entra una coordenada, sale el predio del IGAC dibujado allí, con todo lo que responde la consulta del predio.

<Note>
  Responde desde la copia de Croma cuando tiene una respuesta reciente para la llave; si no, lee la fuente y guarda la respuesta. Cada respuesta dice cuándo se consultó la fuente por última vez (`checked_at`) y de dónde salió la respuesta (`served_from`).
</Note>

| Campo | Tipo | Notas |
| - | - | - |
| `latitude` | number | **Obligatorio.** Latitud en grados decimales (WGS84). |
| `longitude` | number | **Obligatorio.** Longitud en grados decimales (WGS84), negativa en Colombia. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/property-by-point/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "latitude": 5.6096, "longitude": -75.4557 }'
```

Devuelve `found`, `latitude`, `longitude`, `cadastral_number` (el terreno bajo el punto), `checked_at`, `served_from` y `property`. `property` incluye `cadastral_number`, `previous_cadastral_number`, `department_code`, `municipality_code`, `municipality`, `address`, `land_area_m2`, `built_area_m2`, `economic_destination_code`, `economic_destination`, `appraisal` (el avalúo catastral vigente en pesos), `buildings[]` (`area_m2`, `use_code`, `use`, `score`, `floors`, `rooms`, `shops`, `bathrooms`), `latitude`, `longitude`, `geometry` (el terreno como GeoJSON en WGS84) y `checked_at`.

## Un terreno

`POST /co/igac/parcel/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `cadastral_number` | string | **Obligatorio.** El número predial nacional de 30 dígitos del predio, p. ej. `170130001000000010001000000000`. Se ignoran espacios, puntos y guiones. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/parcel/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "cadastral_number": "170130001000000010001000000000" }'
```

Devuelve `as_of`, `found`, `cadastral_number` y `parcel` (`zone`, `department_code`, `municipality_code`, `block_code`, `previous_cadastral_number`, `basement_count`, `part_count`, `latitude`, `longitude`, `geometry`). `geometry` es GeoJSON en WGS84 (EPSG:4326), longitud primero, tal como lo dibuja el IGAC: referencial en ubicación y dimensiones, no certifica linderos.

## Terrenos de un municipio o una manzana

`POST /co/igac/parcels-search/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `municipality_code` | string | **Obligatorio.** Código DANE de cinco dígitos del municipio, p. ej. `17013` (Aguadas, Caldas). |
| `block_code` | string | Código opcional de manzana o vereda, 17 dígitos. |
| `zone` | enum | Opcional: `urban` o `rural`. |
| `page` | integer | Número de página, empieza en 1. Por defecto `1`. |
| `per_page` | integer | Resultados por página (1-50); cada resultado trae su geometría. Por defecto `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/parcels-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "municipality_code": "17013", "block_code": "17013000100000001" }'
```

Devuelve `as_of`, los filtros aplicados, `total` y `total_is_exact`, `page`, `per_page`, `total_pages`, `count` y `results[]`. Cada resultado es un terreno como lo devuelve la consulta de terreno. `geometry` es GeoJSON en WGS84 (EPSG:4326), longitud primero, tal como lo dibuja el IGAC: referencial en ubicación y dimensiones, no certifica linderos.

## Construcciones de un predio

`POST /co/igac/buildings-by-property/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `cadastral_number` | string | **Obligatorio.** El número predial nacional de 30 dígitos del predio, p. ej. `170130001000000010001000000000`. Se ignoran espacios, puntos y guiones. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/buildings-by-property/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "cadastral_number": "170130001000000010001000000000" }'
```

Devuelve `as_of`, `cadastral_number`, `count` y `buildings[]` (`id`, `parcel_code`, `identifier`, `construction_type`, `ownership_type`, `floors`, `basements`, `mezzanines`, `semi_basements`, `label`, `building_code`, `previous_code`, `zone`, `municipality_code`, `part_count`, `geometry`). `geometry` es GeoJSON en WGS84 (EPSG:4326), longitud primero, tal como lo dibuja el IGAC: referencial en ubicación y dimensiones, no certifica linderos.

## Manzanas de un municipio

`POST /co/igac/blocks-search/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `municipality_code` | string | **Obligatorio.** Código DANE de cinco dígitos del municipio, p. ej. `17013` (Aguadas, Caldas). |
| `page` | integer | Número de página, empieza en 1. Por defecto `1`. |
| `per_page` | integer | Resultados por página (1-50); cada resultado trae su geometría. Por defecto `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/blocks-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "municipality_code": "17013" }'
```

Devuelve `as_of`, los filtros aplicados, `total` y `total_is_exact`, `page`, `per_page`, `total_pages`, `count` y `results[]`. Cada resultado trae `code`, `neighborhood_code`, `previous_code`, `municipality_code`, `part_count`, `latitude`, `longitude` y `geometry`. `geometry` es GeoJSON en WGS84 (EPSG:4326), longitud primero, tal como lo dibuja el IGAC: referencial en ubicación y dimensiones, no certifica linderos.

## Veredas de un municipio

`POST /co/igac/rural-districts-search/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `municipality_code` | string | **Obligatorio.** Código DANE de cinco dígitos del municipio, p. ej. `17013` (Aguadas, Caldas). |
| `query` | string | Palabras opcionales del nombre de la vereda. |
| `page` | integer | Número de página, empieza en 1. Por defecto `1`. |
| `per_page` | integer | Resultados por página (1-50); cada resultado trae su geometría. Por defecto `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/rural-districts-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "municipality_code": "17013" }'
```

Devuelve `as_of`, los filtros aplicados, `total` y `total_is_exact`, `page`, `per_page`, `total_pages`, `count` y `results[]`. Cada resultado trae `code`, `name`, `names[]`, `sector_code`, `previous_code`, `municipality_code`, `part_count`, `latitude`, `longitude` y `geometry`. `geometry` es GeoJSON en WGS84 (EPSG:4326), longitud primero, tal como lo dibuja el IGAC: referencial en ubicación y dimensiones, no certifica linderos.

## Sectores y perímetros urbanos

`POST /co/igac/sectors-search/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `municipality_code` | string | **Obligatorio.** Código DANE de cinco dígitos del municipio, p. ej. `17013` (Aguadas, Caldas). |
| `zone` | enum | Opcional: `urban` o `rural`. |
| `page` | integer | Número de página, empieza en 1. Por defecto `1`. |
| `per_page` | integer | Resultados por página (1-50); cada resultado trae su geometría. Por defecto `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/sectors-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "municipality_code": "17013" }'
```

Devuelve `as_of`, los filtros, los campos de paginación, `sectors[]` (`id`, `code`, `zone`, `municipality_code`, `part_count`, `geometry`) y `urban_perimeters[]` (`id`, `name`, `name_code`, `appraisal_type`, `part_count`, `geometry`), los perímetros solo en la primera página. `geometry` es GeoJSON en WGS84 (EPSG:4326), longitud primero, tal como lo dibuja el IGAC: referencial en ubicación y dimensiones, no certifica linderos.

## Zonas geoeconómicas y sus valores de tierra

`POST /co/igac/economic-zones-search/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `municipality_code` | string | **Obligatorio.** Código DANE de cinco dígitos del municipio, p. ej. `17013` (Aguadas, Caldas). |
| `zone` | enum | Opcional: `urban` o `rural`. |
| `page` | integer | Número de página, empieza en 1. Por defecto `1`. |
| `per_page` | integer | Resultados por página (1-50); cada resultado trae su geometría. Por defecto `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/economic-zones-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "municipality_code": "17013", "zone": "urban" }'
```

Devuelve `as_of`, los filtros aplicados, `total` y `total_is_exact`, `page`, `per_page`, `total_pages`, `count` y `results[]`. Cada resultado trae `id`, `zone_code`, `zone`, `municipality_code`, `value_per_m2`, `value_per_hectare`, `physical_subzones[]`, `valid_from`, `part_count` y `geometry`. `geometry` es GeoJSON en WGS84 (EPSG:4326), longitud primero, tal como lo dibuja el IGAC: referencial en ubicación y dimensiones, no certifica linderos.

## Zonas físicas

`POST /co/igac/physical-zones-search/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `municipality_code` | string | **Obligatorio.** Código DANE de cinco dígitos del municipio, p. ej. `17013` (Aguadas, Caldas). |
| `zone` | enum | Opcional: `urban` o `rural`. |
| `page` | integer | Número de página, empieza en 1. Por defecto `1`. |
| `per_page` | integer | Resultados por página (1-50); cada resultado trae su geometría. Por defecto `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/physical-zones-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "municipality_code": "17013", "zone": "urban" }'
```

Devuelve `as_of`, los filtros aplicados, `total` y `total_is_exact`, `page`, `per_page`, `total_pages`, `count` y `results[]`. Cada resultado trae `id`, `zone_code`, `zone`, `municipality_code`, `topography`, `road_influence`, `public_services`, `land_use`, `land_use_norm`, `construction_typology`, `land_class`, `water_availability`, `valid_from`, `part_count` y `geometry`. `geometry` es GeoJSON en WGS84 (EPSG:4326), longitud primero, tal como lo dibuja el IGAC: referencial en ubicación y dimensiones, no certifica linderos.

## Estadísticas de un municipio

`POST /co/igac/municipal-statistics/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `municipality_code` | string | **Obligatorio.** Código DANE de cinco dígitos de cualquier municipio del país, p. ej. `11001` (Bogotá) o `17013` (Aguadas). |
| `year` | integer | Año de reporte opcional, p. ej. `2025`. Por defecto `0`. |
| `zone` | enum | Opcional: `urban` o `rural`. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/municipal-statistics/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "municipality_code": "17013" }'
```

Devuelve `as_of`, los filtros, `count` y `results[]`, del año más reciente al más antiguo: `id`, `municipality_code`, `municipality`, `department`, `cadastral_manager`, `year`, `zone`, `appraisal_total`, `property_count`, `built_area_m2`, `land_area_m2`, `land_area_ha`, `geographic_area_ha`, `rural_update_year`, `urban_update_year`, `rural_status` y `urban_status`.

## Quién administra el catastro de cada municipio

`POST /co/igac/cadastral-managers/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `municipality_code` | string | Código DANE de cinco dígitos, opcional. |
| `query` | string | Palabras opcionales del nombre del gestor o del municipio. |
| `page` | integer | Número de página, empieza en 1. Por defecto `1`. |
| `per_page` | integer | Resultados por página (1-100). Por defecto `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/cadastral-managers/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "antioquia" }'
```

Devuelve `as_of`, los filtros aplicados, `total` y `total_is_exact`, `page`, `per_page`, `total_pages`, `count` y `results[]`. Cada resultado trae `municipality_code`, `municipality`, `department_code`, `department`, `manager`, `manager_id`, `office`, `nit`, `contact_email` e `is_igac`.

## Placas de un terreno

`POST /co/igac/address-plates-by-property/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `cadastral_number` | string | **Obligatorio.** El número predial nacional de 30 dígitos del predio, p. ej. `170130001000000010001000000000`. Se ignoran espacios, puntos y guiones. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/address-plates-by-property/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "cadastral_number": "170130001000000010001000000000" }'
```

Devuelve `as_of`, `cadastral_number`, `count` y `plates[]` (`id`, `text`, `parcel_code`, `zone`, `municipality_code`, `part_count`, `geometry`). `geometry` es GeoJSON en WGS84 (EPSG:4326), longitud primero, tal como lo dibuja el IGAC: referencial en ubicación y dimensiones, no certifica linderos.

## Nomenclatura vial de un municipio

`POST /co/igac/street-names-search/v1` <a className="dataset-pill" href="/es/datasets">Dataset</a>

| Campo | Tipo | Notas |
| - | - | - |
| `municipality_code` | string | **Obligatorio.** Código DANE de cinco dígitos del municipio, p. ej. `17013` (Aguadas, Caldas). |
| `query` | string | Palabras opcionales del nombre de la vía, p. ej. `calle 10`. |
| `page` | integer | Número de página, empieza en 1. Por defecto `1`. |
| `per_page` | integer | Resultados por página (1-50); cada resultado trae su geometría. Por defecto `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac/street-names-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "municipality_code": "17013" }'
```

Devuelve `as_of`, los filtros aplicados, `total` y `total_is_exact`, `page`, `per_page`, `total_pages`, `count` y `results[]`. Cada resultado trae `id`, `text`, `zone`, `municipality_code`, `part_count` y `geometry`. `geometry` es GeoJSON en WGS84 (EPSG:4326), longitud primero, tal como lo dibuja el IGAC: referencial en ubicación y dimensiones, no certifica linderos.

<Card title="Referencia completa" icon="code" href="/es/api-reference/overview">
  Esquemas, todos los campos de respuesta y un playground interactivo.
</Card>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.