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

REST API: a real estate API for AI agents and apps

The same data as the MCP tools, over HTTP: an API for AI agents whose code makes fixed requests, and for any app. To let a model choose the calls instead, use the MCP servers, or call them from the OpenAI API or the Claude API. The REST API is the platform's: https://platform.casafari.com/v1/<product>, one base per product, signed with the platform API key from your console and billed in tokens, the same key and the same tokens as the MCP servers. This reference is generated from the platform's own OpenAPI files (version 2026-10-31.1, vendored 2026-11-02): 37 operations in 9 sections, 7 of them products. Operations are grouped by product, the same way the MCP tools are; MCP and REST compared shows where the two overlap and where they do not. Casafari clients with a contract also keep the existing API at https://api.casafari.com (39 operations, bearer token), documented after the platform's.

Platform API keys

Base URLhttps://platform.casafari.com: each product under /v1/<product> (/v1/property-sourcing, /v1/seller-leads, /v1/private-sellers, /v1/comparables, /v1/comparables-transactions, /v1/area-insights, /v1/parcel-zoning); place lookup under /v1/locations, your account under /v1/account
CredentialA platform API key (cf_sk_...) from the console, sent as Authorization: Bearer <api_key> or X-API-Key: <api_key>; or an OAuth access token as the bearer (MCP authorization). The key travels in a header, never in the query string.
FormatJSON requests and responses; errors as application/problem+json (RFC 9457): detail says how to fix it, code names the problem, request_id is what to quote to support
TokensEvery operation costs a fixed number of tokens, the same over REST and MCP (1 token = EUR 0.04); each operation's page says what it costs, and the file says it in x-casafari-units. The response headers Casafari-Units-Charged and Casafari-Units-Remaining say what a call cost and what is left. When tokens run out the API answers 402 payment_required with an upgrade_url to top up.
PlansFree: 1,000 tokens for 30 days. Pay as you go: credits. Agent: EUR 49 a month, or EUR 39 a month billed yearly, with 1,500 tokens a month. Agency: EUR 149 a month, or EUR 119 a month billed yearly, with 5,000 tokens a month. Custom: talk to Casafari. See Pricing and Limits: Free and the paid self-serve plans have request limits, such as distinct places a day.
OpenAPIOne file per product, the platform's own (see Download the OpenAPI description)

A first call, with the key in an environment variable ($CASAFARI_API_KEY in every example on this site is a placeholder, never a credential): Comparables, the platform's default product.

bash
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
    }
  }
}'

Most products take a location_id: get it first from GET /v1/locations/search (free). GET /v1/account (free) shows your plan and the tokens left.

Download the OpenAPI description

For Postman (Import → Link, paste the URL), Insomnia, code generators or an agent's tool loader. The platform's files are its own, one per product, public and served by the platform itself; the hub keeps a copy of each (vendored 2026-11-02, version 2026-10-31.1), which these pages are generated from.

Both APIs in one file, every path on its own server (the platform's first), with the examples the existing API's description lacks filled in from real calls: /openapi.json covers every product; per product, /docs/rest/property-sourcing/openapi.json, /docs/rest/seller-leads/openapi.json, /docs/rest/private-sellers/openapi.json, /docs/rest/comparables-valuation/openapi.json, /docs/rest/comparables-with-transactions/openapi.json, /docs/rest/area-insights/openapi.json, /docs/rest/alerts/openapi.json, /docs/rest/references/openapi.json, /docs/rest/parcel-zoning/openapi.json, /docs/rest/locations/openapi.json, /docs/rest/account/openapi.json.

Operations by product

Property Sourcing

Existing API (contract clients):

High Potential Seller Leads

Private Seller Leads

Comparables & Valuation

Existing API (contract clients):

Comparables with Transactions

Area Insights

Existing API (contract clients):

New Market Leads

References

Parcel Zoning

Location Lookup

Account and sign-up

Authentication

The existing API (contract clients)

Already a Casafari API customer? Your token keeps working, and the existing API's reference is now on this site. Log in to your API account to see your token.

Casafari clients with a contract also have the existing REST API at https://api.casafari.com, documented at docs.api.casafari.com, which signs in with an email and password and a bearer token. The platform does not replace it: a contract client keeps it as it is, and signs up on the platform as well for the platform's products (with a contract, Casafari sets the account up on the Custom plan). New users need only the platform. Its operations are listed under each product after the platform's, under "Existing API (contract clients)": Property Sourcing, Comparables & Valuation, Area Insights, New Market Leads, References; New Market Leads and References have no platform operation yet. This part is generated from its public OpenAPI description (OpenAPI 3.1.0, API version 0.1.0, snapshot taken 2026-10-08): 39 operations, sign-in included.

Base URLhttps://api.casafari.com
FormatJSON requests and responses
AuthenticationA bearer token (JWT) from POST /login with your account's email and password, or, for an integration without a person, OAuth2 client credentials: an API client created in your API account's settings, exchanged at POST /oauth/token with grant_type=client_credentials. Platform API keys do not work here; a platform key sent here answers 401.
OpenAPI descriptionIn /openapi.json, with request and response examples (see Download the OpenAPI description). Upstream: https://docs.api.casafari.com/openapi.json
Interactive docshttps://docs.api.casafari.com/

The API description says about the token:

The API endpoints require an authentication token to be provided with each request. The token must be sent via the Authorization HTTP header, containing the keyword Bearer followed by your authentication token.

The public description lists the base catalogue. What your account can call depends on its subscription, and the interactive docs show your account's own list after you sign in. For agents, auth.md covers both ways of signing in.

Get a token

  1. Call POST /login with your account's email and password. The response has an access_token and a refresh_token.
  2. Send Authorization: Bearer <access_token> with every other request.
  3. When the access token expires, call GET /refresh-token with the refresh token as the bearer. A 401 from it means the refresh token has expired: log in again.
bash
curl -X POST "https://api.casafari.com/login" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "<email>",
  "password": "<password>"
}'

Then, with the token in an environment variable ($CASAFARI_TOKEN in every example of the existing API on this site is a placeholder, never a credential):

bash
curl "https://api.casafari.com/api/v1/references/types" \
  -H "Authorization: Bearer $CASAFARI_TOKEN"

Status codes

Every operation documents its own responses. Across both descriptions:

StatusMeaningOperations that can return it
200OK73
201Created2
202Accepted1
204No Content5
400Bad Request51
401Unauthorized59
402payment_required (https://platform.casafari.com/errors/payment-required)25
403Forbidden59
404Not Found44
405method_not_allowed (https://platform.casafari.com/errors/method-not-allowed)37
409Conflict16
413payload_too_large (https://platform.casafari.com/errors/payload-too-large)15
415unsupported_media_type (https://platform.casafari.com/errors/unsupported-media-type)15
422Validation Error28
429Too Many Requests36
500internal_error (https://platform.casafari.com/errors/internal-error)37
502upstream_error (https://platform.casafari.com/errors/upstream-error)32
503capacity_exhausted, unavailable (https://platform.casafari.com/errors/capacity-exhausted, https://platform.casafari.com/errors/unavailable)37
504upstream_timeout (https://platform.casafari.com/errors/upstream-timeout)32

Read this reference as Markdown

Add .md to any page's URL, or send Accept: text/markdown. /llms.txt lists every operation next to every MCP tool.

Questions about this

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