API
استرجاع قائمة اللغات
رابط الطلب
| المعلمة | نوع البيانات | مطلوب | الوصف |
|---|---|---|---|
| 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($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
استرجاع قائمة الدول
رابط الطلب
| المعلمة | نوع البيانات | مطلوب | الوصف |
|---|---|---|---|
| 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($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
استرجاع قائمة المتصفحات
رابط الطلب
| المعلمة | نوع البيانات | مطلوب | الوصف |
|---|---|---|---|
| api_key | نص | نعم | مفتاح API فريد لمصادقة الطلب. |
| المعلمة | نوع البيانات | الوصف |
|---|---|---|
| status | نص | حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error"). |
| msg | نص | رسالة خطأ أو معلومات إضافية عن الطلب. |
| code | رقم | رمز الاستجابة، مثال، 200 لطلب ناجح. |
| data | مصفوفة | مصفوفة المتصفحات المتاحة. |
| └ browser_id | رقم | معرف المتصفح الفريد. |
| └ name | نص | اسم المتصفح. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/browsers');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
استرجاع قائمة الأجهزة
رابط الطلب
| المعلمة | نوع البيانات | مطلوب | الوصف |
|---|---|---|---|
| api_key | نص | نعم | مفتاح API فريد لمصادقة الطلب. |
| المعلمة | نوع البيانات | الوصف |
|---|---|---|
| status | نص | حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error"). |
| msg | نص | رسالة خطأ أو معلومات إضافية عن الطلب. |
| code | رقم | رمز الاستجابة، مثال، 200 لطلب ناجح. |
| data | مصفوفة | مصفوفة أنواع الأجهزة المتاحة. |
| └ device_id | رقم | معرف نوع الجهاز الفريد. |
| └ name | نص | اسم العرض لنوع الجهاز. |
| └ value | نص | قيمة نوع الجهاز لطلبات API. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/devices');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
استرجاع قائمة أنظمة التشغيل
رابط الطلب
| المعلمة | نوع البيانات | مطلوب | الوصف |
|---|---|---|---|
| api_key | نص | نعم | مفتاح API فريد لمصادقة الطلب. |
| المعلمة | نوع البيانات | الوصف |
|---|---|---|
| status | نص | حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error"). |
| msg | نص | رسالة خطأ أو معلومات إضافية عن الطلب. |
| code | رقم | رمز الاستجابة، مثال، 200 لطلب ناجح. |
| data | مصفوفة | مصفوفة أنظمة التشغيل المتاحة. |
| └ os_id | رقم | معرف نظام التشغيل الفريد. |
| └ name | نص | اسم العرض لنظام التشغيل. |
| └ value | نص | قيمة نظام التشغيل لطلبات API. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/filters/operating_systems');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
استرجاع قائمة شبكات الإعلان
رابط الطلب
| المعلمة | نوع البيانات | مطلوب | الوصف |
|---|---|---|---|
| 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($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = ['api_key' => 'YOUR_API_KEY'];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
بحث إعلانات Push
البحث عن إعلانات push مع فلاتر متنوعة.
رابط الطلب
| المعلمة | نوع البيانات | مطلوب | الوصف |
|---|---|---|---|
| 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($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
];
$result = searchPushCreatives($params);
if ($result && $result['status'] === 'success') {
foreach ($result['data']['items'] as $creative) {
echo "ID: " . $creative['id'] . " - " . $creative['title'] . "\n";
}
echo "Total: " . $result['data']['pagination']['total'] . "\n";
}
// Example 2: Search with ISO codes/names filters
$paramsWithFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US', 'GB', 'DE'], // ISO-2 codes
'languages' => ['EN'], // ISO codes
'browsers' => ['Chrome', 'Firefox'], // Browser names
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$filteredResult = searchPushCreatives($paramsWithFilters);
// Example 3: Search with ID-based filters (recommended)
// Use IDs from /api/filters/* endpoints for better performance
$paramsWithIds = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'country_ids' => [1, 2, 3], // IDs from /api/filters/countries
'lang_ids' => [1], // IDs from /api/filters/languages
'network_ids' => [5, 10], // IDs from /api/filters/advertising-networks
'browser_ids' => [1, 2], // IDs from /api/filters/browsers
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$resultWithIds = searchPushCreatives($paramsWithIds);
// Note: ID-based filters take precedence over name-based filters
// If both country_ids and countries are provided, country_ids will be used
بحث إعلانات Inpage
البحث عن إعلانات inpage مع فلاتر متنوعة.
رابط الطلب
| المعلمة | نوع البيانات | مطلوب | الوصف |
|---|---|---|---|
| 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($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
];
$result = searchInpageCreatives($params);
if ($result && $result['status'] === 'success') {
foreach ($result['data']['items'] as $creative) {
echo "ID: " . $creative['id'] . " - " . $creative['title'] . "\n";
}
echo "Total: " . $result['data']['pagination']['total'] . "\n";
}
// Example 2: Search with ISO codes/names filters
$paramsWithFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US', 'GB', 'DE'], // ISO-2 codes
'languages' => ['EN'], // ISO codes
'browsers' => ['Chrome', 'Firefox'], // Browser names
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$filteredResult = searchInpageCreatives($paramsWithFilters);
// Example 3: Search with ID-based filters (recommended)
// Use IDs from /api/filters/* endpoints for better performance
$paramsWithIds = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'country_ids' => [1, 2, 3], // IDs from /api/filters/countries
'lang_ids' => [1], // IDs from /api/filters/languages
'network_ids' => [5, 10], // IDs from /api/filters/advertising-networks
'browser_ids' => [1, 2], // IDs from /api/filters/browsers
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$resultWithIds = searchInpageCreatives($paramsWithIds);
// Note: ID-based filters take precedence over name-based filters
// If both country_ids and countries are provided, country_ids will be used
بحث إعلانات Facebook
البحث عن إعلانات Facebook مع فلاتر متنوعة. عندما تكون النتائج قليلة، قد تبدأ API بحثاً مباشراً وتعيد 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($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
];
// Example 2: Social filters (status/media_type/search_type)
$paramsWithSocialFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'status' => 'ACTIVE',
'media_type' => 'VIDEO',
'search_type' => 'keyword_unordered',
];
$result = searchFacebookCreatives($paramsWithSocialFilters);
// Example 3: Live search polling (when scrapingJob.needStartPolling is true)
$initial = searchFacebookCreatives([
'api_key' => 'YOUR_API_KEY',
'limit' => 10,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'status' => 'ACTIVE',
]);
if ($initial && !empty($initial['data']['scrapingJob'])) {
$scrapingJob = $initial['data']['scrapingJob'];
if (!empty($scrapingJob['needStartPolling']) && !empty($scrapingJob['job_id'])) {
$pollingResult = searchFacebookCreatives([
'api_key' => 'YOUR_API_KEY',
'isPolling' => true,
'job_id' => $scrapingJob['job_id'],
'limit' => 10,
'offset' => 0,
]);
}
}
// Note: If scrapingJob.status is "recently_completed" or "rejected",
// the job will not be created and polling should not be started.
بحث إعلانات TikTok
البحث عن إعلانات TikTok مع فلاتر متنوعة. عندما تكون النتائج قليلة، قد تبدأ API بحثاً مباشراً وتعيد 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($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
];
// Example 2: TikTok filter (video_duration)
$paramsWithVideoDuration = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'video_duration' => 'SHORT',
];
$result = searchTikTokCreatives($paramsWithVideoDuration);
// Example 3: Live search polling (when scrapingJob.needStartPolling is true)
$initial = searchTikTokCreatives([
'api_key' => 'YOUR_API_KEY',
'limit' => 10,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
]);
if ($initial && !empty($initial['data']['scrapingJob'])) {
$scrapingJob = $initial['data']['scrapingJob'];
if (!empty($scrapingJob['needStartPolling']) && !empty($scrapingJob['job_id'])) {
$pollingResult = searchTikTokCreatives([
'api_key' => 'YOUR_API_KEY',
'isPolling' => true,
'job_id' => $scrapingJob['job_id'],
'limit' => 10,
'offset' => 0,
]);
}
}
// Note: If scrapingJob.status is "recently_completed" or "rejected",
// the job will not be created and polling should not be started.
تحويل الأموال
رابط الطلب
| المعلمة | نوع البيانات | مطلوب | الوصف |
|---|---|---|---|
| api_key | نص | نعم | مفتاح API فريد لمصادقة الطلب. |
| amount | رقم | نعم | مبلغ التحويل (الحد الأدنى 10 دولار). |
| نص | نعم | البريد الإلكتروني للمستلم. يجب أن يكون صالحاً. |
| المعلمة | نوع البيانات | الوصف |
|---|---|---|
| status | نص | حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error"). |
| msg | نص | رسالة خطأ أو معلومات إضافية عن الطلب. |
| code | رقم | رمز الاستجابة، مثال، 200 لطلب ناجح. |
| transaction_number | نص | رقم المعاملة الفريد المرتبط بالتحويل. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/accounts/transfer_funds');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = [
'api_key' => 'YOUR_API_KEY',
'amount' => 100,
'email' => '[email protected]'
];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}
استرجاع رصيد الحساب
رابط الطلب
| المعلمة | نوع البيانات | مطلوب | الوصف |
|---|---|---|---|
| api_key | نص | نعم | مفتاح API فريد لمصادقة الطلب. |
| المعلمة | نوع البيانات | الوصف |
|---|---|---|
| status | نص | حقل يشير إلى التنفيذ الناجح للطلب ("success") أو خطأ ("error"). |
| msg | نص | رسالة خطأ أو معلومات إضافية عن الطلب. |
| code | رقم | رمز الاستجابة، مثال، 200 لطلب ناجح. |
| balance | رقم | رصيد حساب المستخدم الحالي. |
<?php
function api_request($data = [])
{
$ch = curl_init('https://spy.house/api/accounts/balance');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ( ! empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
}
$body_request = [
'api_key' => 'YOUR_API_KEY'
];
$api_request = api_request($body_request);
if ( ! empty($api_request['status'])) {
echo '<pre>';
print_r($api_request);
echo '</pre>';
}