API
Mengambil daftar bahasa
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| data | Array | Array bahasa yang tersedia. |
| └ lang_id | Angka | Identifier bahasa unik. |
| └ name | String | Nama bahasa dalam bahasa Inggris. |
| └ iso_code | String | Kode ISO bahasa (mis., "EN" untuk Inggris, "ID" untuk Indonesia). |
<?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>';
}
Mengambil daftar negara
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| data | Array | Array negara yang tersedia. |
| └ country_id | Angka | Identifier negara unik. |
| └ name | String | Nama negara dalam bahasa Inggris. |
| └ iso_code | String | Kode ISO 3166-1 alpha-2 negara (mis., "ID" untuk Indonesia). |
| └ iso_code_3 | String | Kode ISO 3166-1 alpha-3 negara (mis., "IDN" untuk Indonesia). |
<?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>';
}
Mengambil daftar browser
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| data | Array | Array browser yang tersedia. |
| └ browser_id | Angka | Identifier browser unik. |
| └ name | String | Nama browser. |
<?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>';
}
Mengambil daftar perangkat
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| data | Array | Array tipe perangkat yang tersedia. |
| └ device_id | Angka | Identifier tipe perangkat unik. |
| └ name | String | Nama tampilan tipe perangkat. |
| └ value | String | Nilai tipe perangkat untuk permintaan 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>';
}
Mengambil daftar sistem operasi
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| data | Array | Array sistem operasi yang tersedia. |
| └ os_id | Angka | Identifier sistem operasi unik. |
| └ name | String | Nama tampilan sistem operasi. |
| └ value | String | Nilai sistem operasi untuk permintaan 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>';
}
Mengambil daftar jaringan iklan
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| data | Array | Array jaringan iklan yang tersedia. |
| └ network_id | Angka | Identifier jaringan iklan unik. |
| └ name | String | Nama tampilan jaringan iklan. |
| └ value | String | Nilai jaringan iklan untuk permintaan API. |
| └ logo | String | URL logo jaringan iklan. |
<?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>';
}
Cari kreatif Push
Pencarian kreatif push dengan berbagai filter.
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| limit | Angka | Tidak | Jumlah item per halaman (10-100). Default: 10. |
| offset | Angka | Tidak | Jumlah item yang dilewati. Digunakan untuk paginasi. Default: 0. |
| keyword | String | Tidak | Kata kunci pencarian untuk memfilter kreatif berdasarkan judul atau deskripsi. |
| countries | Array | Tidak | Array kode ISO-2 negara (mis., ["US", "GB", "DE"]). |
| country_ids | Array | Tidak | Array ID negara dari endpoint /api/filters/countries. Prioritas di atas countries. |
| languages | Array | Tidak | Array kode ISO bahasa (mis., ["EN", "ID", "DE"]). |
| lang_ids | Array | Tidak | Array ID bahasa dari endpoint /api/filters/languages. Prioritas di atas languages. |
| advertising_networks | Array | Tidak | Array nama jaringan iklan. |
| network_ids | Array | Tidak | Array ID jaringan dari endpoint /api/filters/advertising-networks. Prioritas di atas advertising_networks. |
| browsers | Array | Tidak | Array nama browser. |
| browser_ids | Array | Tidak | Array ID browser dari endpoint /api/filters/browsers. Prioritas di atas browsers. |
| operating_systems | Array | Tidak | Array nilai sistem operasi (mis., ["windows", "macos", "android"]). |
| devices | Array | Tidak | Array tipe perangkat (mis., ["desktop", "mobile", "tablet"]). |
| date_from | String | Tidak | Tanggal mulai untuk pemfilteran (format: Y-m-d, mis., "2025-01-01"). |
| date_to | String | Tidak | Tanggal akhir untuk pemfilteran (format: Y-m-d, mis., "2025-12-31"). |
| sort_by | String | Tidak | Field pengurutan: creation, activity, popularity. |
| sort_order | String | Tidak | Arah pengurutan: asc atau desc. |
| only_adult | Boolean | Tidak | Filter hanya konten dewasa. Boolean (true/false). |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| data | Object | Array data flow yang cocok dengan permintaan. |
| └ format | String | Format kreatif (push, inpage, facebook, tiktok). |
| └ items | Array | Array objek kreatif. |
| └ id | Angka | Identifier kreatif unik. |
| └ title | String | Teks judul kreatif. |
| └ description | String | Teks deskripsi kreatif. |
| └ category | String | Format/kategori kreatif (push, inpage, facebook, tiktok). |
| └ country | Object | Objek informasi negara (code, name, iso_code_3). |
| └ code | String | Kode ISO 3166-1 alpha-2 negara (mis., "ID" untuk Indonesia). |
| └ name | String | Nama negara dalam bahasa Inggris. |
| └ iso_code_3 | String | Kode ISO 3166-1 alpha-3 negara (mis., "IDN" untuk Indonesia). |
| └ file_size | String | Ukuran file total yang diformat. |
| └ icon_url | String | URL gambar ikon kreatif. |
| └ landing_url | String | URL halaman arahan. |
| └ created_at | String | Tanggal pembuatan kreatif (format Y-m-d). |
| └ advertising_networks | Array | Array nama jaringan iklan. |
| └ languages | Array | Array kode ISO bahasa. |
| └ operating_systems | Array | Array nilai sistem operasi. |
| └ browsers | Array | Array nama browser. |
| └ devices | Array | Array tipe perangkat. |
| └ main_image_url | String | URL gambar utama kreatif. |
| └ is_adult | Boolean | Apakah kreatif berisi konten dewasa. |
| └ is_active | Boolean | Apakah kreatif saat ini aktif. |
| └ pagination | Object | Objek informasi paginasi. |
| └ total | Angka | Total jumlah kreatif yang cocok dengan filter. |
| └ limit | Angka | Jumlah item per halaman. |
| └ offset | Angka | Offset saat ini. |
| └ has_more | Boolean | Apakah ada item lagi yang tersedia. |
| └ returned_count | Angka | Jumlah item yang dikembalikan dalam respons ini. |
| └ filters_applied | Object | Objek yang berisi filter yang diterapkan. |
| └ timestamp | String | Timestamp respons dalam format 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
Cari kreatif Inpage
Pencarian kreatif inpage dengan berbagai filter.
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| limit | Angka | Tidak | Jumlah item per halaman (10-100). Default: 10. |
| offset | Angka | Tidak | Jumlah item yang dilewati. Digunakan untuk paginasi. Default: 0. |
| keyword | String | Tidak | Kata kunci pencarian untuk memfilter kreatif berdasarkan judul atau deskripsi. |
| countries | Array | Tidak | Array kode ISO-2 negara (mis., ["US", "GB", "DE"]). |
| country_ids | Array | Tidak | Array ID negara dari endpoint /api/filters/countries. Prioritas di atas countries. |
| languages | Array | Tidak | Array kode ISO bahasa (mis., ["EN", "ID", "DE"]). |
| lang_ids | Array | Tidak | Array ID bahasa dari endpoint /api/filters/languages. Prioritas di atas languages. |
| advertising_networks | Array | Tidak | Array nama jaringan iklan. |
| network_ids | Array | Tidak | Array ID jaringan dari endpoint /api/filters/advertising-networks. Prioritas di atas advertising_networks. |
| browsers | Array | Tidak | Array nama browser. |
| browser_ids | Array | Tidak | Array ID browser dari endpoint /api/filters/browsers. Prioritas di atas browsers. |
| operating_systems | Array | Tidak | Array nilai sistem operasi (mis., ["windows", "macos", "android"]). |
| devices | Array | Tidak | Array tipe perangkat (mis., ["desktop", "mobile", "tablet"]). |
| date_from | String | Tidak | Tanggal mulai untuk pemfilteran (format: Y-m-d, mis., "2025-01-01"). |
| date_to | String | Tidak | Tanggal akhir untuk pemfilteran (format: Y-m-d, mis., "2025-12-31"). |
| sort_by | String | Tidak | Field pengurutan: creation, activity, popularity. |
| sort_order | String | Tidak | Arah pengurutan: asc atau desc. |
| only_adult | Boolean | Tidak | Filter hanya konten dewasa. Boolean (true/false). |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| data | Object | Array data flow yang cocok dengan permintaan. |
| └ format | String | Format kreatif (push, inpage, facebook, tiktok). |
| └ items | Array | Array objek kreatif. |
| └ id | Angka | Identifier kreatif unik. |
| └ title | String | Teks judul kreatif. |
| └ description | String | Teks deskripsi kreatif. |
| └ category | String | Format/kategori kreatif (push, inpage, facebook, tiktok). |
| └ country | Object | Objek informasi negara (code, name, iso_code_3). |
| └ code | String | Kode ISO 3166-1 alpha-2 negara (mis., "ID" untuk Indonesia). |
| └ name | String | Nama negara dalam bahasa Inggris. |
| └ iso_code_3 | String | Kode ISO 3166-1 alpha-3 negara (mis., "IDN" untuk Indonesia). |
| └ file_size | String | Ukuran file total yang diformat. |
| └ icon_url | String | URL gambar ikon kreatif. |
| └ landing_url | String | URL halaman arahan. |
| └ created_at | String | Tanggal pembuatan kreatif (format Y-m-d). |
| └ advertising_networks | Array | Array nama jaringan iklan. |
| └ languages | Array | Array kode ISO bahasa. |
| └ operating_systems | Array | Array nilai sistem operasi. |
| └ browsers | Array | Array nama browser. |
| └ devices | Array | Array tipe perangkat. |
| └ main_image_url | String | URL gambar utama kreatif. |
| └ is_adult | Boolean | Apakah kreatif berisi konten dewasa. |
| └ is_active | Boolean | Apakah kreatif saat ini aktif. |
| └ pagination | Object | Objek informasi paginasi. |
| └ total | Angka | Total jumlah kreatif yang cocok dengan filter. |
| └ limit | Angka | Jumlah item per halaman. |
| └ offset | Angka | Offset saat ini. |
| └ has_more | Boolean | Apakah ada item lagi yang tersedia. |
| └ returned_count | Angka | Jumlah item yang dikembalikan dalam respons ini. |
| └ filters_applied | Object | Objek yang berisi filter yang diterapkan. |
| └ timestamp | String | Timestamp respons dalam format 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
Cari kreatif Facebook
Pencarian kreatif Facebook dengan berbagai filter. Ketika hasil sedikit, API dapat memulai pencarian langsung dan mengembalikan scrapingJob untuk polling.
Jika scrapingJob.needStartPolling bernilai true, panggil endpoint yang sama dengan isPolling=true dan job_id untuk menerima item baru. Jika status adalah recently_completed atau rejected, tidak ada job yang dibuat dan polling tidak boleh dimulai.
Pencarian langsung hanya dimulai ketika tepat satu negara ditentukan dalam array countries.
Pencarian langsung hanya dimulai ketika kata kunci yang tidak kosong diberikan.
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| limit | Angka | Tidak | Jumlah item per halaman (10-100). Default: 10. |
| offset | Angka | Tidak | Jumlah item yang dilewati. Digunakan untuk paginasi. Default: 0. |
| keyword | String | Tidak | Kata kunci pencarian untuk memfilter kreatif berdasarkan judul atau deskripsi. |
| countries | Array | Tidak | Array kode ISO-2 negara (mis., ["US", "GB", "DE"]). |
| country_ids | Array | Tidak | Array ID negara dari endpoint /api/filters/countries. Prioritas di atas countries. |
| languages | Array | Tidak | Array kode ISO bahasa (mis., ["EN", "ID", "DE"]). |
| lang_ids | Array | Tidak | Array ID bahasa dari endpoint /api/filters/languages. Prioritas di atas languages. |
| date_from | String | Tidak | Tanggal mulai untuk pemfilteran (format: Y-m-d, mis., "2025-01-01"). |
| date_to | String | Tidak | Tanggal akhir untuk pemfilteran (format: Y-m-d, mis., "2025-12-31"). |
| sort_by | String | Tidak | Field pengurutan: creation, activity, popularity. |
| sort_order | String | Tidak | Arah pengurutan: asc atau desc. |
| status | String | Tidak | Filter status iklan: ALL, ACTIVE, INACTIVE. |
| media_type | String | Tidak | Filter tipe media: ALL, IMAGE, VIDEO. |
| search_type | String | Tidak | Tipe pencarian: keyword_unordered, keyword_exact_phrase. |
| isPolling | Boolean | Tidak | Aktifkan polling untuk pembaruan pencarian langsung. Gunakan dengan job_id. |
| lastId | Angka | Tidak | ID kreatif terakhir yang diterima untuk polling inkremental (opsional). |
| perPage | Angka | Tidak | Ukuran halaman yang diharapkan untuk deteksi hasil rendah (12-96). |
| job_id | String | Tidak | ID job pencarian langsung dari scrapingJob. Diperlukan ketika isPolling=true. |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| data | Object | Array data flow yang cocok dengan permintaan. |
| └ format | String | Format kreatif (push, inpage, facebook, tiktok). |
| └ items | Array | Array objek kreatif. |
| └ id | Angka | Identifier kreatif unik. |
| └ title | String | Teks judul kreatif. |
| └ description | String | Teks deskripsi kreatif. |
| └ category | String | Format/kategori kreatif (push, inpage, facebook, tiktok). |
| └ country | Object | Objek informasi negara (code, name, iso_code_3). |
| └ code | String | Kode ISO 3166-1 alpha-2 negara (mis., "ID" untuk Indonesia). |
| └ name | String | Nama negara dalam bahasa Inggris. |
| └ iso_code_3 | String | Kode ISO 3166-1 alpha-3 negara (mis., "IDN" untuk Indonesia). |
| └ file_size | String | Ukuran file total yang diformat. |
| └ icon_url | String | URL gambar ikon kreatif. |
| └ landing_url | String | URL halaman arahan. |
| └ created_at | String | Tanggal pembuatan kreatif (format Y-m-d). |
| └ advertising_networks | Array | Array nama jaringan iklan. |
| └ languages | Array | Array kode ISO bahasa. |
| └ operating_systems | Array | Array nilai sistem operasi. |
| └ browsers | Array | Array nama browser. |
| └ devices | Array | Array tipe perangkat. |
| └ main_image_url | String | URL gambar utama kreatif. |
| └ has_video | Boolean | Apakah kreatif berisi video. |
| └ video_url | String | URL video (jika has_video bernilai true). |
| └ video_duration | Angka | Durasi video dalam detik (jika berlaku). |
| └ social_likes | Angka | Jumlah like (untuk iklan sosial). |
| └ social_comments | Angka | Jumlah komentar (untuk iklan sosial). |
| └ social_shares | Angka | Jumlah share (untuk iklan sosial). |
| └ is_adult | Boolean | Apakah kreatif berisi konten dewasa. |
| └ is_active | Boolean | Apakah kreatif saat ini aktif. |
| └ pagination | Object | Objek informasi paginasi. |
| └ total | Angka | Total jumlah kreatif yang cocok dengan filter. |
| └ limit | Angka | Jumlah item per halaman. |
| └ offset | Angka | Offset saat ini. |
| └ has_more | Boolean | Apakah ada item lagi yang tersedia. |
| └ returned_count | Angka | Jumlah item yang dikembalikan dalam respons ini. |
| └ filters_applied | Object | Objek yang berisi filter yang diterapkan. |
| └ scrapingJob | Object | Objek job pencarian langsung (ada ketika pencarian langsung dimulai atau aktif). |
| └ type | String | Identifier tipe pencarian langsung (mis., facebook_search). |
| └ status | String | Status job: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected. |
| └ needStartPolling | Boolean | Apakah klien harus mulai polling untuk pembaruan. |
| └ needStopPolling | Boolean | Apakah klien harus menghentikan polling. |
| └ job_id | String | Identifier job untuk polling (tidak ada ketika status recently_completed atau rejected). |
| └ polling_interval_seconds | Angka | Interval polling yang direkomendasikan dalam detik. |
| └ estimatedDuration | Angka | Durasi perkiraan dalam detik (0 ketika completed atau recently_completed). |
| └ message | String | Pesan status tambahan dari server atau parser. |
| └ retry_after_seconds | Angka | Berapa lama menunggu sebelum mencoba lagi ketika recently_completed/rejected (jika diberikan). |
| └ error | String | Detail error (ada ketika status failed atau error). |
| └ timestamp | String | Timestamp respons dalam format 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.
Cari kreatif TikTok
Pencarian kreatif TikTok dengan berbagai filter. Ketika hasil sedikit, API dapat memulai pencarian langsung dan mengembalikan scrapingJob untuk polling.
Jika scrapingJob.needStartPolling bernilai true, panggil endpoint yang sama dengan isPolling=true dan job_id untuk menerima item baru. Jika status adalah recently_completed atau rejected, tidak ada job yang dibuat dan polling tidak boleh dimulai.
Pencarian langsung hanya dimulai ketika tepat satu negara ditentukan dalam array countries.
Pencarian langsung hanya dimulai ketika kata kunci yang tidak kosong diberikan.
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| limit | Angka | Tidak | Jumlah item per halaman (10-100). Default: 10. |
| offset | Angka | Tidak | Jumlah item yang dilewati. Digunakan untuk paginasi. Default: 0. |
| keyword | String | Tidak | Kata kunci pencarian untuk memfilter kreatif berdasarkan judul atau deskripsi. |
| countries | Array | Tidak | Array kode ISO-2 negara (mis., ["US", "GB", "DE"]). |
| country_ids | Array | Tidak | Array ID negara dari endpoint /api/filters/countries. Prioritas di atas countries. |
| languages | Array | Tidak | Array kode ISO bahasa (mis., ["EN", "ID", "DE"]). |
| lang_ids | Array | Tidak | Array ID bahasa dari endpoint /api/filters/languages. Prioritas di atas languages. |
| date_from | String | Tidak | Tanggal mulai untuk pemfilteran (format: Y-m-d, mis., "2025-01-01"). |
| date_to | String | Tidak | Tanggal akhir untuk pemfilteran (format: Y-m-d, mis., "2025-12-31"). |
| sort_by | String | Tidak | Field pengurutan: creation, activity, popularity. |
| sort_order | String | Tidak | Arah pengurutan: asc atau desc. |
| video_duration | String | Tidak | Filter durasi video TikTok: ALL, SHORT, MEDIUM, LONG. |
| isPolling | Boolean | Tidak | Aktifkan polling untuk pembaruan pencarian langsung. Gunakan dengan job_id. |
| lastId | Angka | Tidak | ID kreatif terakhir yang diterima untuk polling inkremental (opsional). |
| perPage | Angka | Tidak | Ukuran halaman yang diharapkan untuk deteksi hasil rendah (12-96). |
| job_id | String | Tidak | ID job pencarian langsung dari scrapingJob. Diperlukan ketika isPolling=true. |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| data | Object | Array data flow yang cocok dengan permintaan. |
| └ format | String | Format kreatif (push, inpage, facebook, tiktok). |
| └ items | Array | Array objek kreatif. |
| └ id | Angka | Identifier kreatif unik. |
| └ title | String | Teks judul kreatif. |
| └ description | String | Teks deskripsi kreatif. |
| └ category | String | Format/kategori kreatif (push, inpage, facebook, tiktok). |
| └ country | Object | Objek informasi negara (code, name, iso_code_3). |
| └ code | String | Kode ISO 3166-1 alpha-2 negara (mis., "ID" untuk Indonesia). |
| └ name | String | Nama negara dalam bahasa Inggris. |
| └ iso_code_3 | String | Kode ISO 3166-1 alpha-3 negara (mis., "IDN" untuk Indonesia). |
| └ file_size | String | Ukuran file total yang diformat. |
| └ icon_url | String | URL gambar ikon kreatif. |
| └ landing_url | String | URL halaman arahan. |
| └ created_at | String | Tanggal pembuatan kreatif (format Y-m-d). |
| └ advertising_networks | Array | Array nama jaringan iklan. |
| └ languages | Array | Array kode ISO bahasa. |
| └ operating_systems | Array | Array nilai sistem operasi. |
| └ browsers | Array | Array nama browser. |
| └ devices | Array | Array tipe perangkat. |
| └ main_image_url | String | URL gambar utama kreatif. |
| └ has_video | Boolean | Apakah kreatif berisi video. |
| └ video_url | String | URL video (jika has_video bernilai true). |
| └ video_duration | Angka | Durasi video dalam detik (jika berlaku). |
| └ social_likes | Angka | Jumlah like (untuk iklan sosial). |
| └ social_comments | Angka | Jumlah komentar (untuk iklan sosial). |
| └ social_shares | Angka | Jumlah share (untuk iklan sosial). |
| └ is_adult | Boolean | Apakah kreatif berisi konten dewasa. |
| └ is_active | Boolean | Apakah kreatif saat ini aktif. |
| └ pagination | Object | Objek informasi paginasi. |
| └ total | Angka | Total jumlah kreatif yang cocok dengan filter. |
| └ limit | Angka | Jumlah item per halaman. |
| └ offset | Angka | Offset saat ini. |
| └ has_more | Boolean | Apakah ada item lagi yang tersedia. |
| └ returned_count | Angka | Jumlah item yang dikembalikan dalam respons ini. |
| └ filters_applied | Object | Objek yang berisi filter yang diterapkan. |
| └ scrapingJob | Object | Objek job pencarian langsung (ada ketika pencarian langsung dimulai atau aktif). |
| └ type | String | Identifier tipe pencarian langsung (mis., facebook_search). |
| └ status | String | Status job: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected. |
| └ needStartPolling | Boolean | Apakah klien harus mulai polling untuk pembaruan. |
| └ needStopPolling | Boolean | Apakah klien harus menghentikan polling. |
| └ job_id | String | Identifier job untuk polling (tidak ada ketika status recently_completed atau rejected). |
| └ polling_interval_seconds | Angka | Interval polling yang direkomendasikan dalam detik. |
| └ estimatedDuration | Angka | Durasi perkiraan dalam detik (0 ketika completed atau recently_completed). |
| └ message | String | Pesan status tambahan dari server atau parser. |
| └ retry_after_seconds | Angka | Berapa lama menunggu sebelum mencoba lagi ketika recently_completed/rejected (jika diberikan). |
| └ error | String | Detail error (ada ketika status failed atau error). |
| └ timestamp | String | Timestamp respons dalam format 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.
Transfer dana
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| amount | Angka | Ya | Jumlah transfer (minimum 10 USD). |
| String | Ya | Email penerima transfer. Harus valid. |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| transaction_number | String | Nomor transaksi unik terkait transfer. |
<?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>';
}
Mengambil saldo akun
URL permintaan
| Parameter | Tipe data | Diperlukan | Deskripsi |
|---|---|---|---|
| api_key | String | Ya | Kunci API unik untuk otentikasi permintaan. |
| Parameter | Tipe data | Deskripsi |
|---|---|---|
| status | String | Field yang menunjukkan eksekusi permintaan berhasil ("success") atau error ("error"). |
| msg | String | Pesan error atau informasi tambahan permintaan. |
| code | Angka | Kode respons, mis., 200 untuk permintaan berhasil. |
| balance | Angka | Saldo akun pengguna saat ini. |
<?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>';
}