Skip to main content
GET
/
visitors
/
{visitor_id}
Node SDK
// Install: npm install @fingerprintjs/fingerprintjs-pro-server-api
import {
  FingerprintJsServerApiClient,
  Region,
} from '@fingerprintjs/fingerprintjs-pro-server-api'

const client = new FingerprintJsServerApiClient({
  apiKey: 'SERVER_API_KEY', // Replace with your key
  region: Region.Global, // Replace with your region
})

// Get visit history of a specific visitor
client.getVisits('VISITOR_ID').then((visitorHistory) => {
  console.log(visitorHistory)
})
{
  "visitorId": "AcxioeQKffpXF8iGQK3P",
  "visits": [
    {
      "requestId": "1655373953086.DDlfmP",
      "browserDetails": {
        "browserName": "Chrome",
        "browserMajorVersion": "102",
        "browserFullVersion": "102.0.5005",
        "os": "Mac OS X",
        "osVersion": "10.15.7",
        "device": "Other",
        "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36"
      },
      "incognito": false,
      "ip": "82.118.30.68",
      "ipLocation": {
        "accuracyRadius": 1000,
        "latitude": 50.0805,
        "longitude": 14.467,
        "postalCode": "130 00",
        "timezone": "Europe/Prague",
        "city": {
          "name": "Prague"
        },
        "country": {
          "code": "CZ",
          "name": "Czechia"
        },
        "continent": {
          "code": "EU",
          "name": "Europe"
        },
        "subdivisions": [
          {
            "isoCode": "10",
            "name": "Hlavni mesto Praha"
          }
        ]
      },
      "timestamp": 1655373953094,
      "time": "2022-06-16T10:05:53Z",
      "url": "https://dashboard.fingerprint.com/",
      "tag": {},
      "confidence": {
        "score": 1
      },
      "visitorFound": true,
      "firstSeenAt": {
        "global": "2022-02-04T11:31:20Z",
        "subscription": "2022-02-04T11:31:20Z"
      },
      "lastSeenAt": {
        "global": "2022-06-16T10:03:00.912Z",
        "subscription": "2022-06-16T10:03:00.912Z"
      }
    }
  ],
  "lastTimestamp": 1655373953086,
  "paginationKey": "1655373953086.DDlfmP"
}
Deprecation NoticeThis version of Server API is marked as deprecated starting on Oct 31st 2025 and will be fully removed on Oct 31st 2026 according to our API Deprecation Policy. If you still use this version, please follow our migration guide to migrate from this deprecated version to the new one.
Get a history of visits (identification events) for a specific visitorId. Use the visitorId as a URL path parameter. Only information from the Identification product is returned.

Headers

  • Retry-After — Present in case of 429 Too many requests. Indicates how long you should wait before making a follow-up request. The value is non-negative decimal integer indicating the seconds to delay after the response is received.

Authorizations

Auth-API-Key
string
header
required

Path Parameters

visitor_id
string
required

Unique visitor identifier issued by Fingerprint Identification and all active Smart Signals.

Query Parameters

request_id
string

Filter visits by requestId.

Every identification request has a unique identifier associated with it called requestId. This identifier is returned to the client in the identification result. When you filter visits by requestId, only one visit will be returned.

linked_id
string

Filter visits by your custom identifier.

You can use linkedId to associate identification requests with your own identifier, for example: session ID, purchase ID, or transaction ID. You can then use this linked_id parameter to retrieve all events associated with your custom identifier.

limit
integer<int32>

Limit scanned results.

For performance reasons, the API first scans some number of events before filtering them. Use limit to specify how many events are scanned before they are filtered by requestId or linkedId. Results are always returned sorted by the timestamp (most recent first). By default, the most recent 100 visits are scanned, the maximum is 500.

Required range: x >= 0
paginationKey
string

Use paginationKey to get the next page of results.

When more results are available (e.g., you requested 200 results using limit parameter, but a total of 600 results are available), the paginationKey top-level attribute is added to the response. The key corresponds to the requestId of the last returned event. In the following request, use that value in the paginationKey parameter to get the next page of results:

  1. First request, returning most recent 200 events: GET api-base-url/visitors/:visitorId?limit=200
  2. Use response.paginationKey to get the next page of results: GET api-base-url/visitors/:visitorId?limit=200&paginationKey=1683900801733.Ogvu1j

Pagination happens during scanning and before filtering, so you can get less visits than the limit you specified with more available on the next page. When there are no more results available for scanning, the paginationKey attribute is not returned.

before
integer<int64>

⚠️ Deprecated pagination method, please use paginationKey instead. Timestamp (in milliseconds since epoch) used to paginate results.

Required range: x >= 0

Response

OK.

Pagination-related fields lastTimestamp and paginationKey are included if you use a pagination parameter like limit or before and there is more data available on the next page.

visitorId
string
required
visits
object[]
required
lastTimestamp
integer<int64>
deprecated

⚠️ Deprecated paging attribute, please use paginationKey instead. Timestamp of the last visit in the current page of results.

paginationKey
string

Request ID of the last visit in the current page of results. Use this value in the following request as the paginationKey parameter to get the next page of results.