List visitors
GET https://datafa.st/api/v1/visitorsSearch for visitor IDs by page views, goals, traffic source, device, location, or campaign parameters. Use this endpoint to find matching visitors, then call Get visitor for the full profile, activity timeline, and prediction data.
This endpoint is paginated on purpose — it returns lightweight rows suitable for search and CRM enrichment workflows.
When searching by
completedGoal, results come from journey analytics and lastSeenAt reflects goal completion time rather than the latest pageview. Visitor session metadata is available for normal tracker events collected after the session-count rollout; old or cookieless events may return null.Related: User identification · Revenue prediction
Request
Query parameters
websiteIdstring
Required with a
dft_ account token on Website API routes. Omit with a df_ website key. Example: ?websiteId=665f0b3c4d2e1a0012345678.startAtstring
Start of the reporting window. Use
YYYY-MM-DD for calendar days or an ISO timestamp. Must be provided together with endAt. Example: startAt=2026-05-01.endAtstring
End of the reporting window. Must be provided together with
startAt. Example: endAt=2026-05-21.timezonestring
Timezone used to interpret dates and group analytics buckets. Defaults to the website timezone. IANA timezone for dashboard periods and API date grouping. Examples:
"America/New_York", "Europe/Paris", "UTC". Defaults to the website timezone when omitted.limitnumber
Visitors to return. Default
100, maximum 250. Example: limit=50.offsetnumber
Visitors to skip. Default
0. Example: offset=100.visitedPage / pagestring
Exact page path match. Comma-separated, max 50 values. Example:
visitedPage=/pricing or page=/docs/getting-started.visitedPageContains / pageContainsstring
Partial page path match. Example:
visitedPageContains=/docs.completedGoal / goalstring
Visitors who completed this custom goal. Example:
completedGoal=signup. Cannot combine with isCustomer or hasRevenue.visitCount / visit_countnumber
Visitors whose all-time tracked session number matches this value. Example:
visitCount=2 for second-session visitors.country, region, citystring
Location filters. Country names and ISO codes supported. Max 50 comma-separated values. Example:
country=US,Canada.browser, os, devicestring
Device filters. Example:
device=mobile&browser=Chrome.referrer, hostnamestring
Traffic source and hostname. Example:
referrer=Google.utm_source, utm_medium, utm_campaign, utm_term, utm_contentstring
UTM filters. Example:
utm_source=google&utm_campaign=launch.ref, source, viastring
First-session URL params. Example:
ref=twitter.isCustomer / hasRevenuetrue or falseSet either parameter to
true to return visitors with payment events. false is accepted but currently leaves the visitor list unfiltered; it does not mean non-customers. Cannot combine true with completedGoal.Example query
GET /api/v1/visitors?visitedPage=/pricing&completedGoal=signup&limit=50&startAt=2026-05-01&endAt=2026-05-21
Returns lightweight rows — call Get visitor for full journey data.
Response
Returns a JSON object with
status: "success" and endpoint-specific fields in data (and pagination when the endpoint is paginated).Response fields
data[].visitorIdstring
Alias for
datafast_visitor_id on endpoints that accept both names.data[].lastSeenAtstring|null
Timestamp of the visitor's latest matching activity. Use it to sort or sync recently active visitors. Last seen timestamp or goal completion timestamp when searching by goal.
data[].visitorFirstSeenAtstring|null
First-seen timestamp from the tracker cookie. Null for old or cookieless events.
data[].visitorSessionNumbernumber|null
All-time session number from the tracker cookie.
1 is new, 2+ is returning. Null when unavailable.data[].visitorTypenew|returning|nullDerived from
visitorSessionNumber. Null when session metadata is unavailable.data[].currentUrlstring|null
Latest page URL seen for the visitor. Use it to understand where the visitor was last active before you inspect the full visitor profile.
data[].identity.countrystring|null
Country.
data[].identity.regionstring|null
Region or state.
data[].identity.citystring|null
City.
data[].identity.browserstring|null
Browser name.
data[].identity.osstring|null
Operating system.
data[].identity.devicestring|null
Device type.
data[].acquisition.*string|null
Referrer and campaign parameters.
pagination.limitnumber
Maximum number of rows returned in one response. Use with
offset to paginate through long result sets.pagination.offsetnumber
Number of rows to skip before returning results. Use it with
limit for pagination.pagination.totalnumber
Total matching visitors.
pagination.hasMoreboolean
Whether more results are available.
Authentication
df_website API key: The website is inferred from the key. You do not need awebsiteIdquery parameter.dft_account token: Requiresanalytics:readpermission and?websiteId=on every request. The token must be allowed to access that website.
Read authentication and scopes for token creation, permission lists, and scoped tokens.
Errors
400 — Unsupported query parameter,
limit above 250, invalid isCustomer/hasRevenue value, combining completedGoal with isCustomer/hasRevenue, or using didNotCompleteGoal/goalNot (not supported).404 — Website not found.
See API errors for the standard error envelope, auth failures, validation errors, permission errors, and rate limits.