ID ID
Masuk

API

Untuk membuka akses ke API kami, hubungi layanan dukungan kami melalui Telegram di tautan: @Spy_House

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($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
    
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
    
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
    }
    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' => [123],              // IDs from /api/filters/countries
    
'lang_ids' => [1],                      // IDs from /api/filters/languages
    
'network_ids' => [510],              // IDs from /api/filters/advertising-networks
    
'browser_ids' => [12],               // 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($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
    
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
    
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
    }
    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' => [123],              // IDs from /api/filters/countries
    
'lang_ids' => [1],                      // IDs from /api/filters/languages
    
'network_ids' => [510],              // IDs from /api/filters/advertising-networks
    
'browser_ids' => [12],               // 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($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
    
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
    
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
    }
    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($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
    
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
    
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
    }
    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).
email 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($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'POST');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_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($bodyTRUE);
        }
    }


    
$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>';
    }