---
title: "IGAC Property"
method: POST
path: "/co/igac/property/v1"
tags: ["Colombia", "IGAC"]
---

# IGAC Property

`POST /co/igac/property/v1`

## Request

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

Retrieve one property of Colombia's national cadastre by its 30-digit número predial nacional, as IGAC's cadastre answers it today: the current avalúo catastral in pesos with its vigencia (whether the municipality's cadastre for that zone is in formación, actualización or conservación, and the year of its last update, since an avalúo carried forward for years is not comparable with a freshly updated one), address, land and built areas, economic destination, every building with its use, score and floors, and the parcel polygon. The first ask of a number reads IGAC; later asks within 30 days answer from Croma's stored answer (`served_from`), which is re-read regularly. Only for the 842 municipalities IGAC administers: a number from Bogotá, Medellín, Cali, Barranquilla or Antioquia returns `found: false`. Find numbers with `igac_properties_search` or a point with `igac_property_by_point`.

**Lookup endpoint**: answers from Croma's copy when it holds a recent answer for the key, otherwise reads the source and keeps the answer; carries `checked_at` and `served_from`.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `cadastral_number` string, required: The 30-digit número predial nacional, e.g. `170130001000000010001000000000`. Spaces, dots and hyphens are ignored.

## Response `200`

Successful response

- IgacPropertyResponse
  - `data` IgacPropertyData, required
    - `found` boolean, required: False when IGAC has no property under that number (gestores propios such as Bogotá, Medellín, Cali or Antioquia are not IGAC's).
    - `cadastral_number` string, required
    - `checked_at` string, required: When IGAC was last asked for this property.
    - `served_from` 'copy' | 'upstream' | 'stale', required: `copy`: answered from Croma's stored answer; `upstream`: IGAC was read for this call; `stale`: IGAC could not be read and the stored answer stood in.
    - `property` object, nullable, required
      - `cadastral_number` string, required: The 30-digit número predial nacional.
      - `previous_cadastral_number` string, nullable, required
      - `department_code` string, nullable, required
      - `municipality_code` string, nullable, required
      - `municipality` string, nullable, required: `Municipio, Departamento` as IGAC names it.
      - `address` string, nullable, required
      - `land_area_m2` number, nullable, required
      - `built_area_m2` number, nullable, required
      - `economic_destination_code` string, nullable, required
      - `economic_destination` string, nullable, required
      - `appraisal` number, nullable, required: The current avalúo catastral in Colombian pesos, as IGAC holds it for the property. Null when IGAC states none.
      - `vigencia` object, nullable: The vigencia of the avalúo and where the municipality's cadastre stands for the property's zone. Compare avalúos only within the same process and update year: one carried forward since an old update is not comparable with one just re-estimated. Null when IGAC's statistics do not cover the municipality.
        - `year` number, required: The vigencia the avalúo belongs to: the year IGAC was asked, since an avalúo catastral takes effect on 1 January.
        - `zone` 'urban' | 'rural', required: The part of the municipality the property sits in, which has a cadastral process of its own.
        - `process` 'formacion' | 'actualizacion' | 'conservacion', nullable, required: Where the zone's cadastre stands: `formacion` when it has not been formed, `actualizacion` when the update took effect this vigencia, `conservacion` when the avalúo has been carried forward since `update_year`. Null when IGAC reports no status.
        - `status` string, nullable, required: The cadastral status as IGAC reports it: `Actualizado Total`, `Desactualizado`, `Por Formar` and others.
        - `update_year` number, nullable, required: The vigencia of the zone's last formación or actualización. Null when it has had none.
        - `years_since_update` number, nullable, required: `year` minus `update_year`: how long the avalúo has been carried forward instead of re-estimated.
        - `reported_year` number, required: The year of IGAC's municipal statistics the status comes from.
      - `buildings` object[], required
        - `area_m2` number, nullable, required
        - `use_code` number, nullable, required
        - `use` string, nullable, required
        - `score` number, nullable, required: Quality score (puntaje), 0 to 100.
        - `floors` number, nullable, required
        - `rooms` number, nullable, required
        - `shops` number, nullable, required
        - `bathrooms` number, nullable, required
      - `latitude` number, nullable, required
      - `longitude` number, nullable, required
      - `geometry` object, nullable, required: The feature's geometry as GeoJSON in WGS84, exactly as IGAC draws it; referential, it does not certify boundaries.
        - `type` string, required: `Polygon`, `MultiPolygon`, `LineString`, `MultiLineString` or `Point`.
        - `coordinates` unknown, required
      - `checked_at` string, 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/74c745980c60?raw)
