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

Area Insights · MCP tool

area-insights_get_sales_time_series

Registered sale price trend in an area

Read-only44 parameters

Call it as area-insights_get_sales_time_series on the Area Insights MCP server, https://platform.casafari.com/mcp/area-insights (how to connect).

Over REST: no operation in the public API description does this. MCP and REST compared.

What does Registered sale price trend in an area do?

How registered sale prices moved in an area of Spain, France, Italy, Poland or Portugal: weekly average sale price and average price per square metre, plus total_properties, the number of registered sales in the period. Give country, location_boundary and sold_at_range with both dates. Every week in the range is returned; a week with no sales has value 0, which means nothing sold that week, not a price of 0. Spain: notary deeds; France: DVF, the public register of property sales; Italy: registered sales via our partner Ring33; Poland: RCN, Poland's official register of property prices. Sale prices, not asking prices: for asking prices use the other Area Insights tools.

Which parameters does area-insights_get_sales_time_series take?

countrystringrequired
ES (Spain), FR (France), IT (Italy), PL (Poland) or PT (Portugal: INE's official median per m² by municipality and quarter; area as location_ids, a circle or a polygon, only types and sold_at_range as filters, no counts) or AT (Austria: yearly open-data prices per m² by municipality, district or state; location_ids only; no counts; not available until Casafari names its source).
ES FR IT PL PT AT
location_boundaryobjectrequired
The area: exactly one of location_ids (from Location Lookup), circle or polygon.
3 properties
location_idsinteger[]
Location ids from Location Lookup (locations_search), all in the request's country.
1–100 items≥ 1
circleobject
A circle: its centre and radius in metres (1 to 50 000).
2 properties
coordinatesobjectrequired
2 properties
latnumberrequired
-90–90
lonnumberrequired
-180–180
radius_in_metersnumberrequired
1–50000
polygonobject[]
A closed polygon: at least 4 points, the last equal to the first.
4–1000 items
2 properties
latnumberrequired
-90–90
lonnumberrequired
-180–180
sold_at_rangeobjectrequired
Sale dates, YYYY-MM-DD, both bounds required: {"gte": "2024-01-01", "lte": "2025-12-31"} (or gt / lt).
4 properties
gtestring (date)
pattern ^\d{4}-\d{2}-\d{2}$
gtstring (date)
pattern ^\d{4}-\d{2}-\d{2}$
ltestring (date)
pattern ^\d{4}-\d{2}-\d{2}$
ltstring (date)
pattern ^\d{4}-\d{2}-\d{2}$
typesstring[]
Property types, lower case, e.g. ["apartment", "penthouse"] or ["house", "villa"].
1–40 itemsat most 40 characterspattern ^[a-z][a-z_]*$
conditionsstring[]
Spain, Italy and Poland only: property condition, any of used, ruin, very-good, new, other.
used ruin very-good new other
1–5 items
with_mortgageboolean
Spain only: true for sales financed with a mortgage, false for sales without one.
price_rangeobject
Registered sale price in euros: {"gte": n, "lte": n} (or gt / lt); at least one bound.
4 properties
gtenumber
≥ 0
gtnumber
≥ 0
ltenumber
≥ 0
ltnumber
≥ 0
price_per_sqm_rangeobject
Registered sale price per square metre in euros: {"gte": n, "lte": n} (or gt / lt); at least one bound.
4 properties
gtenumber
≥ 0
gtnumber
≥ 0
ltenumber
≥ 0
ltnumber
≥ 0
total_area_rangeobject
Built area in square metres: {"gte": n, "lte": n} (or gt / lt); at least one bound.
4 properties
gtenumber
≥ 0
gtnumber
≥ 0
ltenumber
≥ 0
ltnumber
≥ 0
plot_area_rangeobject
France and Poland only: plot area in square metres: {"gte": n, "lte": n} (or gt / lt); at least one bound.
4 properties
gtenumber
≥ 0
gtnumber
≥ 0
ltenumber
≥ 0
ltnumber
≥ 0
bedrooms_rangeobject
France only: bedrooms: {"gte": n, "lte": n} (or gt / lt); at least one bound.
4 properties
gteinteger
≥ 0
gtinteger
≥ 0
lteinteger
≥ 0
ltinteger
≥ 0

How do I call area-insights_get_sales_time_series?

Required arguments only, with placeholder values. Your assistant fills them in from the parameters above.

JSON-RPC
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "area-insights_get_sales_time_series",
    "arguments": {
      "country": "ES",
      "location_boundary": {
        "location_ids": [
          1
        ]
      },
      "sold_at_range": {
        "gte": "2025-01-01"
      }
    }
  }
}

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