List Contacts
Retrieve your contacts with pagination, search, filtering, and sorting. You can also fetch a single contact by ID.
List All Contacts
Retrieve a paginated list of contacts in your organization.
Endpoint
GET /contacts
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | number | 20 | Items per page (min: 1, max: 100) |
after | string | — | Cursor — return items after this id (exclusive). |
before | string | — | Cursor — return items before this id (exclusive). |
search | string | — | Search across email, first name, and last name |
list_id | string | — | Filter by contact list ID |
tag_id | string | — | Filter by tag ID |
Results are returned newest first. See Pagination for cursor details.
Response
{
"object": "list",
"has_more": true,
"data": [
{
"id": "01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a",
"email": "john.doe@example.com",
"phone_number": "+201234567890",
"first_name": "John",
"last_name": "Doe",
"source": "api",
"properties": {
"company": "Acme Inc"
},
"is_suppressed": false,
"created_at": "2026-03-01T10:00:00.000Z",
"updated_at": "2026-03-08T12:00:00.000Z"
}
]
}
See Create Contact for the per-item field reference.
Examples
- cURL
- JavaScript
- Python
- C#
- PHP
curl "https://api.arsel.sa/v1/contacts?limit=20&search=john" \
-H "Authorization: Bearer be_your_api_key"
# Next page — pass the id of the last item from the previous response as `after`
curl "https://api.arsel.sa/v1/contacts?limit=20&search=john&after=01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a" \
-H "Authorization: Bearer be_your_api_key"
const params = new URLSearchParams({
limit: "20",
search: "john",
});
const response = await fetch(
`https://api.arsel.sa/v1/contacts?${params}`,
{
headers: { Authorization: "Bearer be_your_api_key" },
}
);
const { data, has_more } = await response.json();
console.log(`Got ${data.length} contacts; more available: ${has_more}`);
for (const contact of data) {
console.log(`${contact.id}: ${contact.email} — ${contact.first_name} ${contact.last_name}`);
}
import requests
response = requests.get(
"https://api.arsel.sa/v1/contacts",
headers={"Authorization": "Bearer be_your_api_key"},
params={
"limit": 20,
"search": "john",
},
)
result = response.json()
for contact in result["data"]:
print(f"{contact['id']}: {contact['email']} — {contact['first_name']} {contact['last_name']}")
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer be_your_api_key");
var response = await client.GetAsync(
"https://api.arsel.sa/v1/contacts?limit=20&search=john"
);
var json = await response.Content.ReadAsStringAsync();
Console.WriteLine(json);
<?php
$query = http_build_query([
"limit" => 20,
"search" => "john"
]);
$ch = curl_init("https://api.arsel.sa/v1/contacts?{$query}");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer be_your_api_key"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
foreach ($data["data"] as $contact) {
echo "{$contact['id']}: {$contact['email']}\n";
}
curl_close($ch);
Filter by List
curl "https://api.arsel.sa/v1/contacts?list_id=01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a&limit=50" \
-H "Authorization: Bearer be_your_api_key"
Filter by Tag
curl "https://api.arsel.sa/v1/contacts?tag_id=01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6b&limit=50" \
-H "Authorization: Bearer be_your_api_key"
Get Contact Details
Retrieve a single contact by ID.
Endpoint
GET /contacts/:id
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | The contact ID |
Response
Returns the same shape as Create Contact.
{
"id": "01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a",
"email": "john.doe@example.com",
"phone_number": "+201234567890",
"first_name": "John",
"last_name": "Doe",
"source": "api",
"properties": {
"company": "Acme Inc",
"job_title": "Software Engineer",
"city": "Cairo"
},
"is_suppressed": false,
"created_at": "2026-01-15T10:00:00.000Z",
"updated_at": "2026-03-08T12:00:00.000Z"
}
Examples
- cURL
- JavaScript
- Python
- C#
- PHP
curl "https://api.arsel.sa/v1/contacts/01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a" \
-H "Authorization: Bearer be_your_api_key"
const contactId = "01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a";
const response = await fetch(
`https://api.arsel.sa/v1/contacts/${contactId}`,
{
headers: { Authorization: "Bearer be_your_api_key" },
}
);
const contact = await response.json();
console.log(`${contact.first_name} ${contact.last_name}`);
import requests
contact_id = "01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a"
response = requests.get(
f"https://api.arsel.sa/v1/contacts/{contact_id}",
headers={"Authorization": "Bearer be_your_api_key"},
)
contact = response.json()
print(f"{contact['first_name']} {contact['last_name']}")
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer be_your_api_key");
var contactId = "01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a";
var response = await client.GetAsync($"https://api.arsel.sa/v1/contacts/{contactId}");
var json = await response.Content.ReadAsStringAsync();
Console.WriteLine(json);
<?php
$contactId = "01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a";
$ch = curl_init("https://api.arsel.sa/v1/contacts/{$contactId}");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer be_your_api_key"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$contact = json_decode($response, true);
echo "{$contact['first_name']} {$contact['last_name']}\n";
curl_close($ch);