SA AR
تسجيل الدخول

API

لفتح الوصول إلى API الخاص بنا، تواصل مع خدمة الدعم عبر Telegram على الرابط: @Spy_House

استرجاع قائمة اللغات

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
المعلمة نوع البيانات الوصف
status نص حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error").
msg نص رسالة خطأ أو معلومات إضافية عن الطلب.
code رقم رمز الاستجابة، مثال، 200 لطلب ناجح.
data مصفوفة مصفوفة اللغات المتاحة.
└ lang_id رقم معرف اللغة الفريد.
└ name نص اسم اللغة بالإنجليزية.
└ iso_code نص رمز ISO للغة (مثال، "EN" للإنجليزية، "AR" للعربية).
<?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>';
    }

استرجاع قائمة الدول

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
المعلمة نوع البيانات الوصف
status نص حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error").
msg نص رسالة خطأ أو معلومات إضافية عن الطلب.
code رقم رمز الاستجابة، مثال، 200 لطلب ناجح.
data مصفوفة مصفوفة الدول المتاحة.
└ country_id رقم معرف الدولة الفريد.
└ name نص اسم الدولة بالإنجليزية.
└ iso_code نص رمز ISO 3166-1 alpha-2 للدولة (مثال، "SA" للسعودية).
└ iso_code_3 نص رمز ISO 3166-1 alpha-3 للدولة (مثال، "SAU" للسعودية).
<?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>';
    }

استرجاع قائمة المتصفحات

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
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($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>';
    }

استرجاع قائمة الأجهزة

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
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($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>';
    }

استرجاع قائمة أنظمة التشغيل

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
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($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>';
    }

استرجاع قائمة شبكات الإعلان

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
المعلمة نوع البيانات الوصف
status نص حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error").
msg نص رسالة خطأ أو معلومات إضافية عن الطلب.
code رقم رمز الاستجابة، مثال، 200 لطلب ناجح.
data مصفوفة مصفوفة شبكات الإعلان المتاحة.
└ network_id رقم معرف شبكة الإعلان الفريد.
└ name نص اسم العرض لشبكة الإعلان.
└ value نص قيمة شبكة الإعلان لطلبات API.
└ logo نص رابط شعار شبكة الإعلان.
<?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>';
    }

بحث إعلانات Push

