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 resolve a portal or agency ad id to the property it belongs to?

Send the advertisement ids you hold to POST /api/v1/properties/match-by-listings in Casafari's Property Sourcing REST API. Casafari's property graph recognises the same property advertised by several agencies and portals as one record. The operation returns that single property, which you then fetch in full, with every source and its history, by property id.

Products: References, Property Sourcing

Short answer

Casafari collects advertisements from agency websites and portals in 16 countries. It structures and cleans them, then deduplicates them: the same property, advertised by several agencies and portals, is recognised as one. Every advertisement of that property is merged into one record with its full history.

POST /api/v1/properties/match-by-listings takes the ad ids you hold and returns the property they belong to. Your feed, CRM or statistics can then count each property once. Background: The property graph.

Steps

First sign in with POST /login (email and password). Send Authorization: Bearer <access_token> on each call below.

Check the sources the graph is built from: GET /api/v1/references/sources

  1. Call GET /api/v1/references/sources. It returns the sources the graph is built from. Confirm that the portals and agency websites your ids come from are among them.

Send your ids: POST /api/v1/properties/match-by-listings with listing_ids

  1. Send the ad ids in the listing_ids array. The operation resolves them to the property they belong to.

Fetch the full record: GET /api/v1/properties/search/{property_id}

  1. Call GET /api/v1/properties/search/{property_id} with the returned property id. The record holds the property, its linked advertisements, agencies and agents, and its price and status history.

Example

A portal team in Valencia receives three ads for what looks like the same flat: two from portals and one from an agency website.

http
POST https://api.casafari.com/api/v1/properties/match-by-listings
Authorization: Bearer <access_token>
Content-Type: application/json

{ "listing_ids": ["<ad id 1>", "<ad id 2>", "<ad id 3>"] }

If the graph recognises the three ads as one flat, all three resolve to one property id. Fetch that id to read the full record. Your product then shows one flat, not three. The exact response schema is on the reference page.

How to read the result

Treat the property id as the key in your own system. Store it next to each ad id you receive. Two ads with the same property id are the same home.

primary_listing_id and the linked advertisements

In Casafari property records, primary_listing_id is the primary ad id chosen after matching into the property. The other advertisements stay linked to the same record.

  • Use the property id for counting.
  • Use primary_listing_id where an operation asks for primary ad ids, such as primary_listing_ids in POST /api/v1/properties/smart-links.
  • Property records may also carry listing_urls, the URLs of the advertisements, and ref_numbers, the agencies' reference numbers.

sale_active_listings_count and rent_active_listings_count

These fields give the number of active advertisements for the property on the sales market and on the rental market. A value above one means several agencies or portals offer the same home at once.

That supports two decisions:

  • Show the property once, with a note that several agencies offer it.
  • Discount it when you measure supply.

Check the fetch operation's reference page for the exact fields it returns.

Limits

Property Sourcing and References are REST operations for Casafari client accounts. They are 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/.

Ids must come from sources in the graph

Only ads from sources Casafari collects can be resolved. Check GET /api/v1/references/sources first. An ad that never appeared in those sources has no property to resolve to. The fields of the advertisement entity are listed in Data Export at /docs/data-export/listing.

Client account only

You need a Casafari client account with REST access. An assistant asked "are these three ads the same flat?" over the Casafari MCP server cannot answer from Property Sourcing. Your code or a REST-enabled agent calls the operation. See Why does Casafari count properties and not advertisements? and What is the Casafari property graph?.

Questions

What happens when an id is unknown?

The sources do not describe the response for an id that cannot be resolved, so test it against the operation's reference page. Before sending ids, check with GET /api/v1/references/sources that the portal or agency website they come from is one of the sources the graph is built from.

Can I match by address or coordinates instead?

No, the match operation takes listing_ids only. To find properties around a point, use POST /api/v2/properties/search with custom_location_boundary, a polygon or a circle. You can also pass location_ids from POST /api/v1/references/locations or GET /api/v1/references/locations/by-coordinates. If you hold an agency reference number, search with ref_numbers.

How does Casafari decide two advertisements are the same property?

Casafari structures every advertisement into one schema, normalises the values and resolves places to its location tree and to coordinates. It then recognises the same property, advertised by several agencies and portals, as one record. The sources do not publish the matching method or its accuracy; ask Casafari at https://www.casafari.com/ if you need that detail.

Is the matched record updated when a new advertisement appears?

Yes in principle: Casafari collects advertisements as they appear and as they change, and merges every advertisement of a property into its one record. A new advertisement of the same property therefore joins that record rather than creating a second one. The sources publish no refresh frequency or delivery timing; 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.