Get listing engagement
https://api.ruuster.com/v1/properties/{propertyId}/engagementHow people engaged with one listing across Ruuster sites, by day, week or month: views, visitors, favorites, tour requests, offers, shares, contact requests and push alerts. The seller-report call. With scope=any, your own leads' activity on any one listing.
- Authentication:
x-api-keyandx-emailheaders of an owner or admin - Rate limit: 120 requests per minute per key
Path parameters
| Name | Type | Description |
|---|---|---|
propertyId |
string | The listing's propertyId (uuid), or mls:<number> to find it by MLS number. See MLS numbers |
Query parameters
| Name | Type | Default | Description |
|---|---|---|---|
from |
date | 30 days before to |
First day, YYYY-MM-DD in America/Chicago, included |
to |
date | today | Day after the last day, YYYY-MM-DD, excluded |
granularity |
string | day |
day, week (Monday start) or month |
scope |
string | brokerage |
brokerage: one of your listings, with every figure below. any: any single listing, by propertyId, with only your own leads' figures (see below) |
Response
data.series has one entry per bucket (bucket is the bucket's first day, partial marks a bucket cut off by your range) and data.totals covers the whole range. Each contains:
| Field | Description |
|---|---|
views.total |
public.pageViews + loggedIn.views. Ruuster's best combined figure for views, not an exact count |
views.public.pageViews |
Views by visitors who weren't logged in, as Google Analytics measures them on this listing's pages across Ruuster sites. Reloads count |
views.public.users |
Distinct public visitors as Google Analytics counts them (roughly, distinct browsers). The closest available figure for "how many people" |
views.public.sessions |
Visits that included this listing |
views.public.fromMySites, fromOtherRuusterSites |
Public views on your hostnames vs other brokerages' Ruuster sites |
views.loggedIn.views |
Views by signed-in Ruuster users, from Ruuster's own records. Reloads count |
views.loggedIn.lead, agent |
Of those, by leads and by agents (yours or another brokerage's) |
views.loggedIn.uniqueLeads |
Distinct leads who viewed |
views.loggedIn.fromMySites, fromOtherRuusterSites |
Logged-in views by site |
views.gaSignedIn |
Google Analytics' own count of signed-in views and users. A cross-check on loggedIn, not added into total |
favorites |
Times the listing was saved. A tour request also saves the listing |
tourRequests |
Tour requests for the listing |
offers |
Offers submitted through Ruuster |
shares.sent, shares.opens |
Share links for this listing created on your Ruuster sites, and opens of those links |
contactAgentClicks |
Contact-agent requests sent from the listing page |
pushAlertsSent |
Mobile push alerts that linked directly to this listing. Most alerts link to a saved search instead, so this is usually small |
Visitor and lead counts (users, uniqueLeads) are distinct per day. In week and month buckets they are the sum of each day's count, so a person who came back on several days is counted on each of those days. They're null in totals, because people aren't additive across buckets.
Public views come from Google Analytics and logged-in views from Ruuster's own records, and total adds the two. The two sources measure differently, so a small number of visits can be counted in the wrong group. Google Analytics doesn't see visitors who block analytics, so treat public numbers as a floor. Buckets outside meta.coverage return null, never 0.
To see which of your leads are behind the logged-in views, use List a listing's viewers.
Any listing: scope=any
With scope=any the listing can be one that isn't yours, for example a home one of your buyers keeps coming back to, identified by propertyId (resolve an MLS number with Look up any listing by MLS number first). The series then describes your own leads only: views.loggedIn.lead (their views, reloads count), views.loggedIn.uniqueLeads (how many of them), favorites (your leads who saved it) and tourRequests (your leads who requested a tour), per bucket and in totals, where the counts of leads are true distinct counts over the range. Everything that describes other people's activity is null: views.total, views.public, views.gaSignedIn, views.loggedIn.views, agent, the site split, offers, shares, contactAgentClicks and pushAlertsSent. The shape of the response is the same, so one parser serves both scopes, and meta.scope says which you got. It's always one listing per call; the ranked all-listings call covers your inventory only.
Not available per listing: how many Ruuster emails included the listing, and how many saved searches match it.