FR FR
Connexion

API

Pour accéder à notre API, contactez notre service d'assistance via Telegram au lien: @Spy_House

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

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

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

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

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

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

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($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

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($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

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($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.

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($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.

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).
email 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($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>';
    }

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