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

# Listing visitors

> The visitor log of one location, filtered and sorted.

```http theme={null}
GET /visitors/bycompany/{company_id}
```

The visitor log — the same data the Backoffice grid shows. A visitor is one visit, not a person.

### Path parameters

<ParamField path="company_id" type="string" required>
  The location.
</ParamField>

### Query parameters

<ParamField query="count" type="integer" required>
  Rows to return, e.g. `50`.
</ParamField>

<ParamField query="page" type="integer" required>
  1-based page number.
</ParamField>

<ParamField query="sorting[field]" type="string">
  `asc` or `desc`, e.g. `sorting[signed_in]=desc`.
</ParamField>

<ParamField query="filter[field]" type="string">
  Case-insensitive substring match on any field, e.g. `filter[company]=acme`.
</ParamField>

<ParamField query="filter[field][startDate]" type="string">
  Together with `filter[field][endDate]`, restricts a date field to a range. Both ISO 8601.
</ParamField>

### Response

<ResponseField name="total" type="number">
  Visits matching the filter, ignoring paging.
</ResponseField>

<ResponseField name="visitors" type="array">
  The page of visits. Photos and signatures are left out — [fetch a single visitor](/api-reference/visitors/fetching-a-visitor) for those.

  <Expandable title="visit">
    <ResponseField name="_id" type="string">
      The visit id.
    </ResponseField>

    <ResponseField name="first_name" type="string">
      Visitor's first name.
    </ResponseField>

    <ResponseField name="last_name" type="string">
      Visitor's last name.
    </ResponseField>

    <ResponseField name="company" type="string">
      The organisation the visitor comes from.
    </ResponseField>

    <ResponseField name="email" type="string">
      Visitor's email address.
    </ResponseField>

    <ResponseField name="phone" type="string">
      Phone number, international format.
    </ResponseField>

    <ResponseField name="recipient" type="string">
      Name of the host being visited.
    </ResponseField>

    <ResponseField name="recipient_mail" type="string">
      Where the host's notification went.
    </ResponseField>

    <ResponseField name="visit_type" type="string">
      Id of the visit type used.
    </ResponseField>

    <ResponseField name="entrypoint_id" type="string">
      Entrance the visitor came through.
    </ResponseField>

    <ResponseField name="known_visitor_id" type="string">
      Set when the visit came from a registered visitor.
    </ResponseField>

    <ResponseField name="signed_in" type="string">
      When the visit started.
    </ResponseField>

    <ResponseField name="signed_out" type="string">
      When it ended. Absent while the visitor is inside.
    </ResponseField>

    <ResponseField name="signed_in_source" type="number">
      `0` Backoffice or API · `1` kiosk · `2` contactless.
    </ResponseField>

    <ResponseField name="signed_out_source" type="number">
      Same scale, for the sign-out.
    </ResponseField>

    <ResponseField name="approval" type="string">
      `pending`, `approved` or `rejected` on screened visit types.
    </ResponseField>

    <ResponseField name="safe" type="boolean">
      Marked safe during an evacuation.
    </ResponseField>

    <ResponseField name="mod_date" type="string">
      When the visit was last changed.
    </ResponseField>
  </Expandable>
</ResponseField>

Every custom field the visit type defines is on the visit too, under its own `field_name`.

<CodeGroup>
  ```bash cURL theme={null}
  curl -G https://api.vizito.eu/api/visitors/bycompany/5f2a1b9c4d3e2f0011223344 \
    -H "Authorization: Bearer $VIZITO_API_KEY" \
    -d count=50 -d page=1 \
    --data-urlencode "sorting[signed_in]=desc" \
    --data-urlencode "filter[signed_in][startDate]=2026-08-01T00:00:00.000Z" \
    --data-urlencode "filter[signed_in][endDate]=2026-09-01T00:00:00.000Z"
  ```

  ```json 200 theme={null}
  {
    "total": 128,
    "visitors": [
      {
        "_id": "66b0f1a2c3d4e5f600112233",
        "first_name": "Ada",
        "last_name": "Lovelace",
        "company": "Analytical Engines Ltd",
        "email": "ada@example.com",
        "recipient": "Jane Doe",
        "visit_type": "5f2a1b9c4d3e2f0011223399",
        "signed_in": "2026-08-29T07:58:11.000Z",
        "signed_in_source": 1
      }
    ]
  }
  ```
</CodeGroup>

<Note>
  `count` and `page` are required. Without them the endpoint answers `400 Please include count, page and sorting query parameters.`
</Note>


## Related topics

- [Listing visitors inside](/api-reference/visitors/listing-visitors-inside.md)
- [Exporting the visitor log](/api-reference/reporting/exporting-the-visitor-log.md)
- [Fetching visits per day](/api-reference/reporting/fetching-visits-per-day.md)
- [Listing registered visitors](/api-reference/registered-visitors/listing-registered-visitors.md)
- [Listing expected visitors](/api-reference/registered-visitors/listing-expected-visitors.md)
