# How do I value a property in Spain from its cadastral reference?

> **Casafari is the AI agent-native real estate data intelligence platform.** The most complete property index in Europe: a deduplicated, cleaned property graph of residential and commercial property, for sale and for rent, in 16 countries. Every property is one record with its full price and market history. [How the property graph is built](/docs/property-graph).

To value a property in Spain from its cadastral reference, call `comps_get-comparables` (Comparables & Valuation on the Casafari MCP server) with `location_boundary.circle.target_point.cadastral_reference` set to `country_code: ES` and the reference. The tool centres the search on that property and returns comparables, statistics, registry records where they exist and estimated prices. This input is Spain only.

Products: [Comparables & Valuation](/docs/comparables-valuation).

## Short answer

`comps_get-comparables` accepts `location_boundary.circle.target_point.cadastral_reference`, with `country_code: ES` and the `cadastral_reference` string, as the centre point of the search. The tool's schema says this input is, for now, available only for Spain; elsewhere you give coordinates or an address.

## Steps

### Set `location_boundary.circle.target_point.cadastral_reference` with `country_code` ES, `cadastral_reference`, and optionally `province` and `municipality`

1. Call [`list_servers`](/docs/gateway/list_servers) if this is your first use of Comparables & Valuation.
2. Build the `cadastral_reference` object: `country_code` (the only accepted value is `ES`), `cadastral_reference` (required), and optionally `province` and `municipality`. Set `location_boundary.circle.distance` in kilometres (0.05 to 50, default 5).

### Choose operation and comparables_types

3. Set `operation` to `sale` or `rent`, `comparables_count` from 1 to 50, and `comparables_types` from one group, for example `["apartment"]`. Add filters such as `bedrooms`, `condition` or `characteristics` if you want closer matches.

### Omit total_area or plot_area: with a cadastral reference they are not required

4. The schema requires `total_area` for `hotel`, `industrial`, `office`, `other_commercial`, `restaurant`, `retail`, `warehouse` and `werkstatt`, and `plot_area` for `rural_plot` and `urban_plot`, only when `target_point.cadastral_reference` is not provided. With the reference, you can leave them out. Then call [`comps_get-comparables`](/docs/comparables-valuation/get-comparables).

## Example: a Madrid apartment

A valuer asks their assistant: *"Value cadastral reference 1234567VK4713S0001AB in Madrid."* (Use the real reference of your property; this one shows the format.) The assistant calls `list_servers`, then `comps_get-comparables`:

```json
{
  "comparables_count": 20,
  "location_boundary": {
    "circle": {
      "target_point": {
        "cadastral_reference": {
          "country_code": "ES",
          "cadastral_reference": "1234567VK4713S0001AB",
          "province": "Madrid",
          "municipality": "Madrid"
        }
      },
      "distance": 1
    }
  },
  "operation": "sale",
  "comparables_types": ["apartment"]
}
```

Condensed response (values depend on the market when you call):

```json
{
  "results": [ { "property_id": "...", "similarity_score": "...", "distance": "...", "sale_price": "...", "sale_price_per_sqm": "..." } ],
  "transactional_data": [ { "cadastral_reference": "...", "price": "...", "price_per_sqm": "...", "with_mortgage": "...", "sold_at": "...", "distance": "..." } ],
  "statistics": { "average_price_per_sqm": "...", "average_time_on_the_market": "..." },
  "estimated_prices": { "fast_sell_price": "...", "fair_market_price": "...", "out_of_market_price": "..." },
  "casafari_link": "...",
  "valuation_id": "..."
}
```

## How to read the result

### `transactional_data`: `cadastral_reference`, `price`, `with_mortgage`, `sold_at`

`transactional_data` holds notarial records. Each has a `cadastral_reference`, `price` with `currency`, `price_per_sqm`, `sold_at`, `distance` from your target and `with_mortgage`, a flag for whether the purchase was financed with a mortgage. Check `source_annexes`: it describes annexes such as parking or storage included in the recorded price, which can inflate a per-m² figure. The block can be empty or null where no records match your area and filters.

### estimated_prices and statistics

`estimated_prices` gives `fast_sell_price`, `fair_market_price` and `out_of_market_price`, each with a per-m² version, computed from the comparables found. `statistics` adds `average_price_per_sqm`, `average_time_on_the_market` (days) and `sold_or_rented_in_last_six_months`. Read `results` by `similarity_score` and `is_outlier`, and open `casafari_link` for the Comparative Market Analysis page.

## Limits

Cadastral-reference valuation over `comps_get-comparables` is available to Casafari clients with MCP access, using their Casafari account; self-serve access for new users is coming soon. The REST operation [`POST /api/v2/comparables/search`](/docs/rest/comparables-valuation/search-comparables-v2) also takes `target_point` and is for Casafari client accounts. Prices, quotas and rate limits are not published in these docs; ask [Casafari](https://www.casafari.com/).

### Only one target definition per request: coordinates, address or cadastral reference

`target_point` takes exactly one value. Do not send an address or coordinates alongside the cadastral reference.

### Cadastral reference input is Spain only

`country_code` accepts only `ES`. This is a limit of this input, not of the tool: see [Does Casafari cover Spain and Portugal?](/docs/faq/coverage-spain-portugal) and [Does every tool cover all 16 countries?](/docs/faq/per-tool-coverage). For properties outside Spain, use an address or coordinates.

## Questions

### Can I use a Portuguese or French cadastral or land-registry number?

No, the `cadastral_reference` input of `comps_get-comparables` accepts only `country_code: ES`; the schema says it is available only for Spain for now. For a property in Portugal, France or any other covered market, set `target_point` to an `address` or to `coordinates` instead. The filters and the response work the same way.

### Do I still need the address if I have the cadastral reference?

No, the cadastral reference alone defines the centre point, and `target_point` takes only one value: coordinates, an address or a cadastral reference. Sending an address as well breaks that rule. You can add the optional `province` and `municipality` fields inside the `cadastral_reference` object to help locate the estate.

### What does with_mortgage mean in transactional_data?

`with_mortgage` is a flag on each `transactional_data` record indicating whether that recorded purchase was financed with a mortgage. It can be true, false or null. It describes how the buyer paid, not the property itself, so use it as context, for example to see how much of an area's recorded activity relied on financing.

### Can I value a plot by cadastral reference?

Yes, set `comparables_types` to `urban_plot` or `rural_plot` (the plot group) together with the cadastral reference. The schema makes `plot_area` required for those types only when no cadastral reference is provided, so you can omit it. Add `plot_area` anyway if you want to state the desired plot size explicitly.

All use cases: [Use cases](/docs/use-cases#valuation).
