Get a List of Companies by Filter crm.company.list
Scope:
crmWho can execute the method: user with "Read" access permission for companies
Method development has been halted
The method crm.company.list continues to function, but there is a more current equivalent crm.item.list.
The method crm.company.list returns a list of companies based on a filter. It is an implementation of the list method for companies.
Method Parameters
Required parameters are marked with *
|
Name |
Description |
|
select |
List of fields to limit the selection. You can use masks for selection:
There are no masks for selecting multiple fields. To select multiple fields, specify the required ones in the selection list — You can find the list of available fields for selection using the method crm.company.fields. By default, all fields are returned — |
|
filter |
Object format:
where:
You can add a prefix to the keys
The fields The You can find the list of available fields for filtering using the method crm.company.fields. The |
|
order |
Object format:
where:
You can find the list of available fields for sorting using the method crm.company.fields |
|
start |
Parameter for managing pagination. The page size of results is always static — 50 records. To select the second page of results, pass the value The formula for calculating the
|
Code Examples
How to Use Examples in Documentation
Retrieve companies:
- sorted by creation date,
- with selected fields: name, responsible person, phone,
- filtered by: company type
CUSTOMERand creation date from 2025-01-01.
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"ORDER":{"DATE_CREATE":"ASC"},"FILTER":{"COMPANY_TYPE":"CUSTOMER",">=DATE_CREATE":"2025-01-01"},"SELECT":["TITLE","ASSIGNED_BY_ID","PHONE"]}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.company.list
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"ORDER":{"DATE_CREATE":"ASC"},"FILTER":{"COMPANY_TYPE":"CUSTOMER",">=DATE_CREATE":"2025-01-01"},"SELECT":["TITLE","ASSIGNED_BY_ID","PHONE"],"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/crm.company.list
// callListMethod: Retrieves all data at once.
// Use only for small selections (< 1000 items) due to high
// memory load.
try {
const response = await $b24.callListMethod(
'crm.company.list',
{
order: { "DATE_CREATE": "ASC" },
filter: { "COMPANY_TYPE": "CUSTOMER", ">=DATE_CREATE": "2025-01-01" },
select: [ "TITLE", "ASSIGNED_BY_ID", "PHONE" ]
},
(progress: number) => { console.log('Progress:', progress) }
);
const items = response.getData() || [];
for (const entity of items) { console.log('Entity:', entity) }
} catch (error: any) {
console.error('Request failed', error)
}
// fetchListMethod: Retrieves data in parts using an iterator.
// Use for large volumes of data for efficient memory consumption.
try {
const generator = $b24.fetchListMethod('crm.company.list', {
order: { "DATE_CREATE": "ASC" },
filter: { "COMPANY_TYPE": "CUSTOMER", ">=DATE_CREATE": "2025-01-01" },
select: [ "TITLE", "ASSIGNED_BY_ID", "PHONE" ]
}, 'ID');
for await (const page of generator) {
for (const entity of page) { console.log('Entity:', entity) }
}
} catch (error: any) {
console.error('Request failed', error)
}
// callMethod: Manual control of pagination through the start parameter.
// Use for precise control over request batches.
// Less efficient for large data than fetchListMethod.
try {
const response = await $b24.callMethod('crm.company.list', {
order: { "DATE_CREATE": "ASC" },
filter: { "COMPANY_TYPE": "CUSTOMER", ">=DATE_CREATE": "2025-01-01" },
select: [ "TITLE", "ASSIGNED_BY_ID", "PHONE" ]
}, 0);
const result = response.getData().result || [];
for (const entity of result) { console.log('Entity:', entity) }
} catch (error: any) {
console.error('Request failed', error)
}
try {
$response = $b24Service
->core
->call(
'crm.company.list',
[
'order' => ['DATE_CREATE' => 'ASC'],
'filter' => ['COMPANY_TYPE' => 'CUSTOMER', '>=DATE_CREATE' => '2025-01-01'],
'select' => ['TITLE', 'ASSIGNED_BY_ID', 'PHONE'],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
if ($result->more()) {
$result->next();
}
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error fetching company list: ' . $e->getMessage();
}
BX24.callMethod(
"crm.company.list",
{
order: { "DATE_CREATE": "ASC" },
filter: { "COMPANY_TYPE": "CUSTOMER", ">=DATE_CREATE": "2025-01-01" },
select: [ "TITLE", "ASSIGNED_BY_ID", "PHONE" ]
},
function(result)
{
if(result.error())
console.error(result.error());
else
{
console.dir(result.data());
if(result.more())
result.next();
}
}
);
require_once('crest.php');
$result = CRest::call(
'crm.company.list',
[
'order' => ['DATE_CREATE' => 'ASC'],
'filter' => ['COMPANY_TYPE' => 'CUSTOMER', '>=DATE_CREATE' => '2025-01-01'],
'select' => ['TITLE', 'ASSIGNED_BY_ID', 'PHONE'],
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
Response Handling
HTTP status: 200
{
"result": [
{
"TITLE": "Crossroads",
"ASSIGNED_BY_ID": "811",
"ID": "2919",
"PHONE": [
{
"ID": "8303",
"VALUE_TYPE": "WORK",
"VALUE": "+19998887766",
"TYPE_ID": "PHONE"
}
]
}
],
"total": 1,
"time": {
"start": 1769498859,
"finish": 1769498859.948139,
"duration": 0.948138952255249,
"processing": 0,
"date_start": "2026-01-27T10:27:39+01:00",
"date_finish": "2026-01-27T10:27:39+01:00",
"operating_reset_at": 1769499459,
"operating": 0.1621239185333252
}
}
Returned Data
|
Name |
Description |
|
result |
Array of companies matching the filter. The format of the returned data depends on the |
|
total |
Total number of companies found |
|
time |
Information about the execution time of the request |
Error Handling
HTTP status: 400
{
"error": "",
"error_description": "Access denied."
}
|
Name |
Description |
|
error |
String error code. It may consist of digits, Latin letters, and underscores |
|
error_description |
Textual description of the error. The description is not intended to be shown to the end user in its raw form |
Possible Error Codes
|
Code |
Description |
Value |
|
|
|
The user does not have "Read" access permission for companies |
|
|
|
The |
|
|
|
The |
|
|
|
An unknown error occurred |
Statuses and System Error Codes
HTTP Status: 20x, 40x, 50x
The errors described below may occur when calling any method.
|
Status |
Code |
Description |
|
|
|
An internal server error has occurred, please contact the server administrator or Bitrix24 technical support |
|
|
|
An internal server error has occurred, please contact the server administrator or Bitrix24 technical support |
|
|
|
The request intensity limit has been exceeded |
|
|
|
The current method is not allowed to be called using batch |
|
|
|
The maximum length of parameters passed to the batch method has been exceeded |
|
|
|
Invalid access token or webhook code |
|
|
|
The methods must be called using the HTTPS protocol |
|
|
|
The REST API is blocked due to overload. This is a manual individual block, to remove it you need to contact Bitrix24 technical support |
|
|
|
The REST API is available only on commercial plans |
|
|
|
The user whose access token or webhook was used to call the method lacks permissions |
|
|
|
The manifest is not available |
|
|
|
The request requires higher privileges than those provided by the webhook token |
|
|
|
The provided access token has expired |
|
|
|
The user does not have access to the application. This means that the application is installed, but the account administrator has allowed access to this application only for specific users |
|
|
|
The public part of the site is closed. To open the public part of the site on an on-premise installation, disable the option "Temporary closure of the public part of the site". Path to the setting: Desktop > Settings > Product Settings > Module Settings > Main Module > Temporary closure of the public part of the site |
Continue Learning
- Create a New Company crm.company.add
- Update Existing Company crm.company.update
- Get Company Information crm.company.get
- Delete Company crm.company.delete
- Get Company Field Descriptions crm.company.fields
- How to Find Duplicates in CRM by Phone and Email