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

بحث إعلانات 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>';
    }