List customers
GET
/partners/customersReturns 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 requestQuery parameters
searchstringoptionalPartial, case-insensitive match across the customer name, contact name, and contact phone numbers.
statusenumoptionalFilters by customer status.
One of: active, inactive
orderByenumoptionalField to sort results by. Defaults to customer.
One of: customer, email, createdAt, updatedAt
orderDirectionenumoptionalSort direction. Defaults to ASC.
One of: ASC, DESC
pageintegeroptionalPage number for pagination. The first page is 1.
limitintegeroptionalRecords to return per page.
Responses
200Paginated list of customers.401Missing or invalid HMAC signature, expired timestamp, or invalid Bearer token. Troubleshoot403The credential does not have access to this workspace or resource. Troubleshoot429Rate limit exceeded (100 requests per minute per clientId). Retry after the Retry-After header. TroubleshootGET
https://api.getcount.com/partners/customersRequest
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"
}
}
}