Spoar
Visitor-level reads

A visitor's visits

GET
/v2/projects/{project}/visitors/{visitor}/visits

Oldest first and numbered, with pages, time on page, scroll depth and actions.

Authorization

AuthorizationBearer <token>

An API token from POST /v2/tokens (at_live_...), or a project's secret key (sk_...) for server-side ingest.

In: header

Path Parameters

project*string

The project id, as listed by GET /v2/projects.

Length1 <= length
visitor*string

The visitor id, as listed by the visitors read.

Query Parameters

limit?|

Rows per page, 1 to 100 (default 20), or up to 1000 with format.

Range1 <= value <= 1000
cursor?string

The opaque nextCursor of the previous page.

Length1 <= length
format?string

Returns every row as one download instead of a page, up to 1,000,000 rows: csv with a header row and nested fields as dotted columns, json as the normal answer with all rows in data, sql as CREATE TABLE and INSERT statements for Postgres or SQLite. Accept: text/csv also asks for CSV.

Value in

  • "csv"
  • "json"
  • "sql"

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v2/projects/string/visitors/string/visits"
{  "data": [    {      "visitNumber": 6,      "sessionId": "f1a2b3c4-d5e6-4f70-8a91-b2c3d4e5f607",      "startedAt": "2026-09-27T16:38:10.000Z",      "endedAt": "2026-09-27T16:40:00.000Z",      "sincePreviousVisitMs": 172800000,      "entryUrl": "https://remcostoeten.nl/",      "exitPath": "/blog/rebuilding-analytics",      "source": {        "referrer": null,        "referrerDomain": "news.ycombinator.com",        "channel": "social",        "utm": {          "source": "hn",          "medium": null,          "campaign": null,          "term": null,          "content": null        }      },      "pages": [        {          "path": "/",          "at": "2026-09-27T16:38:10.000Z",          "timeOnPageMs": 52000,          "scrollDepth": 0.6        },        {          "path": "/projects",          "at": "2026-09-27T16:39:02.000Z",          "timeOnPageMs": 56000,          "scrollDepth": 0.9        },        {          "path": "/blog/rebuilding-analytics",          "at": "2026-09-27T16:39:58.412Z",          "timeOnPageMs": 1588,          "scrollDepth": 0.1        }      ],      "actions": [        {          "at": "2026-09-27T16:39:01.200Z",          "name": "click",          "props": {            "element": "nav-projects"          }        },        {          "at": "2026-09-27T16:39:59.901Z",          "name": "signup",          "props": {            "plan": "pro"          }        }      ]    }  ],  "nextCursor": "eyJvIjoxfQ"}