COUNTCOUNT
Sign Up
CustomersList customers

List customers

GET/partners/customers

Returns a paginated list of customers in the workspace.

Customers are returned with their billing/shipping addresses, contacts, taxes, and sales rep embedded. Use search, status, and ordering to narrow the results. The response includes a `filters` object echoing applied query parameters.

HMAC signature + Bearer access token
Try this request

Query parameters

searchstringoptional

Partial, case-insensitive match across the customer name, contact name, and contact phone numbers.

statusenumoptional

Filters by customer status.

One of: active, inactive

orderByenumoptional

Field to sort results by. Defaults to customer.

One of: customer, email, createdAt, updatedAt

orderDirectionenumoptional

Sort direction. Defaults to ASC.

One of: ASC, DESC

pageintegeroptional

Page number for pagination. The first page is 1.

limitintegeroptional

Records to return per page.

Responses

200Paginated list of customers.
401Missing or invalid HMAC signature, expired timestamp, or invalid Bearer token. Troubleshoot
403The credential does not have access to this workspace or resource. Troubleshoot
429Rate limit exceeded (100 requests per minute per clientId). Retry after the Retry-After header. Troubleshoot
GEThttps://api.getcount.com/partners/customers
Request
import crypto from 'node:crypto';

const BASE_URL = 'https://api.getcount.com';
const CLIENT_ID = process.env.COUNT_CLIENT_ID;
const CLIENT_SECRET = process.env.COUNT_CLIENT_SECRET;
const ACCESS_TOKEN = process.env.COUNT_ACCESS_TOKEN;

const method = 'GET';
const signingPath = '/customers';
const timestamp = Math.floor(Date.now() / 1000).toString();
const bodyString = '';

const bodyHash = '';
const baseString = `${method}:${signingPath}:${timestamp}:${bodyHash}`;
const signature = crypto.createHmac('sha256', CLIENT_SECRET).update(baseString).digest('hex');

const response = await fetch(`${BASE_URL}/partners/customers`, {
  method,
  headers: {
    'x-client-id': CLIENT_ID,
    'x-timestamp': timestamp,
    'x-signature': signature,
    Authorization: `Bearer ${ACCESS_TOKEN}`,
  },
});

console.log(await response.json());
Response · 200
{
  "status": "success",
  "message": "Success on fetching customers.",
  "data": {
    "page": 1,
    "limit": 20,
    "totalRecords": 1,
    "totalPages": 1,
    "records": [
      {
        "id": "dfa3219e-6af8-4c53-997a-037534f63a35",
        "customer": "Acme Corporation",
        "email": "contact@acme.com",
        "mainPhone": "+1234567890",
        "website": "https://acme.com",
        "status": "active",
        "notes": "Preferred customer. Net-30 terms.",
        "paymentTerm": "net30",
        "taxNumber": null,
        "taxAutoCalculate": false,
        "taxExcluded": false,
        "contactName": "John Doe",
        "billingAddress": {
          "id": "0b2c1f5e-7a9d-4f2b-9c1e-2a4b6d8e0f12",
          "street": "123 Main St",
          "city": "San Francisco",
          "state": "CA",
          "zipCode": "94102",
          "country": "USA"
        },
        "shippingAddress": null,
        "contacts": [
          {
            "id": "a5da3577-bf85-4e3a-aa73-df85ca69bc67",
            "firstName": "John",
            "lastName": "Doe",
            "email": "john@acme.com",
            "phone": "+1234567890",
            "isPrimary": true
          }
        ],
        "taxes": [],
        "salesRep": null,
        "createdAt": "2026-01-15T10:30:00.000Z",
        "updatedAt": "2026-01-28T14:22:30.000Z"
      }
    ],
    "filters": {
      "search": null,
      "status": null,
      "orderBy": "customer",
      "orderDirection": "ASC"
    }
  }
}