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

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

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 connected to Casafari's MCP servers cannot answer "List the agencies active in Estoril and how many properties each has". References, Property Sourcing and alerts are REST only.

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 comparables_get_comparables output, which is self-serve 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

/alerts-api/feeds are self-serve on the Casafari API and MCP Platform and stay available to Casafari clients. The property search is available to Casafari clients over REST; new users have Property Sourcing's own search on the self-serve platform (POST /v1/property-sourcing/searches), a different API with its own fields. References and POST /api/v1/listing-alerts/search are for Casafari client accounts.

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.

Can I get competitor activity as a webhook?

Not by agency name. A self-serve 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 comparables_get_comparables, using names from GET /api/v1/references/agencies.

All use cases

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