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

High Potential Seller Leads · REST API

List seller leads

GEThttps://platform.casafari.com/v1/seller-leads
API key100 units per page13 parameters

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

Over MCP: none; this product is REST only.

Description

Homes around a point whose asking price was cut repeatedly: at least min_price_cuts cuts (default 1) adding up to at least min_price_cut_pct percent (default 5), over the home's whole time on the market or, with since, from that date. Search within radius_m (50 to 300 m) of lat/lon, in ES, FR, IT, DE, GR or AD. Each lead carries a lead_ id, the property's prop_ id (readable with Property Sourcing), its coordinates and its price cuts. For the next page, send only cursor (and page_size). 100 units per page.

Query parameters

latnumberrequired
Latitude of the point to search around, -90 to 90.
lonnumberrequired
Longitude of the point to search around, -180 to 180.
radius_minteger
Radius in metres, a whole number from 50 to 300.
50–300default 300
countrystring
ISO 3166-1 alpha-2 code of the point's country: ES, FR, IT, DE, GR or AD. Needed unless the account covers one country only.
operationstring
sale or rent.
sale rent
default "sale"
min_price_cutsinteger
Fewest price cuts, a whole number from 1.
1–100default 1
min_price_cut_pctnumber
Smallest total cut in percent, 0.1 to 100.
0.1–100default 5
sincestring (date)
A date (YYYY-MM-DD): also count the cuts since then, reported in price_cuts_since.
typesstring
Comma-separated property type names, e.g. apartment,house.
price_mininteger
Lowest asking price, a whole number above 0.
≥ 1
price_maxinteger
Highest asking price, a whole number above 0.
≥ 1
page_sizeinteger
Leads per page, up to 100 (25 on Free).
1–100default 25
cursorstring
The cursor from a previous page's next; send it with page_size only.

Example request

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

curl
curl "https://platform.casafari.com/v1/seller-leads?lat=40.4168&lon=-3.7038" \
  -H "Authorization: Bearer $CASAFARI_API_KEY"

Responses

200 One page of leads.

Type: object.

Show the response shape (14 fields)
resultsobject[]
5 properties
idstring
Opaque lead id, lead_....
property_idstring
The property's prop_ id, readable with GET /v1/property-sourcing/properties/{property_id}.
coordinatesobjectnullable
2 properties
latnumber
lonnumber
price_cutsobjectnullable
Price cuts over the home's whole time on the market.
2 properties
countnumbernullable
Number of price cuts.
percentagenumbernullable
Total cut, in percent.
price_cuts_sinceobjectnullable
Price cuts since the since date; null without it.
2 properties
countnumbernullable
Number of price cuts.
percentagenumbernullable
Total cut, in percent.
totalinteger
How many leads the area has.
nextstringnullable
URL of the next page (valid one hour), or null.
Example with sample values (ids and figures are illustrative)
JSON
{
  "results": [
    {
      "id": "lead_5Tn3wK8pR2yH6mQ1vX9cBe",
      "property_id": "prop_9Rk4tW2nP7xM3cL6vB1qZs",
      "coordinates": {
        "lat": 40.4172,
        "lon": -3.7051
      },
      "price_cuts": {
        "count": 3,
        "percentage": 12.5
      },
      "price_cuts_since": null
    }
  ],
  "total": 14,
  "next": "https://platform.casafari.com/v1/seller-leads?cursor=cur_SAMPLE"
}

400 Invalid parameter (`invalid_request`, naming each one), or the search reached its depth limit (`page_depth_exceeded`).

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 product or 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 Unknown, expired or another account's cursor (`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

429 A request limit of the plan was reached (`request_limit_reached`).

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.