Docs·Visitors and people
GET
/api/v1/spreelytics/people/searchSearch people
Finds identified people by the start of their email address. The match ignores case and runs from the first character, so ada@ and ada.l both find ada.lovelace@example.com, while example.com finds nothing. It returns up to 20 people, sorted by email.
Anonymous visitors have no email and never appear here; read them with the visitor endpoints on this page. Every role can call it, Viewer included.
Keys: an account key or an audience key. Getting started explains both kinds.
Parameters
| Prop | In | Type | Notes |
|---|---|---|---|
contactListId | query | string | The audience id, a UUID. With an audience key it must be that key's own audience. |
q | query | string | Required. At least 2 characters after trimming, or the call answers 400. Matched against the start of each stored address. |
Response
An array of PersonSearchResultDto.
| Prop | Type | Notes |
|---|---|---|
contactIdentityId | string | The person id, for GET /people/{contactIdentityId}. |
emails | string[] | Every email address on the person. |
display | string | The first email address, or the person id when there is none. |
Request
curl 'https://app.spreelytics.com/api/v1/spreelytics/people/search?contactListId=…&q=…' \
-H 'Authorization: Bearer YOUR_API_KEY'
const url = new URL('https://app.spreelytics.com/api/v1/spreelytics/people/search');
url.searchParams.set('contactListId', '…');
url.searchParams.set('q', '…');
const res = await fetch(url, {
headers: { Authorization: 'Bearer YOUR_API_KEY' },
});
const data = await res.json();
import requests
res = requests.get(
"https://app.spreelytics.com/api/v1/spreelytics/people/search",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"contactListId": "…", "q": "…"},
)
data = res.json()
Response
[
{
"contactIdentityId": "string",
"emails": [
"string"
],
"display": "string"
}
]