---
title: "List a site’s contacts"
method: GET
path: "/api/v1/sites/{id}/contacts"
tags: ["CRM"]
---

# List a site’s contacts

`GET /api/v1/sites/{id}/contacts`

## Request

- Base URL: `https://app.mondovo.com`
- URL: `https://app.mondovo.com/api/v1/sites/{id}/contacts`
- Auth: HTTP bearer

Returns the people captured by this site — form leads, chat leads and imports — with their tags and custom fields. Filters combine with AND. Requires scope `crm:read`.

## Query parameters

- `limit` integer
- `offset` integer
- `status` string
- `search` string
- `tags` string
- `acquisition_source` string
- `acquisition_campaign` string
- `created_after` string, date-time
- `created_before` string, date-time

## Response `200`

A page of contacts.

- object
  - `site_id` string, uuid, required
  - `total` integer, required: Total matching the filter, not the page size.
  - `limit` integer, required
  - `offset` integer, required
  - `contacts` Contact[], required
    - `id` string, uuid
    - `email` string, nullable
    - `phone` string, nullable
    - `first_name` string, nullable
    - `last_name` string, nullable
    - `company` string, nullable
    - `job_title` string, nullable
    - `address` object
      - `line1` string, nullable
      - `line2` string, nullable
      - `city` string, nullable
      - `state` string, nullable
      - `postal_code` string, nullable
      - `country` string, nullable
    - `status` string, nullable: Pipeline stage key. See GET /contacts/fields for the site’s stages.
    - `source` string, nullable: How the contact arrived, e.g. `form`, `chat`, `api_import`.
    - `acquisition_source` string, nullable
    - `acquisition_campaign` string, nullable
    - `tags` string[]
    - `custom_fields` object: Flat key/value attributes. Any column your source system has that the CRM does not lands here.
    - `notes` string, nullable
    - `lead_score` integer: 0-100, derived from how complete the contact record is.
    - `assigned_to` string, uuid, nullable
    - `last_contacted_at` string, date-time, nullable
    - `next_follow_up_at` string, date-time, nullable
    - `created_at` string, date-time, nullable
    - `updated_at` string, date-time, nullable

## Other responses

- `401`: Authentication failed. Error codes: `invalid_api_key` (missing/unknown key), `key_revoked`, `key_expired`.
- `403`: Authenticated but not allowed. Error codes: `addon_required` (the API key’s workspace no longer has the Agency add-on — checked on every request, not just at key creation) and `missing_scope` (the key lacks the scope this endpoint needs).
- `404`: `site_not_found` — also returned for a site in another organization.
- `429`: Rate limit exceeded (`rate_limit_exceeded`). The body includes `retry_after_seconds`, `limit`, and `window` ("minute" or "hour"); a `Retry-After` header is also set.
- `500`: Unexpected server error (`internal_error`). Safe to retry.

---

[API](https://skmtc.dev/mondovo/apis/mondovo-public-api.md) · [All operations](https://skmtc.dev/mondovo/apis/mondovo-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mondovo/apis/mondovo-public-api/revisions/1baa3e2865ba?raw)
