> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trackup.me/llms.txt
> Use this file to discover all available pages before exploring further.

# List project visitors

> Requires visitor.list. Returns paginated visitors; unspecified contact and address fields are empty strings.



## OpenAPI

````yaml https://api.trackup.me/openapi.json get /v1/projects/{id}/visitors
openapi: 3.1.0
info:
  title: Trackup API
  description: >-
    API-key-accessible Trackup operations. Send your key in the `X-Api-Key`
    header.


    Keys belong to a team. `X-Team-Id` is not required; if supplied, it must
    match that team.


    Each operation lists its required key permission. The key creator must
    remain a team member and normally hold that permission. The ingest-only
    permissions `visitor.create`, `conversion.create`, and `request.create` do
    not need to be held by the creator.


    Project access and selection are described per operation. Session-only
    account, administration and OAuth operations are not part of this reference.


    The same operations are available as MCP tools at `/mcp` (Streamable HTTP).
    Authenticate with `X-Api-Key` or connect through OAuth, which issues an API
    key on consent.


    Schema validation errors return HTTP 422 with an `errors` object. Other
    errors generally contain `error` and `message`; operation-specific responses
    describe exceptions.
  version: 1.0.0
servers:
  - url: /
    description: Current API environment
security:
  - ApiKey: []
paths:
  /v1/projects/{id}/visitors:
    get:
      tags:
        - Visitors
      summary: List project visitors
      description: >-
        Requires visitor.list. Returns paginated visitors; unspecified contact
        and address fields are empty strings.
      operationId: listProjectVisitors
      parameters:
        - in: path
          name: id
          schema:
            type: string
            format: uuid
          required: true
        - in: query
          name: page
          schema:
            type: integer
            minimum: 1
            default: 1
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 200
            default: 50
        - in: query
          name: filters
          schema:
            type: string
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisitorList'
        '401':
          description: The X-Api-Key header is missing or the API key is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: >-
            The key is expired, revoked, lacks permission, or its creator no
            longer has the required team access. A conflicting X-Team-Id is also
            rejected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: >-
            The requested resource was not found or is outside the permitted
            scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: >-
            Invalid input. Each field path maps to its first validation message;
            _form identifies an object-level error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '500':
          description: An unexpected error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
components:
  schemas:
    VisitorList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Visitor'
        count:
          type: number
      required:
        - data
        - count
      example:
        data:
          - id: 11111111-1111-4111-8111-111111111111
            projectId: 22222222-2222-4222-8222-222222222222
            teamId: 33333333-3333-4333-8333-333333333333
            createdAt: '2026-06-01 12:00:00.000'
            updatedAt: '2026-06-01 12:00:00.000'
            name: Example
            email: visitor@example.test
            phone: ''
            address:
              street: Example street
              city: São Paulo
              state: SP
              zip: '01000000'
              country: BR
            firstCountry: BR
            lastCountry: BR
            utmSource: newsletter
            utmMedium: email
            utmCampaign: example-campaign
            clickId: ''
            lastDecision: allow
            lastScore: 1
            lastScoreLevel: low
        count: 1
    ApiError:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
      required:
        - error
        - message
      additionalProperties: true
    ValidationError:
      type: object
      properties:
        errors:
          type: object
          additionalProperties:
            type: string
      required:
        - errors
    Visitor:
      type: object
      properties:
        id:
          type: string
        projectId:
          type: string
        teamId:
          type: string
        createdAt:
          type: string
          description: ClickHouse UTC timestamp.
        updatedAt:
          type: string
          description: ClickHouse UTC timestamp.
        name:
          type: string
        email:
          type: string
        phone:
          type: string
        address:
          type: object
          properties:
            street:
              type: string
            city:
              type: string
            state:
              type: string
            zip:
              type: string
            country:
              type: string
          required:
            - street
            - city
            - state
            - zip
            - country
        firstCountry:
          type: string
        lastCountry:
          type: string
        utmSource:
          type: string
        utmMedium:
          type: string
        utmCampaign:
          type: string
        clickId:
          type: string
        lastDecision:
          type: string
        lastScore:
          type: number
        lastScoreLevel:
          type: string
      required:
        - id
        - projectId
        - teamId
        - createdAt
        - updatedAt
        - name
        - email
        - phone
        - address
        - firstCountry
        - lastCountry
        - utmSource
        - utmMedium
        - utmCampaign
        - clickId
        - lastDecision
        - lastScore
        - lastScoreLevel
      example:
        id: 11111111-1111-4111-8111-111111111111
        projectId: 22222222-2222-4222-8222-222222222222
        teamId: 33333333-3333-4333-8333-333333333333
        createdAt: '2026-06-01 12:00:00.000'
        updatedAt: '2026-06-01 12:00:00.000'
        name: Example
        email: visitor@example.test
        phone: ''
        address:
          street: Example street
          city: São Paulo
          state: SP
          zip: '01000000'
          country: BR
        firstCountry: BR
        lastCountry: BR
        utmSource: newsletter
        utmMedium: email
        utmCampaign: example-campaign
        clickId: ''
        lastDecision: allow
        lastScore: 1
        lastScoreLevel: low
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-Api-Key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.