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

Understand an area · Use case

Is it a buyer's or a seller's market in this area?

Casafari Area Insights shows whether an area favours buyers or sellers through activity time series. Run ma_get_time_series_data once each for new, sold_or_rented, available_on_market, price_up and price_down on the same area and filters. New supply outpacing sales, with more cuts than rises, points to a buyer's market; the reverse points to a seller's market.

Products: Area Insights

Short answer

Area Insights offers five activity data points:

  • new: newly advertised properties.
  • sold_or_rented: properties sold or rented.
  • available_on_market: properties on the market.
  • price_up: price increases.
  • price_down: price decreases.

All five come from the status and price changes recorded in Casafari's property graph. Each property record keeps every price change, status change, appearance and removal, with dates. Read the five series together to judge whether stock is building or being absorbed, and whether sellers are cutting or raising prices.

Steps

Resolve the area and anchor dates

  1. Call ma_get_location_typeahead with an English place name, for example Barcelona, and keep the location_id.
  2. Call ma_get_current_datetime to turn "the last two years" into a concrete date_range.

Run ma_get_time_series_data once per data_point with identical filters

  1. Call ma_get_time_series_data five times. Keep type_group, business_type, custom_location_boundary, date_interval, date_range and every filter identical, and change only data_point. The tool's own notes recommend reusing the same filters with different data_point values, for example to compare new supply with sold properties.

Compute trend_strength, slope_per_period and delta_pct with ma_get_time_series_operations

  1. For each series, call ma_get_time_series_operations with the same object as segment. Set operations to ["trend_strength", "slope_per_period", "delta_pct"]. You can add inc_steps and dec_steps to count rising and falling periods.

Map where cuts concentrate with ma_get_heatmap and data_point price_down

  1. Call ma_get_heatmap with the city's location_id and data_point price_down. It returns one value per district, so you can see where cuts concentrate.

Over REST, POST /market-analytics-api/analysis for a market analysis of the same boundary

  1. Send POST /market-analytics-api/analysis with the same custom_location_boundary, plus business_type, types and any range filters. The response fields are documented on the operation page; this page does not repeat them.

Example: apartments for sale in Barcelona, monthly

Prompt to the assistant: "Is the Barcelona apartment market cooling? Compare new supply with sales and price cuts with price rises, month by month since 2024."

The assistant calls ma_get_location_typeahead (Barcelona), then ma_get_current_datetime, then four series requests. The four requests are identical except for data_point:

json
{
  "request_data": {
    "alias": "Barcelona apartments, sale",
    "type_group": "apartment",
    "business_type": "sale",
    "custom_location_boundary": {"location_ids": [BARCELONA_LOCATION_ID]},
    "data_point": "new",
    "date_interval": "month",
    "date_range": {"min": "2024-01-01"}
  }
}

It then lines the series up by date_start:

PairSeries ASeries BWhat the gap shows
Supply vs absorptionnewsold_or_rentedWhether stock is building or being absorbed
Price pressureprice_downprice_upWhether sellers are adjusting downwards

Finally it adds available_on_market as the stock line and delta_pct for each series. The figures come from the live calls; these docs publish none.

How to read the result

New supply rising faster than sold_or_rented: stock builds

When new runs above sold_or_rented month after month, and available_on_market climbs, supply is outpacing absorption. That favours buyers and supports harder negotiation. The opposite pattern, with falling stock, favours sellers.

price_down outnumbering price_up: sellers adjusting

A rising count of price_down against price_up shows asking prices meeting resistance. Check where it happens with the price_down heatmap before generalising to the whole city.

Counts are properties, not advertisements

The property graph merges every advertisement of the same property into one record. So a home advertised by three agencies counts once in new, available_on_market and the other counts. See Why Casafari counts properties.

Limits

Availability:

  • All Area Insights MCP tools, plus the REST operations POST /market-analytics-api/time-series and POST /market-analytics-api/analysis, are available to Casafari clients with their Casafari account.
  • Self-serve access for new users is coming soon.

Coverage and data:

  • The tool descriptions name no specific market.
  • Activity counts come from advertised properties and their status changes. They are not registry or notarial records.

Pricing, quotas and refresh:

  • The sources give no figures for pricing, quotas or refresh frequency. Ask Casafari.

One data_point per request

Each ma_get_time_series_data or ma_get_time_series_operations request carries a single data_point, type_group and business_type. A five-signal view therefore takes five series requests, plus one operations request per series.

REST analysis body fields are the ones published on its operation page

The POST /market-analytics-api/analysis request body accepts these fields:

  • custom_location_boundary, business_type, types.
  • conditions, energy_ratings, orientations, views, directions, floors, characteristics.
  • price_range, rooms_range, bedrooms_range, bathrooms_range, total_area_range, plot_area_range, construction_year_range.

Its response is described only on the operation page.

Questions

What does sold_or_rented count exactly?

sold_or_rented counts the properties sold or rented in each period, as the tool description puts it. The count comes from status changes to sold or rented recorded in Casafari's property graph, and each property counts once. It is not registry or notarial data. The docs publish no further detail on how a status change is confirmed, so treat the count as activity in advertised properties.

Can I separate sales from rentals?

Yes. Every Area Insights time series request takes business_type, either sale or rent. With sale, the series describe the sales market; with rent, they describe the rental market. Each request covers one of the two, so run the same set of data points twice to compare the markets. Keep every other filter identical so the two views stay comparable.

Can I filter to new-build or very-good condition?

Yes, by property condition. Set conditions to ["new"] or ["very-good"]. The allowed values are used, ruin, very-good, new and other, as returned by GET /api/v1/references/conditions. Note that this is a condition filter, not a new-development flag. The Area Insights time series schema has no separate new-development field.

How is a property counted if several agencies advertise it?

Once. Casafari deduplicates advertisements from agency websites and portals and merges them into one record per property, with its full price and status history. Area Insights counts those property records, so a home advertised by several agencies adds one to new, available_on_market or price_down, not one per advertisement. See /docs/faq/count-properties-not-advertisements.

All use cases

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