Platform

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.The most complete property index in Europe: a deduplicated, cleaned property graph.

How the graph is built

Comparables & Valuation · REST API

Value a property with comparables

POSThttps://platform.casafari.com/v1/comparables/search
API key25 tokens a call44 parameters

Send Authorization: Bearer $CASAFARI_API_KEY: a platform API key (cf_sk_...) from the console, or an OAuth access token; X-API-Key carries the key too. See platform API keys. Costs 25 tokens a call (1 token = EUR 0.04).

Over MCP: comparables_get_comparables (equivalent). See MCP and REST compared.

Description

Costs 25 tokens a call. Page size: comparables_count in the body, at most 50 (a Free plan account is capped lower).

Request body

Content type application/json. Required. Type: object.

comparables_countintegerrequired
Maximum number of comparable properties in results.
1–50
location_boundaryobjectrequired
Location to search within. Can be defined as a polygon of geo-points or a circle with a given target point and a distance. Only one value should be provided.
2 properties
polygonobject[]
Closed polygon of geo-points to search within. First and last points must match.
at least 4 items
2 properties
latitudenumberrequired
Latitude.
-90–90
longitudenumberrequired
Longitude.
-180–180
circleobject
Circle boundary to search within.
2 properties
distancenumber
Circle radius in kilometres (not metres) from target_point: 0.05 to 50, default 5.
0.05–50default 5
target_pointobjectrequired
Target point to search around. Can be defined as coordinates, address or cadastral reference of the property. Only one value should be provided.
3 properties
coordinatesobject
Target point coordinates to search around.
2 properties
latitudenumberrequired
Latitude.
-90–90
longitudenumberrequired
Longitude.
-180–180
addressstring
Address of the property to define the point to search around.
cadastral_referenceobject
Cadastral reference of the property to define the point to search around. For now available only for Spain.
4 properties
country_codestringrequired
Country code following the ISO 3166-1 alpha-2 rules.
ES
cadastral_referencestringrequired
Cadastral reference of the estate.
provincestring
Name of the estate's province.
municipalitystring
Name of the estate's municipality.
sold_or_rented_afterstringnullable
Properties sold/rented since this date (in the format YYYY-MM-DD) will be considered as possible comparables. Default value: 9 months ago, counting from today. If null is passed, only active properties will be considered.
operationstringrequired
Operation type.
sale rent
comparables_typesstring[]required
Property types to compare with, all from one type group. Groups: apartment (erdgeschosswohnung, etagenwohnung, dachgeschosswohnung, duplex, studio, penthouse, apartment); house (villa, reihenhaus, palace, country_estate, zweifamilienhaus, reihenmittelhaus, reihenendhaus, landwirtschaftliche_betriebe, country_house, townhouse, chalet, bungalow, einfamilienhaus, house; family_house is deprecated); room (room); building (mix_use_building, office_building, apartment_building); investment (restaurant, other_commercial, warehouse, office, industrial, werkstatt, hotel, retail); plot (rural_plot, urban_plot; plot is deprecated); other (garage, other, parking). Not every type is available in every country.
40 allowed valuesapartment studio duplex penthouse dachgeschosswohnung etagenwohnung erdgeschosswohnung country_house house palace townhouse villa country_estate chalet bungalow family_house reihenhaus reihenendhaus reihenmittelhaus einfamilienhaus zweifamilienhaus landwirtschaftliche_betriebe retail office industrial warehouse hotel other_commercial restaurant werkstatt plot urban_plot rural_plot room other garage parking apartment_building office_building mix_use_building
min_priceinteger
The minimum price filter for comparables result. Default value: 0.
0–2147483647
max_priceinteger
The maximum price filter for comparables result.
1–2147483647
conditionstring
Property condition: used, ruin, very-good, new or other.
used ruin very-good new other
bedroomsinteger
Target number of bedrooms of the property being valued. A similarity target, not a filter: comparables with other bedroom counts can be returned, ranked lower. Cannot be used together with rooms.
0–15000
roomsinteger
Number of rooms (cannot be used together with bedrooms).
0–15000
bathroomsinteger
Number of bathrooms.
1–15000
construction_yearinteger
Desired construction year.
1–3000
total_areainteger
Desired total area, square meters. This field is required for hotel, industrial, office, other_commercial, restaurant, retail, warehouse, werkstatt property types if target_point.cadastral_reference is not provided.
5–10000000
plot_areainteger
Desired plot area, square meters. This field is required for rural_plot and urban_plot property types if target_point.cadastral_reference is not provided.
20–10000000
floorsstring[]
List of floor types.
no_floor ground middle top
floor_numberinteger[]
Desired list of floor numbers. Negative values indicate underground floors (e.g. basements). Minimum value is -250. Maximum value is 250.
-250–250
orientationstring
Property view orientation.
exterior interior
viewsstring[]
List of views from the property.
water landscape city golf park
directionsstring[]
List of cardinal directions the property faces.
north south east west
characteristicsobject
Property characteristics.
3 properties
must_havestring[]
Include only properties that have all these characteristics.
balcony elevator no_elevator garage garden parking storage swimming_pool terrace rental_license furniture rented_out life_annuity
nice_to_havestring[]
Include properties that have any of these characteristics.
balcony elevator no_elevator garage garden parking storage swimming_pool terrace rental_license furniture rented_out life_annuity
excludestring[]
Exclude properties that contain any of these characteristics.
balcony elevator no_elevator garage garden parking storage swimming_pool terrace rental_license furniture rented_out life_annuity
energy_ratingsstring[]
List of energy ratings.
Unknown A+ A B C D E F G H
days_on_market_frominteger
Minimum days on market value.
1–10000
days_on_market_tointeger
Maximum days on market value.
1–10000
with_agenciesstring[]
Only properties advertised by these agencies, companies or sources, as free-text names. No list of names is available over MCP; an unknown name matches nothing.
without_agenciesstring[]
Exclude properties advertised by these agencies, companies or sources, as free-text names. No list of names is available over MCP.
exclude_outliersboolean
Exclude properties that are significantly underpriced or overpriced compared to similar properties. Default value: true.

Example request

Placeholders only: replace the token and the values with your own.

curl
curl -X POST "https://platform.casafari.com/v1/comparables/search" \
  -H "Authorization: Bearer $CASAFARI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "operation": "sale",
  "comparables_types": [
    "apartment"
  ],
  "bedrooms": 3,
  "total_area": 95,
  "comparables_count": 5,
  "location_boundary": {
    "circle": {
      "target_point": {
        "address": "Calle de Serrano 50, Madrid, Spain"
      },
      "distance": 1
    }
  }
}'

Responses

200 Success.

Type: object.

Errors

Every error is an application/problem+json body (RFC 9457) with type (a page that explains it), title, status, detail (what to do), instance, code and request_id (what to quote to support). A 402 carries an upgrade_url, a 429 a Retry-After header. The codes each status can carry:

Tip: add .md to any URL to read it as Markdown.