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 data in your product · Use case

How do I look up one property and see every price and status change?

Fetch the property with GET /api/v1/properties/search/{property_id} in Casafari's Property Sourcing REST API. Each record merges every advertisement of one property and carries its full history: every price change, status change, appearance and removal, with dates, in sale_price_history and rent_price_history. First find the id from a portal or agency ad id, or from a reference number.

Products: Property Sourcing, References

Short answer

Casafari collects property advertisements from agency websites and portals in 16 countries. It structures, cleans and deduplicates them, then merges every advertisement of a property into one record. That record carries the property's full history: every price change, status change, appearance and removal, with dates. Prices over time are in sale_price_history and rent_price_history.

You fetch the record over the REST API with GET /api/v1/properties/search/{property_id}, part of Property Sourcing. The property graph explains how the record is built.

Steps

Get a token: POST /login

  1. Send the account's email and password as JSON to POST https://api.casafari.com/login. The response holds an access_token and a refresh_token (JWT). Send Authorization: Bearer <access_token> on every call. Renew the token with GET /refresh-token when it expires.

Find the property id: from a portal or agency ad id with POST /api/v1/properties/match-by-listings, or by ref_numbers with POST /api/v2/properties/search

  1. If you hold a portal or agency ad id, send it in listing_ids to POST /api/v1/properties/match-by-listings. The operation resolves the ad to the property it belongs to.
  2. If you only hold the agency's own reference number, send it in ref_numbers to POST /api/v2/properties/search. Add location_ids to narrow the search.

Fetch: GET /api/v1/properties/search/{property_id}

  1. Call the operation with the property id from step 2 or 3. It returns the property and its history.

Read sale_price_history, rent_price_history and the status fields

  1. Read sale_price_history for asking prices on the sales market and rent_price_history for the rental market. Each change carries its date.
  2. Read the status fields for the property's current state on each market. In Casafari property records these are sale_status and rent_status. The operation's reference page has the full response schema.

Example

A buyer's agent in Lisbon has the id of a portal ad for a flat. They want to know how long it has been offered and at what prices.

http
POST https://api.casafari.com/login
Content-Type: application/json

{ "email": "agent@example.com", "password": "<password>" }
http
POST https://api.casafari.com/api/v1/properties/match-by-listings
Authorization: Bearer <access_token>
Content-Type: application/json

{ "listing_ids": ["<portal ad id>"] }
http
GET https://api.casafari.com/api/v1/properties/search/<property_id>
Authorization: Bearer <access_token>

The condensed record below shows field names only. Values are elided. The exact shape of each history entry is on the reference page and in the public OpenAPI description at https://docs.api.casafari.com/openapi.json.

json
{
  "property_id": "<property_id>",
  "sale_status": "...",
  "rent_status": "...",
  "sale_price_history": ["..."],
  "rent_price_history": ["..."]
}

How to read the result

Read the history in date order.

  • First appearance: tells you how long the property has been offered.
  • Each price change: shows the direction and size of the move.
  • Removals followed by reappearances: show whether the property was withdrawn and offered again. This answers the question "was this home on the market before?"

A long history with several cuts is negotiation leverage for a buyer. For a valuer, lender or due-diligence team, the same history is a dated record of how the market has treated the property.

Statuses: active, reserved, hold, sold, rented

The graph records each status change with its date:

  • On the sales market a property can be active, reserved, on hold or sold.
  • On the rental market it can be active, reserved, on hold or rented.

Read a status as the property's state on the market as the graph observed it from the advertisements.

Several agencies, one record: the agencies linked to the property

When several agencies and portals advertise the same property, Casafari recognises them as one property. It keeps one record that links the advertisements, agencies, agents, location and history. You therefore read one history, not one per advertisement. Agency names match the values from GET /api/v1/references/agencies.

Limits

Property Sourcing is REST only and for Casafari client accounts. It is not offered over MCP. For Property Sourcing, self-serve access for new users is coming soon.

The sources give no figures for pricing, quotas, rate limits, refresh frequency or SLAs. Ask Casafari at https://www.casafari.com/.

Client account only; MCP does not search or fetch properties

The Casafari MCP server has no tool that searches or fetches properties. A request such as "show me the price history of property 123456" made to an assistant connected over MCP cannot be answered from Property Sourcing. Your own code, or an agent with a REST token, calls the operations above. See Can I search properties over Casafari MCP?.

History covers what the graph observed since the property first appeared

The history starts when the property first appeared in the sources Casafari collects. A property never advertised in those sources has no history in the graph. Changes made before its first appearance are not recorded. The history shows asking prices and statuses on the market; it does not tell you the price a buyer finally paid. More: Does Casafari keep price and status history? and How do I look up one property and its price history?.

Questions

Can I look up a property over MCP?

No, property lookup is not offered over the Casafari MCP server. Property Sourcing, including GET /api/v1/properties/search/{property_id}, is a REST product for Casafari client accounts. The MCP server's tools cover Comparables & Valuation, Area Insights and AgentGraph AI. An agent can still call the REST operations directly once it holds a bearer token from POST /login or an API client.

What if the same property was advertised at different prices by two agencies?

It is still one property record, because Casafari recognises the same property advertised by several agencies and portals as one and merges every advertisement into that record. The record keeps every price change with its date. The sources do not describe how two asking prices that differ at the same moment are reconciled; check the operation's reference page for the fields returned.

Can I see which agencies advertised it?

Yes, the property record links the advertisements, agencies and agents behind the property, as well as its location and history. Agency names correspond to the values returned by GET /api/v1/references/agencies. The exact response fields for the fetch operation are on its reference page at /docs/rest/property-sourcing/get-property-by-id-v1 and in the public OpenAPI description.

Can I get the history for every property in an area in bulk?

For bulk delivery, see Data Export at /docs/data-export, which describes bulk delivery and the fields of each entity, including the Property entity. Over the REST API you can search an area with POST /api/v2/properties/search and fetch each property by id. The sources publish no terms, pricing or limits for bulk delivery; ask Casafari at https://www.casafari.com/.

Related: Resolve client-forwarded links to one property record

All use cases

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