List contacts Run in API Explorer
The calling agent's contacts, filterable and sortable, each row carrying its Scout Score and trend, with alert counts and activity counts on request.
Requires the contacts:read scope. Rate budget: 60 calls per 1 minute per credential (the list class).
Query parameters
-
Only contacts whose first or last name contains this substring (case-insensitive).
-
Only the contact at exactly this address, ignoring case — the key create_contact matches on, so this is the one to ask "do I already have them?" with.
-
The caller's own id for the contact, exact match; not enforced unique, so a page may hold more than one match.
-
Only contacts carrying this tag (case-insensitive exact match).
-
Only contacts RealScout can (true) or cannot (false) email.
-
Only contacts with this status.
Values are
UNDESIGNATED,NURTURED,OVERAGE, orARCHIVED. -
Only contacts created at or after this ISO-8601 timestamp.
-
Only contacts created at or before this ISO-8601 timestamp.
-
Only contacts changed at or after this ISO-8601 timestamp — the filter a CRM sync pages on.
-
Only contacts changed at or before this ISO-8601 timestamp.
-
Only contacts last active at or after this ISO-8601 timestamp.
-
Only contacts last active at or before this ISO-8601 timestamp.
-
Restrict to one of the Dashboard highlight groupings: most_engaged, recently_reengaged, or slipping_away. Composes with every filter above, and implies scout_score ordering.
Values are
most_engaged,recently_reengaged, orslipping_away. -
created_at (default), last_active_at, or scout_score; contacts with no value sort last.
Values are
created_at,last_active_at, orscout_score. Default value iscreated_at. -
DESC (default) or ASC.
Values are
ASCorDESC. Default value isDESC. -
Comma-separated: alerts adds alerts, a summary per alert family with how many are still scheduled to send and when that family last sent; activity adds activity, the window's action counts. Both are the same shape get_contact returns for the same names. The Scout Score and its trend are on every row and need no include.
Values are
alertsoractivity. -
Look-back window in days for the activity counts and the group thresholds, 1 to 90.
Minimum value is
1, maximum value is90. Default value is30. -
Opaque cursor from the previous page's next_cursor; a cursor another list issued is refused.
-
Page size, 1 to 100.
Minimum value is
1, maximum value is100. Default value is25.
Responses
-
OK
-
The request is invalid;
fieldnames the offending input when there is one. A body that is not valid JSON is refused before the API runs, as a bare 400 with no body. -
Invalid or missing bearer token.
-
The credential was not granted the scope this call requires.
-
Not found, or not yours: the two are indistinguishable on purpose.
-
Rate limit exceeded;
Retry-Aftersays when to try again. -
Something went wrong on our side.
curl -H "Authorization: Bearer rs_agent_..." "https://www.realscout.com/api/agent/v1/contacts?group=slipping_away&include=alerts,activity&limit=25"
{
"data": [
{
"id": "VXNlci0xMjM=",
"first_name": "Nora",
"last_name": "Nguyen",
"email": "nora@example.com",
"primary_mobile_phone": "555-0100",
"lead_source": "Open House",
"external_user_key": "crm-3187",
"tags": [
"Hot Lead"
],
"external_tags": [
"kvCore: Sphere"
],
"realscout_tags": [
"Buyer"
],
"favorite": true,
"emailable": true,
"email_issue": null,
"status": {
"value": "NURTURED",
"reasons": [
"An active email alert"
]
},
"auto_nurture": {
"enabled": false,
"first_enabled_at": null
},
"created_at": "2026-08-01T17:00:00Z",
"updated_at": "2026-08-20T09:30:00Z",
"archived_at": null,
"last_active_at": "2026-08-19T02:11:00Z",
"last_login_at": "2026-08-18T19:40:00Z",
"sign_up_source": "agent",
"primary_home_phone": null,
"primary_work_phone": null,
"additional_first_name": "Sam",
"additional_last_name": "Nguyen",
"additional_mobile_phone": null,
"additional_home_phone": null,
"additional_work_phone": null,
"additional_emails": [
"sam@example.com"
],
"street": "123 Main St",
"city": "Sunnyvale",
"state": "CA",
"zipcode": "94086",
"contact_type": "BUYER",
"price_status_alerts_enabled": true,
"exclusives_alerts_enabled": true,
"scout_score": 62,
"scout_score_change_7d": 21,
"scout_score_change_30d": 14,
"scout_score_calculated_on": "2026-08-18",
"realscout_url": "https://www.realscout.com/agent/contacts/VXNlci0xMjM=",
"scout_score_summary_7d": "Viewing steadily and opening every alert.",
"scout_score_summary_30d": "Viewing steadily and opening every alert.",
"alerts": {
"listing_alerts": {
"scheduled_count": 3,
"inactive_count": 0,
"last_sent_at": "2026-08-18T13:00:00Z"
},
"market_alerts": {
"scheduled_count": 1,
"inactive_count": 0,
"last_sent_at": "2026-08-01T12:00:00Z"
},
"home_value_alerts": {
"scheduled_count": 0,
"inactive_count": 1,
"last_sent_at": "2026-07-30T00:00:00Z"
}
},
"activity": {
"listing_views": 16,
"listing_saves": 6,
"open_house_views": 0,
"alert_opens": 4,
"alert_clicks": 0,
"emails_received": 6,
"home_value_views": 0,
"market_activity_views": 0
}
}
],
"has_more": false,
"next_cursor": null
}
{
"error": {
"code": "invalid_request",
"message": "status must be one of: UNDESIGNATED, NURTURED, OVERAGE, ARCHIVED.",
"field": "status",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}
{
"error": {
"code": "unauthorized",
"message": "Invalid or missing credentials.",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}
{
"error": {
"code": "missing_scope",
"message": "This call requires the contacts:read scope, which this credential was not granted.",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}
{
"error": {
"code": "not_found",
"message": "No endpoint at GET /api/agent/v1/contacts.",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Try again in 30 seconds.",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}
{
"error": {
"code": "internal_error",
"message": "Something went wrong on our side.",
"request_id": "9b2f4c1e-7d3a-4e5b-8f6c-0a1d2e3f4b5c"
}
}