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

Claro AI · REST API

Location figures

POSThttps://platform.casafari.com/v1/claro/location
API key4 parameters

Send Authorization: Bearer $CASAFARI_API_KEY: a platform API key or OAuth access token, metered in platform tokens; see platform sign-in and Claro AI. On the platform this is POST https://platform.casafari.com/v1/claro/location; POST /v1/location is Claro's own path, which the platform adds /claro to. The platform forwards the call to Claro unchanged: Claro's Claro-Version header and its error bodies ({"error":{"code","message"}}, with rate_limited and quota_reached on a 429) pass through.

Over MCP: explain_location (equivalent). MCP and REST compared.

Description

Footfall index (an index of pedestrian activity within a 5-minute walk that compares places with each other; not a head count, never people or visitors a day; split into weekday and weekend averages, morning/lunch/afternoon/evening and local/commuter/tourist shares of the index), residents within a 10-minute walk and drive (by age band 0-14, 15-29, 30-44, 45-59, 60+, with households, households per net income quintile and total spending power within a 10-minute walk), and nearby restaurants, fast food, cafes, shops, supermarkets, gyms and transit stops, for a premises id or any point (lat, lon) in Spain. Needs location data access on your account; a point that is not a premises is a live call on your account's location key (about 31 Location Intelligence operations per point). Returns location and location_sources: the same public field names, units and source notes as search_premises and get_premises (a 0 footfall or population is unknown, so null). figures is deprecated: same values as location under stored names; will be removed in a future version. A figure Location Intelligence has no data for is null, never 0.

Request body

Content type application/json. Required. Type: object.

idstring
A premises id (pm_...) from a search; returns its stored figures, or measures its point when none are stored. Send id, or lat and lon.
latnumber
Latitude in degrees of a point in Spain; send with lon instead of id.
lonnumber
Longitude in degrees of a point in Spain; send with lat instead of id.
langstring
Language of the text the answer writes (titles, notes, labels, reasons, error messages): en (default) or de (German). Place names, agency names, property titles and quotes from a property's own text stay as written.
en de
default "en"

Example request

Placeholders only: replace the token and the values with your own.

curl
curl -X POST "https://platform.casafari.com/v1/claro/location" \
  -H "Authorization: Bearer $CASAFARI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "<id>"
}'

Responses

200 Location figures

Type: object.

Show the response shape (7 fields)
pointobject
2 properties
latnumber
lonnumber
sourcestring
precomputed live
locationmap of number
The same public names as a search result's location: null = not stated or unknown (a 0 footfall or population is unknown). Footfall is an index for comparing places with each other, not a head count or people a day.
location_sourcesobject
The unit, source and vintage of each figure in location, as in search results.
figuresobjectdeprecated
Deprecated: same values as location under the stored column names; will be removed in a future version.
Example from the API description (long arrays shortened)
JSON
{
  "point": {
    "lat": 40.42,
    "lon": -3.7
  },
  "source": "precomputed",
  "location": {
    "footfall_daily_walk_5min": 50000,
    "residents_walk_10min": 20000,
    "residents_drive_10min": 300000,
    "restaurants_walk_5min": 30,
    "fast_food_walk_5min": null,
    "cafes_walk_5min": null,
    "shops_walk_5min": null,
    "supermarkets_walk_5min": null,
    "gyms_walk_10min": null,
    "transit_stops_walk_5min": 5,
    "footfall_weekday_avg_walk_5min": 52000,
    "footfall_weekend_avg_walk_5min": 41000,
    "footfall_morning_6_12_walk_5min": null,
    "footfall_lunch_12_15_walk_5min": null,
    "footfall_afternoon_15_19_walk_5min": null,
    "footfall_evening_19_01_walk_5min": null,
    "footfall_local_under_3km_walk_5min": null,
    "footfall_commuter_3_50km_walk_5min": null,
    "footfall_tourist_over_50km_walk_5min": 9000,
    "residents_age_0_14_walk_10min": null,
    "residents_age_15_29_walk_10min": null,
    "residents_age_30_44_walk_10min": 5200,
    "residents_age_45_59_walk_10min": null,
    "residents_age_60_plus_walk_10min": null,
    "households_walk_10min": 9000,
    "households_income_below_19397_walk_10min": null,
    "households_income_19397_29247_walk_10min": null,
    "households_income_29247_40162_walk_10min": 1800,
    "households_income_40162_57824_walk_10min": null,
    "households_income_above_57824_walk_10min": null,
    "spending_power_total_eur_walk_10min": 310000000,
    "spending_power_per_resident_eur_walk_10min": 15500
  },
  "location_sources": {
    "computed_at": "2026-10-12",
    "groups": [
      {
        "fields": [
          "footfall_daily_walk_5min",
          "footfall_weekday_avg_walk_5min"
        ],
        "unit": "footfall index: summed per-cell daily count within the walk, not distinct people (weekday/weekend are daily averages; the others split the daily count)",
        "source": "Location Intelligence footfall estimates (collection 234)",
        "vintage": "2024"
      },
      {
        "fields": [
          "residents_walk_10min",
          "residents_drive_10min"
        ],
        "unit": "residents",
        "source": "Location Intelligence, MB Research sociodemographics (collection 87)",
        "vintage": "2024"
      }
    ]
  },
  "figures": {
    "footfall_daily": 50000,
    "pop_walk10": 20000,
    "pop_drive10": 300000,
    "restaurants_walk5": 30,
    "transit_walk5": 5,
    "footfall_weekday": 52000,
    "footfall_weekend": 41000,
    "footfall_tourist": 9000,
    "pop_age_30_44": 5200,
    "households_walk10": 9000,
    "income_q3": 1800,
    "spending_power_walk10": 310000000
  }
}

400 Invalid request

Type: object.

Show the response shape (3 fields)
errorobject
2 properties
codestringrequired
messagestringrequired

401 Missing or invalid key

Type: object.

Show the response shape (3 fields)
errorobject
2 properties
codestringrequired
messagestringrequired

403 No access

Type: object.

Show the response shape (3 fields)
errorobject
2 properties
codestringrequired
messagestringrequired

429 Rate limited (`rate_limited`), or today's live location points are used (`quota_reached`, naming live_location_points_daily)

Type: object.

Show the response shape (3 fields)
errorobject
2 properties
codestringrequired
messagestringrequired

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