"Best analytics tool I've used in 14 years"

List visitors

GET https://datafa.st/api/v1/visitors

Search visitors by behavior, traffic source, device, location, campaign, customer status, or completed goal.

Request

Authentication

  • df_ website API key for one website.
  • dft_ account token with analytics:read. Pass websiteId as a query parameter.

Query parameters

ParameterTypeRequiredDescription
startAtstringNoSets the beginning of the reporting window. Use it when you want a specific date range instead of the endpoint default. Must be provided with endAt. Example: startAt=2026-05-01.
endAtstringNoSets the end of the reporting window. Must be provided with startAt. Example: endAt=2026-05-21.
timezonestringNoControls how dates are interpreted and how time buckets are grouped. Defaults to the website timezone. Example: timezone=America/New_York.
limitnumberNoMaximum number of rows returned in one response. Use with offset to paginate through long result sets. Number of visitors to return. Defaults to 100, max 250.
offsetnumberNoNumber of rows to skip before returning results. Use it with limit for pagination.
visitedPage / pagestringNoExact page path. Comma-separated values supported, max 50 values.
visitedPageContains / pageContainsstringNoPartial page match.
completedGoal / goalstringNoReturn visitors who completed this goal.
country, region, citystringNoLocation filters.
browser, os, devicestringNoBrowser, OS, and device filters.
referrer, hostnamestringNoTraffic source and hostname filters.
utm_source, utm_medium, utm_campaign, utm_term, utm_contentstringNoUTM filters.
ref, source, viastringNoURL parameter filters.
isCustomer / hasRevenuetrue or falseNoFilter visitors with or without payment events. Cannot be combined with completedGoal.

Response

Returns a JSON object with status and endpoint-specific fields.

Response fields

FieldTypeDescription
data[].visitorIdstringAlias for datafast_visitor_id on endpoints that accept both names.
data[].lastSeenAtstringnull
data[].currentUrlstringnull
data[].identity.countrystringnull
data[].identity.regionstringnull
data[].identity.citystringnull
data[].identity.browserstringnull
data[].identity.osstringnull
data[].identity.devicestringnull
data[].acquisition.*stringnull
pagination.limitnumberMaximum number of rows returned in one response. Use with offset to paginate through long result sets.
pagination.offsetnumberNumber of rows to skip before returning results. Use it with limit for pagination.
pagination.totalnumberTotal matching visitors.
pagination.hasMorebooleanWhether more results are available.

Errors

Common errors include 400 for invalid input, 401 for missing or invalid tokens, 403 for missing permission or suspended tracking, 404 for missing resources, and 500 for server errors.

✍️ Something missing? Suggest features.

🤖 AI agent or LLM? Read this page as markdown

Example request
curl -X GET "https://datafa.st/api/v1/visitors?visitedPage=/pricing&startAt=2026-04-01&endAt=2026-05-01&limit=100" \
  -H "Authorization: Bearer df_xxx"
Success response
{
  "status": "success",
  "data": [{
    "visitorId": "a3ab2331-989f-4cfa-91c6-2461c9e3c6bd",
    "lastSeenAt": "2026-05-05T12:00:00Z",
    "currentUrl": "example.com/pricing",
    "identity": {
      "country": "US",
      "region": "CA",
      "city": "San Francisco",
      "browser": "Chrome",
      "os": "Mac OS",
      "device": "desktop"
    },
    "acquisition": {
      "referrer": "Google",
      "utm_source": "google",
      "utm_campaign": "launch"
    }
  }],
  "pagination": {
    "limit": 100,
    "offset": 0,
    "total": 1234,
    "hasMore": true
  }
}