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

Find leads · Use case

How do I track what competing agencies are selling, reserving and removing in my area?

Casafari's property graph links each property to the agencies and agents advertising it. Over the REST API, get exact names from GET /api/v1/references/agencies and count a competitor's stock with POST /api/v2/properties/search and with_agencies. Then follow its reservations, removals and sales with New Market Leads alerts filtered by agency.

Products: References, Property Sourcing, New Market Leads, Comparables & Valuation, AgentGraph AI

Short answer

The property graph links each property to the agencies and agents that advertise it, with one record per property. That lets you do three things for each competitor:

  • count its active stock in an area
  • see how much of that stock it holds exclusively
  • follow every reservation, removal from the market and sale on its properties through New Market Leads alerts

Steps

Find exact names with GET /api/v1/references/agencies, GET /api/v1/references/agents and GET /api/v1/references/sources

  1. Look up each competitor's name as Casafari stores it:
    • agencies with GET /api/v1/references/agencies
    • agents with GET /api/v1/references/agents
    • portals and other sources with GET /api/v1/references/sources

with_agencies and without_agencies take these agency, company or source names, and listing_agents takes the agent names. Query parameters are on each operation page.

Count stock: POST /api/v2/properties/search with location_ids and with_agencies, listing_agents, exclusive

  1. For each competitor, call POST /api/v2/properties/search with location_ids for your area. Set with_agencies to the agency's name, or listing_agents for one agent.
  2. Run the same search with exclusive: true. That returns the properties available on the market exclusively from a single agency.

Follow changes: POST /api/v1/listing-alerts/search with with_agencies for reservations, removals from the market and sales

  1. Call POST /api/v1/listing-alerts/search with location_ids, with_agencies, alert_date_from and alert_date_to.
  2. Set alert_subtypes to the reservation, removal and sale events. The exact values are on the Search alerts (v1) page.
  3. Use statuses to filter by current status, for example reserved or sold.

Automate: a feed on POST /alerts-api/feeds

  1. Set a webhook with PUT /alerts-api/webhooks, then create a feed with feed_name and filters (business_type required); a feed created before any webhook answers 409 with No webhook configured. filters has no key for an agency name. Its only agency condition is has_agency_name, true or false. A feed therefore cannot follow one competitor. See the Create feed page.

Example: agencies active in Estoril

  1. Get the Estoril location id with POST /api/v1/references/locations (name "Estoril") or POST /api/v1/references/locations/typeahead (country_codes ["PT"], name "Estoril").
  2. Pick the agencies to compare from GET /api/v1/references/agencies.
  3. For each agency, send this to POST /api/v2/properties/search, then send it again with "exclusive": true:
json
{
  "search_operations": ["sale"],
  "location_ids": [<ESTORIL_LOCATION_ID>],
  "with_agencies": ["<AGENCY_NAME>"]
}

The accepted values for search_operations are on the Search properties (v2) page.

  1. For the period you want to review, send POST /api/v1/listing-alerts/search with the same location_ids and with_agencies, plus alert_date_from and alert_date_to.

Build a league table with one row per agency and these columns: active properties for sale, of which exclusive, reservations, removals from the market and sales in the period. The figures come from your own responses; this page shows no sample numbers.

An assistant on the Casafari MCP server cannot answer "List the agencies active in Estoril and how many properties each has". References, Property Sourcing and alerts are REST only.

In Germany, AgentGraph AI answers this kind of question over MCP:

  • agentgraph_area_benchmark shows how the market splits between independents, franchises, banks and online brokerages, and names the biggest networks.
  • agentgraph_screen_agencies ranks the agencies active in an area.

How to read the result

Shared versus exclusive properties

Each property is one record, so a home advertised by several agencies appears once in each of those agencies' results. Subtract the exclusive count from the total to get the properties a competitor shares with others.

A high exclusive share means mandates held alone. Shared stock is contested, and a removal or sale on it may have gone to another agency.

sale_active_listings_count on a property shows how many agencies advertise it

sale_active_listings_count is the number of active advertisements a property has on the sales market. It is a field of the comps_get-comparables output, which is available over MCP around a point. The same output includes average_listings_per_property in its statistics.

A count above one means several agencies or portals advertise the same home. Whether POST /api/v2/properties/search returns this field is shown on its operation page.

Limits

Agency names must match the References list

with_agencies, without_agencies and listing_agents accept the names returned by the References operations. Spelling a name your own way will not match. The graph sees only what is advertised, so mandates that are never advertised do not appear.

Not available over MCP outside Germany's AgentGraph AI

References and Property Sourcing operations, and POST /api/v1/listing-alerts/search, are for Casafari client accounts. /alerts-api/feeds is for Casafari client accounts too.

For agency screening in Germany, AgentGraph AI is available over MCP to Casafari clients with MCP access; its tools' descriptions name Germany as their market. For the property search, /alerts-api/feeds and AgentGraph AI, self-serve access for new users is coming soon. No refresh frequency, quotas or prices are published; ask Casafari.

Questions

Can I see which agent has a property?

Yes, where an agent is named. The graph links properties to agents. GET /api/v1/references/agents gives the names Casafari stores, and listing_agents on POST /api/v2/properties/search or POST /api/v1/listing-alerts/search returns properties or alerts for those agents. In Germany, agentgraph_screen_agents notes that only advertisements naming an agent count, and that agency websites name them more often than portals.

Can I get competitor activity as a webhook?

Not by agency name. A feed on POST /alerts-api/feeds, delivered through PUT /alerts-api/webhooks, sends alerts for its filters, but filters only has has_agency_name, no agency names. Casafari client accounts can filter alerts by agency on demand with with_agencies on POST /api/v1/listing-alerts/search.

Can I exclude my own agency from results?

Yes. without_agencies excludes the agencies, companies or sources you name. It works on POST /api/v2/properties/search, POST /api/v1/listing-alerts/search and comps_get-comparables, using names from GET /api/v1/references/agencies. In Germany, AgentGraph AI's screens take client_brand, which keeps your own network's offices and agents out of competitor-franchise matches, and an exclude_brands filter.

Is there an equivalent for Germany over MCP?

Yes. AgentGraph AI is offered over the Casafari MCP server and covers Germany. agentgraph_screen_agencies and agentgraph_screen_agents rank agencies and agents in an area. agentgraph_territory_map shows network shares by district. agentgraph_area_benchmark describes the market split. A watchlist, re-measured every day, reports changes through agentgraph_watchlist_changes.

All use cases

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