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

High Potential Seller Leads · REST API

Get a seller lead

GEThttps://platform.casafari.com/v1/seller-leads/{lead_id}
API key10 tokens a call1 parameter

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 10 tokens a call (1 token = EUR 0.04).

The platform's OpenAPI file leaves the shape open; what is shown comes from the same definitions the platform publishes elsewhere: response 200: the hub's fragment from the platform's contract.

Over MCP: none; this product is REST only.

Description

Costs 10 tokens a call. One lead by its lead_ id, with its price-change history. The same property opens in Property Sourcing by the lead's property_id (GET /v1/property-sourcing/properties/{property_id}).

Path parameters

lead_idstringrequired

Example request

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

curl
curl "https://platform.casafari.com/v1/seller-leads/<lead_id>" \
  -H "Authorization: Bearer $CASAFARI_API_KEY"

Responses

200 Success.

Type: object.

Show the response shape (11 fields)
idstring
propertyany
historyobject[]
8 properties
datestringnullable
eventstringnullable
What changed, e.g. a new listing, a price change, a status change.
actionstringnullable
operationstringnullable
old_valueany
The value before the change.
new_valueany
The value after the change.
sourcestringnullable
agencystringnullable
Example with sample values (ids and figures are illustrative) (long arrays shortened)
JSON
{
  "id": "lead_5Tn3wK8pR2yH6mQ1vX9cBe",
  "property": {
    "id": "prop_9Rk4tW2nP7xM3cL6vB1qZs",
    "type": "apartment",
    "operation": "sale",
    "price": {
      "amount": 350000,
      "currency": "EUR",
      "per_sqm": 4375
    },
    "bedrooms": 2,
    "living_area_sqm": 80,
    "location": {
      "id": 12345,
      "name": "Sample district",
      "coordinates": {
        "lat": 40.4172,
        "lon": -3.7051
      }
    },
    "first_seen": "2026-03-02",
    "listings_count": null,
    "matched_tags": null,
    "bathrooms": 1,
    "total_area_sqm": 86,
    "plot_area_sqm": null,
    "construction_year": 1965,
    "energy_rating": null,
    "condition": "good",
    "features": [
      "elevator"
    ],
    "address": null,
    "description": "Sample description.",
    "status": "active"
  },
  "history": [
    {
      "date": "2026-03-02",
      "event": "new",
      "action": null,
      "operation": "sale",
      "old_value": null,
      "new_value": 400000,
      "source": "Sample agency website",
      "agency": "Sample agency"
    },
    {
      "date": "2026-05-11",
      "event": "price_change",
      "action": "decrease",
      "operation": "sale",
      "old_value": 400000,
      "new_value": 375000,
      "source": "Sample agency website",
      "agency": "Sample agency"
    }
  ]
}

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.