Platform
Get started

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

Property Sourcing · REST API

Get a property

GEThttps://platform.casafari.com/v1/property-sourcing/properties/{property_id}
API key10 units3 parameters

Send Authorization: Bearer $CASAFARI_API_KEY: a platform API key or OAuth access token; see platform sign-in. Costs 10 units (1 unit = EUR 0.04).

Over MCP: none; this product is REST only.

Description

One property by its prop_ id: the search result's fields plus bathrooms, areas, construction year, energy rating, condition, features, address, description and status. expand=listings adds every listing merged into the property (where it is advertised, by which agency, at what price, its references) and listings_count; expand=history adds its dated price and status changes. A seller's contact details are never returned. 10 units.

Path parameters

property_idstringrequired
A prop_ id from a search or from resolve.

Query parameters

expandstring
Comma-separated: listings, history, or both.
operationstring
sale or rent: which price and status to show. Default: sale, or rent when the property is only for rent.
sale rent

Example request

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

curl
curl "https://platform.casafari.com/v1/property-sourcing/properties/prop_7Hq2pZk1vY0sW4nB8cR3tL" \
  -H "Authorization: Bearer $CASAFARI_API_KEY"

Responses

200 The property.

Type: any.

Example with sample values (ids and figures are illustrative)
JSON
{
  "id": "prop_7Hq2pZk1vY0sW4nB8cR3tL",
  "type": "apartment",
  "operation": "sale",
  "price": {
    "amount": 425000,
    "currency": "EUR",
    "per_sqm": 4474
  },
  "bedrooms": 3,
  "living_area_sqm": 95,
  "location": {
    "id": 12345,
    "name": "Sample district",
    "coordinates": {
      "lat": 39.462,
      "lon": -0.376
    }
  },
  "first_seen": "2026-09-28",
  "listings_count": 2,
  "matched_tags": null,
  "bathrooms": 2,
  "total_area_sqm": 105,
  "plot_area_sqm": null,
  "construction_year": 1972,
  "energy_rating": "E",
  "condition": "good",
  "features": [
    "terrace",
    "elevator"
  ],
  "address": null,
  "description": "Sample description.",
  "status": "active",
  "listings": [
    {
      "source": "Sample agency website",
      "agency": "Sample agency",
      "url": "https://agency.example/listing/123",
      "price": {
        "amount": 425000,
        "currency": "EUR"
      },
      "status": "active",
      "active": true,
      "first_seen": "2026-09-28",
      "references": [
        "REF-123"
      ]
    },
    {
      "source": "Sample portal",
      "agency": "Sample agency",
      "url": "https://portal.example/ad/456",
      "price": {
        "amount": 425000,
        "currency": "EUR"
      },
      "status": "active",
      "active": true,
      "first_seen": "2026-09-30",
      "references": [
        "REF-123"
      ]
    }
  ],
  "history": [
    {
      "date": "2026-09-28",
      "event": "new",
      "action": null,
      "operation": "sale",
      "old_value": null,
      "new_value": 439000,
      "source": "Sample agency website",
      "agency": "Sample agency"
    },
    {
      "date": "2026-10-09",
      "event": "price_change",
      "action": "decrease",
      "operation": "sale",
      "old_value": 439000,
      "new_value": 425000,
      "source": "Sample agency website",
      "agency": "Sample agency"
    }
  ]
}

400 Unknown `expand` or `operation` value (`invalid_request`).

Type: object.

Show the response shape (10 fields)
typestring
The problem's documentation URL.
titlestring
statusinteger
detailstring
What happened and how to fix it.
instancestring
codestring
e.g. invalid_request, payment_required, not_entitled, not_found, page_depth_exceeded, request_limit_reached.
request_idstring
errorsobject[]
One entry per field to fix.
2 properties
fieldstring
messagestring

401 Missing or unknown API key or token.

Type: object.

Show the response shape (10 fields)
typestring
The problem's documentation URL.
titlestring
statusinteger
detailstring
What happened and how to fix it.
instancestring
codestring
e.g. invalid_request, payment_required, not_entitled, not_found, page_depth_exceeded, request_limit_reached.
request_idstring
errorsobject[]
One entry per field to fix.
2 properties
fieldstring
messagestring

402 No units left to fund the call (`payment_required`).

Type: object.

Show the response shape (10 fields)
typestring
The problem's documentation URL.
titlestring
statusinteger
detailstring
What happened and how to fix it.
instancestring
codestring
e.g. invalid_request, payment_required, not_entitled, not_found, page_depth_exceeded, request_limit_reached.
request_idstring
errorsobject[]
One entry per field to fix.
2 properties
fieldstring
messagestring

403 The account is not entitled to this property's country (`not_entitled`).

Type: object.

Show the response shape (10 fields)
typestring
The problem's documentation URL.
titlestring
statusinteger
detailstring
What happened and how to fix it.
instancestring
codestring
e.g. invalid_request, payment_required, not_entitled, not_found, page_depth_exceeded, request_limit_reached.
request_idstring
errorsobject[]
One entry per field to fix.
2 properties
fieldstring
messagestring

404 No property has this id (`not_found`).

Type: object.

Show the response shape (10 fields)
typestring
The problem's documentation URL.
titlestring
statusinteger
detailstring
What happened and how to fix it.
instancestring
codestring
e.g. invalid_request, payment_required, not_entitled, not_found, page_depth_exceeded, request_limit_reached.
request_idstring
errorsobject[]
One entry per field to fix.
2 properties
fieldstring
messagestring

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