> ## 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 Property Transactions

> Every act registered on a Colombian property folio from 2015 to 2023, about 31 million: sales, mortgages, embargoes and cancellations, with the value each act declares, plus the median declared price per municipality, year and act.

Every property in Colombia has a folio de matrícula inmobiliaria at its registry office, and every act on it (a sale, a mortgage, an embargo, a cancellation, a subdivision) is an annotation on that folio. The Instituto Geográfico Agustín Codazzi (IGAC) publishes those annotations from the Superintendencia de Notariado y Registro's registry: about 31 million filed from 2015 to 2023, on 9.8 million folios in 1,105 municipalities, each with the act, the date it was filed, the deed or order it rests on, whether the property is urban or rural, and the value the act declares.

Read a folio's history by its matrícula, search a municipality's acts by type, year and value, or take the price statistics: per municipality, year, zone and act, how many acts declared a value and their median, mean, range and sum. The register names no parties and carries no cadastral number, so it joins to a property through the matrícula, not the número predial.

<Note>
  The whole source, organized and ready to query: every endpoint on this page answers in milliseconds. Every response carries `as_of`: how current the data is. [How datasets work](/datasets).
</Note>

## Search the transactions

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

One search over every registered act, scoped to a municipality or a folio, narrowed by act, zone, year and value.

| Field | Type | Notes |
| - | - | - |
| `municipality_code` | string | Optional. Five-digit DANE code of the municipality, e.g. `17013` (Aguadas, Caldas) or `11001` (Bogotá). One of `municipality_code` or `registration_number` is required. |
| `registration_number` | string | Optional. The matrícula inmobiliaria as `<registry office>-<folio>`, e.g. `002-8032` or `50C-123456`; a numeric office may drop its leading zeros. |
| `act_code` | integer | Optional act code, e.g. `125` compraventa, `219` hipoteca abierta, `843` cancelación por voluntad de las partes. 0 means every act. Default `0`. |
| `zone` | enum | Optional: `urban` or `rural`. |
| `year_from` | integer | Optional first filing year, 2015 or later. Default `0`. |
| `year_to` | integer | Optional last filing year, 2023 or earlier. Default `0`. |
| `min_value` | number | Optional lowest declared value, pesos. Default `0`. |
| `max_value` | number | Optional highest declared value, pesos. Default `0`. |
| `with_value` | boolean | Optional: `true` keeps only acts that declare a value. Default `false`. |
| `page` | integer | 1-based page number. Default `1`. |
| `per_page` | integer | Results per page (1-100). Default `20`. |

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

Returns `as_of`, the applied filters, `total` and `total_is_exact`, `page`, `per_page`, `total_pages`, `count` and `results[]`, newest filing first. Every annotation carries `id`, `registration_number` (the matrícula, `<office>-<folio>`), `registry_office_code`, `folio_number`, `annotation_number`, `municipality_code`, `municipality`, `department`, `zone` (`urban` or `rural`), `rurality_category`, `filed_on` and `filed_year`, `act_code` and `act` (e.g. `125` COMPRAVENTA), `instrument` (the deed, ruling or order and who issued it), `value_cop` (the value the act declares, null when none), `has_value`, `has_several_values`, `parties_from`, `parties_to` (how many parties on each side), `new_folio`, `market_activity`, `folio_status`, `folio_opened_on` and `derived_folios[]`. There are no names of parties and no cadastral number.

<Note>
  For a sale, `value_cop` is the price written in the deed. It is a floor and a market signal: deeds often declare close to the cadastral appraisal, below the price agreed.
</Note>

## One folio, act by act

`POST /co/igac-transactions/folio-history/v1` <a className="dataset-pill" href="/datasets">Dataset</a>

A matrícula in, every act filed on it from 2015 to 2023 out, in the folio's order.

| Field | Type | Notes |
| - | - | - |
| `registration_number` | string | **Required.** The matrícula inmobiliaria as `<registry office>-<folio>`, e.g. `002-8032` or `50C-123456`; a numeric office may drop its leading zeros. |

```bash theme={"dark"}
curl https://api.croma.run/co/igac-transactions/folio-history/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "registration_number": "002-8032" }'
```

Returns `as_of`, `registration_number`, `found`, the folio's `municipality_code`, `municipality`, `department` and `zone`, `count` and `annotations[]` in the folio's order. Every annotation carries `id`, `registration_number` (the matrícula, `<office>-<folio>`), `registry_office_code`, `folio_number`, `annotation_number`, `municipality_code`, `municipality`, `department`, `zone` (`urban` or `rural`), `rurality_category`, `filed_on` and `filed_year`, `act_code` and `act` (e.g. `125` COMPRAVENTA), `instrument` (the deed, ruling or order and who issued it), `value_cop` (the value the act declares, null when none), `has_value`, `has_several_values`, `parties_from`, `parties_to` (how many parties on each side), `new_folio`, `market_activity`, `folio_status`, `folio_opened_on` and `derived_folios[]`. There are no names of parties and no cadastral number.

<Note>
  A folio with no act filed from 2015 to 2023 and a folio that does not exist both return `found: false` with HTTP 200. For a sale, `value_cop` is the price written in the deed. It is a floor and a market signal: deeds often declare close to the cadastral appraisal, below the price agreed.
</Note>

## Prices per municipality

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

The median price written in deeds, and the other declared values, per municipality, year, zone and act.

| Field | Type | Notes |
| - | - | - |
| `municipality_code` | string | **Required.** Five-digit DANE code of the municipality, e.g. `17013` (Aguadas, Caldas) or `11001` (Bogotá). |
| `act_code` | integer | Optional act code, e.g. `125` compraventa, `219` hipoteca abierta, `843` cancelación por voluntad de las partes. 0 means every act. Default `0`. |
| `zone` | enum | Optional: `urban` or `rural`. |
| `year_from` | integer | Optional first filing year, 2015 or later. Default `0`. |
| `year_to` | integer | Optional last filing year, 2023 or earlier. Default `0`. |

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

Returns `as_of`, the filters, `count` and `results[]`, newest year first: `id`, `municipality_code`, `municipality`, `department`, `year`, `zone`, `act_code`, `act`, `transaction_count`, `median_value_cop`, `average_value_cop`, `min_value_cop`, `max_value_cop` and `total_value_cop`. Only acts that declare a value above zero are counted.

<Note>
  For a sale, `value_cop` is the price written in the deed. It is a floor and a market signal: deeds often declare close to the cadastral appraisal, below the price agreed.
</Note>

<Card title="Full reference" icon="code" href="/api-reference/overview">
  Schemas, all response fields, and an interactive playground.
</Card>


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