API
Récupérer la liste des langues
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| data | Tableau | Tableau des langues disponibles. |
| └ lang_id | Nombre | Identifiant unique de la langue. |
| └ name | Chaîne | Nom de la langue en anglais. |
| └ iso_code | Chaîne | Code ISO de la langue (ex., "EN" pour anglais, "FR" pour français). |
<?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>';
}
Récupérer la liste des pays
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| data | Tableau | Tableau des pays disponibles. |
| └ country_id | Nombre | Identifiant unique du pays. |
| └ name | Chaîne | Nom du pays en anglais. |
| └ iso_code | Chaîne | Code ISO 3166-1 alpha-2 du pays (ex., "FR" pour France). |
| └ iso_code_3 | Chaîne | Code ISO 3166-1 alpha-3 du pays (ex., "FRA" pour France). |
<?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>';
}
Récupérer la liste des navigateurs
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| data | Tableau | Tableau des navigateurs disponibles. |
| └ browser_id | Nombre | Identifiant unique du navigateur. |
| └ name | Chaîne | Nom du navigateur. |
<?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>';
}
Récupérer la liste des appareils
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| data | Tableau | Tableau des types d'appareils disponibles. |
| └ device_id | Nombre | Identifiant unique du type d'appareil. |
| └ name | Chaîne | Nom d'affichage du type d'appareil. |
| └ value | Chaîne | Valeur du type d'appareil pour les requêtes 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>';
}
Récupérer la liste des systèmes d'exploitation
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| data | Tableau | Tableau des systèmes d'exploitation disponibles. |
| └ os_id | Nombre | Identifiant unique du système d'exploitation. |
| └ name | Chaîne | Nom d'affichage du système d'exploitation. |
| └ value | Chaîne | Valeur du système d'exploitation pour les requêtes 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>';
}
Récupérer la liste des réseaux publicitaires
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| data | Tableau | Tableau des réseaux publicitaires disponibles. |
| └ network_id | Nombre | Identifiant unique du réseau publicitaire. |
| └ name | Chaîne | Nom d'affichage du réseau publicitaire. |
| └ value | Chaîne | Valeur du réseau publicitaire pour les requêtes API. |
| └ logo | Chaîne | URL du logo du réseau publicitaire. |
<?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>';
}
Rechercher des créatifs Push
Recherche de créatifs push avec différents filtres.
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| limit | Nombre | Non | Nombre d'éléments par page (10-100). Par défaut: 10. |
| offset | Nombre | Non | Nombre d'éléments à ignorer. Utilisé pour la pagination. Par défaut: 0. |
| keyword | Chaîne | Non | Mot-clé de recherche pour filtrer les créatifs par titre ou description. |
| countries | Tableau | Non | Tableau de codes ISO-2 de pays (ex., ["US", "GB", "DE"]). |
| country_ids | Tableau | Non | Tableau d'IDs de pays depuis l'endpoint /api/filters/countries. Prioritaire sur countries. |
| languages | Tableau | Non | Tableau de codes ISO de langues (ex., ["EN", "FR", "DE"]). |
| lang_ids | Tableau | Non | Tableau d'IDs de langues depuis l'endpoint /api/filters/languages. Prioritaire sur languages. |
| advertising_networks | Tableau | Non | Tableau de noms de réseaux publicitaires. |
| network_ids | Tableau | Non | Tableau d'IDs de réseaux depuis l'endpoint /api/filters/advertising-networks. Prioritaire sur advertising_networks. |
| browsers | Tableau | Non | Tableau de noms de navigateurs. |
| browser_ids | Tableau | Non | Tableau d'IDs de navigateurs depuis l'endpoint /api/filters/browsers. Prioritaire sur browsers. |
| operating_systems | Tableau | Non | Tableau de valeurs de systèmes d'exploitation (ex., ["windows", "macos", "android"]). |
| devices | Tableau | Non | Tableau de types d'appareils (ex., ["desktop", "mobile", "tablet"]). |
| date_from | Chaîne | Non | Date de début pour le filtrage (format: Y-m-d, ex., "2025-01-01"). |
| date_to | Chaîne | Non | Date de fin pour le filtrage (format: Y-m-d, ex., "2025-12-31"). |
| sort_by | Chaîne | Non | Champ de tri: creation, activity, popularity. |
| sort_order | Chaîne | Non | Direction du tri: asc ou desc. |
| only_adult | Boolean | Non | Filtrer uniquement le contenu adulte. Booléen (true/false). |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| data | Object | Tableau de données de flux correspondant à la requête. |
| └ format | Chaîne | Format du créatif (push, inpage, facebook, tiktok). |
| └ items | Tableau | Tableau d'objets créatifs. |
| └ id | Nombre | Identifiant unique du créatif. |
| └ title | Chaîne | Texte du titre du créatif. |
| └ description | Chaîne | Texte de description du créatif. |
| └ category | Chaîne | Format/catégorie du créatif (push, inpage, facebook, tiktok). |
| └ country | Object | Objet d'informations sur le pays (code, name, iso_code_3). |
| └ code | Chaîne | Code ISO 3166-1 alpha-2 du pays (ex., "FR" pour France). |
| └ name | Chaîne | Nom du pays en anglais. |
| └ iso_code_3 | Chaîne | Code ISO 3166-1 alpha-3 du pays (ex., "FRA" pour France). |
| └ file_size | Chaîne | Taille totale du fichier formatée. |
| └ icon_url | Chaîne | URL de l'image d'icône du créatif. |
| └ landing_url | Chaîne | URL de la page de destination. |
| └ created_at | Chaîne | Date de création du créatif (format Y-m-d). |
| └ advertising_networks | Tableau | Tableau de noms de réseaux publicitaires. |
| └ languages | Tableau | Tableau de codes ISO de langues. |
| └ operating_systems | Tableau | Tableau de valeurs de systèmes d'exploitation. |
| └ browsers | Tableau | Tableau de noms de navigateurs. |
| └ devices | Tableau | Tableau de types d'appareils. |
| └ main_image_url | Chaîne | URL de l'image principale du créatif. |
| └ is_adult | Boolean | Si le créatif contient du contenu adulte. |
| └ is_active | Boolean | Si le créatif est actuellement actif. |
| └ pagination | Object | Objet d'informations de pagination. |
| └ total | Nombre | Nombre total de créatifs correspondant aux filtres. |
| └ limit | Nombre | Nombre d'éléments par page. |
| └ offset | Nombre | Décalage actuel. |
| └ has_more | Boolean | S'il y a plus d'éléments disponibles. |
| └ returned_count | Nombre | Nombre d'éléments retournés dans cette réponse. |
| └ filters_applied | Object | Objet contenant les filtres appliqués. |
| └ timestamp | Chaîne | Horodatage de la réponse au format ISO 8601. |
<?php
function searchPushCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/push');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
];
$result = searchPushCreatives($params);
if ($result && $result['status'] === 'success') {
foreach ($result['data']['items'] as $creative) {
echo "ID: " . $creative['id'] . " - " . $creative['title'] . "\n";
}
echo "Total: " . $result['data']['pagination']['total'] . "\n";
}
// Example 2: Search with ISO codes/names filters
$paramsWithFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US', 'GB', 'DE'], // ISO-2 codes
'languages' => ['EN'], // ISO codes
'browsers' => ['Chrome', 'Firefox'], // Browser names
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$filteredResult = searchPushCreatives($paramsWithFilters);
// Example 3: Search with ID-based filters (recommended)
// Use IDs from /api/filters/* endpoints for better performance
$paramsWithIds = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'country_ids' => [1, 2, 3], // IDs from /api/filters/countries
'lang_ids' => [1], // IDs from /api/filters/languages
'network_ids' => [5, 10], // IDs from /api/filters/advertising-networks
'browser_ids' => [1, 2], // IDs from /api/filters/browsers
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$resultWithIds = searchPushCreatives($paramsWithIds);
// Note: ID-based filters take precedence over name-based filters
// If both country_ids and countries are provided, country_ids will be used
Rechercher des créatifs Inpage
Recherche de créatifs inpage avec différents filtres.
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| limit | Nombre | Non | Nombre d'éléments par page (10-100). Par défaut: 10. |
| offset | Nombre | Non | Nombre d'éléments à ignorer. Utilisé pour la pagination. Par défaut: 0. |
| keyword | Chaîne | Non | Mot-clé de recherche pour filtrer les créatifs par titre ou description. |
| countries | Tableau | Non | Tableau de codes ISO-2 de pays (ex., ["US", "GB", "DE"]). |
| country_ids | Tableau | Non | Tableau d'IDs de pays depuis l'endpoint /api/filters/countries. Prioritaire sur countries. |
| languages | Tableau | Non | Tableau de codes ISO de langues (ex., ["EN", "FR", "DE"]). |
| lang_ids | Tableau | Non | Tableau d'IDs de langues depuis l'endpoint /api/filters/languages. Prioritaire sur languages. |
| advertising_networks | Tableau | Non | Tableau de noms de réseaux publicitaires. |
| network_ids | Tableau | Non | Tableau d'IDs de réseaux depuis l'endpoint /api/filters/advertising-networks. Prioritaire sur advertising_networks. |
| browsers | Tableau | Non | Tableau de noms de navigateurs. |
| browser_ids | Tableau | Non | Tableau d'IDs de navigateurs depuis l'endpoint /api/filters/browsers. Prioritaire sur browsers. |
| operating_systems | Tableau | Non | Tableau de valeurs de systèmes d'exploitation (ex., ["windows", "macos", "android"]). |
| devices | Tableau | Non | Tableau de types d'appareils (ex., ["desktop", "mobile", "tablet"]). |
| date_from | Chaîne | Non | Date de début pour le filtrage (format: Y-m-d, ex., "2025-01-01"). |
| date_to | Chaîne | Non | Date de fin pour le filtrage (format: Y-m-d, ex., "2025-12-31"). |
| sort_by | Chaîne | Non | Champ de tri: creation, activity, popularity. |
| sort_order | Chaîne | Non | Direction du tri: asc ou desc. |
| only_adult | Boolean | Non | Filtrer uniquement le contenu adulte. Booléen (true/false). |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| data | Object | Tableau de données de flux correspondant à la requête. |
| └ format | Chaîne | Format du créatif (push, inpage, facebook, tiktok). |
| └ items | Tableau | Tableau d'objets créatifs. |
| └ id | Nombre | Identifiant unique du créatif. |
| └ title | Chaîne | Texte du titre du créatif. |
| └ description | Chaîne | Texte de description du créatif. |
| └ category | Chaîne | Format/catégorie du créatif (push, inpage, facebook, tiktok). |
| └ country | Object | Objet d'informations sur le pays (code, name, iso_code_3). |
| └ code | Chaîne | Code ISO 3166-1 alpha-2 du pays (ex., "FR" pour France). |
| └ name | Chaîne | Nom du pays en anglais. |
| └ iso_code_3 | Chaîne | Code ISO 3166-1 alpha-3 du pays (ex., "FRA" pour France). |
| └ file_size | Chaîne | Taille totale du fichier formatée. |
| └ icon_url | Chaîne | URL de l'image d'icône du créatif. |
| └ landing_url | Chaîne | URL de la page de destination. |
| └ created_at | Chaîne | Date de création du créatif (format Y-m-d). |
| └ advertising_networks | Tableau | Tableau de noms de réseaux publicitaires. |
| └ languages | Tableau | Tableau de codes ISO de langues. |
| └ operating_systems | Tableau | Tableau de valeurs de systèmes d'exploitation. |
| └ browsers | Tableau | Tableau de noms de navigateurs. |
| └ devices | Tableau | Tableau de types d'appareils. |
| └ main_image_url | Chaîne | URL de l'image principale du créatif. |
| └ is_adult | Boolean | Si le créatif contient du contenu adulte. |
| └ is_active | Boolean | Si le créatif est actuellement actif. |
| └ pagination | Object | Objet d'informations de pagination. |
| └ total | Nombre | Nombre total de créatifs correspondant aux filtres. |
| └ limit | Nombre | Nombre d'éléments par page. |
| └ offset | Nombre | Décalage actuel. |
| └ has_more | Boolean | S'il y a plus d'éléments disponibles. |
| └ returned_count | Nombre | Nombre d'éléments retournés dans cette réponse. |
| └ filters_applied | Object | Objet contenant les filtres appliqués. |
| └ timestamp | Chaîne | Horodatage de la réponse au format ISO 8601. |
<?php
function searchInpageCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/inpage');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
];
$result = searchInpageCreatives($params);
if ($result && $result['status'] === 'success') {
foreach ($result['data']['items'] as $creative) {
echo "ID: " . $creative['id'] . " - " . $creative['title'] . "\n";
}
echo "Total: " . $result['data']['pagination']['total'] . "\n";
}
// Example 2: Search with ISO codes/names filters
$paramsWithFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US', 'GB', 'DE'], // ISO-2 codes
'languages' => ['EN'], // ISO codes
'browsers' => ['Chrome', 'Firefox'], // Browser names
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$filteredResult = searchInpageCreatives($paramsWithFilters);
// Example 3: Search with ID-based filters (recommended)
// Use IDs from /api/filters/* endpoints for better performance
$paramsWithIds = [
'api_key' => 'YOUR_API_KEY',
'limit' => 50,
'offset' => 0,
'keyword' => 'casino',
'country_ids' => [1, 2, 3], // IDs from /api/filters/countries
'lang_ids' => [1], // IDs from /api/filters/languages
'network_ids' => [5, 10], // IDs from /api/filters/advertising-networks
'browser_ids' => [1, 2], // IDs from /api/filters/browsers
'sort_by' => 'creation',
'sort_order' => 'desc',
];
$resultWithIds = searchInpageCreatives($paramsWithIds);
// Note: ID-based filters take precedence over name-based filters
// If both country_ids and countries are provided, country_ids will be used
Rechercher des créatifs Facebook
Recherche de créatifs Facebook avec différents filtres. Lorsque les résultats sont peu nombreux, l'API peut démarrer une recherche en direct et renvoyer un scrapingJob pour le polling.
Si scrapingJob.needStartPolling est true, appelez le même endpoint avec isPolling=true et job_id pour recevoir de nouveaux éléments. Si le statut est recently_completed ou rejected, aucun job n'est créé et le polling ne doit pas être démarré.
La recherche en direct ne démarre que lorsqu'exactement un pays est spécifié dans le tableau countries.
La recherche en direct ne démarre que lorsqu'un mot-clé non vide est fourni.
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| limit | Nombre | Non | Nombre d'éléments par page (10-100). Par défaut: 10. |
| offset | Nombre | Non | Nombre d'éléments à ignorer. Utilisé pour la pagination. Par défaut: 0. |
| keyword | Chaîne | Non | Mot-clé de recherche pour filtrer les créatifs par titre ou description. |
| countries | Tableau | Non | Tableau de codes ISO-2 de pays (ex., ["US", "GB", "DE"]). |
| country_ids | Tableau | Non | Tableau d'IDs de pays depuis l'endpoint /api/filters/countries. Prioritaire sur countries. |
| languages | Tableau | Non | Tableau de codes ISO de langues (ex., ["EN", "FR", "DE"]). |
| lang_ids | Tableau | Non | Tableau d'IDs de langues depuis l'endpoint /api/filters/languages. Prioritaire sur languages. |
| date_from | Chaîne | Non | Date de début pour le filtrage (format: Y-m-d, ex., "2025-01-01"). |
| date_to | Chaîne | Non | Date de fin pour le filtrage (format: Y-m-d, ex., "2025-12-31"). |
| sort_by | Chaîne | Non | Champ de tri: creation, activity, popularity. |
| sort_order | Chaîne | Non | Direction du tri: asc ou desc. |
| status | Chaîne | Non | Filtre de statut publicitaire: ALL, ACTIVE, INACTIVE. |
| media_type | Chaîne | Non | Filtre de type de média: ALL, IMAGE, VIDEO. |
| search_type | Chaîne | Non | Type de recherche: keyword_unordered, keyword_exact_phrase. |
| isPolling | Boolean | Non | Activer le polling pour les mises à jour de recherche en direct. À utiliser avec job_id. |
| lastId | Nombre | Non | Dernier ID de créatif reçu pour le polling incrémentiel (optionnel). |
| perPage | Nombre | Non | Taille de page attendue pour la détection de résultats faibles (12-96). |
| job_id | Chaîne | Non | ID de job de recherche en direct depuis scrapingJob. Requis quand isPolling=true. |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| data | Object | Tableau de données de flux correspondant à la requête. |
| └ format | Chaîne | Format du créatif (push, inpage, facebook, tiktok). |
| └ items | Tableau | Tableau d'objets créatifs. |
| └ id | Nombre | Identifiant unique du créatif. |
| └ title | Chaîne | Texte du titre du créatif. |
| └ description | Chaîne | Texte de description du créatif. |
| └ category | Chaîne | Format/catégorie du créatif (push, inpage, facebook, tiktok). |
| └ country | Object | Objet d'informations sur le pays (code, name, iso_code_3). |
| └ code | Chaîne | Code ISO 3166-1 alpha-2 du pays (ex., "FR" pour France). |
| └ name | Chaîne | Nom du pays en anglais. |
| └ iso_code_3 | Chaîne | Code ISO 3166-1 alpha-3 du pays (ex., "FRA" pour France). |
| └ file_size | Chaîne | Taille totale du fichier formatée. |
| └ icon_url | Chaîne | URL de l'image d'icône du créatif. |
| └ landing_url | Chaîne | URL de la page de destination. |
| └ created_at | Chaîne | Date de création du créatif (format Y-m-d). |
| └ advertising_networks | Tableau | Tableau de noms de réseaux publicitaires. |
| └ languages | Tableau | Tableau de codes ISO de langues. |
| └ operating_systems | Tableau | Tableau de valeurs de systèmes d'exploitation. |
| └ browsers | Tableau | Tableau de noms de navigateurs. |
| └ devices | Tableau | Tableau de types d'appareils. |
| └ main_image_url | Chaîne | URL de l'image principale du créatif. |
| └ has_video | Boolean | Si le créatif contient une vidéo. |
| └ video_url | Chaîne | URL de la vidéo (si has_video est true). |
| └ video_duration | Nombre | Durée de la vidéo en secondes (si applicable). |
| └ social_likes | Nombre | Nombre de likes (pour les publicités sociales). |
| └ social_comments | Nombre | Nombre de commentaires (pour les publicités sociales). |
| └ social_shares | Nombre | Nombre de partages (pour les publicités sociales). |
| └ is_adult | Boolean | Si le créatif contient du contenu adulte. |
| └ is_active | Boolean | Si le créatif est actuellement actif. |
| └ pagination | Object | Objet d'informations de pagination. |
| └ total | Nombre | Nombre total de créatifs correspondant aux filtres. |
| └ limit | Nombre | Nombre d'éléments par page. |
| └ offset | Nombre | Décalage actuel. |
| └ has_more | Boolean | S'il y a plus d'éléments disponibles. |
| └ returned_count | Nombre | Nombre d'éléments retournés dans cette réponse. |
| └ filters_applied | Object | Objet contenant les filtres appliqués. |
| └ scrapingJob | Object | Objet de job de recherche en direct (présent quand la recherche en direct est démarrée ou active). |
| └ type | Chaîne | Identifiant de type de recherche en direct (ex., facebook_search). |
| └ status | Chaîne | Statut du job: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected. |
| └ needStartPolling | Boolean | Si le client doit commencer le polling pour les mises à jour. |
| └ needStopPolling | Boolean | Si le client doit arrêter le polling. |
| └ job_id | Chaîne | Identifiant de job pour le polling (absent quand le statut est recently_completed ou rejected). |
| └ polling_interval_seconds | Nombre | Intervalle de polling recommandé en secondes. |
| └ estimatedDuration | Nombre | Durée estimée en secondes (0 quand completed ou recently_completed). |
| └ message | Chaîne | Message de statut supplémentaire du serveur ou du parser. |
| └ retry_after_seconds | Nombre | Combien attendre avant de réessayer quand recently_completed/rejected (si fourni). |
| └ error | Chaîne | Détails de l'erreur (présent quand le statut est failed ou error). |
| └ timestamp | Chaîne | Horodatage de la réponse au format ISO 8601. |
<?php
function searchFacebookCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/facebook');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
];
// Example 2: Social filters (status/media_type/search_type)
$paramsWithSocialFilters = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'status' => 'ACTIVE',
'media_type' => 'VIDEO',
'search_type' => 'keyword_unordered',
];
$result = searchFacebookCreatives($paramsWithSocialFilters);
// Example 3: Live search polling (when scrapingJob.needStartPolling is true)
$initial = searchFacebookCreatives([
'api_key' => 'YOUR_API_KEY',
'limit' => 10,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'status' => 'ACTIVE',
]);
if ($initial && !empty($initial['data']['scrapingJob'])) {
$scrapingJob = $initial['data']['scrapingJob'];
if (!empty($scrapingJob['needStartPolling']) && !empty($scrapingJob['job_id'])) {
$pollingResult = searchFacebookCreatives([
'api_key' => 'YOUR_API_KEY',
'isPolling' => true,
'job_id' => $scrapingJob['job_id'],
'limit' => 10,
'offset' => 0,
]);
}
}
// Note: If scrapingJob.status is "recently_completed" or "rejected",
// the job will not be created and polling should not be started.
Rechercher des créatifs TikTok
Recherche de créatifs TikTok avec différents filtres. Lorsque les résultats sont peu nombreux, l'API peut démarrer une recherche en direct et renvoyer un scrapingJob pour le polling.
Si scrapingJob.needStartPolling est true, appelez le même endpoint avec isPolling=true et job_id pour recevoir de nouveaux éléments. Si le statut est recently_completed ou rejected, aucun job n'est créé et le polling ne doit pas être démarré.
La recherche en direct ne démarre que lorsqu'exactement un pays est spécifié dans le tableau countries.
La recherche en direct ne démarre que lorsqu'un mot-clé non vide est fourni.
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| limit | Nombre | Non | Nombre d'éléments par page (10-100). Par défaut: 10. |
| offset | Nombre | Non | Nombre d'éléments à ignorer. Utilisé pour la pagination. Par défaut: 0. |
| keyword | Chaîne | Non | Mot-clé de recherche pour filtrer les créatifs par titre ou description. |
| countries | Tableau | Non | Tableau de codes ISO-2 de pays (ex., ["US", "GB", "DE"]). |
| country_ids | Tableau | Non | Tableau d'IDs de pays depuis l'endpoint /api/filters/countries. Prioritaire sur countries. |
| languages | Tableau | Non | Tableau de codes ISO de langues (ex., ["EN", "FR", "DE"]). |
| lang_ids | Tableau | Non | Tableau d'IDs de langues depuis l'endpoint /api/filters/languages. Prioritaire sur languages. |
| date_from | Chaîne | Non | Date de début pour le filtrage (format: Y-m-d, ex., "2025-01-01"). |
| date_to | Chaîne | Non | Date de fin pour le filtrage (format: Y-m-d, ex., "2025-12-31"). |
| sort_by | Chaîne | Non | Champ de tri: creation, activity, popularity. |
| sort_order | Chaîne | Non | Direction du tri: asc ou desc. |
| video_duration | Chaîne | Non | Filtre de durée vidéo TikTok: ALL, SHORT, MEDIUM, LONG. |
| isPolling | Boolean | Non | Activer le polling pour les mises à jour de recherche en direct. À utiliser avec job_id. |
| lastId | Nombre | Non | Dernier ID de créatif reçu pour le polling incrémentiel (optionnel). |
| perPage | Nombre | Non | Taille de page attendue pour la détection de résultats faibles (12-96). |
| job_id | Chaîne | Non | ID de job de recherche en direct depuis scrapingJob. Requis quand isPolling=true. |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| data | Object | Tableau de données de flux correspondant à la requête. |
| └ format | Chaîne | Format du créatif (push, inpage, facebook, tiktok). |
| └ items | Tableau | Tableau d'objets créatifs. |
| └ id | Nombre | Identifiant unique du créatif. |
| └ title | Chaîne | Texte du titre du créatif. |
| └ description | Chaîne | Texte de description du créatif. |
| └ category | Chaîne | Format/catégorie du créatif (push, inpage, facebook, tiktok). |
| └ country | Object | Objet d'informations sur le pays (code, name, iso_code_3). |
| └ code | Chaîne | Code ISO 3166-1 alpha-2 du pays (ex., "FR" pour France). |
| └ name | Chaîne | Nom du pays en anglais. |
| └ iso_code_3 | Chaîne | Code ISO 3166-1 alpha-3 du pays (ex., "FRA" pour France). |
| └ file_size | Chaîne | Taille totale du fichier formatée. |
| └ icon_url | Chaîne | URL de l'image d'icône du créatif. |
| └ landing_url | Chaîne | URL de la page de destination. |
| └ created_at | Chaîne | Date de création du créatif (format Y-m-d). |
| └ advertising_networks | Tableau | Tableau de noms de réseaux publicitaires. |
| └ languages | Tableau | Tableau de codes ISO de langues. |
| └ operating_systems | Tableau | Tableau de valeurs de systèmes d'exploitation. |
| └ browsers | Tableau | Tableau de noms de navigateurs. |
| └ devices | Tableau | Tableau de types d'appareils. |
| └ main_image_url | Chaîne | URL de l'image principale du créatif. |
| └ has_video | Boolean | Si le créatif contient une vidéo. |
| └ video_url | Chaîne | URL de la vidéo (si has_video est true). |
| └ video_duration | Nombre | Durée de la vidéo en secondes (si applicable). |
| └ social_likes | Nombre | Nombre de likes (pour les publicités sociales). |
| └ social_comments | Nombre | Nombre de commentaires (pour les publicités sociales). |
| └ social_shares | Nombre | Nombre de partages (pour les publicités sociales). |
| └ is_adult | Boolean | Si le créatif contient du contenu adulte. |
| └ is_active | Boolean | Si le créatif est actuellement actif. |
| └ pagination | Object | Objet d'informations de pagination. |
| └ total | Nombre | Nombre total de créatifs correspondant aux filtres. |
| └ limit | Nombre | Nombre d'éléments par page. |
| └ offset | Nombre | Décalage actuel. |
| └ has_more | Boolean | S'il y a plus d'éléments disponibles. |
| └ returned_count | Nombre | Nombre d'éléments retournés dans cette réponse. |
| └ filters_applied | Object | Objet contenant les filtres appliqués. |
| └ scrapingJob | Object | Objet de job de recherche en direct (présent quand la recherche en direct est démarrée ou active). |
| └ type | Chaîne | Identifiant de type de recherche en direct (ex., facebook_search). |
| └ status | Chaîne | Statut du job: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected. |
| └ needStartPolling | Boolean | Si le client doit commencer le polling pour les mises à jour. |
| └ needStopPolling | Boolean | Si le client doit arrêter le polling. |
| └ job_id | Chaîne | Identifiant de job pour le polling (absent quand le statut est recently_completed ou rejected). |
| └ polling_interval_seconds | Nombre | Intervalle de polling recommandé en secondes. |
| └ estimatedDuration | Nombre | Durée estimée en secondes (0 quand completed ou recently_completed). |
| └ message | Chaîne | Message de statut supplémentaire du serveur ou du parser. |
| └ retry_after_seconds | Nombre | Combien attendre avant de réessayer quand recently_completed/rejected (si fourni). |
| └ error | Chaîne | Détails de l'erreur (présent quand le statut est failed ou error). |
| └ timestamp | Chaîne | Horodatage de la réponse au format ISO 8601. |
<?php
function searchTikTokCreatives($params = [])
{
$ch = curl_init('https://spy.house/api/search/tiktok');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$body = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (!empty($info['http_code']) && $info['http_code'] == 200) {
return json_decode($body, TRUE);
}
return null;
}
// Example 1: Basic search with API key
$params = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
];
// Example 2: TikTok filter (video_duration)
$paramsWithVideoDuration = [
'api_key' => 'YOUR_API_KEY',
'limit' => 20,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
'video_duration' => 'SHORT',
];
$result = searchTikTokCreatives($paramsWithVideoDuration);
// Example 3: Live search polling (when scrapingJob.needStartPolling is true)
$initial = searchTikTokCreatives([
'api_key' => 'YOUR_API_KEY',
'limit' => 10,
'offset' => 0,
'keyword' => 'casino',
'countries' => ['US'],
]);
if ($initial && !empty($initial['data']['scrapingJob'])) {
$scrapingJob = $initial['data']['scrapingJob'];
if (!empty($scrapingJob['needStartPolling']) && !empty($scrapingJob['job_id'])) {
$pollingResult = searchTikTokCreatives([
'api_key' => 'YOUR_API_KEY',
'isPolling' => true,
'job_id' => $scrapingJob['job_id'],
'limit' => 10,
'offset' => 0,
]);
}
}
// Note: If scrapingJob.status is "recently_completed" or "rejected",
// the job will not be created and polling should not be started.
Transférer des fonds
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| amount | Nombre | Oui | Montant du transfert (minimum 10 USD). |
| Chaîne | Oui | Email du destinataire du transfert. Doit être valide. |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| transaction_number | Chaîne | Numéro de transaction unique associé au transfert. |
<?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>';
}
Récupérer le solde du compte
URL de requête
| Paramètre | Type de données | Requis | Description |
|---|---|---|---|
| api_key | Chaîne | Oui | Clé API unique pour l'authentification des requêtes. |
| Paramètre | Type de données | Description |
|---|---|---|
| status | Chaîne | Champ indiquant l'exécution réussie ("success") ou une erreur ("error"). |
| msg | Chaîne | Message d'erreur ou informations supplémentaires sur la requête. |
| code | Nombre | Code de réponse, ex., 200 pour une requête réussie. |
| balance | Nombre | Solde actuel du compte utilisateur. |
<?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>';
}