Введение
SalesFinder API — подключите возможности платформы к вашим продуктам за минуты.
Единый интерфейс открывает доступ к авторизации, данным вашего аккаунта и ключевым инструментам SalesFinder — от ежедневных операций до масштабных интеграций. Встраивайте функциональность прямо в CRM, бэкенд, внутренние решения ваших компаний и автоматизируйте рабочие процессы.
Почему это удобно:
- Быстрый старт и понятные форматы запросов/ответов (JSON, HTTPS).
- Надёжная авторизация и защищённый доступ к данным аккаунта.
- Гибкая интеграция инструментов сервиса в ваши сценарии.
Обратите внимание: лимиты использования инструментов привязаны к вашему аккаунту.
Для стабильной работы сервиса соблюдайте частоту вызовов — не чаще одного запроса каждые 5 секунд на аккаунт.
Подключайтесь к SalesFinder API и превращайте ваши идеи в готовые решения — быстрее, безопаснее и масштабируемее.
Base URL
https://api.salesfinder.ru
Запросы на аутентификацию
Для использования данного API необходимо пройти аутентификацию Authorization и получить токен "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9hcGkuc2ZcL2FwaVwvdjFcL3NhbGVzZmluZGVyXC9hdXRoXC9sb2dpbiIsImlhdCI6MTY1NDg2OTMzMCwiZXhwIjoxNjU0OTU1NzMwLCJuYmYiOjE2NTQ4NjkzMzAsImp0aSI6InRCMENzZXZVdVNSU3hxSlIiLCJzdWIiOjEsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.8W2wjexBhMzYliVZ_XQmd7Xx5Lh65RkxTVPAOi4LWsU".
Все методы, требующие аутентификации, будут отмечены как requires authentication Само поле имеет название Authorization header.
Перед использованием Api обязательно пройти регистрацию в самом сервисе. Вы можете получить свой токен, открыв панель управления Авторизация пользователей Внешнего Апи, использовав метод Login.
Авторизация пользователей Внешнего Апи
Авторизация пользователей внешнего Апи. Метод позволяет пройти авторизацию с помощью вашего email и пароля от сервиса. После авторизации вы получите токен, который далее будет необходимо использовать в каждом последующем методе.
Войти в аккаунт
Метод позволяет войти в аккаунт и получить токен для авторизации апи методов. Токен будет действовать 3 часа. Для входа используйте E-mail и пароль от аккаунта в сервисе.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/auth/login" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"hhalvorson@example.org\",
\"password\": \"voluptas\"
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/auth/login"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "hhalvorson@example.org",
"password": "voluptas"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/auth/login',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'email' => 'hhalvorson@example.org',
'password' => 'voluptas',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 6000
x-ratelimit-remaining: 5999
{
"success": false,
"message": "Unauthorised.",
"data": [],
"details": {
"error": "Unauthorised"
}
}
Received response:
Request failed with error:
Выйти из аккаунта
requires authentication
Метод позволяет осуществить выход из аккаунта пользователя.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/auth/logout" \
--header "Authorization: Bearer 6Egc8Dvb4kedPVaaZ6h5f13" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/auth/logout"
);
const headers = {
"Authorization": "Bearer 6Egc8Dvb4kedPVaaZ6h5f13",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/auth/logout',
[
'headers' => [
'Authorization' => 'Bearer 6Egc8Dvb4kedPVaaZ6h5f13',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Продлить текущий токен
requires authentication
Метод позволяет продлить время действия токена на 1 час.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/auth/refresh" \
--header "Authorization: Bearer V4E36DZgabhP5d6ac8k1vfe" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/auth/refresh"
);
const headers = {
"Authorization": "Bearer V4E36DZgabhP5d6ac8k1vfe",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/auth/refresh',
[
'headers' => [
'Authorization' => 'Bearer V4E36DZgabhP5d6ac8k1vfe',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Токен Мои магазины. Внешнеe Апи
Данный раздел отвечает за взаимодействие с токеном маркетплейса. В нем находятся методы, позволяющие добавлять, удалять, обновлять и редактировать токены маркетплейсов.
Список магазинов
requires authentication
Метод позволяет получить список подключенных к сервису токенов маркетплейса и получить по ним необходимые для работы данные. Список данных: id магазина, id пользователя, маркетплейс и Api токен маркетплейса.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/get_user_keys" \
--header "Authorization: Bearer Zfa35Vh8b4evg1a6kdDcP6E" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"take\": \"10\",
\"skip\": \"50\",
\"sort[0][field]\": \"id\",
\"sort[0][dir]\": \"asc\"
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/get_user_keys"
);
const headers = {
"Authorization": "Bearer Zfa35Vh8b4evg1a6kdDcP6E",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"take": "10",
"skip": "50",
"sort[0][field]": "id",
"sort[0][dir]": "asc"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/get_user_keys',
[
'headers' => [
'Authorization' => 'Bearer Zfa35Vh8b4evg1a6kdDcP6E',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'take' => '10',
'skip' => '50',
'sort[0][field]' => 'id',
'sort[0][dir]' => 'asc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Изменить магазин
requires authentication
Метод позволяет обновить токен маркетплейса, подключенный к сервису.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/update_user_keys?id=dolorem&datasource=wb&apikey=LKJ34423434HGW332352&name=%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9&sync=1" \
--header "Authorization: Bearer kEea8V61fDb5va6cdPhg4Z3" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/update_user_keys"
);
const params = {
"id": "dolorem",
"datasource": "wb",
"apikey": "LKJ34423434HGW332352",
"name": "Рабочий",
"sync": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer kEea8V61fDb5va6cdPhg4Z3",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/update_user_keys',
[
'headers' => [
'Authorization' => 'Bearer kEea8V61fDb5va6cdPhg4Z3',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'id'=> 'dolorem',
'datasource'=> 'wb',
'apikey'=> 'LKJ34423434HGW332352',
'name'=> 'Рабочий',
'sync'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Подключить магазин
requires authentication
Метод позволяет подключить новый токен к сервису.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/create_user_keys?datasource=wb&apikey=LKJ34423434HGW332352&name=%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9" \
--header "Authorization: Bearer aDhb6f3a8cEdZ14kv5egP6V" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/create_user_keys"
);
const params = {
"datasource": "wb",
"apikey": "LKJ34423434HGW332352",
"name": "Рабочий",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer aDhb6f3a8cEdZ14kv5egP6V",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/create_user_keys',
[
'headers' => [
'Authorization' => 'Bearer aDhb6f3a8cEdZ14kv5egP6V',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'datasource'=> 'wb',
'apikey'=> 'LKJ34423434HGW332352',
'name'=> 'Рабочий',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Удалить магазин
requires authentication
Метод позволяет удалить подключенный к сервису токен. Для удаления необходимо указать id токена.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/destroy_user_keys?id=enim" \
--header "Authorization: Bearer 4eDVc3hZga6EbkaP1df65v8" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/destroy_user_keys"
);
const params = {
"id": "enim",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer 4eDVc3hZga6EbkaP1df65v8",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/destroy_user_keys',
[
'headers' => [
'Authorization' => 'Bearer 4eDVc3hZga6EbkaP1df65v8',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'id'=> 'enim',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Репрайсер Внешнеe Апи
Этот раздел внешнего Апи позволяет управлять всеми настройками репрайсера. А именно: Создание сценариев, их редактирование и получения данных по его работе.
Список магазинов
requires authentication
Метод позволяет получить список подключенных токенов (магазинов) и данные по ним. Список данных: id токена, маркетплейс, название магазина, Api токен маркетплейса и client id.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/get_user_keys" \
--header "Authorization: Bearer Egef6d3ahDv45bkPa81ZV6c" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/get_user_keys"
);
const headers = {
"Authorization": "Bearer Egef6d3ahDv45bkPa81ZV6c",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/get_user_keys',
[
'headers' => [
'Authorization' => 'Bearer Egef6d3ahDv45bkPa81ZV6c',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Список типов сценария
requires authentication
Метод позволяет получить список типов сценария и id типа сценария
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/get_script_type" \
--header "Authorization: Bearer aP51kbg6v368eaDdZVfchE4" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/get_script_type"
);
const headers = {
"Authorization": "Bearer aP51kbg6v368eaDdZVfchE4",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/get_script_type',
[
'headers' => [
'Authorization' => 'Bearer aP51kbg6v368eaDdZVfchE4',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Список сценариев
requires authentication
Метод позволяет получить список созданных сценариев репрайсера и данные по ним. Список данных: id сценария, название сценария, статус, название магазина, id типа сценария, кол-во проверок в сутки и название типа сценария.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/get_script_list?take=10&skip=50&filter[filters][0][field]=last_change_date&filter[filters][0][operator]=gt&filter[filters][0][value]=06-01-2022&filter[filters][1][field]=last_change_date&filter[filters][1][operator]=gt&filter[filters][1][value]=06-13-2022&filter[filters][2][field]=user_key_id&filter[filters][2][operator]=%3D&filter[filters][2][value][]=%5B1%2C+2%2C+3%5D&sort[0][field]=last_change_date&sort[0][dir]=asc" \
--header "Authorization: Bearer EbDkPZa8d6fv56V14cega3h" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/get_script_list"
);
const params = {
"take": "10",
"skip": "50",
"filter[filters][0][field]": "last_change_date",
"filter[filters][0][operator]": "gt",
"filter[filters][0][value]": "06-01-2022",
"filter[filters][1][field]": "last_change_date",
"filter[filters][1][operator]": "gt",
"filter[filters][1][value]": "06-13-2022",
"filter[filters][2][field]": "user_key_id",
"filter[filters][2][operator]": "=",
"filter[filters][2][value][]": "[1, 2, 3]",
"sort[0][field]": "last_change_date",
"sort[0][dir]": "asc",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer EbDkPZa8d6fv56V14cega3h",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/get_script_list',
[
'headers' => [
'Authorization' => 'Bearer EbDkPZa8d6fv56V14cega3h',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'take'=> '10',
'skip'=> '50',
'filter[filters][0][field]'=> 'last_change_date',
'filter[filters][0][operator]'=> 'gt',
'filter[filters][0][value]'=> '06-01-2022',
'filter[filters][1][field]'=> 'last_change_date',
'filter[filters][1][operator]'=> 'gt',
'filter[filters][1][value]'=> '06-13-2022',
'filter[filters][2][field]'=> 'user_key_id',
'filter[filters][2][operator]'=> '=',
'filter[filters][2][value][]'=> '[1, 2, 3]',
'sort[0][field]'=> 'last_change_date',
'sort[0][dir]'=> 'asc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"id": 4,
"name": "Jessica Jones",
"roles": [
"admin"
]
}
Received response:
Request failed with error:
Получить сценарий
requires authentication
Метод позволяет получить данные по конкретному сценарию. Для получения требуется ввести id сценария.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/get_script" \
--header "Authorization: Bearer d3PbaZv8hcgEfD6V15ake46" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"id\": 1
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/get_script"
);
const headers = {
"Authorization": "Bearer d3PbaZv8hcgEfD6V15ake46",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"id": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/get_script',
[
'headers' => [
'Authorization' => 'Bearer d3PbaZv8hcgEfD6V15ake46',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'id' => 1,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Создать сценарий Компенсация СПП
requires authentication
Метод позволяет создать сценарий Компенсация СПП и настроить его параметры: Id типа сценария, кол-во проверок цены, с учетом скидки кошелька, контроль остатков, минимальный остаток, Sku товара
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/create_compensation" \
--header "Authorization: Bearer 6heaf5D1dacbg4EZk8VP6v3" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"script_type_id\": 1,
\"name\": \"Стандартный\",
\"user_key_id\": 1,
\"launches\": 24,
\"wallet_discount\": false,
\"keep_discount\": false,
\"track_remainder\": true,
\"remainder_quantity\": 10,
\"remainder_percent\": 300,
\"track_promotions_off\": false,
\"sku_range_price_list\": [
{
\"nm_id\": \"vero\",
\"target_price\": \"500\"
}
]
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/create_compensation"
);
const headers = {
"Authorization": "Bearer 6heaf5D1dacbg4EZk8VP6v3",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"script_type_id": 1,
"name": "Стандартный",
"user_key_id": 1,
"launches": 24,
"wallet_discount": false,
"keep_discount": false,
"track_remainder": true,
"remainder_quantity": 10,
"remainder_percent": 300,
"track_promotions_off": false,
"sku_range_price_list": [
{
"nm_id": "vero",
"target_price": "500"
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/create_compensation',
[
'headers' => [
'Authorization' => 'Bearer 6heaf5D1dacbg4EZk8VP6v3',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'script_type_id' => 1,
'name' => 'Стандартный',
'user_key_id' => 1,
'launches' => 24,
'wallet_discount' => false,
'keep_discount' => false,
'track_remainder' => true,
'remainder_quantity' => 10,
'remainder_percent' => 300,
'track_promotions_off' => false,
'sku_range_price_list' => [
[
'nm_id' => 'vero',
'target_price' => '500',
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Изменить сценарий Компенсация СПП
requires authentication
Метод позволяет изменить настройки сценария Компенсация СПП.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/update_compensation" \
--header "Authorization: Bearer gec536kvDhbadEfZa148V6P" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"script_type_id\": 1,
\"id\": 1,
\"name\": \"Стандартный\",
\"active\": false,
\"user_key_id\": 1,
\"launches\": 24,
\"wallet_discount\": false,
\"keep_discount\": false,
\"track_remainder\": true,
\"sku_range_price_list\": [
{
\"nm_id\": 6,
\"target_price\": \"500\"
}
],
\"remainder_quantity\": 10,
\"remainder_percent\": 300,
\"track_promotions_off\": false
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/update_compensation"
);
const headers = {
"Authorization": "Bearer gec536kvDhbadEfZa148V6P",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"script_type_id": 1,
"id": 1,
"name": "Стандартный",
"active": false,
"user_key_id": 1,
"launches": 24,
"wallet_discount": false,
"keep_discount": false,
"track_remainder": true,
"sku_range_price_list": [
{
"nm_id": 6,
"target_price": "500"
}
],
"remainder_quantity": 10,
"remainder_percent": 300,
"track_promotions_off": false
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/update_compensation',
[
'headers' => [
'Authorization' => 'Bearer gec536kvDhbadEfZa148V6P',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'script_type_id' => 1,
'id' => 1,
'name' => 'Стандартный',
'active' => false,
'user_key_id' => 1,
'launches' => 24,
'wallet_discount' => false,
'keep_discount' => false,
'track_remainder' => true,
'sku_range_price_list' => [
[
'nm_id' => 6,
'target_price' => '500',
],
],
'remainder_quantity' => 10,
'remainder_percent' => 300,
'track_promotions_off' => false,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Создать сценарий Конкуренты СПП
requires authentication
Метод позволяет создать сценарий Конкуренты СПП и настроить его параметры: Id типа сценария, кол-во проверок цены, с учетом скидки кошелька, контроль остатков, минимальный остаток, Sku товара. Оператор условия. Больше/меньше/средняя цена конкурента. Команды: up/down/avg. Значение условия. Насколько больше или меньше. Измерение условия. В процентах или рублях. Команды: %/руб
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/create_competitor_spp" \
--header "Authorization: Bearer bd65D4vPga6Zhca138eEVkf" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"script_type_id\": 1,
\"name\": \"Стандартный\",
\"user_key_id\": 1,
\"launches\": 24,
\"wallet_discount\": false,
\"range_price_spp\": false,
\"keep_discount\": false,
\"track_remainder\": true,
\"remainder_quantity\": 10,
\"remainder_percent\": 300,
\"track_promotions_off\": false,
\"sku_range_price_list\": [
{
\"nm_id\": \"rerum\",
\"min_price\": \"300\",
\"max_price\": \"500\",
\"competitor_list\": [
202023476,
202022186
]
}
],
\"script_value\": [
{
\"expression\": {
\"operation\": \"natus\",
\"value\": \"accusamus\",
\"unit\": \"rerum\"
}
}
]
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/create_competitor_spp"
);
const headers = {
"Authorization": "Bearer bd65D4vPga6Zhca138eEVkf",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"script_type_id": 1,
"name": "Стандартный",
"user_key_id": 1,
"launches": 24,
"wallet_discount": false,
"range_price_spp": false,
"keep_discount": false,
"track_remainder": true,
"remainder_quantity": 10,
"remainder_percent": 300,
"track_promotions_off": false,
"sku_range_price_list": [
{
"nm_id": "rerum",
"min_price": "300",
"max_price": "500",
"competitor_list": [
202023476,
202022186
]
}
],
"script_value": [
{
"expression": {
"operation": "natus",
"value": "accusamus",
"unit": "rerum"
}
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/create_competitor_spp',
[
'headers' => [
'Authorization' => 'Bearer bd65D4vPga6Zhca138eEVkf',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'script_type_id' => 1,
'name' => 'Стандартный',
'user_key_id' => 1,
'launches' => 24,
'wallet_discount' => false,
'range_price_spp' => false,
'keep_discount' => false,
'track_remainder' => true,
'remainder_quantity' => 10,
'remainder_percent' => 300,
'track_promotions_off' => false,
'sku_range_price_list' => [
[
'nm_id' => 'rerum',
'min_price' => '300',
'max_price' => '500',
'competitor_list' => [
202023476,
202022186,
],
],
],
'script_value' => [
[
'expression' => [
'operation' => 'natus',
'value' => 'accusamus',
'unit' => 'rerum',
],
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Изменить сценарий Конкуренты СПП
requires authentication
Метод позволяет изменить настройки сценария Конкуренты СПП.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/update_competitor_spp" \
--header "Authorization: Bearer cD6gf6eVadhvkbP5E1384aZ" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"script_type_id\": 1,
\"id\": 1,
\"name\": \"Стандартный\",
\"active\": false,
\"user_key_id\": 1,
\"launches\": 24,
\"wallet_discount\": false,
\"range_price_spp\": false,
\"keep_discount\": false,
\"track_remainder\": true,
\"remainder_quantity\": 10,
\"remainder_percent\": 300,
\"track_promotions_off\": false,
\"sku_range_price_list\": [
{
\"nm_id\": 6,
\"min_price\": \"300\",
\"max_price\": \"500\",
\"competitor_list\": [
202023476,
202022186
]
}
],
\"script_value\": [
{
\"expression\": {
\"operation\": \"maxime\",
\"value\": \"veritatis\",
\"unit\": \"hic\"
}
}
]
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/update_competitor_spp"
);
const headers = {
"Authorization": "Bearer cD6gf6eVadhvkbP5E1384aZ",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"script_type_id": 1,
"id": 1,
"name": "Стандартный",
"active": false,
"user_key_id": 1,
"launches": 24,
"wallet_discount": false,
"range_price_spp": false,
"keep_discount": false,
"track_remainder": true,
"remainder_quantity": 10,
"remainder_percent": 300,
"track_promotions_off": false,
"sku_range_price_list": [
{
"nm_id": 6,
"min_price": "300",
"max_price": "500",
"competitor_list": [
202023476,
202022186
]
}
],
"script_value": [
{
"expression": {
"operation": "maxime",
"value": "veritatis",
"unit": "hic"
}
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/update_competitor_spp',
[
'headers' => [
'Authorization' => 'Bearer cD6gf6eVadhvkbP5E1384aZ',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'script_type_id' => 1,
'id' => 1,
'name' => 'Стандартный',
'active' => false,
'user_key_id' => 1,
'launches' => 24,
'wallet_discount' => false,
'range_price_spp' => false,
'keep_discount' => false,
'track_remainder' => true,
'remainder_quantity' => 10,
'remainder_percent' => 300,
'track_promotions_off' => false,
'sku_range_price_list' => [
[
'nm_id' => 6,
'min_price' => '300',
'max_price' => '500',
'competitor_list' => [
202023476,
202022186,
],
],
],
'script_value' => [
[
'expression' => [
'operation' => 'maxime',
'value' => 'veritatis',
'unit' => 'hic',
],
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Создать сценарий Конкуренты Плюс
requires authentication
Метод позволяет создать сценарий Конкуренты Плюс и настроить его параметры: Id типа сценария, кол-во проверок цены, с учетом скидки кошелька, контроль остатков, минимальный остаток, Sku товара. Оператор условия. Больше/меньше/средняя цена конкурента. Команды: up/down/avg. Значение условия. Насколько больше или меньше. Измерение условия. В процентах или рублях. Команды: %/руб
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/store_competitor_plus" \
--header "Authorization: Bearer gk35ZaPv8616deEf4cDVhab" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"script_type_id\": 1,
\"name\": \"Стандартный\",
\"user_key_id\": 1,
\"launches\": 24,
\"wallet_discount\": false,
\"range_price_spp\": false,
\"keep_discount\": false,
\"track_remainder\": true,
\"remainder_quantity\": 10,
\"remainder_percent\": 300,
\"track_promotions_off\": false,
\"sku_range_price_list\": [
{
\"nm_id\": \"non\",
\"min_price\": \"300\",
\"max_price\": \"500\",
\"target_price\": \"500\",
\"competitor_list\": [
202023476,
202022186
]
}
],
\"script_value\": [
{
\"expression\": {
\"operation\": \"sed\",
\"value\": \"voluptas\",
\"unit\": \"harum\"
}
}
]
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/store_competitor_plus"
);
const headers = {
"Authorization": "Bearer gk35ZaPv8616deEf4cDVhab",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"script_type_id": 1,
"name": "Стандартный",
"user_key_id": 1,
"launches": 24,
"wallet_discount": false,
"range_price_spp": false,
"keep_discount": false,
"track_remainder": true,
"remainder_quantity": 10,
"remainder_percent": 300,
"track_promotions_off": false,
"sku_range_price_list": [
{
"nm_id": "non",
"min_price": "300",
"max_price": "500",
"target_price": "500",
"competitor_list": [
202023476,
202022186
]
}
],
"script_value": [
{
"expression": {
"operation": "sed",
"value": "voluptas",
"unit": "harum"
}
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/store_competitor_plus',
[
'headers' => [
'Authorization' => 'Bearer gk35ZaPv8616deEf4cDVhab',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'script_type_id' => 1,
'name' => 'Стандартный',
'user_key_id' => 1,
'launches' => 24,
'wallet_discount' => false,
'range_price_spp' => false,
'keep_discount' => false,
'track_remainder' => true,
'remainder_quantity' => 10,
'remainder_percent' => 300,
'track_promotions_off' => false,
'sku_range_price_list' => [
[
'nm_id' => 'non',
'min_price' => '300',
'max_price' => '500',
'target_price' => '500',
'competitor_list' => [
202023476,
202022186,
],
],
],
'script_value' => [
[
'expression' => [
'operation' => 'sed',
'value' => 'voluptas',
'unit' => 'harum',
],
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Изменить сценарий Конкуренты Плюс
requires authentication
Метод позволяет изменить настройки сценария Конкуренты Плюс.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/update_competitor_plus" \
--header "Authorization: Bearer 1e6Ekhv8V6Dd5bgfP3c4aaZ" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"script_type_id\": 1,
\"id\": 1,
\"name\": \"Стандартный\",
\"active\": false,
\"user_key_id\": 1,
\"launches\": 24,
\"wallet_discount\": false,
\"range_price_spp\": false,
\"keep_discount\": false,
\"track_remainder\": true,
\"remainder_quantity\": 10,
\"remainder_percent\": 300,
\"track_promotions_off\": false,
\"sku_range_price_list\": [
{
\"nm_id\": 15,
\"min_price\": \"300\",
\"max_price\": \"500\",
\"target_price\": \"500\",
\"competitor_list\": [
202023476,
202022186
]
}
],
\"script_value\": [
{
\"expression\": {
\"operation\": \"sunt\",
\"value\": \"aspernatur\",
\"unit\": \"culpa\"
}
}
]
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/update_competitor_plus"
);
const headers = {
"Authorization": "Bearer 1e6Ekhv8V6Dd5bgfP3c4aaZ",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"script_type_id": 1,
"id": 1,
"name": "Стандартный",
"active": false,
"user_key_id": 1,
"launches": 24,
"wallet_discount": false,
"range_price_spp": false,
"keep_discount": false,
"track_remainder": true,
"remainder_quantity": 10,
"remainder_percent": 300,
"track_promotions_off": false,
"sku_range_price_list": [
{
"nm_id": 15,
"min_price": "300",
"max_price": "500",
"target_price": "500",
"competitor_list": [
202023476,
202022186
]
}
],
"script_value": [
{
"expression": {
"operation": "sunt",
"value": "aspernatur",
"unit": "culpa"
}
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/update_competitor_plus',
[
'headers' => [
'Authorization' => 'Bearer 1e6Ekhv8V6Dd5bgfP3c4aaZ',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'script_type_id' => 1,
'id' => 1,
'name' => 'Стандартный',
'active' => false,
'user_key_id' => 1,
'launches' => 24,
'wallet_discount' => false,
'range_price_spp' => false,
'keep_discount' => false,
'track_remainder' => true,
'remainder_quantity' => 10,
'remainder_percent' => 300,
'track_promotions_off' => false,
'sku_range_price_list' => [
[
'nm_id' => 15,
'min_price' => '300',
'max_price' => '500',
'target_price' => '500',
'competitor_list' => [
202023476,
202022186,
],
],
],
'script_value' => [
[
'expression' => [
'operation' => 'sunt',
'value' => 'aspernatur',
'unit' => 'culpa',
],
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Удалить сценарий
requires authentication
Метод позволяет удалить сценарий репрайсера. Для удаления необходимо указать id сценария.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/destroy_script" \
--header "Authorization: Bearer 6caa1hekPdvZbV845E6Df3g" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"id\": 1
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/destroy_script"
);
const headers = {
"Authorization": "Bearer 6caa1hekPdvZbV845E6Df3g",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"id": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/destroy_script',
[
'headers' => [
'Authorization' => 'Bearer 6caa1hekPdvZbV845E6Df3g',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'id' => 1,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Лог событий
requires authentication
Метод позволяет получить данные из лога событий репрайсера. Допускается получение данных с фильтрацией и без
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/get_sku_history_list?take=10&skip=50&filter[logic]=and&filter[filters][0][field]=date_add&filter[filters][0][operator]=gt&filter[filters][0][value]=06-01-2022&filter[filters][1][field]=date_add&filter[filters][1][operator]=gt&filter[filters][1][value]=06-13-2022&filter[filters][2][field]=user_key_id&filter[filters][2][operator]=%3D&filter[filters][2][value][]=%5B1%2C+2%2C+3%5D&sort[0][field]=date_add&sort[0][dir]=asc" \
--header "Authorization: Bearer v56DgZkedE48cfPba1hV6a3" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/get_sku_history_list"
);
const params = {
"take": "10",
"skip": "50",
"filter[logic]": "and",
"filter[filters][0][field]": "date_add",
"filter[filters][0][operator]": "gt",
"filter[filters][0][value]": "06-01-2022",
"filter[filters][1][field]": "date_add",
"filter[filters][1][operator]": "gt",
"filter[filters][1][value]": "06-13-2022",
"filter[filters][2][field]": "user_key_id",
"filter[filters][2][operator]": "=",
"filter[filters][2][value][]": "[1, 2, 3]",
"sort[0][field]": "date_add",
"sort[0][dir]": "asc",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer v56DgZkedE48cfPba1hV6a3",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/get_sku_history_list',
[
'headers' => [
'Authorization' => 'Bearer v56DgZkedE48cfPba1hV6a3',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'take'=> '10',
'skip'=> '50',
'filter[logic]'=> 'and',
'filter[filters][0][field]'=> 'date_add',
'filter[filters][0][operator]'=> 'gt',
'filter[filters][0][value]'=> '06-01-2022',
'filter[filters][1][field]'=> 'date_add',
'filter[filters][1][operator]'=> 'gt',
'filter[filters][1][value]'=> '06-13-2022',
'filter[filters][2][field]'=> 'user_key_id',
'filter[filters][2][operator]'=> '=',
'filter[filters][2][value][]'=> '[1, 2, 3]',
'sort[0][field]'=> 'date_add',
'sort[0][dir]'=> 'asc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Мои товары
requires authentication
Метод позволяет получить список товаров из вашего магазина.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/get_sku_product_list?take=10&skip=50&filter[logic]=and&filter[filters][0][field]=date_add&filter[filters][0][operator]=gt&filter[filters][0][value]=06-01-2022&filter[filters][1][field]=date_add&filter[filters][1][operator]=gt&filter[filters][1][value]=06-13-2022&filter[filters][2][field]=user_key_id&filter[filters][2][operator]=%3D&filter[filters][2][value][]=%5B1%2C+2%2C+3%5D&sort[0][field]=date_add&sort[0][dir]=asc" \
--header "Authorization: Bearer 68PevD1Ef4kda53V6hacZbg" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/get_sku_product_list"
);
const params = {
"take": "10",
"skip": "50",
"filter[logic]": "and",
"filter[filters][0][field]": "date_add",
"filter[filters][0][operator]": "gt",
"filter[filters][0][value]": "06-01-2022",
"filter[filters][1][field]": "date_add",
"filter[filters][1][operator]": "gt",
"filter[filters][1][value]": "06-13-2022",
"filter[filters][2][field]": "user_key_id",
"filter[filters][2][operator]": "=",
"filter[filters][2][value][]": "[1, 2, 3]",
"sort[0][field]": "date_add",
"sort[0][dir]": "asc",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer 68PevD1Ef4kda53V6hacZbg",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/get_sku_product_list',
[
'headers' => [
'Authorization' => 'Bearer 68PevD1Ef4kda53V6hacZbg',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'take'=> '10',
'skip'=> '50',
'filter[logic]'=> 'and',
'filter[filters][0][field]'=> 'date_add',
'filter[filters][0][operator]'=> 'gt',
'filter[filters][0][value]'=> '06-01-2022',
'filter[filters][1][field]'=> 'date_add',
'filter[filters][1][operator]'=> 'gt',
'filter[filters][1][value]'=> '06-13-2022',
'filter[filters][2][field]'=> 'user_key_id',
'filter[filters][2][operator]'=> '=',
'filter[filters][2][value][]'=> '[1, 2, 3]',
'sort[0][field]'=> 'date_add',
'sort[0][dir]'=> 'asc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Товары под управлением - динамика цен
requires authentication
Метод позволяет получить список товаров под управлением репрайсера.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/get_sku_dynamic_list?take=10&skip=50&filter[logic]=and&filter[filters][0][field]=date_add&filter[filters][0][operator]=gt&filter[filters][0][value]=06-01-2022&filter[filters][1][field]=date_add&filter[filters][1][operator]=gt&filter[filters][1][value]=06-13-2022&filter[filters][2][field]=user_key_id&filter[filters][2][operator]=%3D&filter[filters][2][value][]=%5B1%2C+2%2C+3%5D&sort[0][field]=date_add&sort[0][dir]=asc" \
--header "Authorization: Bearer 43f86kVvcDEgZaa65eb1hPd" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/get_sku_dynamic_list"
);
const params = {
"take": "10",
"skip": "50",
"filter[logic]": "and",
"filter[filters][0][field]": "date_add",
"filter[filters][0][operator]": "gt",
"filter[filters][0][value]": "06-01-2022",
"filter[filters][1][field]": "date_add",
"filter[filters][1][operator]": "gt",
"filter[filters][1][value]": "06-13-2022",
"filter[filters][2][field]": "user_key_id",
"filter[filters][2][operator]": "=",
"filter[filters][2][value][]": "[1, 2, 3]",
"sort[0][field]": "date_add",
"sort[0][dir]": "asc",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer 43f86kVvcDEgZaa65eb1hPd",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/get_sku_dynamic_list',
[
'headers' => [
'Authorization' => 'Bearer 43f86kVvcDEgZaa65eb1hPd',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'take'=> '10',
'skip'=> '50',
'filter[logic]'=> 'and',
'filter[filters][0][field]'=> 'date_add',
'filter[filters][0][operator]'=> 'gt',
'filter[filters][0][value]'=> '06-01-2022',
'filter[filters][1][field]'=> 'date_add',
'filter[filters][1][operator]'=> 'gt',
'filter[filters][1][value]'=> '06-13-2022',
'filter[filters][2][field]'=> 'user_key_id',
'filter[filters][2][operator]'=> '=',
'filter[filters][2][value][]'=> '[1, 2, 3]',
'sort[0][field]'=> 'date_add',
'sort[0][dir]'=> 'asc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Список товаров
requires authentication
Метод позволяет получить список товаров из раздела “Мои магазины”
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/get_product_list?take=10&skip=50&filter[filters][0][field]=date_add&filter[filters][0][operator]=gt&filter[filters][0][value]=06-01-2022&filter[filters][1][field]=date_add&filter[filters][1][operator]=gt&filter[filters][1][value]=06-13-2022&filter[filters][2][field]=user_key_id&filter[filters][2][operator]=%3D&filter[filters][2][value][]=%5B1%2C+2%2C+3%5D&sort[0][field]=date_add&sort[0][dir]=asc" \
--header "Authorization: Bearer VZb661cdDfghE5aakvP843e" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/get_product_list"
);
const params = {
"take": "10",
"skip": "50",
"filter[filters][0][field]": "date_add",
"filter[filters][0][operator]": "gt",
"filter[filters][0][value]": "06-01-2022",
"filter[filters][1][field]": "date_add",
"filter[filters][1][operator]": "gt",
"filter[filters][1][value]": "06-13-2022",
"filter[filters][2][field]": "user_key_id",
"filter[filters][2][operator]": "=",
"filter[filters][2][value][]": "[1, 2, 3]",
"sort[0][field]": "date_add",
"sort[0][dir]": "asc",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer VZb661cdDfghE5aakvP843e",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/get_product_list',
[
'headers' => [
'Authorization' => 'Bearer VZb661cdDfghE5aakvP843e',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'take'=> '10',
'skip'=> '50',
'filter[filters][0][field]'=> 'date_add',
'filter[filters][0][operator]'=> 'gt',
'filter[filters][0][value]'=> '06-01-2022',
'filter[filters][1][field]'=> 'date_add',
'filter[filters][1][operator]'=> 'gt',
'filter[filters][1][value]'=> '06-13-2022',
'filter[filters][2][field]'=> 'user_key_id',
'filter[filters][2][operator]'=> '=',
'filter[filters][2][value][]'=> '[1, 2, 3]',
'sort[0][field]'=> 'date_add',
'sort[0][dir]'=> 'asc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Список товаров конкурентов
requires authentication
Метод позволяет получить список sku товаров конкурентов из сценария Конкуренты СПП.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/get_product_competitor_list?take=10&skip=50&filter[filters][0][field]=date_add&filter[filters][0][operator]=gt&filter[filters][0][value]=06-01-2022&filter[filters][1][field]=date_add&filter[filters][1][operator]=gt&filter[filters][1][value]=06-13-2022&filter[filters][2][field]=user_key_id&filter[filters][2][operator]=%3D&filter[filters][2][value][]=%5B1%2C+2%2C+3%5D&sort[0][field]=date_add&sort[0][dir]=asc" \
--header "Authorization: Bearer ke5Z61f8DVh4bdP3c6avaEg" \
--header "Content-Type: application/json" \
--header "Accept: application/json"const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/get_product_competitor_list"
);
const params = {
"take": "10",
"skip": "50",
"filter[filters][0][field]": "date_add",
"filter[filters][0][operator]": "gt",
"filter[filters][0][value]": "06-01-2022",
"filter[filters][1][field]": "date_add",
"filter[filters][1][operator]": "gt",
"filter[filters][1][value]": "06-13-2022",
"filter[filters][2][field]": "user_key_id",
"filter[filters][2][operator]": "=",
"filter[filters][2][value][]": "[1, 2, 3]",
"sort[0][field]": "date_add",
"sort[0][dir]": "asc",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer ke5Z61f8DVh4bdP3c6avaEg",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/get_product_competitor_list',
[
'headers' => [
'Authorization' => 'Bearer ke5Z61f8DVh4bdP3c6avaEg',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'query' => [
'take'=> '10',
'skip'=> '50',
'filter[filters][0][field]'=> 'date_add',
'filter[filters][0][operator]'=> 'gt',
'filter[filters][0][value]'=> '06-01-2022',
'filter[filters][1][field]'=> 'date_add',
'filter[filters][1][operator]'=> 'gt',
'filter[filters][1][value]'=> '06-13-2022',
'filter[filters][2][field]'=> 'user_key_id',
'filter[filters][2][operator]'=> '=',
'filter[filters][2][value][]'=> '[1, 2, 3]',
'sort[0][field]'=> 'date_add',
'sort[0][dir]'=> 'asc',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Получить товар
requires authentication
Позволяет получить информацию по конкретному товару, который находится под управлением репрайсера. Для получения информации необходимо ввести id товара, его можно получить из метода Product list.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/get_product" \
--header "Authorization: Bearer 6bg5dhfZ8vke1Dcaa4P63VE" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"id\": 1
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/get_product"
);
const headers = {
"Authorization": "Bearer 6bg5dhfZ8vke1Dcaa4P63VE",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"id": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/get_product',
[
'headers' => [
'Authorization' => 'Bearer 6bg5dhfZ8vke1Dcaa4P63VE',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'id' => 1,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Изменить товары
requires authentication
Метод позволяет изменить настройки цены Sku, находящимся под управлением репрайсера.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/update_product" \
--header "Authorization: Bearer gba364aPcVh8EZ1fDed6vk5" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"product_list\": [
{
\"repricer_script_id\": \"corporis\",
\"nm_id\": 4,
\"min_price\": \"300\",
\"max_price\": \"500\",
\"target_price\": \"500\",
\"active\": \"true\"
}
]
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/update_product"
);
const headers = {
"Authorization": "Bearer gba364aPcVh8EZ1fDed6vk5",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"product_list": [
{
"repricer_script_id": "corporis",
"nm_id": 4,
"min_price": "300",
"max_price": "500",
"target_price": "500",
"active": "true"
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/update_product',
[
'headers' => [
'Authorization' => 'Bearer gba364aPcVh8EZ1fDed6vk5',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'product_list' => [
[
'repricer_script_id' => 'corporis',
'nm_id' => 4,
'min_price' => '300',
'max_price' => '500',
'target_price' => '500',
'active' => 'true',
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Удалить товары
requires authentication
Данный метод позволяет удалить товары под управлением репрайсера. Для удаления необходимо указать id товара.
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/repricer/destroy_product" \
--header "Authorization: Bearer 5PvDZe64f3b1ck8adhVE6ga" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"product_id_list\": [
1
]
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/repricer/destroy_product"
);
const headers = {
"Authorization": "Bearer 5PvDZe64f3b1ck8adhVE6ga",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"product_id_list": [
1
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/repricer/destroy_product',
[
'headers' => [
'Authorization' => 'Bearer 5PvDZe64f3b1ck8adhVE6ga',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'product_id_list' => [
1,
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
{
"success": false,
"data": [],
"message": "Unauthenticated."
}
Received response:
Request failed with error:
Внешняя аналитика. Категории
Сервис внешней аналитики
Список категорий
requires authentication
Получить список доступных категорий за период
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/ext-analitic/show_category" \
--header "Authorization: Bearer kZEf4Pa3DvhcVa665g1bde8" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"marketPlace\": \"ozon\",
\"dateFrom\": \"2024-04-23\",
\"dateTo\": \"2024-05-22\",
\"categoryName\": \"Электроника\",
\"take\": 10,
\"skip\": 0
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/ext-analitic/show_category"
);
const headers = {
"Authorization": "Bearer kZEf4Pa3DvhcVa665g1bde8",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"marketPlace": "ozon",
"dateFrom": "2024-04-23",
"dateTo": "2024-05-22",
"categoryName": "Электроника",
"take": 10,
"skip": 0
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/ext-analitic/show_category',
[
'headers' => [
'Authorization' => 'Bearer kZEf4Pa3DvhcVa665g1bde8',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'marketPlace' => 'ozon',
'dateFrom' => '2024-04-23',
'dateTo' => '2024-05-22',
'categoryName' => 'Электроника',
'take' => 10,
'skip' => 0,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"message": "Ok"
"totals": "5229"
"data": {{"c_id": 54, "c_name": "Спорт и игры на улице", "c_id_path": [3, 54 ], "c_name_path": ["Детские товары", "Спорт и игры на улице"], "c_has_product": 2183}, ... }
}
Received response:
Request failed with error:
Ответ
Response Fields
c_id integer
Id категории
c_name string
Название категории
c_id_path string[]
Полный путь Id категории
c_name_path string[]
Полный путь Названия категории
c_has_product integer
Кол-во товаров в категории
Создать отчет
requires authentication
Метод создания запроса на получение отчета по статистики внешней аналитики раздел категории
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/ext-analitic/category_report" \
--header "Authorization: Bearer evcd16E43fahD5agV8Z6bPk" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"marketPlace\": \"ozon\",
\"category\": 1,
\"dateFrom\": \"2024-04-23\",
\"dateTo\": \"2024-05-22\",
\"fbs\": false
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/ext-analitic/category_report"
);
const headers = {
"Authorization": "Bearer evcd16E43fahD5agV8Z6bPk",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"marketPlace": "ozon",
"category": 1,
"dateFrom": "2024-04-23",
"dateTo": "2024-05-22",
"fbs": false
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/ext-analitic/category_report',
[
'headers' => [
'Authorization' => 'Bearer evcd16E43fahD5agV8Z6bPk',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'marketPlace' => 'ozon',
'category' => 1,
'dateFrom' => '2024-04-23',
'dateTo' => '2024-05-22',
'fbs' => false,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"data": {
"reportId": "ef046e6b943e2086123e6c69676de1ff24eb6772"
},
"message": "Выполняется сбор данных."
}
Received response:
Request failed with error:
Категории. Общие показатели по категории.
requires authentication
Обзор показателей по категории. Хайлайт
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/ext-analitic/category_overview_all" \
--header "Authorization: Bearer E6VP3Dbf4Zh5g8vc6akaed1" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"reportId\": \"veritatis\",
\"filter\": {
\"title\": \"delectus\",
\"sku\": \"in\",
\"position\": {
\"min\": 16,
\"max\": 5
},
\"category\": [
\"illum\"
],
\"categories\": {
\"min\": 11,
\"max\": 12
},
\"p_reviews\": {
\"min\": 19,
\"max\": 17
},
\"rating\": {
\"min\": \"velit\",
\"max\": \"vel\"
},
\"seller\": [
\"ullam\"
],
\"brand\": [
\"omnis\"
],
\"remains\": {
\"min\": 11,
\"max\": 10
},
\"sold\": {
\"min\": 3,
\"max\": 5
},
\"revenue\": {
\"min\": 6,
\"max\": 16
},
\"avg_sold\": {
\"min\": \"corporis\",
\"max\": \"amet\"
},
\"avg_revenue\": {
\"min\": \"autem\",
\"max\": \"et\"
},
\"days\": {
\"min\": 17,
\"max\": 7
},
\"losses\": {
\"min\": 14,
\"max\": 8
},
\"price\": {
\"min\": 2,
\"max\": 2
},
\"price_old\": {
\"min\": 12,
\"max\": 1
},
\"warehouse\": [
\"odit\"
],
\"keywords\": {
\"min\": 3,
\"max\": 11
},
\"new_reviews\": {
\"min\": 1,
\"max\": 2
},
\"p_weight\": {
\"min\": 11,
\"max\": 4
},
\"p_volume\": {
\"min\": \"qui\",
\"max\": \"praesentium\"
},
\"discount\": {
\"min\": 11,
\"max\": 7
},
\"p_delivered_percent\": {
\"min\": 20,
\"max\": 13
},
\"p_true_seller_price\": {
\"min\": 9,
\"max\": 14
},
\"price_spp\": {
\"min\": 5,
\"max\": 4
},
\"price_discount_spp\": {
\"min\": 14,
\"max\": 18
},
\"tot_photo\": {
\"min\": 5,
\"max\": 17
},
\"date\": {
\"min\": \"est\",
\"max\": \"officia\"
},
\"date2\": {
\"min\": \"adipisci\",
\"max\": \"nemo\"
},
\"adv_1q\": \"placeat\",
\"adv_3q\": \"eius\",
\"seo_1q\": \"id\",
\"seo_3q\": \"non\"
}
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/ext-analitic/category_overview_all"
);
const headers = {
"Authorization": "Bearer E6VP3Dbf4Zh5g8vc6akaed1",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"reportId": "veritatis",
"filter": {
"title": "delectus",
"sku": "in",
"position": {
"min": 16,
"max": 5
},
"category": [
"illum"
],
"categories": {
"min": 11,
"max": 12
},
"p_reviews": {
"min": 19,
"max": 17
},
"rating": {
"min": "velit",
"max": "vel"
},
"seller": [
"ullam"
],
"brand": [
"omnis"
],
"remains": {
"min": 11,
"max": 10
},
"sold": {
"min": 3,
"max": 5
},
"revenue": {
"min": 6,
"max": 16
},
"avg_sold": {
"min": "corporis",
"max": "amet"
},
"avg_revenue": {
"min": "autem",
"max": "et"
},
"days": {
"min": 17,
"max": 7
},
"losses": {
"min": 14,
"max": 8
},
"price": {
"min": 2,
"max": 2
},
"price_old": {
"min": 12,
"max": 1
},
"warehouse": [
"odit"
],
"keywords": {
"min": 3,
"max": 11
},
"new_reviews": {
"min": 1,
"max": 2
},
"p_weight": {
"min": 11,
"max": 4
},
"p_volume": {
"min": "qui",
"max": "praesentium"
},
"discount": {
"min": 11,
"max": 7
},
"p_delivered_percent": {
"min": 20,
"max": 13
},
"p_true_seller_price": {
"min": 9,
"max": 14
},
"price_spp": {
"min": 5,
"max": 4
},
"price_discount_spp": {
"min": 14,
"max": 18
},
"tot_photo": {
"min": 5,
"max": 17
},
"date": {
"min": "est",
"max": "officia"
},
"date2": {
"min": "adipisci",
"max": "nemo"
},
"adv_1q": "placeat",
"adv_3q": "eius",
"seo_1q": "id",
"seo_3q": "non"
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/ext-analitic/category_overview_all',
[
'headers' => [
'Authorization' => 'Bearer E6VP3Dbf4Zh5g8vc6akaed1',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'reportId' => 'veritatis',
'filter' => [
'title' => 'delectus',
'sku' => 'in',
'position' => [
'min' => 16,
'max' => 5,
],
'category' => [
'illum',
],
'categories' => [
'min' => 11,
'max' => 12,
],
'p_reviews' => [
'min' => 19,
'max' => 17,
],
'rating' => [
'min' => 'velit',
'max' => 'vel',
],
'seller' => [
'ullam',
],
'brand' => [
'omnis',
],
'remains' => [
'min' => 11,
'max' => 10,
],
'sold' => [
'min' => 3,
'max' => 5,
],
'revenue' => [
'min' => 6,
'max' => 16,
],
'avg_sold' => [
'min' => 'corporis',
'max' => 'amet',
],
'avg_revenue' => [
'min' => 'autem',
'max' => 'et',
],
'days' => [
'min' => 17,
'max' => 7,
],
'losses' => [
'min' => 14,
'max' => 8,
],
'price' => [
'min' => 2,
'max' => 2,
],
'price_old' => [
'min' => 12,
'max' => 1,
],
'warehouse' => [
'odit',
],
'keywords' => [
'min' => 3,
'max' => 11,
],
'new_reviews' => [
'min' => 1,
'max' => 2,
],
'p_weight' => [
'min' => 11,
'max' => 4,
],
'p_volume' => [
'min' => 'qui',
'max' => 'praesentium',
],
'discount' => [
'min' => 11,
'max' => 7,
],
'p_delivered_percent' => [
'min' => 20,
'max' => 13,
],
'p_true_seller_price' => [
'min' => 9,
'max' => 14,
],
'price_spp' => [
'min' => 5,
'max' => 4,
],
'price_discount_spp' => [
'min' => 14,
'max' => 18,
],
'tot_photo' => [
'min' => 5,
'max' => 17,
],
'date' => [
'min' => 'est',
'max' => 'officia',
],
'date2' => [
'min' => 'adipisci',
'max' => 'nemo',
],
'adv_1q' => 'placeat',
'adv_3q' => 'eius',
'seo_1q' => 'id',
'seo_3q' => 'non',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"message": "Ok"
"data": {
"DY_DATE": {"dynamic": ["2025-04-01", "2025-04-02", ... ], "total": "1970-01-01"},
"sold": {"dynamic": ["1", "1", ... ], "total": "29"},
"avg_sold": {"dynamic": [0.1, 0.1, ...], "total": 2.9},
"revenue": {"dynamic": ["539", "539", ...], "total": "16599"},
"avg_revenue": {"dynamic": [54, 54, ...], "total": 1660},
"products": {"dynamic": ["13", "13", ...], "total": "13"},
"products_with_sales": {"dynamic": ["1", "1", ...], "total": "2"},
"sellers": {"dynamic": ["9", "9", ...], "total": "9"},
"sellers_with_sales": {"dynamic": ["1", "1", ...], "total": "2"},
"brands": {"dynamic": ["10", "10", ...], "total": "10"},
"brands_with_sales": {"dynamic": ["1", "1", ...], "total": "2"},
"revenue_per_product": {"dynamic": ["539", "539", ...], "total": "572"},
"losses": {"dynamic": [0, 0, ...], "total": 0}}
}
Received response:
Request failed with error:
Ответ
Response Fields
DY_DATE string
полученные даты
sold string
продажи
avg_sold string
средние продажи за день
revenue string
выручка
products string
кол-во товаров
products_with_sales string
кол-во товаров с продажами
sellers string
кол-во продавцов
sellers_with_sales string
кол-во продавцов с продажами
brands string
кол-во кол-во брендов
brands_with_sales string
кол-во брендов с продажами
revenue_per_product string
средний чек
losses string
упущенная выручка
Категории. Товары
requires authentication
Статистика продаж по категории. Товары
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/ext-analitic/get_category_product" \
--header "Authorization: Bearer 634ceaP8dhgDfkb1vZE6Va5" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"reportId\": \"aut\",
\"take\": 10,
\"skip\": 50,
\"sort\": \"sold\",
\"sort_dir\": \"asc\",
\"filter\": {
\"title\": \"quo\",
\"sku\": \"natus\",
\"position\": {
\"min\": 18,
\"max\": 12
},
\"category\": [
\"rerum\"
],
\"categories\": {
\"min\": 5,
\"max\": 6
},
\"p_reviews\": {
\"min\": 4,
\"max\": 1
},
\"rating\": {
\"min\": \"dolor\",
\"max\": \"placeat\"
},
\"seller\": [
\"possimus\"
],
\"s_inn\": \"123456\",
\"s_ogrn\": \"1234567\",
\"brand\": [
\"voluptas\"
],
\"remains\": {
\"min\": 7,
\"max\": 20
},
\"sold\": {
\"min\": 19,
\"max\": 12
},
\"revenue\": {
\"min\": 12,
\"max\": 11
},
\"avg_sold\": {
\"min\": \"impedit\",
\"max\": \"at\"
},
\"avg_revenue\": {
\"min\": \"iure\",
\"max\": \"illo\"
},
\"days\": {
\"min\": 7,
\"max\": 13
},
\"losses\": {
\"min\": 13,
\"max\": 5
},
\"price\": {
\"min\": 6,
\"max\": 18
},
\"price_old\": {
\"min\": 12,
\"max\": 3
},
\"warehouse\": [
\"dolores\"
],
\"keywords\": {
\"min\": 3,
\"max\": 9
},
\"new_reviews\": {
\"min\": 3,
\"max\": 11
},
\"p_weight\": {
\"min\": 4,
\"max\": 18
},
\"p_volume\": {
\"min\": \"consequatur\",
\"max\": \"vel\"
},
\"discount\": {
\"min\": 16,
\"max\": 12
},
\"p_delivered_percent\": {
\"min\": 12,
\"max\": 10
},
\"p_true_seller_price\": {
\"min\": 10,
\"max\": 6
},
\"price_spp\": {
\"min\": 15,
\"max\": 1
},
\"price_discount_spp\": {
\"min\": 3,
\"max\": 18
},
\"tot_photo\": {
\"min\": 1,
\"max\": 19
},
\"date\": {
\"min\": \"fugit\",
\"max\": \"quia\"
},
\"date2\": {
\"min\": \"reiciendis\",
\"max\": \"porro\"
},
\"adv_1q\": \"odio\",
\"adv_3q\": \"qui\",
\"seo_1q\": \"earum\",
\"seo_3q\": \"dolores\"
}
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/ext-analitic/get_category_product"
);
const headers = {
"Authorization": "Bearer 634ceaP8dhgDfkb1vZE6Va5",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"reportId": "aut",
"take": 10,
"skip": 50,
"sort": "sold",
"sort_dir": "asc",
"filter": {
"title": "quo",
"sku": "natus",
"position": {
"min": 18,
"max": 12
},
"category": [
"rerum"
],
"categories": {
"min": 5,
"max": 6
},
"p_reviews": {
"min": 4,
"max": 1
},
"rating": {
"min": "dolor",
"max": "placeat"
},
"seller": [
"possimus"
],
"s_inn": "123456",
"s_ogrn": "1234567",
"brand": [
"voluptas"
],
"remains": {
"min": 7,
"max": 20
},
"sold": {
"min": 19,
"max": 12
},
"revenue": {
"min": 12,
"max": 11
},
"avg_sold": {
"min": "impedit",
"max": "at"
},
"avg_revenue": {
"min": "iure",
"max": "illo"
},
"days": {
"min": 7,
"max": 13
},
"losses": {
"min": 13,
"max": 5
},
"price": {
"min": 6,
"max": 18
},
"price_old": {
"min": 12,
"max": 3
},
"warehouse": [
"dolores"
],
"keywords": {
"min": 3,
"max": 9
},
"new_reviews": {
"min": 3,
"max": 11
},
"p_weight": {
"min": 4,
"max": 18
},
"p_volume": {
"min": "consequatur",
"max": "vel"
},
"discount": {
"min": 16,
"max": 12
},
"p_delivered_percent": {
"min": 12,
"max": 10
},
"p_true_seller_price": {
"min": 10,
"max": 6
},
"price_spp": {
"min": 15,
"max": 1
},
"price_discount_spp": {
"min": 3,
"max": 18
},
"tot_photo": {
"min": 1,
"max": 19
},
"date": {
"min": "fugit",
"max": "quia"
},
"date2": {
"min": "reiciendis",
"max": "porro"
},
"adv_1q": "odio",
"adv_3q": "qui",
"seo_1q": "earum",
"seo_3q": "dolores"
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/ext-analitic/get_category_product',
[
'headers' => [
'Authorization' => 'Bearer 634ceaP8dhgDfkb1vZE6Va5',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'reportId' => 'aut',
'take' => 10,
'skip' => 50,
'sort' => 'sold',
'sort_dir' => 'asc',
'filter' => [
'title' => 'quo',
'sku' => 'natus',
'position' => [
'min' => 18,
'max' => 12,
],
'category' => [
'rerum',
],
'categories' => [
'min' => 5,
'max' => 6,
],
'p_reviews' => [
'min' => 4,
'max' => 1,
],
'rating' => [
'min' => 'dolor',
'max' => 'placeat',
],
'seller' => [
'possimus',
],
's_inn' => '123456',
's_ogrn' => '1234567',
'brand' => [
'voluptas',
],
'remains' => [
'min' => 7,
'max' => 20,
],
'sold' => [
'min' => 19,
'max' => 12,
],
'revenue' => [
'min' => 12,
'max' => 11,
],
'avg_sold' => [
'min' => 'impedit',
'max' => 'at',
],
'avg_revenue' => [
'min' => 'iure',
'max' => 'illo',
],
'days' => [
'min' => 7,
'max' => 13,
],
'losses' => [
'min' => 13,
'max' => 5,
],
'price' => [
'min' => 6,
'max' => 18,
],
'price_old' => [
'min' => 12,
'max' => 3,
],
'warehouse' => [
'dolores',
],
'keywords' => [
'min' => 3,
'max' => 9,
],
'new_reviews' => [
'min' => 3,
'max' => 11,
],
'p_weight' => [
'min' => 4,
'max' => 18,
],
'p_volume' => [
'min' => 'consequatur',
'max' => 'vel',
],
'discount' => [
'min' => 16,
'max' => 12,
],
'p_delivered_percent' => [
'min' => 12,
'max' => 10,
],
'p_true_seller_price' => [
'min' => 10,
'max' => 6,
],
'price_spp' => [
'min' => 15,
'max' => 1,
],
'price_discount_spp' => [
'min' => 3,
'max' => 18,
],
'tot_photo' => [
'min' => 1,
'max' => 19,
],
'date' => [
'min' => 'fugit',
'max' => 'quia',
],
'date2' => [
'min' => 'reiciendis',
'max' => 'porro',
],
'adv_1q' => 'odio',
'adv_3q' => 'qui',
'seo_1q' => 'earum',
'seo_3q' => 'dolores',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"data": {
"items": [ {
"p_id": "222756289",
"sku": "222756289",
"title": "Адаптер дискового тормоза 20мм для велосипеда",
"image": "https://basket-15.wbbasket.ru/vol2227/part222756/222756289/images/c516x688/1.webp",
"date": "2024-04-19",
"date2": "2025-05-01",
"p_c2p": [1060, 7132, 1075583, 1082370],
"p_c2p_sort": [503, 1, 451, 1],
"position": 1,
"_min_pos_idx": "2",
"_c_id_path": [9, 81, 1060, 7132],
"category": "Спорт / Велоспорт / Велозапчасти / Адаптеры для тормозной системы",
"p_reviews": 92,
"rating": 4.5,
"s_id": 873274,
"seller": "L&M SHOP",
"s_inn": "581302035510",
"s_ogrn": "321583500013471",
"s_id_BZ": -1,
"b_id": 1541281,
"brand": "MaLyuMi Sport",
"remains": 66,
"price": 551,
"price_old": 1325,
"mp_url": "https://www.wildberries.ru/catalog/222756289/detail.aspx",
"sf_p_url": "https://salesfinder.ru/wb/product/222756289/info/days?date=2025-04-01&date2=2025-04-10&fbs=0",
"p_weight": -1,
"p_volume": -1,
"adv_1": -1,
"adv_1q": "-1",
"adv_3": -1,
"adv_3q": "-1",
"seo_1": -1,
"seo_1q": "-1",
"seo_3": -1,
"seo_3q": "-1",
"discount": 58,
"price_spp": 556,
"price_discount_spp": 1,
"tot_photo": 8,
"warehouse": "wb",
"sold": "26",
"revenue": "14415",
"avg_sold": 2.6,
"avg_revenue": 1442,
"days": "10",
"losses": 0,
"keywords": 7,
"new_reviews": 6,
"categories": 4,
"categories_list": [{"position": 503,"c_id_path": [9,81,1060]}, ...]
}, ...],
"ranges": [{
"total": "13","p_id": ["29600581","327210069"],
"position": [1,70],
"categories": [1,4],
"p_reviews": [0,106],
"rating": [0,4.9],
"remains": [0,66],
"sold": ["0","26"],
"revenue": ["0","14415"],
"avg_sold": [0,2.6],
"avg_revenue": [0,1442],
"days": ["1","10"],
"losses": [0,0],
"price": [182,1473],
"price_old": [219,2096],
"keywords": [0,7],
"new_reviews": [0,6],
"p_weight": [0,200],
"p_volume": [0,0.588],
"adv_1": [0,-1],
"adv_3": [0,-1],
"seo_1": [0,2],
"seo_3": [0,-1],
"price_spp": [186,1504],
"price_discount_spp": [1,13],
"tot_photo": [1,8],
"discount": [12,58]
}],
"categories": [{
"c_id": 9,
"c_name": "Спорт",
"c_has_product": 0,
"c_date2": "2025-04-10",
"c_id_path": [9],
"c_name_path": "Спорт"
}, ...]
},
"success": true,
"message": "Ok"
}
Received response:
Request failed with error:
Ответ
Response Fields
p_id string
Id товара
sku string
Sku товара
title string
Название товара
image string
-
date string
Дата первого упоминания
date2 string
Дата последнего упоминания
p_c2p string[]
-
p_c2p_sort string[]
-
position integer
Позиция товара
_min_pos_idx string
-
_c_id_path string[]
-
categories_list string[]
-
category string
Категория
categories integer
Кол-во категориё
p_reviews integer
Кол-во отзывов всего
new_reviews integer
Кол-во отзывов за период
rating number
Рейтинг
s_id string
Id продавца
seller string
Название продавца
s_inn string
ИНН продавца
s_ogrn string
ОГРН продавца
s_id_BZ string
Продает на двух площадках Ozon и WB
b_id string
Id бренда
brand string
Название бренда
remains integer
Кол-во продаж
price integer
(WB:Цена с WB кошельком, OZON:Цена)
(только
OZON) p_delivered_percent integer Процент выкупа
price_old integer
Старая цена
mp_url string
Ссылка на товар в МП
sf_p_url string
Ссылка на товар в системе Salesfinder
p_weight string
Вес товара, г
p_volume string
Объем товара, л
adv_1 integer
Кол-во запросов в Директ
adv_1q string
Платный трафик Яндекс (да/нет)
adv_3 integer
-
adv_3q string
-
seo_1 integer
Кол-во запросов Яндекс
seo_1q string
SEO выдача Яндекс (да/нет)
seo_3 integer
Кол-во запросов Google
seo_3q string
SEO выдача Google (да/нет)
(для
WB) tot_photo integer Кол-во фото
warehouse string
Наименование склада (WB: wb/wb+fbs; OZON: FBO/FBO+FBS)
sold integer
Продажи за период
avg_sold number
Средние продажи за день
revenue integer
Выручка за период
avg_revenue number
Средняя выручка за день
days string
Дней в наличии
losses integer
Упущенная выручка
keywords integer
Кол-во запросов
Категории. Бренды
requires authentication
Статистика продаж по категории. Бренд
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/ext-analitic/get_category_brand" \
--header "Authorization: Bearer dabkDh664PE1Vcae58vgfZ3" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"reportId\": \"quod\",
\"take\": 10,
\"skip\": 50,
\"sort\": \"sold\",
\"sort_dir\": \"asc\",
\"filter\": {
\"brand\": [
\"nostrum\"
],
\"products\": {
\"min\": 16,
\"max\": 19
},
\"products_with_sales\": {
\"min\": 18,
\"max\": 4
},
\"rating\": {
\"min\": \"ducimus\",
\"max\": \"exercitationem\"
},
\"reviews\": {
\"min\": 1,
\"max\": 20
},
\"avg_reviews\": {
\"min\": 19,
\"max\": 19
},
\"sold\": {
\"min\": 2,
\"max\": 18
},
\"avg_sold\": {
\"min\": \"laboriosam\",
\"max\": \"molestiae\"
},
\"revenue\": {
\"min\": 15,
\"max\": 8
},
\"avg_revenue\": {
\"min\": \"occaecati\",
\"max\": \"praesentium\"
}
}
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/ext-analitic/get_category_brand"
);
const headers = {
"Authorization": "Bearer dabkDh664PE1Vcae58vgfZ3",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"reportId": "quod",
"take": 10,
"skip": 50,
"sort": "sold",
"sort_dir": "asc",
"filter": {
"brand": [
"nostrum"
],
"products": {
"min": 16,
"max": 19
},
"products_with_sales": {
"min": 18,
"max": 4
},
"rating": {
"min": "ducimus",
"max": "exercitationem"
},
"reviews": {
"min": 1,
"max": 20
},
"avg_reviews": {
"min": 19,
"max": 19
},
"sold": {
"min": 2,
"max": 18
},
"avg_sold": {
"min": "laboriosam",
"max": "molestiae"
},
"revenue": {
"min": 15,
"max": 8
},
"avg_revenue": {
"min": "occaecati",
"max": "praesentium"
}
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/ext-analitic/get_category_brand',
[
'headers' => [
'Authorization' => 'Bearer dabkDh664PE1Vcae58vgfZ3',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'reportId' => 'quod',
'take' => 10,
'skip' => 50,
'sort' => 'sold',
'sort_dir' => 'asc',
'filter' => [
'brand' => [
'nostrum',
],
'products' => [
'min' => 16,
'max' => 19,
],
'products_with_sales' => [
'min' => 18,
'max' => 4,
],
'rating' => [
'min' => 'ducimus',
'max' => 'exercitationem',
],
'reviews' => [
'min' => 1,
'max' => 20,
],
'avg_reviews' => [
'min' => 19,
'max' => 19,
],
'sold' => [
'min' => 2,
'max' => 18,
],
'avg_sold' => [
'min' => 'laboriosam',
'max' => 'molestiae',
],
'revenue' => [
'min' => 15,
'max' => 8,
],
'avg_revenue' => [
'min' => 'occaecati',
'max' => 'praesentium',
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"data": {
"items": [ {
"p_id": "222756289",
"sku": "222756289",
"title": "Адаптер дискового тормоза 20мм для велосипеда",
"image": "https://basket-15.wbbasket.ru/vol2227/part222756/222756289/images/c516x688/1.webp",
"date": "2024-04-19",
"date2": "2025-05-01",
"p_c2p": [1060, 7132, 1075583, 1082370],
"p_c2p_sort": [503, 1, 451, 1],
"position": 1,
"_min_pos_idx": "2",
"_c_id_path": [9, 81, 1060, 7132],
"category": "Спорт / Велоспорт / Велозапчасти / Адаптеры для тормозной системы",
"p_reviews": 92,
"rating": 4.5,
"s_id": 873274,
"seller": "L&M SHOP",
"s_inn": "581302035510",
"s_ogrn": "321583500013471",
"s_id_BZ": -1,
"b_id": 1541281,
"brand": "MaLyuMi Sport",
"remains": 66,
"price": 551,
"price_old": 1325,
"mp_url": "https://www.wildberries.ru/catalog/222756289/detail.aspx",
"sf_p_url": "https://salesfinder.ru/wb/product/222756289/info/days?date=2025-04-01&date2=2025-04-10&fbs=0",
"p_weight": -1,
"p_volume": -1,
"adv_1": -1,
"adv_1q": "-1",
"adv_3": -1,
"adv_3q": "-1",
"seo_1": -1,
"seo_1q": "-1",
"seo_3": -1,
"seo_3q": "-1",
"discount": 58,
"price_spp": 556,
"price_discount_spp": 1,
"tot_photo": 8,
"warehouse": "wb",
"sold": "26",
"revenue": "14415",
"avg_sold": 2.6,
"avg_revenue": 1442,
"days": "10",
"losses": 0,
"keywords": 7,
"new_reviews": 6,
"categories": 4,
"categories_list": [{"position": 503,"c_id_path": [9,81,1060]}, ...]
}, ...],
"ranges": [{
"total": "13","p_id": ["29600581","327210069"],
"position": [1,70],
"categories": [1,4],
"p_reviews": [0,106],
"rating": [0,4.9],
"remains": [0,66],
"sold": ["0","26"],
"revenue": ["0","14415"],
"avg_sold": [0,2.6],
"avg_revenue": [0,1442],
"days": ["1","10"],
"losses": [0,0],
"price": [182,1473],
"price_old": [219,2096],
"keywords": [0,7],
"new_reviews": [0,6],
"p_weight": [0,200],
"p_volume": [0,0.588],
"adv_1": [0,-1],
"adv_3": [0,-1],
"seo_1": [0,2],
"seo_3": [0,-1],
"price_spp": [186,1504],
"price_discount_spp": [1,13],
"tot_photo": [1,8],
"discount": [12,58]
}],
"categories": [{
"c_id": 9,
"c_name": "Спорт",
"c_has_product": 0,
"c_date2": "2025-04-10",
"c_id_path": [9],
"c_name_path": "Спорт"
}, ...]
},
"success": true,
"message": "Ok"
}
Received response:
Request failed with error:
Ответ
Response Fields
p_id string
Id товара
sku string
Sku товара
title string
Название товара
image string
-
date string
Дата первого упоминания
date2 string
Дата последнего упоминания
p_c2p string[]
-
p_c2p_sort string[]
-
position integer
Позиция товара
_min_pos_idx string
-
_c_id_path string[]
-
categories_list string[]
-
category string
Категория
categories integer
Кол-во категориё
p_reviews integer
Кол-во отзывов всего
new_reviews integer
Кол-во отзывов за период
rating number
Рейтинг
s_id string
Id продавца
seller string
Название продавца
s_inn string
ИНН продавца
s_ogrn string
ОГРН продавца
s_id_BZ string
Продает на двух площадках Ozon и WB
b_id string
Id бренда
brand string
Название бренда
remains integer
Кол-во продаж
price integer
(WB:Цена с WB кошельком, OZON:Цена)
(только
OZON) p_delivered_percent integer Процент выкупа
price_old integer
Старая цена
mp_url string
Ссылка на товар в МП
sf_p_url string
Ссылка на товар в системе Salesfinder
p_weight string
Вес товара, г
p_volume string
Объем товара, л
adv_1 integer
Кол-во запросов в Директ
adv_1q string
Платный трафик Яндекс (да/нет)
adv_3 integer
-
adv_3q string
-
seo_1 integer
Кол-во запросов Яндекс
seo_1q string
SEO выдача Яндекс (да/нет)
seo_3 integer
Кол-во запросов Google
seo_3q string
SEO выдача Google (да/нет)
(для
WB) tot_photo integer Кол-во фото
warehouse string
Наименование склада (WB: wb/wb+fbs; OZON: FBO/FBO+FBS)
sold integer
Продажи за период
avg_sold number
Средние продажи за день
revenue integer
Выручка за период
avg_revenue number
Средняя выручка за день
days string
Дней в наличии
losses integer
Упущенная выручка
keywords integer
Кол-во запросов
Категории. Продавцы
requires authentication
Статистика продаж по категории. Продавец
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/ext-analitic/get_category_seller" \
--header "Authorization: Bearer a4ahbcgZ8Dfd6PE13k5e6vV" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"reportId\": \"minima\",
\"take\": 10,
\"skip\": 50,
\"sort\": \"sold\",
\"sort_dir\": \"asc\",
\"filter\": {
\"seller\": [
\"accusantium\"
],
\"s_inn\": \"123456\",
\"s_ogrn\": \"1234567\",
\"products\": {
\"min\": 1,
\"max\": 17
},
\"products_with_sales\": {
\"min\": 4,
\"max\": 9
},
\"rating\": {
\"min\": \"rerum\",
\"max\": \"qui\"
},
\"reviews\": {
\"min\": 7,
\"max\": 13
},
\"avg_reviews\": {
\"min\": 7,
\"max\": 18
},
\"sold\": {
\"min\": 5,
\"max\": 1
},
\"revenue\": {
\"min\": 19,
\"max\": 18
},
\"avg_sold\": {
\"min\": \"iusto\",
\"max\": \"nisi\"
},
\"avg_revenue\": {
\"min\": \"labore\",
\"max\": \"exercitationem\"
}
}
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/ext-analitic/get_category_seller"
);
const headers = {
"Authorization": "Bearer a4ahbcgZ8Dfd6PE13k5e6vV",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"reportId": "minima",
"take": 10,
"skip": 50,
"sort": "sold",
"sort_dir": "asc",
"filter": {
"seller": [
"accusantium"
],
"s_inn": "123456",
"s_ogrn": "1234567",
"products": {
"min": 1,
"max": 17
},
"products_with_sales": {
"min": 4,
"max": 9
},
"rating": {
"min": "rerum",
"max": "qui"
},
"reviews": {
"min": 7,
"max": 13
},
"avg_reviews": {
"min": 7,
"max": 18
},
"sold": {
"min": 5,
"max": 1
},
"revenue": {
"min": 19,
"max": 18
},
"avg_sold": {
"min": "iusto",
"max": "nisi"
},
"avg_revenue": {
"min": "labore",
"max": "exercitationem"
}
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/ext-analitic/get_category_seller',
[
'headers' => [
'Authorization' => 'Bearer a4ahbcgZ8Dfd6PE13k5e6vV',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'reportId' => 'minima',
'take' => 10,
'skip' => 50,
'sort' => 'sold',
'sort_dir' => 'asc',
'filter' => [
'seller' => [
'accusantium',
],
's_inn' => '123456',
's_ogrn' => '1234567',
'products' => [
'min' => 1,
'max' => 17,
],
'products_with_sales' => [
'min' => 4,
'max' => 9,
],
'rating' => [
'min' => 'rerum',
'max' => 'qui',
],
'reviews' => [
'min' => 7,
'max' => 13,
],
'avg_reviews' => [
'min' => 7,
'max' => 18,
],
'sold' => [
'min' => 5,
'max' => 1,
],
'revenue' => [
'min' => 19,
'max' => 18,
],
'avg_sold' => [
'min' => 'iusto',
'max' => 'nisi',
],
'avg_revenue' => [
'min' => 'labore',
'max' => 'exercitationem',
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"data": {
"items": [ {
"p_id": "222756289",
"sku": "222756289",
"title": "Адаптер дискового тормоза 20мм для велосипеда",
"image": "https://basket-15.wbbasket.ru/vol2227/part222756/222756289/images/c516x688/1.webp",
"date": "2024-04-19",
"date2": "2025-05-01",
"p_c2p": [1060, 7132, 1075583, 1082370],
"p_c2p_sort": [503, 1, 451, 1],
"position": 1,
"_min_pos_idx": "2",
"_c_id_path": [9, 81, 1060, 7132],
"category": "Спорт / Велоспорт / Велозапчасти / Адаптеры для тормозной системы",
"p_reviews": 92,
"rating": 4.5,
"s_id": 873274,
"seller": "L&M SHOP",
"s_inn": "581302035510",
"s_ogrn": "321583500013471",
"s_id_BZ": -1,
"b_id": 1541281,
"brand": "MaLyuMi Sport",
"remains": 66,
"price": 551,
"price_old": 1325,
"mp_url": "https://www.wildberries.ru/catalog/222756289/detail.aspx",
"sf_p_url": "https://salesfinder.ru/wb/product/222756289/info/days?date=2025-04-01&date2=2025-04-10&fbs=0",
"p_weight": -1,
"p_volume": -1,
"adv_1": -1,
"adv_1q": "-1",
"adv_3": -1,
"adv_3q": "-1",
"seo_1": -1,
"seo_1q": "-1",
"seo_3": -1,
"seo_3q": "-1",
"discount": 58,
"price_spp": 556,
"price_discount_spp": 1,
"tot_photo": 8,
"warehouse": "wb",
"sold": "26",
"revenue": "14415",
"avg_sold": 2.6,
"avg_revenue": 1442,
"days": "10",
"losses": 0,
"keywords": 7,
"new_reviews": 6,
"categories": 4,
"categories_list": [{"position": 503,"c_id_path": [9,81,1060]}, ...]
}, ...],
"ranges": [{
"total": "13","p_id": ["29600581","327210069"],
"position": [1,70],
"categories": [1,4],
"p_reviews": [0,106],
"rating": [0,4.9],
"remains": [0,66],
"sold": ["0","26"],
"revenue": ["0","14415"],
"avg_sold": [0,2.6],
"avg_revenue": [0,1442],
"days": ["1","10"],
"losses": [0,0],
"price": [182,1473],
"price_old": [219,2096],
"keywords": [0,7],
"new_reviews": [0,6],
"p_weight": [0,200],
"p_volume": [0,0.588],
"adv_1": [0,-1],
"adv_3": [0,-1],
"seo_1": [0,2],
"seo_3": [0,-1],
"price_spp": [186,1504],
"price_discount_spp": [1,13],
"tot_photo": [1,8],
"discount": [12,58]
}],
"categories": [{
"c_id": 9,
"c_name": "Спорт",
"c_has_product": 0,
"c_date2": "2025-04-10",
"c_id_path": [9],
"c_name_path": "Спорт"
}, ...]
},
"success": true,
"message": "Ok"
}
Received response:
Request failed with error:
Ответ
Response Fields
p_id string
Id товара
sku string
Sku товара
title string
Название товара
image string
-
date string
Дата первого упоминания
date2 string
Дата последнего упоминания
p_c2p string[]
-
p_c2p_sort string[]
-
position integer
Позиция товара
_min_pos_idx string
-
_c_id_path string[]
-
categories_list string[]
-
category string
Категория
categories integer
Кол-во категориё
p_reviews integer
Кол-во отзывов всего
new_reviews integer
Кол-во отзывов за период
rating number
Рейтинг
s_id string
Id продавца
seller string
Название продавца
s_inn string
ИНН продавца
s_ogrn string
ОГРН продавца
s_id_BZ string
Продает на двух площадках Ozon и WB
b_id string
Id бренда
brand string
Название бренда
remains integer
Кол-во продаж
price integer
(WB:Цена с WB кошельком, OZON:Цена)
(только
OZON) p_delivered_percent integer Процент выкупа
price_old integer
Старая цена
mp_url string
Ссылка на товар в МП
sf_p_url string
Ссылка на товар в системе Salesfinder
p_weight string
Вес товара, г
p_volume string
Объем товара, л
adv_1 integer
Кол-во запросов в Директ
adv_1q string
Платный трафик Яндекс (да/нет)
adv_3 integer
-
adv_3q string
-
seo_1 integer
Кол-во запросов Яндекс
seo_1q string
SEO выдача Яндекс (да/нет)
seo_3 integer
Кол-во запросов Google
seo_3q string
SEO выдача Google (да/нет)
(для
WB) tot_photo integer Кол-во фото
warehouse string
Наименование склада (WB: wb/wb+fbs; OZON: FBO/FBO+FBS)
sold integer
Продажи за период
avg_sold number
Средние продажи за день
revenue integer
Выручка за период
avg_revenue number
Средняя выручка за день
days string
Дней в наличии
losses integer
Упущенная выручка
keywords integer
Кол-во запросов
Внешняя аналитика. Товары
Этот раздел внешнего API позволяет получать данные товаров из списка SKU за указанный период
Товары. Статичные данные
requires authentication
Статичные данные товаров из списка SKU за период
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/product/info" \
--header "Authorization: Bearer Zv1ae6a6VbkDfgPE43c8hd5" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"mp\": \"ozon\",
\"sku\": [
573373353,
1508721402,
150030882
],
\"date\": \"2025-03-10\",
\"date2\": \"2025-03-15\",
\"fbs\": 1
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/product/info"
);
const headers = {
"Authorization": "Bearer Zv1ae6a6VbkDfgPE43c8hd5",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"mp": "ozon",
"sku": [
573373353,
1508721402,
150030882
],
"date": "2025-03-10",
"date2": "2025-03-15",
"fbs": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/product/info',
[
'headers' => [
'Authorization' => 'Bearer Zv1ae6a6VbkDfgPE43c8hd5',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'mp' => 'ozon',
'sku' => [
573373353,
1508721402,
150030882,
],
'date' => '2025-03-10',
'date2' => '2025-03-15',
'fbs' => 1,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"message": "Ok"
"data": {[
{"sku":"150030882",
"marketUrl":"https:\/\/www.ozon.ru\/product\/suhoy-korm-dlya-koshek-purina-one-dlya-sterilizovannyh-s-govyadinoy-i-pshenitsey-3-kg-150030882\/",
"brand":"Purina ONE","seller":"Ozon","sellerInn":"",
"sellerOgrn":"","sellWBOZ":0,
"title":"\u0421\u0443\u0445\u043e\u0439 \u043a\u043e\u0440\u043c \u0434\u043b\u044f \u043a\u043e\u0448\u0435\u043a Purina ONE \u0434\u043b\u044f \u0441\u0442\u0435\u0440\u0438\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445, \u0441 \u0433\u043e\u0432\u044f\u0434\u0438\u043d\u043e\u0439 \u0438 \u043f\u0448\u0435\u043d\u0438\u0446\u0435\u0439, 3 \u043a\u0433",
"image":"https:\/\/cdn1.ozone.ru\/s3\/multimedia-1-l\/7377128121.jpg",
"dateStr":"2021-08-16","dateEnd":"2025-04-10"},
{"sku":"573373353","marketUrl":"https:\/\/www.ozon.ru\/product\/kryshka-dlya-korpus-brelka-starlayn-a93-a96-a90-eco-a60-eco-a63-a66-a39-a36-starline-batareynogo-573373353\/",
"brand":"","seller":"Ozon","sellerInn":"","sellerOgrn":"","sellWBOZ":0,
"title":"\u041a\u0440\u044b\u0448\u043a\u0430 \u0434\u043b\u044f \u043a\u043e\u0440\u043f\u0443\u0441 \u0431\u0440\u0435\u043b\u043a\u0430 \u0421\u0442\u0430\u0440\u043b\u0430\u0439\u043d A93 A96 A90 ECO A60 ECO A63 A66 A39 A36 Starline \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043d\u043e\u0433\u043e \u043e\u0442\u0441\u0435\u043a\u0430 \u043f\u0443\u043b\u044c\u0442",
"image":"https:\/\/cdn1.ozone.ru\/s3\/multimedia-1-5\/7112057369.jpg",
"dateStr":"2022-10-09","dateEnd":"2025-04-10"},
{"sku":"1508721402","marketUrl":"https:\/\/www.ozon.ru\/product\/ventilyator-vytyazhnoy-s-obratnym-klapanom-lira-100-14-vt-31-db-96-m3-ch-1508721402\/",
"brand":"\u0420\u0412\u0421","seller":"\u0412\u043e\u0437\u0434\u0443\u0448\u043d\u0430\u044f \u0441\u0442\u0438\u0445\u0438\u044f",
"sellerInn":"771912951591","sellerOgrn":"323774600829085","sellWBOZ":1,
"title":"\u0412\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u0442\u044f\u0436\u043d\u043e\u0439 \u0441 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u043a\u043b\u0430\u043f\u0430\u043d\u043e\u043c \u041b\u0438\u0440\u0430 100, 14 \u0412\u0442, 31 \u0434\u0411, 96 \u043c3\/\u0447",
"image":"https:\/\/cdn1.ozone.ru\/s3\/multimedia-1-k\/7388389676.jpg",
"dateStr":"2024-03-28","dateEnd":"2025-04-10"}
]}
Received response:
Request failed with error:
Ответ
Response Fields
sku integer
SKU (ID) товара
marketUrl
stting Cсылка на страницу SKU на маркетплейсе
brand string
Бренд SKU
seller string
Продавец SKU
sellerInn string
ИНН продавца SKU
sellerOgrn string
ОГРН продавца SKU
sellWBOZ integer
Продавец торгует на WB & OZON (0 | 1 | -1).
title string
Наименование SKU
image string
Ссылка на картинку SKU
dateStr
Дата первого появления SKU в БД SalesFinder.ru
dateEnd
Дата крайнего появления SKU в БД SalesFinder.ru
Товары. Суммарные показатели по товарам
requires authentication
Суммарные данные товаров из списка SKU за период
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/product/overview" \
--header "Authorization: Bearer Pdf54aVE8gkcv6a1Z6b3Deh" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"mp\": \"ozon\",
\"date\": \"2025-03-10\",
\"date2\": \"2025-03-15\",
\"sku\": [
573373353,
1508721402,
150030882
],
\"fbs\": 1
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/product/overview"
);
const headers = {
"Authorization": "Bearer Pdf54aVE8gkcv6a1Z6b3Deh",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"mp": "ozon",
"date": "2025-03-10",
"date2": "2025-03-15",
"sku": [
573373353,
1508721402,
150030882
],
"fbs": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/product/overview',
[
'headers' => [
'Authorization' => 'Bearer Pdf54aVE8gkcv6a1Z6b3Deh',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'mp' => 'ozon',
'date' => '2025-03-10',
'date2' => '2025-03-15',
'sku' => [
573373353,
1508721402,
150030882,
],
'fbs' => 1,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"message": "Ok"
"data": {[
{"sku":573373353,"overview":{
"price":{"total":117,"dynamic":[131,131,116,117,117,117]},
"price_old":{"total":-1,"dynamic":[644,644,644,644,644,644]},
"discount":{"total":82,"dynamic":[80,80,82,82,82,82]},
"sold":{"total":"251","dynamic":[24,34,49,58,36,50]},
"revenue":{"total":"30130","dynamic":["3144","4454","5684","6786","4212","5850"]},
"reviews":{"total":4514,"dynamic":[4449,4460,4479,4485,4500,4514]},
"rating":{"total":4.9,"dynamic":[4.9,4.9,4.9,4.9,4.9,4.9]},
"categories":{"total":"3","dynamic":[1,1,1,1,1,1]},
"avg_sold":{"total":41.83,"dynamic":[]},
"avg_revenue":{"total":5022,"dynamic":[]},
"days":{"total":"6","dynamic":[]},
"losses":{"total":0,"dynamic":[]},
"remains":{"total":1479,"dynamic":[1709,1676,1627,1569,1530,1479]},
"keywords":{"total":"66","dynamic":[47,52,56,52,55,55]}}},
{"sku":1508721402,"overview":{
"price":{"total":1187,"dynamic":[1176,1187,1187,1191,1187,1187]},
"price_old":{"total":-1,"dynamic":[2958,3040,2972,3052,2960,3038]},
"discount":{"total":61,"dynamic":[60,61,60,61,60,61]},
"sold":{"total":"2","dynamic":[0,0,1,0,0,1]},
"revenue":{"total":"2374","dynamic":["0","0","1187","0","0","1187"]},
"reviews":{"total":13,"dynamic":[12,12,12,12,13,13]},
"rating":{"total":4.9,"dynamic":[4.9,4.9,4.9,4.9,4.9,4.9]},
"categories":{"total":"2","dynamic":[1,1,2,1,2,2]},
"avg_sold":{"total":0.33,"dynamic":[]},
"avg_revenue":{"total":396,"dynamic":[]},
"days":{"total":"6","dynamic":[]},
"losses":{"total":0,"dynamic":[]},
"remains":{"total":10,"dynamic":[15,15,13,13,13,10]},
"keywords":{"total":"30","dynamic":[12,9,11,10,13,25]}}},
{"sku":150030882,"overview":{
"price":{"total":1232,"dynamic":[1232,1232,1232,1232,1232,1232]},
"price_old":{"total":-1,"dynamic":[1729,1679,1679,1679,1679,1679]},
"discount":{"total":27,"dynamic":[29,27,27,27,27,27]},
"sold":{"total":"7827","dynamic":[465,1804,1751,2013,902,892]},
"revenue":{"total":"9642864","dynamic":["572880","2222528","2157232","2480016","1111264","1098944"]},
"reviews":{"total":248107,"dynamic":[246419,246643,246950,247295,247681,248107]},
"rating":{"total":5,"dynamic":[5,5,5,5,5,5]},
"categories":{"total":"4","dynamic":[1,1,2,2,2,2]},
"avg_sold":{"total":1304.5,"dynamic":[]},
"avg_revenue":{"total":1607144,"dynamic":[]},
"days":{"total":"6","dynamic":[]},
"losses":{"total":0,"dynamic":[]},
"remains":{"total":19204,"dynamic":[34530,32116,29616,26911,22760,19204]},
"keywords":{"total":"167","dynamic":[129,140,134,140,136,135]}}}
]}
Received response:
Request failed with error:
Ответ
Response Fields
sku integer
SKU (ID) товара
overview object[]
Массив суммарных данных SKU за период
price.total number
Цена за крайнюю дату (date2)
price.dynamic number[]
Цена по дням
price_old.total number
Старая цена за крайнюю дату (date2)
price_old.dynamic number[]
Старая цена по дням
discount.total integer
Скидка за крайнюю дату (date2)
discount.dynamic number[]
Скидка по дням
sold.total integer
Суммарные продажи за период
sold.dynamic integer[]
Продажи по дням
revenue.total number
Выручка
revenue.dynamic number[]
Выручка
reviews.total integer
Отзывов за крайнюю дату (date2)
reviews.dynamic integer[]
Отзывов по дням
rating.total integer
Рейтинг за крайнюю дату (date2)
rating.dynamic integer[]
Рейтинг по дням
categories.total integer
Уникальных категорий за период
categories.dynamic integer[]
Категорий по дням
avg_sold.total number
Средняя продаж в день
avg_sold.dynamic
Пустой массив
avg_revenue.total number
Средняя выручка в день
avg_revenue.dynamic
Пустой массив
days.total integer
Дней в наличии за период
days.dynamic
Пустой массив
losses.total number
Упущенная выручка за период
losses.dynamic
Пустой массив
remains.total integer
Текущий статок за крайнюю дату (date2)
remains.dynamic integer[]
Текущий остаток по дням
keywords.total integer
Уникальных поисковых запросов за период
keywords.dynamic integer[]
Поисковые запросы по дням
Товары. Детализация по дням
requires authentication
Ежедневные данные по товарам из списка SKU за период
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/product/days" \
--header "Authorization: Bearer VEDdcvgPa6bfe36Z5k4a18h" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"mp\": \"ozon\",
\"date\": \"2025-03-10\",
\"date2\": \"2025-03-15\",
\"sku\": [
573373353,
1508721402,
150030882
],
\"fbs\": 1
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/product/days"
);
const headers = {
"Authorization": "Bearer VEDdcvgPa6bfe36Z5k4a18h",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"mp": "ozon",
"date": "2025-03-10",
"date2": "2025-03-15",
"sku": [
573373353,
1508721402,
150030882
],
"fbs": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/product/days',
[
'headers' => [
'Authorization' => 'Bearer VEDdcvgPa6bfe36Z5k4a18h',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'mp' => 'ozon',
'date' => '2025-03-10',
'date2' => '2025-03-15',
'sku' => [
573373353,
1508721402,
150030882,
],
'fbs' => 1,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"message": "Ok"
"data": {[
{"sku":573373353,"days":[
{"date":"2025-03-10","reviews":4449,"new_reviews_1day":"-1","rating":4.9,
"categories":1,"remains":1709,"sold":24,"revenue":"3144","price":131,
"price_old":644,"discount":80},
{"date":"2025-03-11","reviews":4460,"new_reviews_1day":"11","rating":4.9,
"categories":1,"remains":1676,"sold":34,"revenue":"4454","price":131,
"price_old":644,"discount":80},
{"date":"2025-03-12", ...},
{"date":"2025-03-13", ...},
{"date":"2025-03-14", ...},
{"date":"2025-03-15", "reviews":4514,"new_reviews_1day":"14","rating":4.9,
"categories":1,"remains":1479,"sold":50,"revenue":"5850","price":117,
"price_old":644,"discount":82}]},
{"sku":1508721402, ...},
{"sku":150030882, ...}
]}
Received response:
Request failed with error:
Ответ
Response Fields
sku integer
SKU (ID) товара
days object[]
Массив данных по дням
days[].date
Дата
days[].reviews integer
Отзывов
days[].new_reviews_1day
Новых отзывов
days[].rating number
Рейтинг
days[].categories integer
Число категорий
days[].remains integer
Остатки
days[].sold number
Продажи
days[].revenue number
Выручка
days[].price number
Цена с WB кошельком / Цена OZON
days[].price_old number
Старая цена
days[].discount_wb integer
Скидка WB
days[].price_spp number
Цена WB
days[].discount number
Скидка OZON
Товары. Категории и позиции
requires authentication
Позиции товаров из списка SKU в категориях за период
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/product/categories" \
--header "Authorization: Bearer 6bPgaEc5dVfhvZ84Da1k63e" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"mp\": \"ozon\",
\"date\": \"2025-03-10\",
\"date2\": \"2025-03-15\",
\"sku\": [
573373353,
1508721402,
150030882
],
\"fbs\": 1
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/product/categories"
);
const headers = {
"Authorization": "Bearer 6bPgaEc5dVfhvZ84Da1k63e",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"mp": "ozon",
"date": "2025-03-10",
"date2": "2025-03-15",
"sku": [
573373353,
1508721402,
150030882
],
"fbs": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/product/categories',
[
'headers' => [
'Authorization' => 'Bearer 6bPgaEc5dVfhvZ84Da1k63e',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'mp' => 'ozon',
'date' => '2025-03-10',
'date2' => '2025-03-15',
'sku' => [
573373353,
1508721402,
150030882,
],
'fbs' => 1,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"message": "Ok"
"data": {[
{"sku":573373353,"categories":[
{"c_id":154,"c_id_path":[12,154],"c_name_path":"\u0410\u0432\u0442\u043e\u0442\u043e\u0432\u0430\u0440\u044b \/ \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f",
"2025-03-10":-1,"2025-03-11":29,"2025-03-12":-1,"2025-03-13":-1,"2025-03-14":-1,"2025-03-15":-1},
{"c_id":1652,"c_id_path":[12,154,1652],"c_name_path":"\u0410\u0432\u0442\u043e\u0442\u043e\u0432\u0430\u0440\u044b \/ \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f \/ \u0410\u0432\u0442\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0431\u0440\u0435\u043b\u043e\u043a\u0438",
"2025-03-10":-1,"2025-03-11":-1,"2025-03-12":12,"2025-03-13":12,"2025-03-14":12,"2025-03-15":12},
{"c_id":11148,"c_id_path":[12,154,1652,11148],"c_name_path":"\u0410\u0432\u0442\u043e\u0442\u043e\u0432\u0430\u0440\u044b \/ \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f \/ \u0410\u0432\u0442\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0431\u0440\u0435\u043b\u043e\u043a\u0438 \/ \u0411\u0440\u0435\u043b\u043e\u043a\u0438",
"2025-03-10":10,"2025-03-11":-1,"2025-03-12":-1,"2025-03-13":-1,"2025-03-14":-1,"2025-03-15":-1}]},
{"sku":1508721402, ...},
{"sku":150030882, ...}
]}
}
Received response:
Request failed with error:
Ответ
Response Fields
sku integer
SKU (ID) товара
categories
[] Массив данных по категориям
categories[].c_id integer
внутренний ID категории в SalesFinder.ru
categories[].c_id_path[] integer
путь ID категорий от текущей до главной
categories[].c_name_path[] string
путь названий категорий от текущей до главной
categories[].yyyy-mm-dd[] integer
позиция SKU в текущей категории (-1: товара нет в категории за текущую дату)
Товары. Склады
requires authentication
Данные о наличии по складам товаров из списка SKU за период
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/product/stores" \
--header "Authorization: Bearer aP4Z8dcaE3he15Vvk6fgb6D" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"mp\": \"wb\",
\"date\": \"2025-03-10\",
\"date2\": \"2025-03-15\",
\"sku\": [
417722035,
243806943,
245096303
],
\"fbs\": 1
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/product/stores"
);
const headers = {
"Authorization": "Bearer aP4Z8dcaE3he15Vvk6fgb6D",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"mp": "wb",
"date": "2025-03-10",
"date2": "2025-03-15",
"sku": [
417722035,
243806943,
245096303
],
"fbs": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/product/stores',
[
'headers' => [
'Authorization' => 'Bearer aP4Z8dcaE3he15Vvk6fgb6D',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'mp' => 'wb',
'date' => '2025-03-10',
'date2' => '2025-03-15',
'sku' => [
417722035,
243806943,
245096303,
],
'fbs' => 1,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"message": "Ok"
"data": {[
{"sku":239823072,"stores":[
{"store_id":507,"store":"\u041a\u043e\u043b\u0435\u0434\u0438\u043d\u043e WB",
"remains":"0","days":"2","losses":0,"sold":"0","revenue":"0","avg_sold":0,"avg_revenue":0},
{"store_id":117986,"store":"\u041a\u0430\u0437\u0430\u043d\u044c WB",
"remains":"1","days":"6","losses":0,"sold":"3","revenue":"525","avg_sold":0.5,"avg_revenue":87.5},
{"store_id":120762,"store":"\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u0441\u0442\u0430\u043b\u044c WB",
"remains":"136","days":"6","losses":0,"sold":"3","revenue":"525","avg_sold":0.5,"avg_revenue":87.5},
{"store_id":130744,"store":"\u041a\u0440\u0430\u0441\u043d\u043e\u0434\u0430\u0440 WB",
"remains":"44","days":"6","losses":0,"sold":"2","revenue":"350","avg_sold":0.33,"avg_revenue":58.33},
{"store_id":206348,"store":"\u0422\u0443\u043b\u0430 (\u0410\u043b\u0435\u043a\u0441\u0438\u043d\u043e) WB",
"remains":"143","days":"6","losses":0,"sold":"5","revenue":"875","avg_sold":0.83,"avg_revenue":145.83}]},
{"sku":226639247,"stores":[
{"store_id":507,"store":"\u041a\u043e\u043b\u0435\u0434\u0438\u043d\u043e WB", ...]},
{"sku":43649507,"stores":[
{"store_id":507,"store":"\u041a\u043e\u043b\u0435\u0434\u0438\u043d\u043e WB", ...]}
]}
}
Received response:
Request failed with error:
Ответ
Response Fields
sku integer
SKU (ID) товара
stores object[]
Даннные по складам
stores[].store_id integer
ID склада на маркетплейсе
stores[].store string
Название склада
stores[].remains integer
Остатки
stores[].days integer
Дней в рынке
stores[].losses number
Упущенная выгода
stores[].sold number
Продажи
stores[].revenue number
Прибыль
stores[].avg_sold number
Средняя продаж в день
stores[].avg_revenue number
Средняя выручка в день
Товары. Запросы и позиции
requires authentication
Данные о позициях в поиске по запросу товаров из списка SKU за период
Example request:
curl --request POST \
"https://api.salesfinder.ru/api/2025_09/product/keywords" \
--header "Authorization: Bearer 1dg3Db5h8vka6Z6PecV4fEa" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"mp\": \"ozon\",
\"date\": \"2025-03-10\",
\"date2\": \"2025-03-15\",
\"sku\": [
573373353,
1508721402,
150030882
],
\"fbs\": 1
}"
const url = new URL(
"https://api.salesfinder.ru/api/2025_09/product/keywords"
);
const headers = {
"Authorization": "Bearer 1dg3Db5h8vka6Z6PecV4fEa",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"mp": "ozon",
"date": "2025-03-10",
"date2": "2025-03-15",
"sku": [
573373353,
1508721402,
150030882
],
"fbs": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://api.salesfinder.ru/api/2025_09/product/keywords',
[
'headers' => [
'Authorization' => 'Bearer 1dg3Db5h8vka6Z6PecV4fEa',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'mp' => 'ozon',
'date' => '2025-03-10',
'date2' => '2025-03-15',
'sku' => [
573373353,
1508721402,
150030882,
],
'fbs' => 1,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));Example response (200):
{
"success": true,
"message": "Ok",
"data":[
{"sku":573373353,"keywords":[
{"k_id":601517, "keyword":"\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 starline",
"shows":357,"avg_position":59.2,"keyword_mp_search_link":"https:\/\/www.ozon.ru\/search\/?text=\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 starline&from_global=true",
"2025-03-10":-1,"2025-03-11":47,"2025-03-12":50,"2025-03-13":69,"2025-03-14":71,"2025-03-15":59},
{"k_id":601524,"keyword":"\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0442\u0430\u0440\u043b\u0430\u0439\u043d",
"shows":724,"avg_position":14.3,"keyword_mp_search_link":"https:\/\/www.ozon.ru\/search\/?text=\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0442\u0430\u0440\u043b\u0430\u0439\u043d&from_global=true",
"2025-03-10":17,"2025-03-11":17,"2025-03-12":13,"2025-03-13":13,"2025-03-14":13,"2025-03-15":13},
{"k_id":601530,"keyword":"\u0431\u0440\u0435\u043b\u043e\u043a starline", ...},
...
]},
{"sku":1508721402,"keywords":[
{"k_id":601517,"keyword":"\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 starline",
"shows":357,"avg_position":59.2,"keyword_mp_search_link":"https:\/\/www.ozon.ru\/search\/?text=\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 starline&from_global=true",
"2025-03-10":-1,"2025-03-11":47,"2025-03-12":50,"2025-03-13":69,"2025-03-14":71,"2025-03-15":59},
{"k_id":601524,"keyword":"\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0442\u0430\u0440\u043b\u0430\u0439\u043d",
"shows":724,"avg_position":14.3,"keyword_mp_search_link":"https:\/\/www.ozon.ru\/search\/?text=\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0442\u0430\u0440\u043b\u0430\u0439\u043d&from_global=true",
"2025-03-10":17,"2025-03-11":17,"2025-03-12":13,"2025-03-13":13,"2025-03-14":13,"2025-03-15":13},
{"k_id":601530,"keyword":"\u0431\u0440\u0435\u043b\u043e\u043a starline", ...},
...
]},
{"sku":150030882,"keywords":[
{"k_id":601517,"keyword":"\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 starline",
"shows":357,"avg_position":59.2,"keyword_mp_search_link":"https:\/\/www.ozon.ru\/search\/?text=\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 starline&from_global=true",
"2025-03-10":-1,"2025-03-11":47,"2025-03-12":50,"2025-03-13":69,"2025-03-14":71,"2025-03-15":59},
{"k_id":601524,"keyword":"\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0442\u0430\u0440\u043b\u0430\u0439\u043d",
"shows":724,"avg_position":14.3,"keyword_mp_search_link":"https:\/\/www.ozon.ru\/search\/?text=\u0431\u0440\u0435\u043b\u043e\u043a \u0441\u0442\u0430\u0440\u043b\u0430\u0439\u043d&from_global=true",
"2025-03-10":17,"2025-03-11":17,"2025-03-12":13,"2025-03-13":13,"2025-03-14":13,"2025-03-15":13},
{"k_id":601530,"keyword":"\u0431\u0440\u0435\u043b\u043e\u043a starline" ...}
...
]}
]}
}
Received response:
Request failed with error:
Ответ
Response Fields
sku integer
SKU (ID) товара
keywords object[]
Данные по запросам
keywords[].k_id integer
Внутренний ID запроса в SalesFinder.ru
keywords[].keyword string
Текст запроса
keywords[].shows integer
Видимость запроса
keywords[].avg_position integer
Средняя позиция SKU по запросу
keywords[].keyword_mp_search_link string
Ссылка на страницу запроса в маркетплейсе
keywords[].yyyy-mm-dd[] integer
Позиция SKU по запросу на дату (-1: товара не видно за текущую дату)