---
title: "IGAC Properties Search"
method: POST
path: "/co/igac/properties-search/v1"
tags: ["Colombia", "IGAC"]
---

# IGAC Properties Search

`POST /co/igac/properties-search/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/co/igac/properties-search/v1`
- Auth: HTTP bearer

Search the properties (predios) of Colombia's national cadastre administered by IGAC, about 6.8 million in 831 municipalities: by `municipality_code` (DANE), `block_code` (the manzana or vereda, the first 17 digits of a cadastral number), words of the `address`, `economic_destination` (`A` housing, `C` commerce, `D` agricultural and others), `zone` (`urban`/`rural`) or `previous_cadastral_number`. At least a municipality, a block or a previous number is required. Each result carries the 30-digit cadastral number, address, destination, land and built areas, the land zones and every building unit with its use and score. Not for Bogotá, Medellín, Cali, Barranquilla or Antioquia, which keep their own cadastre. Read the appraisal of one with `igac_property`. Served by Croma (`as_of` says how current the data is).

**Dataset endpoint**: answers from the whole source in milliseconds and carries `as_of`.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `municipality_code` string: Optional five-digit DANE code of the municipality, e.g. `17013` for Aguadas.
  - `query` string: Optional words matched against the property's address or farm name, e.g. `calle 10` or `la esperanza`.
  - `block_code` string: Optional 17-digit code of the manzana (urban) or vereda (rural): the first 17 digits of any property's cadastral number in it, e.g. `17013000100000001`.
  - `economic_destination` string: Optional economic destination code as IGAC assigns it: `A` housing, `B` industrial, `C` commercial, `D` agricultural, `I` institutional, `L` agricultural crops, `M` livestock, `S` urbanized lot not built, among others. Case is ignored.
  - `zone` '' | 'urban' | 'rural': Optional: `urban` or `rural`.
  - `previous_cadastral_number` string: Optional 20-digit number the property had before the national numbering, e.g. `17013000100010001000`.
  - `page` integer: 1-based page number for paginated results.
  - `per_page` integer: Results per page (1-100).

## Response `200`

Successful response

- IgacPropertiesSearchResponse
  - `data` IgacPropertiesSearchData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `municipality_code` string, nullable, required
    - `query` string, required
    - `block_code` string, nullable, required
    - `economic_destination` string, nullable, required
    - `zone` string, nullable, required
    - `previous_cadastral_number` string, nullable, required
    - `total` number, required: Matches, counted up to 1000.
    - `total_is_exact` boolean, required: False when more than 1000 match: `total` is then 1000, and the pages go on.
    - `page` number, required
    - `per_page` number, required
    - `total_pages` number, required: Pages over `total`; there are more when `total_is_exact` is false.
    - `count` number, required
    - `results` object[], required
      - `cadastral_number` string, required: The 30-digit número predial nacional that identifies the property, e.g. `170130001000000010001000000000`.
      - `previous_cadastral_number` string, nullable, required: The 20-digit number the property had before the national numbering, when IGAC keeps it.
      - `department_code` string, required: Two-digit DANE department code, the first two digits of the number.
      - `municipality_code` string, required: Five-digit DANE municipality code, the first five digits of the number.
      - `zone` 'urban' | 'rural', required: `urban` or `rural`, from digits 6 and 7 of the number (`00` is rural).
      - `zone_code` string, required: Digits 6 and 7 of the number: `00` rural, `01` the main urban area, higher codes other urban centres (corregimientos).
      - `sector_code` string, required: Digits 8 and 9: the cadastral sector.
      - `block_code` string, required: The first 17 digits: the manzana (urban) or vereda (rural) the property sits in. Every property of one block shares it.
      - `condition_code` string, required: Digit 22, the property's condition: `0` a plain property, `9` a unit under propiedad horizontal, other codes for condominiums, improvements and public goods.
      - `address` string, nullable, required: The address or the name of the farm, as IGAC records it.
      - `economic_destination_code` string, nullable, required: IGAC's economic destination code, e.g. `A` housing, `C` commerce, `D` agricultural; `economic_destination` spells it out.
      - `economic_destination` string, nullable, required
      - `land_area_m2` number, nullable, required: Land area in m².
      - `built_area_m2` number, nullable, required: Built area in m², every unit together.
      - `land_zones` object[], required: The homogeneous zones the land falls in, with the area in each.
        - `physical_zone_code` string, nullable, required: The homogeneous physical zone the land falls in, as IGAC codes it (`000` when none).
        - `economic_zone_code` string, nullable, required: The homogeneous geoeconomic zone, which fixes the land value per m² or hectare used in the appraisal.
        - `area_m2` number, nullable, required: The land area in that zone, m².
      - `buildings` object[], required: Every building unit IGAC has qualified on the property.
        - `rooms` number, nullable, required
        - `bathrooms` number, nullable, required
        - `shops` number, nullable, required: Commercial units (locales).
        - `floors` number, nullable, required
        - `typology_code` number, nullable, required: IGAC's construction typology code.
        - `use_code` number, nullable, required: IGAC's use code; `use` spells it out.
        - `use` string, nullable, required: What the unit is used as, e.g. `Vivienda hasta 3 pisos`, `Comercio`, `Industrias`.
        - `score` number, nullable, required: The construction's quality score (puntaje), 0 to 100, which drives its value in the appraisal.
        - `built_area_m2` number, nullable, required
      - `building_count` number, required

## Other responses

- `400`: Invalid request body
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream source returned an error

---

[API](https://skmtc.dev/usecroma/apis/croma-marketplace-api.md) · [All operations](https://skmtc.dev/usecroma/apis/croma-marketplace-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usecroma/apis/croma-marketplace-api/revisions/df016cdb29d7?raw)
