---
title: "Search contacts"
method: POST
path: "/contacts/search"
tags: ["contacts"]
---

# Search contacts

`POST /contacts/search`

## Request

- Base URL: `https://storeinspect.com/api/v1`
- URL: `https://storeinspect.com/api/v1/contacts/search`
- Auth: HTTP bearer

Searches preview-safe contact records at Shopify stores using role, seniority, location, technology, and store ICP filters. Returned stores consume the unique-store export allowance once per allowance period.

## Request body

- ContactSearchRequest
  - `person` ContactPersonFilters
    - `roles_any` string[]
    - `seniority_any` string[]
    - `has_verified_email` boolean
    - `has_phone` boolean
    - `has_linkedin` boolean
  - `store` ContactStoreFilters
    - `domains` string[]: Exact store domains to search contacts for. URLs are normalized to hostnames.
    - `categories` string[]
    - `countries` string[]
    - `traffic_tiers` string[]
    - `revenue_tiers` string[]
    - `shopify_plus` boolean
    - `apps` StoreTechnologyFilter
      - `any` string[]
      - `all` string[]
      - `none` string[]
    - `pixels` StoreTechnologyFilter
      - `any` string[]
      - `all` string[]
      - `none` string[]
    - `themes` object
      - `types` string[]
    - `meta_ads` object
      - `active_ads_min` integer
    - `store_created_at` DateRangeFilter
      - `from` string, date-time
      - `to` string, date-time
    - `first_discovered_at` DateRangeFilter
      - `from` string, date-time
      - `to` string, date-time
  - `max_contacts_per_store` integer
  - `limit` integer
  - `cursor` string, nullable

## Response `200`

A cursor-paginated list of contact previews matching the supplied filters.

- ContactPreviewListResponse
  - `object` 'list', required
  - `data` ContactPreview[], required
    - `id` string
    - `object` 'contact_preview'
    - `first_name` string, nullable
    - `last_name_obfuscated` string, nullable
    - `role` string, nullable
    - `seniority` 'executive' | 'decision_maker' | 'other'
    - `title` string, nullable
    - `has_verified_email` boolean
    - `has_phone` boolean
    - `has_linkedin` boolean
    - `revealed` boolean
    - `store` object
      - `id` string
      - `domain` string
      - `name` string
      - `category` string, nullable
      - `traffic_tier` string, nullable
      - `technologies` object
        - `apps` string[]
        - `pixels` string[]
  - `has_more` boolean, required
  - `next_cursor` string, nullable, required
  - `request_id` string, required

## Other responses

- `400`: Invalid filters, limit, or cursor.
- `401`: Missing or invalid API key.
- `403`: The account does not have API access.

---

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