API
Отримання списку мов
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| data | Масив | Масив доступних мов. |
| └ lang_id | Число | Унікальний ідентифікатор мови. |
| └ name | Рядок | Назва мови англійською. |
| └ iso_code | Рядок | ISO код мови (наприклад, "EN" для англійської, "UK" для української). |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/languages');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Отримання списку країн
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| data | Масив | Масив доступних країн. |
| └ country_id | Число | Унікальний ідентифікатор країни. |
| └ name | Рядок | Назва країни англійською. |
| └ iso_code | Рядок | ISO 3166-1 alpha-2 код країни (наприклад, "UA" для України). |
| └ iso_code_3 | Рядок | ISO 3166-1 alpha-3 код країни (наприклад, "UKR" для України). |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/countries');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Отримання списку браузерів
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| data | Масив | Масив доступних браузерів. |
| └ browser_id | Число | Унікальний ідентифікатор браузера. |
| └ name | Рядок | Назва браузера. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/browsers');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Отримання списку пристроїв
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| data | Масив | Масив доступних типів пристроїв. |
| └ device_id | Число | Унікальний ідентифікатор типу пристрою. |
| └ name | Рядок | Відображувана назва типу пристрою. |
| └ value | Рядок | Значення типу пристрою для API запитів. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/devices');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Отримання списку операційних систем
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| data | Масив | Масив доступних операційних систем. |
| └ os_id | Число | Унікальний ідентифікатор операційної системи. |
| └ name | Рядок | Відображувана назва операційної системи. |
| └ value | Рядок | Значення операційної системи для API запитів. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/operating_systems');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Отримання списку рекламних мереж
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| data | Масив | Масив доступних рекламних мереж. |
| └ network_id | Число | Унікальний ідентифікатор рекламної мережі. |
| └ name | Рядок | Відображувана назва рекламної мережі. |
| └ value | Рядок | Значення рекламної мережі для API запитів. |
| └ logo | Рядок | URL логотипу рекламної мережі. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/advertising_networks');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Пошук Push креативів
Пошук push-креативів з можливістю фільтрації за різними параметрами.
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| limit | Число | Ні | Кількість елементів на сторінці (10-100). За замовчуванням: 10. |
| offset | Число | Ні | Кількість елементів для пропуску. Використовується для пагінації. За замовчуванням: 0. |
| keyword | Рядок | Ні | Ключове слово для фільтрації креативів за заголовком або описом. |
| countries | Масив | Ні | Масив ISO-2 кодів країн (наприклад, ["US", "GB", "DE"]). |
| country_ids | Масив | Ні | Масив ID країн з ендпоінту /api/filters/countries. Має пріоритет над countries. |
| languages | Масив | Ні | Масив ISO кодів мов (наприклад, ["EN", "UK", "DE"]). |
| lang_ids | Масив | Ні | Масив ID мов з ендпоінту /api/filters/languages. Має пріоритет над languages. |
| advertising_networks | Масив | Ні | Масив назв рекламних мереж. |
| network_ids | Масив | Ні | Масив ID мереж з ендпоінту /api/filters/advertising-networks. Має пріоритет над advertising_networks. |
| browsers | Масив | Ні | Масив назв браузерів. |
| browser_ids | Масив | Ні | Масив ID браузерів з ендпоінту /api/filters/browsers. Має пріоритет над browsers. |
| operating_systems | Масив | Ні | Масив значень операційних систем (наприклад, ["windows", "macos", "android"]). |
| devices | Масив | Ні | Масив типів пристроїв (наприклад, ["desktop", "mobile", "tablet"]). |
| date_from | Рядок | Ні | Початкова дата для фільтрації (формат: Y-m-d, наприклад, "2025-01-01"). |
| date_to | Рядок | Ні | Кінцева дата для фільтрації (формат: Y-m-d, наприклад, "2025-12-31"). |
| sort_by | Рядок | Ні | Поле сортування: creation, activity, popularity. |
| sort_order | Рядок | Ні | Напрямок сортування: asc або desc. |
| only_adult | Boolean | Ні | Фільтрувати лише контент для дорослих. Булеве значення (true/false). |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| data | Object | Масив даних потоків, що відповідають запиту. |
| └ format | Рядок | Формат креативу (push, inpage, facebook, tiktok). |
| └ items | Масив | Масив об'єктів креативів. |
| └ id | Число | Унікальний ідентифікатор креативу. |
| └ title | Рядок | Текст заголовку креативу. |
| └ description | Рядок | Текст опису креативу. |
| └ category | Рядок | Формат/категорія креативу (push, inpage, facebook, tiktok). |
| └ country | Object | Об'єкт інформації про країну (code, name, iso_code_3). |
| └ code | Рядок | ISO 3166-1 alpha-2 код країни (наприклад, "UA" для України). |
| └ name | Рядок | Назва країни англійською. |
| └ iso_code_3 | Рядок | ISO 3166-1 alpha-3 код країни (наприклад, "UKR" для України). |
| └ file_size | Рядок | Форматований загальний розмір файлу. |
| └ icon_url | Рядок | URL зображення іконки креативу. |
| └ landing_url | Рядок | URL цільової сторінки. |
| └ created_at | Рядок | Дата створення креативу (формат Y-m-d). |
| └ advertising_networks | Масив | Масив назв рекламних мереж. |
| └ languages | Масив | Масив ISO кодів мов. |
| └ operating_systems | Масив | Масив значень операційних систем. |
| └ browsers | Масив | Масив назв браузерів. |
| └ devices | Масив | Масив типів пристроїв. |
| └ main_image_url | Рядок | URL основного зображення креативу. |
| └ is_adult | Boolean | Чи містить креатив контент для дорослих. |
| └ is_active | Boolean | Чи активний креатив наразі. |
| └ pagination | Object | Об'єкт інформації про пагінацію. |
| └ total | Число | Загальна кількість креативів, що відповідають фільтрам. |
| └ limit | Число | Кількість елементів на сторінці. |
| └ offset | Число | Поточне зміщення. |
| └ has_more | Boolean | Чи є ще доступні елементи. |
| └ returned_count | Число | Кількість елементів, повернутих у цій відповіді. |
| └ filters_applied | Object | Об'єкт з примененими фільтрами. |
| └ timestamp | Рядок | Мітка часу відповіді у форматі ISO 8601. |
<?php
function searchPushCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/push');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
];
$result = searchPushCreatives($params);
if ($result && $result['status'] === 'success') {
foreach ($result['data']['items'] as $creative) {
echo "ID: " . $creative['id'] . " - " . $creative['title'] . "\n";
}
echo "Total: " . $result['data']['pagination']['total'] . "\n";
}
// Example 2: Search with ISO codes/names filters
$paramsWithFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US', 'GB', 'DE'], // ISO-2 codes
'languages' => ['EN'], // ISO codes
'browsers' => ['Chrome', 'Firefox'], // Browser names
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$filteredResult = searchPushCreatives($paramsWithFilters);
// Example 3: Search with ID-based filters (recommended)
// Use IDs from /api/filters/* endpoints for better performance
$paramsWithIds = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'country_ids' => [1, 2, 3], // IDs from /api/filters/countries
'lang_ids' => [1], // IDs from /api/filters/languages
'network_ids' => [5, 10], // IDs from /api/filters/advertising-networks
'browser_ids' => [1, 2], // IDs from /api/filters/browsers
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$resultWithIds = searchPushCreatives($paramsWithIds);
// Note: ID-based filters take precedence over name-based filters
// If both country_ids and countries are provided, country_ids will be used
Пошук Inpage креативів
Пошук inpage-креативів з можливістю фільтрації за різними параметрами.
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| limit | Число | Ні | Кількість елементів на сторінці (10-100). За замовчуванням: 10. |
| offset | Число | Ні | Кількість елементів для пропуску. Використовується для пагінації. За замовчуванням: 0. |
| keyword | Рядок | Ні | Ключове слово для фільтрації креативів за заголовком або описом. |
| countries | Масив | Ні | Масив ISO-2 кодів країн (наприклад, ["US", "GB", "DE"]). |
| country_ids | Масив | Ні | Масив ID країн з ендпоінту /api/filters/countries. Має пріоритет над countries. |
| languages | Масив | Ні | Масив ISO кодів мов (наприклад, ["EN", "UK", "DE"]). |
| lang_ids | Масив | Ні | Масив ID мов з ендпоінту /api/filters/languages. Має пріоритет над languages. |
| advertising_networks | Масив | Ні | Масив назв рекламних мереж. |
| network_ids | Масив | Ні | Масив ID мереж з ендпоінту /api/filters/advertising-networks. Має пріоритет над advertising_networks. |
| browsers | Масив | Ні | Масив назв браузерів. |
| browser_ids | Масив | Ні | Масив ID браузерів з ендпоінту /api/filters/browsers. Має пріоритет над browsers. |
| operating_systems | Масив | Ні | Масив значень операційних систем (наприклад, ["windows", "macos", "android"]). |
| devices | Масив | Ні | Масив типів пристроїв (наприклад, ["desktop", "mobile", "tablet"]). |
| date_from | Рядок | Ні | Початкова дата для фільтрації (формат: Y-m-d, наприклад, "2025-01-01"). |
| date_to | Рядок | Ні | Кінцева дата для фільтрації (формат: Y-m-d, наприклад, "2025-12-31"). |
| sort_by | Рядок | Ні | Поле сортування: creation, activity, popularity. |
| sort_order | Рядок | Ні | Напрямок сортування: asc або desc. |
| only_adult | Boolean | Ні | Фільтрувати лише контент для дорослих. Булеве значення (true/false). |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| data | Object | Масив даних потоків, що відповідають запиту. |
| └ format | Рядок | Формат креативу (push, inpage, facebook, tiktok). |
| └ items | Масив | Масив об'єктів креативів. |
| └ id | Число | Унікальний ідентифікатор креативу. |
| └ title | Рядок | Текст заголовку креативу. |
| └ description | Рядок | Текст опису креативу. |
| └ category | Рядок | Формат/категорія креативу (push, inpage, facebook, tiktok). |
| └ country | Object | Об'єкт інформації про країну (code, name, iso_code_3). |
| └ code | Рядок | ISO 3166-1 alpha-2 код країни (наприклад, "UA" для України). |
| └ name | Рядок | Назва країни англійською. |
| └ iso_code_3 | Рядок | ISO 3166-1 alpha-3 код країни (наприклад, "UKR" для України). |
| └ file_size | Рядок | Форматований загальний розмір файлу. |
| └ icon_url | Рядок | URL зображення іконки креативу. |
| └ landing_url | Рядок | URL цільової сторінки. |
| └ created_at | Рядок | Дата створення креативу (формат Y-m-d). |
| └ advertising_networks | Масив | Масив назв рекламних мереж. |
| └ languages | Масив | Масив ISO кодів мов. |
| └ operating_systems | Масив | Масив значень операційних систем. |
| └ browsers | Масив | Масив назв браузерів. |
| └ devices | Масив | Масив типів пристроїв. |
| └ main_image_url | Рядок | URL основного зображення креативу. |
| └ is_adult | Boolean | Чи містить креатив контент для дорослих. |
| └ is_active | Boolean | Чи активний креатив наразі. |
| └ pagination | Object | Об'єкт інформації про пагінацію. |
| └ total | Число | Загальна кількість креативів, що відповідають фільтрам. |
| └ limit | Число | Кількість елементів на сторінці. |
| └ offset | Число | Поточне зміщення. |
| └ has_more | Boolean | Чи є ще доступні елементи. |
| └ returned_count | Число | Кількість елементів, повернутих у цій відповіді. |
| └ filters_applied | Object | Об'єкт з примененими фільтрами. |
| └ timestamp | Рядок | Мітка часу відповіді у форматі ISO 8601. |
<?php
function searchInpageCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/inpage');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
];
$result = searchInpageCreatives($params);
if ($result && $result['status'] === 'success') {
foreach ($result['data']['items'] as $creative) {
echo "ID: " . $creative['id'] . " - " . $creative['title'] . "\n";
}
echo "Total: " . $result['data']['pagination']['total'] . "\n";
}
// Example 2: Search with ISO codes/names filters
$paramsWithFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US', 'GB', 'DE'], // ISO-2 codes
'languages' => ['EN'], // ISO codes
'browsers' => ['Chrome', 'Firefox'], // Browser names
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$filteredResult = searchInpageCreatives($paramsWithFilters);
// Example 3: Search with ID-based filters (recommended)
// Use IDs from /api/filters/* endpoints for better performance
$paramsWithIds = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'country_ids' => [1, 2, 3], // IDs from /api/filters/countries
'lang_ids' => [1], // IDs from /api/filters/languages
'network_ids' => [5, 10], // IDs from /api/filters/advertising-networks
'browser_ids' => [1, 2], // IDs from /api/filters/browsers
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$resultWithIds = searchInpageCreatives($paramsWithIds);
// Note: ID-based filters take precedence over name-based filters
// If both country_ids and countries are provided, country_ids will be used
Пошук Facebook креативів
Пошук Facebook-креативів з можливістю фільтрації за різними параметрами. При невеликій кількості результатів API може запустити Live Search і повернути scrapingJob для опитування.
Якщо scrapingJob.needStartPolling дорівнює true, викликайте той самий ендпоінт з isPolling=true та job_id для отримання нових елементів. Якщо статус recently_completed або rejected, завдання не створюється і опитування не слід починати.
Live Search запускається лише коли у масиві countries вказано рівно одну країну.
Live Search запускається лише коли вказано непорожнє ключове слово.
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| limit | Число | Ні | Кількість елементів на сторінці (10-100). За замовчуванням: 10. |
| offset | Число | Ні | Кількість елементів для пропуску. Використовується для пагінації. За замовчуванням: 0. |
| keyword | Рядок | Ні | Ключове слово для фільтрації креативів за заголовком або описом. |
| countries | Масив | Ні | Масив ISO-2 кодів країн (наприклад, ["US", "GB", "DE"]). |
| country_ids | Масив | Ні | Масив ID країн з ендпоінту /api/filters/countries. Має пріоритет над countries. |
| languages | Масив | Ні | Масив ISO кодів мов (наприклад, ["EN", "UK", "DE"]). |
| lang_ids | Масив | Ні | Масив ID мов з ендпоінту /api/filters/languages. Має пріоритет над languages. |
| date_from | Рядок | Ні | Початкова дата для фільтрації (формат: Y-m-d, наприклад, "2025-01-01"). |
| date_to | Рядок | Ні | Кінцева дата для фільтрації (формат: Y-m-d, наприклад, "2025-12-31"). |
| sort_by | Рядок | Ні | Поле сортування: creation, activity, popularity. |
| sort_order | Рядок | Ні | Напрямок сортування: asc або desc. |
| status | Рядок | Ні | Фільтр статусу реклами: ALL, ACTIVE, INACTIVE. |
| media_type | Рядок | Ні | Фільтр типу медіа: ALL, IMAGE, VIDEO. |
| search_type | Рядок | Ні | Тип пошуку: keyword_unordered, keyword_exact_phrase. |
| isPolling | Boolean | Ні | Увімкнути опитування для оновлень live search. Використовувати з job_id. |
| lastId | Число | Ні | Останній ID креативу для інкрементального опитування (необов'язково). |
| perPage | Число | Ні | Очікуваний розмір сторінки для виявлення малої кількості результатів (12-96). |
| job_id | Рядок | Ні | ID завдання live search з scrapingJob. Обов'язковий коли isPolling=true. |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| data | Object | Масив даних потоків, що відповідають запиту. |
| └ format | Рядок | Формат креативу (push, inpage, facebook, tiktok). |
| └ items | Масив | Масив об'єктів креативів. |
| └ id | Число | Унікальний ідентифікатор креативу. |
| └ title | Рядок | Текст заголовку креативу. |
| └ description | Рядок | Текст опису креативу. |
| └ category | Рядок | Формат/категорія креативу (push, inpage, facebook, tiktok). |
| └ country | Object | Об'єкт інформації про країну (code, name, iso_code_3). |
| └ code | Рядок | ISO 3166-1 alpha-2 код країни (наприклад, "UA" для України). |
| └ name | Рядок | Назва країни англійською. |
| └ iso_code_3 | Рядок | ISO 3166-1 alpha-3 код країни (наприклад, "UKR" для України). |
| └ file_size | Рядок | Форматований загальний розмір файлу. |
| └ icon_url | Рядок | URL зображення іконки креативу. |
| └ landing_url | Рядок | URL цільової сторінки. |
| └ created_at | Рядок | Дата створення креативу (формат Y-m-d). |
| └ advertising_networks | Масив | Масив назв рекламних мереж. |
| └ languages | Масив | Масив ISO кодів мов. |
| └ operating_systems | Масив | Масив значень операційних систем. |
| └ browsers | Масив | Масив назв браузерів. |
| └ devices | Масив | Масив типів пристроїв. |
| └ main_image_url | Рядок | URL основного зображення креативу. |
| └ has_video | Boolean | Чи містить креатив відео. |
| └ video_url | Рядок | URL відео (якщо has_video дорівнює true). |
| └ video_duration | Число | Тривалість відео в секундах (якщо застосовно). |
| └ social_likes | Число | Кількість лайків (для соціальної реклами). |
| └ social_comments | Число | Кількість коментарів (для соціальної реклами). |
| └ social_shares | Число | Кількість репостів (для соціальної реклами). |
| └ is_adult | Boolean | Чи містить креатив контент для дорослих. |
| └ is_active | Boolean | Чи активний креатив наразі. |
| └ pagination | Object | Об'єкт інформації про пагінацію. |
| └ total | Число | Загальна кількість креативів, що відповідають фільтрам. |
| └ limit | Число | Кількість елементів на сторінці. |
| └ offset | Число | Поточне зміщення. |
| └ has_more | Boolean | Чи є ще доступні елементи. |
| └ returned_count | Число | Кількість елементів, повернутих у цій відповіді. |
| └ filters_applied | Object | Об'єкт з примененими фільтрами. |
| └ scrapingJob | Object | Об'єкт завдання live search (присутній коли live search запущено або активний). |
| └ type | Рядок | Ідентифікатор типу live search (наприклад, facebook_search). |
| └ status | Рядок | Статус завдання: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected. |
| └ needStartPolling | Boolean | Чи повинен клієнт почати опитування для оновлень. |
| └ needStopPolling | Boolean | Чи повинен клієнт припинити опитування. |
| └ job_id | Рядок | Ідентифікатор завдання для опитування (відсутній коли статус recently_completed або rejected). |
| └ polling_interval_seconds | Число | Рекомендований інтервал опитування в секундах. |
| └ estimatedDuration | Число | Орієнтовна тривалість в секундах (0 коли completed або recently_completed). |
| └ message | Рядок | Додаткове повідомлення про статус від сервера або парсера. |
| └ retry_after_seconds | Число | Скільки чекати перед повторною спробою коли recently_completed/rejected (якщо надано). |
| └ error | Рядок | Деталі помилки (присутні коли статус failed або error). |
| └ timestamp | Рядок | Мітка часу відповіді у форматі ISO 8601. |
<?php
function searchFacebookCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/facebook');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
];
// Example 2: Social filters (status/media_type/search_type)
$paramsWithSocialFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'status' => 'ACTIVE',
'media_type' => 'VIDEO',
'search_type' => 'keyword_unordered',
];
$result = searchFacebookCreatives($paramsWithSocialFilters);
// Example 3: Live search polling (when scrapingJob.needStartPolling is true)
$initial = searchFacebookCreatives([
'api_key' => 'YOUR_API_KEY',
'limit' => 10,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'status' => 'ACTIVE',
]);
if ($initial && !empty($initial['data']['scrapingJob'])) {
$scrapingJob = $initial['data']['scrapingJob'];
if (!empty($scrapingJob['needStartPolling']) && !empty($scrapingJob['job_id'])) {
$pollingResult = searchFacebookCreatives([
'api_key' => 'YOUR_API_KEY',
'isPolling' => true,
'job_id' => $scrapingJob['job_id'],
'limit' => 10,
'offset' => 0,
]);
}
}
// Note: If scrapingJob.status is "recently_completed" or "rejected",
// the job will not be created and polling should not be started.
Пошук TikTok креативів
Пошук TikTok-креативів з можливістю фільтрації за різними параметрами. При невеликій кількості результатів API може запустити Live Search і повернути scrapingJob для опитування.
Якщо scrapingJob.needStartPolling дорівнює true, викликайте той самий ендпоінт з isPolling=true та job_id для отримання нових елементів. Якщо статус recently_completed або rejected, завдання не створюється і опитування не слід починати.
Live Search запускається лише коли у масиві countries вказано рівно одну країну.
Live Search запускається лише коли вказано непорожнє ключове слово.
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| limit | Число | Ні | Кількість елементів на сторінці (10-100). За замовчуванням: 10. |
| offset | Число | Ні | Кількість елементів для пропуску. Використовується для пагінації. За замовчуванням: 0. |
| keyword | Рядок | Ні | Ключове слово для фільтрації креативів за заголовком або описом. |
| countries | Масив | Ні | Масив ISO-2 кодів країн (наприклад, ["US", "GB", "DE"]). |
| country_ids | Масив | Ні | Масив ID країн з ендпоінту /api/filters/countries. Має пріоритет над countries. |
| languages | Масив | Ні | Масив ISO кодів мов (наприклад, ["EN", "UK", "DE"]). |
| lang_ids | Масив | Ні | Масив ID мов з ендпоінту /api/filters/languages. Має пріоритет над languages. |
| date_from | Рядок | Ні | Початкова дата для фільтрації (формат: Y-m-d, наприклад, "2025-01-01"). |
| date_to | Рядок | Ні | Кінцева дата для фільтрації (формат: Y-m-d, наприклад, "2025-12-31"). |
| sort_by | Рядок | Ні | Поле сортування: creation, activity, popularity. |
| sort_order | Рядок | Ні | Напрямок сортування: asc або desc. |
| video_duration | Рядок | Ні | Фільтр тривалості відео TikTok: ALL, SHORT, MEDIUM, LONG. |
| isPolling | Boolean | Ні | Увімкнути опитування для оновлень live search. Використовувати з job_id. |
| lastId | Число | Ні | Останній ID креативу для інкрементального опитування (необов'язково). |
| perPage | Число | Ні | Очікуваний розмір сторінки для виявлення малої кількості результатів (12-96). |
| job_id | Рядок | Ні | ID завдання live search з scrapingJob. Обов'язковий коли isPolling=true. |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| data | Object | Масив даних потоків, що відповідають запиту. |
| └ format | Рядок | Формат креативу (push, inpage, facebook, tiktok). |
| └ items | Масив | Масив об'єктів креативів. |
| └ id | Число | Унікальний ідентифікатор креативу. |
| └ title | Рядок | Текст заголовку креативу. |
| └ description | Рядок | Текст опису креативу. |
| └ category | Рядок | Формат/категорія креативу (push, inpage, facebook, tiktok). |
| └ country | Object | Об'єкт інформації про країну (code, name, iso_code_3). |
| └ code | Рядок | ISO 3166-1 alpha-2 код країни (наприклад, "UA" для України). |
| └ name | Рядок | Назва країни англійською. |
| └ iso_code_3 | Рядок | ISO 3166-1 alpha-3 код країни (наприклад, "UKR" для України). |
| └ file_size | Рядок | Форматований загальний розмір файлу. |
| └ icon_url | Рядок | URL зображення іконки креативу. |
| └ landing_url | Рядок | URL цільової сторінки. |
| └ created_at | Рядок | Дата створення креативу (формат Y-m-d). |
| └ advertising_networks | Масив | Масив назв рекламних мереж. |
| └ languages | Масив | Масив ISO кодів мов. |
| └ operating_systems | Масив | Масив значень операційних систем. |
| └ browsers | Масив | Масив назв браузерів. |
| └ devices | Масив | Масив типів пристроїв. |
| └ main_image_url | Рядок | URL основного зображення креативу. |
| └ has_video | Boolean | Чи містить креатив відео. |
| └ video_url | Рядок | URL відео (якщо has_video дорівнює true). |
| └ video_duration | Число | Тривалість відео в секундах (якщо застосовно). |
| └ social_likes | Число | Кількість лайків (для соціальної реклами). |
| └ social_comments | Число | Кількість коментарів (для соціальної реклами). |
| └ social_shares | Число | Кількість репостів (для соціальної реклами). |
| └ is_adult | Boolean | Чи містить креатив контент для дорослих. |
| └ is_active | Boolean | Чи активний креатив наразі. |
| └ pagination | Object | Об'єкт інформації про пагінацію. |
| └ total | Число | Загальна кількість креативів, що відповідають фільтрам. |
| └ limit | Число | Кількість елементів на сторінці. |
| └ offset | Число | Поточне зміщення. |
| └ has_more | Boolean | Чи є ще доступні елементи. |
| └ returned_count | Число | Кількість елементів, повернутих у цій відповіді. |
| └ filters_applied | Object | Об'єкт з примененими фільтрами. |
| └ scrapingJob | Object | Об'єкт завдання live search (присутній коли live search запущено або активний). |
| └ type | Рядок | Ідентифікатор типу live search (наприклад, facebook_search). |
| └ status | Рядок | Статус завдання: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected. |
| └ needStartPolling | Boolean | Чи повинен клієнт почати опитування для оновлень. |
| └ needStopPolling | Boolean | Чи повинен клієнт припинити опитування. |
| └ job_id | Рядок | Ідентифікатор завдання для опитування (відсутній коли статус recently_completed або rejected). |
| └ polling_interval_seconds | Число | Рекомендований інтервал опитування в секундах. |
| └ estimatedDuration | Число | Орієнтовна тривалість в секундах (0 коли completed або recently_completed). |
| └ message | Рядок | Додаткове повідомлення про статус від сервера або парсера. |
| └ retry_after_seconds | Число | Скільки чекати перед повторною спробою коли recently_completed/rejected (якщо надано). |
| └ error | Рядок | Деталі помилки (присутні коли статус failed або error). |
| └ timestamp | Рядок | Мітка часу відповіді у форматі ISO 8601. |
<?php
function searchTikTokCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/tiktok');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
];
// Example 2: TikTok filter (video_duration)
$paramsWithVideoDuration = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'video_duration' => 'SHORT',
];
$result = searchTikTokCreatives($paramsWithVideoDuration);
// Example 3: Live search polling (when scrapingJob.needStartPolling is true)
$initial = searchTikTokCreatives([
'api_key' => 'YOUR_API_KEY',
'limit' => 10,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
]);
if ($initial && !empty($initial['data']['scrapingJob'])) {
$scrapingJob = $initial['data']['scrapingJob'];
if (!empty($scrapingJob['needStartPolling']) && !empty($scrapingJob['job_id'])) {
$pollingResult = searchTikTokCreatives([
'api_key' => 'YOUR_API_KEY',
'isPolling' => true,
'job_id' => $scrapingJob['job_id'],
'limit' => 10,
'offset' => 0,
]);
}
}
// Note: If scrapingJob.status is "recently_completed" or "rejected",
// the job will not be created and polling should not be started.
Переказ коштів
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| amount | Число | Так | Сума переказу (мінімум 10 USD). |
| Рядок | Так | Email отримувача переказу. Має бути дійсним. |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| transaction_number | Рядок | Унікальний номер транзакції, пов'язаний з переказом. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/accounts/transfer_funds');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = [
'api_key' => 'YOUR_API_KEY',
'amount' => 100,
'email' => '[email protected]'
];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
Отримання балансу акаунта
URL для запиту
| Параметр | Тип даних | Обов'язковий | Опис |
|---|---|---|---|
| api_key | Рядок | Так | Унікальний API ключ для автентифікації запиту. |
| Параметр | Тип даних | Опис |
|---|---|---|
| status | Рядок | Поле, що вказує на успішне виконання запиту ("success") або помилку ("error"). |
| msg | Рядок | Повідомлення про помилку або додаткова інформація про запит. |
| code | Число | Код відповіді, наприклад, 200 для успішного запиту. |
| balance | Число | Поточний баланс акаунта користувача. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/accounts/balance');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = [
'api_key' => 'YOUR_API_KEY'
];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}