Menu · Leads
Leads

Map where your leads are looking

GEThttps://api.ruuster.com/v1/leads/map

Where your leads are looking for homes, as map-ready points. Listing views, favorites and tour requests from the last 30 days, grouped by the viewed listings' locations into clusters, ZIP codes, cities or single listings, with the top areas and the map bounds. One call for a heatmap, dot map or market map; no need to page through leads.

  • Authentication: x-api-key and x-email headers of an owner or admin
  • Rate limit: 120 requests per minute per key
View as Markdown

Every listing view, favorite and tour request your leads made on your sites, placed at the location of the listing they looked at (any listing, yours or not) and grouped for a map. Use it for "where are my buyers looking?", a heatmap or dot map of demand, or to compare areas. It is one call: there is no need to list leads and read each one's activity.

In Claude (claude.ai and Claude desktop) and other assistants that show MCP Apps, the leads_map tool's answer comes with an interactive map of these points: zoom, click a circle for its counts, and click a row in the top-areas table to fly there. Nothing extra to call.

The response is counts only. It never names a lead, so it doesn't count against your daily lead-row quota. For who is behind the activity, use List active leads; for one listing's viewers, List a listing's viewers.

Query parameters

Name Type Default Description
from date 30 days before to First day, YYYY-MM-DD in America/Chicago, included. Activity is kept for 30 days, so no earlier than 30 days ago
to date tomorrow Day after the last day, YYYY-MM-DD, excluded. The default includes today
groupBy cluster | zip | city | listing cluster How points are grouped: cluster is a grid sized to the area your leads cover, best for a heatmap; zip and city give one point per ZIP code or city; listing gives one point per listing with its address
agentId string Only leads assigned to this agent (an agentId from List agents)
limit integer 300 Most points returned, 1 to 1000. The most active points are kept
sources 0 | 1 0 1 adds, for every point and area, how many listing views happened on Ruuster versus on other sources your CRM recorded (portals, IDX sites). Not with agentId

Response

Field Description
groupBy The grouping used
cellDegrees Grid cell size in degrees when groupBy is cluster (0.005 to 0.25), otherwise null
totals.views, favorites, tourRequests All activity in the range, mapped or not
totals.leads Distinct leads behind that activity
totals.listings Distinct listings they looked at
totals.mappedListings, unmappedListings Listings placed on the map, and those with no location on record
bounds south, west, north, east of every mapped listing; null when nothing was mapped
focus The same four edges around the core of the activity (the middle 95% of mapped listings), so a few far-away views don't zoom the map out. Fit the map to this; clusters are sized from it
points One per group, most distinct leads first: lat, lng (the activity-weighted center), views, favorites, tourRequests, leads, listings, medianPrice (asking price), label ("City, ST ZIP"); with groupBy=listing also propertyId and address
pointsOmitted Points left out by limit
areas The top 20 cities by distinct leads, whatever the grouping: city, state, lat, lng, views, favorites, tourRequests, leads, listings, medianPrice
ruusterViews, outsideViews, ruusterShare With sources=1, on totals, each point and each area: listing views on Ruuster (the same as views), listing views your CRM recorded from other sources, and Ruuster's share of the two (0 to 1, null with no views). totals also has ruusterLedPoints and ruusterLedAreas, how many returned points and areas have a share above 0.5

meta.range echoes the days mapped and meta.eventsAvailableFrom the earliest day you can ask for. If a range holds more than 60,000 events, the first 60,000 are mapped and meta.truncated is true; ask for fewer days to see the rest.