البحث عن إعلانات push مع فلاتر متنوعة.

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
limit رقم لا عدد العناصر لكل صفحة (10-100). الافتراضي: 10.
offset رقم لا عدد العناصر للتخطي. يستخدم للترقيم. الافتراضي: 0.
keyword نص لا كلمة البحث لتصفية الإعلانات حسب العنوان أو الوصف.
countries مصفوفة لا مصفوفة رموز ISO-2 للدول (مثل، ["US", "GB", "DE"]).
country_ids مصفوفة لا مصفوفة معرفات الدول من نقطة النهاية /api/filters/countries. لها الأولوية على countries.
languages مصفوفة لا مصفوفة رموز ISO للغات (مثل، ["EN", "AR", "DE"]).
lang_ids مصفوفة لا مصفوفة معرفات اللغات من نقطة النهاية /api/filters/languages. لها الأولوية على languages.
advertising_networks مصفوفة لا مصفوفة أسماء شبكات الإعلان.
network_ids مصفوفة لا مصفوفة معرفات الشبكات من نقطة النهاية /api/filters/advertising-networks. لها الأولوية على advertising_networks.
browsers مصفوفة لا مصفوفة أسماء المتصفحات.
browser_ids مصفوفة لا مصفوفة معرفات المتصفحات من نقطة النهاية /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 للدولة (مثال، "SA" للسعودية).
    └ name نص اسم الدولة بالإنجليزية.
    └ iso_code_3 نص رمز ISO 3166-1 alpha-3 للدولة (مثال، "SAU" للسعودية).
  └ file_size نص الحجم الإجمالي للملف منسق.
  └ icon_url نص رابط صورة أيقونة الإعلان.
  └ landing_url نص رابط صفحة الهبوط.
  └ created_at نص تاريخ إنشاء الإعلان (صيغة Y-m-d).
  └ advertising_networks مصفوفة مصفوفة أسماء شبكات الإعلان.
  └ languages مصفوفة مصفوفة رموز ISO للغات.
  └ operating_systems مصفوفة مصفوفة قيم أنظمة التشغيل.
  └ browsers مصفوفة مصفوفة أسماء المتصفحات.
  └ devices مصفوفة مصفوفة أنواع الأجهزة.
  └ main_image_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($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

بحث إعلانات Inpage

البحث عن إعلانات inpage مع فلاتر متنوعة.

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
limit رقم لا عدد العناصر لكل صفحة (10-100). الافتراضي: 10.
offset رقم لا عدد العناصر للتخطي. يستخدم للترقيم. الافتراضي: 0.
keyword نص لا كلمة البحث لتصفية الإعلانات حسب العنوان أو الوصف.
countries مصفوفة لا مصفوفة رموز ISO-2 للدول (مثل، ["US", "GB", "DE"]).
country_ids مصفوفة لا مصفوفة معرفات الدول من نقطة النهاية /api/filters/countries. لها الأولوية على countries.
languages مصفوفة لا مصفوفة رموز ISO للغات (مثل، ["EN", "AR", "DE"]).
lang_ids مصفوفة لا مصفوفة معرفات اللغات من نقطة النهاية /api/filters/languages. لها الأولوية على languages.
advertising_networks مصفوفة لا مصفوفة أسماء شبكات الإعلان.
network_ids مصفوفة لا مصفوفة معرفات الشبكات من نقطة النهاية /api/filters/advertising-networks. لها الأولوية على advertising_networks.
browsers مصفوفة لا مصفوفة أسماء المتصفحات.
browser_ids مصفوفة لا مصفوفة معرفات المتصفحات من نقطة النهاية /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 للدولة (مثال، "SA" للسعودية).
    └ name نص اسم الدولة بالإنجليزية.
    └ iso_code_3 نص رمز ISO 3166-1 alpha-3 للدولة (مثال، "SAU" للسعودية).
  └ file_size نص الحجم الإجمالي للملف منسق.
  └ icon_url نص رابط صورة أيقونة الإعلان.
  └ landing_url نص رابط صفحة الهبوط.
  └ created_at نص تاريخ إنشاء الإعلان (صيغة Y-m-d).
  └ advertising_networks مصفوفة مصفوفة أسماء شبكات الإعلان.
  └ languages مصفوفة مصفوفة رموز ISO للغات.
  └ operating_systems مصفوفة مصفوفة قيم أنظمة التشغيل.
  └ browsers مصفوفة مصفوفة أسماء المتصفحات.
  └ devices مصفوفة مصفوفة أنواع الأجهزة.
  └ main_image_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($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

بحث إعلانات Native

البحث عن إعلانات Native (MGID/Taboola) مع فلاتر متنوعة.

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
limit رقم لا عدد العناصر لكل صفحة (10-100). الافتراضي: 10.
offset رقم لا عدد العناصر للتخطي. يستخدم للترقيم. الافتراضي: 0.
keyword نص لا كلمة البحث لتصفية الإعلانات حسب العنوان أو الوصف.
countries مصفوفة لا مصفوفة رموز ISO-2 للدول (مثل، ["US", "GB", "DE"]).
country_ids مصفوفة لا مصفوفة معرفات الدول من نقطة النهاية /api/filters/countries. لها الأولوية على countries.
languages مصفوفة لا مصفوفة رموز ISO للغات (مثل، ["EN", "AR", "DE"]).
lang_ids مصفوفة لا مصفوفة معرفات اللغات من نقطة النهاية /api/filters/languages. لها الأولوية على languages.
advertising_networks مصفوفة لا مصفوفة أسماء شبكات الإعلان.
network_ids مصفوفة لا مصفوفة معرفات الشبكات من نقطة النهاية /api/filters/advertising-networks. لها الأولوية على advertising_networks.
browsers مصفوفة لا مصفوفة أسماء المتصفحات.
browser_ids مصفوفة لا مصفوفة معرفات المتصفحات من نقطة النهاية /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.
المعلمة نوع البيانات الوصف
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 للدولة (مثال، "SA" للسعودية).
    └ name نص اسم الدولة بالإنجليزية.
    └ iso_code_3 نص رمز ISO 3166-1 alpha-3 للدولة (مثال، "SAU" للسعودية).
  └ file_size نص الحجم الإجمالي للملف منسق.
  └ icon_url نص رابط صورة أيقونة الإعلان.
  └ main_image_url نص رابط الصورة الرئيسية للإعلان.
  └ landing_url نص رابط صفحة الهبوط.
  └ created_at نص تاريخ إنشاء الإعلان (صيغة Y-m-d).
  └ advertising_networks مصفوفة مصفوفة أسماء شبكات الإعلان.
  └ languages مصفوفة مصفوفة رموز ISO للغات.
  └ operating_systems مصفوفة مصفوفة قيم أنظمة التشغيل.
  └ browsers مصفوفة مصفوفة أسماء المتصفحات.
  └ devices مصفوفة مصفوفة أنواع الأجهزة.
  └ is_adult Boolean ما إذا كان الإعلان يحتوي على محتوى للبالغين.
  └ is_active Boolean ما إذا كان الإعلان نشطاً حالياً.
└ pagination Object كائن معلومات الترقيم.
  └ total رقم إجمالي عدد الإعلانات المطابقة للفلاتر.
  └ limit رقم عدد العناصر لكل صفحة.
  └ offset رقم الإزاحة الحالية.
  └ has_more Boolean ما إذا كانت هناك عناصر أخرى متاحة.
  └ returned_count رقم عدد العناصر المعادة في هذه الاستجابة.
└ filters_applied Object كائن يحتوي على الفلاتر المطبقة.
└ timestamp نص طابع وقت الاستجابة بصيغة ISO 8601.
<?php

function searchNativeCreatives($params = [])
{
    
$ch curl_init('https://spy.house/api/search/native');

    
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 searchNativeCreatives($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 searchNativeCreatives($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 searchNativeCreatives($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 بحثاً مباشراً وتعيد scrapingJob للاستقصاء.

إذا كان scrapingJob.needStartPolling يساوي true، قم باستدعاء نفس نقطة النهاية مع isPolling=true و job_id لاستلام عناصر جديدة. إذا كانت الحالة recently_completed أو rejected، لا يتم إنشاء مهمة ولا يجب بدء الاستقصاء.

يبدأ البحث المباشر فقط عند تحديد دولة واحدة بالضبط في مصفوفة countries.

يبدأ البحث المباشر فقط عند توفير كلمة مفتاحية غير فارغة.

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
limit رقم لا عدد العناصر لكل صفحة (10-100). الافتراضي: 10.
offset رقم لا عدد العناصر للتخطي. يستخدم للترقيم. الافتراضي: 0.
keyword نص لا كلمة البحث لتصفية الإعلانات حسب العنوان أو الوصف.
countries مصفوفة لا مصفوفة رموز ISO-2 للدول (مثل، ["US", "GB", "DE"]).
country_ids مصفوفة لا مصفوفة معرفات الدول من نقطة النهاية /api/filters/countries. لها الأولوية على countries.
languages مصفوفة لا مصفوفة رموز ISO للغات (مثل، ["EN", "AR", "DE"]).
lang_ids مصفوفة لا مصفوفة معرفات اللغات من نقطة النهاية /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 لا تفعيل الاستقصاء لتحديثات البحث المباشر. استخدم مع job_id.
lastId رقم لا آخر معرف إعلان مستلم للاستقصاء التدريجي (اختياري).
perPage رقم لا حجم الصفحة المتوقع لاكتشاف النتائج القليلة (12-96).
job_id نص لا معرف مهمة البحث المباشر من 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 للدولة (مثال، "SA" للسعودية).
    └ name نص اسم الدولة بالإنجليزية.
    └ iso_code_3 نص رمز ISO 3166-1 alpha-3 للدولة (مثال، "SAU" للسعودية).
  └ file_size نص الحجم الإجمالي للملف منسق.
  └ icon_url نص رابط صورة أيقونة الإعلان.
  └ landing_url نص رابط صفحة الهبوط.
  └ created_at نص تاريخ إنشاء الإعلان (صيغة Y-m-d).
  └ advertising_networks مصفوفة مصفوفة أسماء شبكات الإعلان.
  └ languages مصفوفة مصفوفة رموز ISO للغات.
  └ operating_systems مصفوفة مصفوفة قيم أنظمة التشغيل.
  └ browsers مصفوفة مصفوفة أسماء المتصفحات.
  └ devices مصفوفة مصفوفة أنواع الأجهزة.
  └ main_image_url نص رابط الصورة الرئيسية للإعلان.
  └ has_video Boolean ما إذا كان الإعلان يحتوي على فيديو.
  └ video_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 كائن مهمة البحث المباشر (موجود عند بدء البحث المباشر أو نشاطه).
  └ type نص معرف نوع البحث المباشر (مثل، 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($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.

بحث إعلانات TikTok

البحث عن إعلانات TikTok مع فلاتر متنوعة. عندما تكون النتائج قليلة، قد تبدأ API بحثاً مباشراً وتعيد scrapingJob للاستقصاء.

إذا كان scrapingJob.needStartPolling يساوي true، قم باستدعاء نفس نقطة النهاية مع isPolling=true و job_id لاستلام عناصر جديدة. إذا كانت الحالة recently_completed أو rejected، لا يتم إنشاء مهمة ولا يجب بدء الاستقصاء.

يبدأ البحث المباشر فقط عند تحديد دولة واحدة بالضبط في مصفوفة countries.

يبدأ البحث المباشر فقط عند توفير كلمة مفتاحية غير فارغة.

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
limit رقم لا عدد العناصر لكل صفحة (10-100). الافتراضي: 10.
offset رقم لا عدد العناصر للتخطي. يستخدم للترقيم. الافتراضي: 0.
keyword نص لا كلمة البحث لتصفية الإعلانات حسب العنوان أو الوصف.
countries مصفوفة لا مصفوفة رموز ISO-2 للدول (مثل، ["US", "GB", "DE"]).
country_ids مصفوفة لا مصفوفة معرفات الدول من نقطة النهاية /api/filters/countries. لها الأولوية على countries.
languages مصفوفة لا مصفوفة رموز ISO للغات (مثل، ["EN", "AR", "DE"]).
lang_ids مصفوفة لا مصفوفة معرفات اللغات من نقطة النهاية /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 لا تفعيل الاستقصاء لتحديثات البحث المباشر. استخدم مع job_id.
lastId رقم لا آخر معرف إعلان مستلم للاستقصاء التدريجي (اختياري).
perPage رقم لا حجم الصفحة المتوقع لاكتشاف النتائج القليلة (12-96).
job_id نص لا معرف مهمة البحث المباشر من 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 للدولة (مثال، "SA" للسعودية).
    └ name نص اسم الدولة بالإنجليزية.
    └ iso_code_3 نص رمز ISO 3166-1 alpha-3 للدولة (مثال، "SAU" للسعودية).
  └ file_size نص الحجم الإجمالي للملف منسق.
  └ icon_url نص رابط صورة أيقونة الإعلان.
  └ landing_url نص رابط صفحة الهبوط.
  └ created_at نص تاريخ إنشاء الإعلان (صيغة Y-m-d).
  └ advertising_networks مصفوفة مصفوفة أسماء شبكات الإعلان.
  └ languages مصفوفة مصفوفة رموز ISO للغات.
  └ operating_systems مصفوفة مصفوفة قيم أنظمة التشغيل.
  └ browsers مصفوفة مصفوفة أسماء المتصفحات.
  └ devices مصفوفة مصفوفة أنواع الأجهزة.
  └ main_image_url نص رابط الصورة الرئيسية للإعلان.
  └ has_video Boolean ما إذا كان الإعلان يحتوي على فيديو.
  └ video_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 كائن مهمة البحث المباشر (موجود عند بدء البحث المباشر أو نشاطه).
  └ type نص معرف نوع البحث المباشر (مثل، 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($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.

تحويل الأموال

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
amount رقم نعم مبلغ التحويل (الحد الأدنى 10 دولار).
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($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>';
    }

استرجاع رصيد الحساب

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
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($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>';
    }

Retrieving a list of white pages

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
search نص لا String for searching by White Page name.
date_from نص لا Start date for filtering (format: Y-m-d). (YYYY-MM-DD)
date_to نص لا End date for filtering (format: Y-m-d). (YYYY-MM-DD)
limit رقم لا Number of items per page (1 to 100). Default: 10.
page رقم لا Page number, starting from 1. Default: 1.
المعلمة نوع البيانات الوصف
status نص حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error").
msg نص رسالة خطأ أو معلومات إضافية عن الطلب.
code رقم رمز الاستجابة، مثال، 200 لطلب ناجح.
data.items مصفوفة Array of user's White Pages.
data.items[].id رقم Unique identifier of the White Page.
data.items[].name نص Name of the White Page.
data.items[].status نص Status value: generating, pending, in_progress, completed, failed, error.
data.items[].status_label نص Translated status description.
data.items[].generator_label نص AI generator name.
data.items[].vertical_label نص Selected niche/vertical name.
data.items[].language_label نص Target language.
data.items[].theme_label نص Selected template/theme name.
data.items[].amount رقم Price charged for generation (e.g., 5.00) or null.
data.items[].can_retry Boolean Whether generation can be retried.
data.items[].can_download Boolean Whether the zip archive is ready to download.
data.items[].error_message نص Localized error reason if generation failed.
data.items[].created_at نص Creation date and time.
<?php

function get_white_pages($apiKey)
    {
        
$ch curl_init('https://spy.house/api/white-pages?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result get_white_pages('YOUR_API_KEY');
    
print_r($result);

Retrieving generator configuration options

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
المعلمة نوع البيانات الوصف
status نص حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error").
msg نص رسالة خطأ أو معلومات إضافية عن الطلب.
code رقم رمز الاستجابة، مثال، 200 لطلب ناجح.
data.generators مصفوفة List of available AI generators for id_generator param.
data.generators[].id رقم Numeric ID of the option.
data.generators[].slug نص Slug/value of the option.
data.generators[].label نص Translated name of the option.
data.verticals مصفوفة List of available niche verticals for id_vertical param.
data.verticals[].id رقم Numeric ID of the option.
data.verticals[].slug نص Slug/value of the option.
data.verticals[].label نص Translated name of the option.
data.languages مصفوفة List of target languages for id_language param.
data.languages[].id رقم Numeric ID of the option.
data.languages[].slug نص Slug/value of the option.
data.languages[].label نص Translated name of the option.
data.themes Object Templates map grouped by id_generator key.
<?php

function get_generator_options($apiKey)
    {
        
$ch curl_init('https://spy.house/api/white-pages/options?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($chcurl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result get_generator_options('YOUR_API_KEY');
    
print_r($result);

Generating a white page

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
name نص نعم Name of the White Page (for reference, max 64 chars).
id_generator رقم نعم Generator ID from options endpoint.
id_vertical رقم نعم Vertical ID from options endpoint.
id_language رقم نعم Language ID from options endpoint.
theme نص نعم Theme slug string corresponding to the selected generator.
wp_domain نص لا Optional target domain name.
wp_company نص لا Optional company name for copy/legal page sections.
wp_phone نص لا Optional contact phone number.
wp_email نص لا Optional contact email address.
wp_keywords نص لا Optional comma-separated keywords to tailor site content.
المعلمة نوع البيانات الوصف
status نص حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error").
msg نص رسالة خطأ أو معلومات إضافية عن الطلب.
code رقم رمز الاستجابة، مثال، 200 لطلب ناجح.
data.id رقم Unique identifier of the White Page.
data.name نص Name of the White Page.
data.status نص Status value: generating, pending, in_progress, completed, failed, error.
data.status_label نص Translated status description.
<?php

function generate_white_page($apiKey$params)
    {
        
$ch curl_init('https://spy.house/api/white-pages/generate?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_POSTTRUE);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($params));
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$params = [
        
'name' => 'My First WhitePage',
        
'id_generator' => 1,
        
'id_vertical' => 2,
        
'id_language' => 1,
        
'theme' => 'travel'
    ];

    
$result generate_white_page('YOUR_API_KEY'$params);
    
print_r($result);

Retrieving generation status

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
المعلمة نوع البيانات الوصف
status نص حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error").
msg نص رسالة خطأ أو معلومات إضافية عن الطلب.
code رقم رمز الاستجابة، مثال، 200 لطلب ناجح.
data.id رقم Unique identifier of the White Page.
data.status نص Status value: generating, pending, in_progress, completed, failed, error.
data.status_label نص Translated status description.
data.can_retry Boolean Whether generation can be retried.
data.can_download Boolean Whether the zip archive is ready to download.
data.error_message نص Localized error reason if generation failed.
<?php

function get_white_page_status($apiKey$id)
    {
        
$ch curl_init('https://spy.house/api/white-pages/' $id '/status?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result get_white_page_status('YOUR_API_KEY'123);
    
print_r($result);

Retrieving download link

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
المعلمة نوع البيانات الوصف
status نص حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error").
msg نص رسالة خطأ أو معلومات إضافية عن الطلب.
code رقم رمز الاستجابة، مثال، 200 لطلب ناجح.
data.download_url نص Temporary authenticated URL to download the zip file.
<?php

function get_white_page_download_url($apiKey$id)
    {
        
$ch curl_init('https://spy.house/api/white-pages/' $id '/download');

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_POSTTRUE);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_build_query(['api_key' => $apiKey]));
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result get_white_page_download_url('YOUR_API_KEY'123);
    
print_r($result);

Downloading white page file

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.

Returns the zip archive payload as binary stream with `Content-Type: application/zip` and `Content-Disposition: attachment` headers.

<?php

function download_white_page_file($apiKey$id$saveToPath)
    {
        
$fp fopen($saveToPath'w+');
        
$ch curl_init('https://spy.house/api/white-pages/' $id '/file');

        
curl_setopt($chCURLOPT_FILE$fp);
        
curl_setopt($chCURLOPT_POSTTRUE);
        
curl_setopt($chCURLOPT_POSTFIELDShttp_build_query(['api_key' => $apiKey]));
        
curl_setopt($chCURLOPT_TIMEOUT300);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
curl_exec($chcurl_close($ch);
        
fclose($fp);
    }

    
download_white_page_file('YOUR_API_KEY'123'/path/to/save/archive.zip');

Deleting a white page

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
المعلمة نوع البيانات الوصف
status نص حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error").
msg نص رسالة خطأ أو معلومات إضافية عن الطلب.
code رقم رمز الاستجابة، مثال، 200 لطلب ناجح.
data.deleted Boolean True if deletion succeeded.
<?php

function delete_white_page($apiKey$id)
    {
        
$ch curl_init('https://spy.house/api/white-pages/' $id '?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_CUSTOMREQUEST'DELETE');
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result delete_white_page('YOUR_API_KEY'123);
    
print_r($result);

Retrying failed generation

رابط الطلب

المعلمة نوع البيانات مطلوب الوصف
api_key نص نعم مفتاح API فريد لمصادقة الطلب.
المعلمة نوع البيانات الوصف
status نص حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error").
msg نص رسالة خطأ أو معلومات إضافية عن الطلب.
code رقم رمز الاستجابة، مثال، 200 لطلب ناجح.
data.id رقم Unique identifier of the White Page.
data.status نص Status value: generating, pending, in_progress, completed, failed, error.
data.generating_label نص Translated label for the new generating status.
<?php

function retry_white_page($apiKey$id)
    {
        
$ch curl_init('https://spy.house/api/white-pages/' $id '/retry?api_key=' $apiKey);

        
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
curl_setopt($chCURLOPT_POSTTRUE);
        
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
        
curl_setopt($chCURLOPT_IPRESOLVECURL_IPRESOLVE_V4);

        
$body curl_exec($ch);
        
curl_close($ch);

        return 
json_decode($bodyTRUE);
    }

    
$result retry_white_page('YOUR_API_KEY'123);
    
print_r($result);