ES ES
Iniciar sesión

API

Para obtener acceso a nuestra API, contacte a nuestro servicio de soporte a través de Telegram en el enlace: @Spy_House

Obtener lista de idiomas

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
data Array Array de idiomas disponibles.
└ lang_id Número Identificador único del idioma.
└ name Cadena Nombre del idioma en inglés.
└ iso_code Cadena Código ISO del idioma (ej., "EN" para inglés, "ES" para español).
<?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>';
    }

Obtener lista de países

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
data Array Array de países disponibles.
└ country_id Número Identificador único del país.
└ name Cadena Nombre del país en inglés.
└ iso_code Cadena Código ISO 3166-1 alpha-2 del país (ej., "ES" para España).
└ iso_code_3 Cadena Código ISO 3166-1 alpha-3 del país (ej., "ESP" para España).
<?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>';
    }

Obtener lista de navegadores

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
data Array Array de navegadores disponibles.
└ browser_id Número Identificador único del navegador.
└ name Cadena Nombre del navegador.
<?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>';
    }

Obtener lista de dispositivos

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
data Array Array de tipos de dispositivos disponibles.
└ device_id Número Identificador único del tipo de dispositivo.
└ name Cadena Nombre del tipo de dispositivo.
└ value Cadena Valor del tipo de dispositivo para solicitudes 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>';
    }

Obtener lista de sistemas operativos

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
data Array Array de sistemas operativos disponibles.
└ os_id Número Identificador único del sistema operativo.
└ name Cadena Nombre del sistema operativo.
└ value Cadena Valor del sistema operativo para solicitudes 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>';
    }

Obtener lista de redes publicitarias

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
data Array Array de redes publicitarias disponibles.
└ network_id Número Identificador único de la red publicitaria.
└ name Cadena Nombre de la red publicitaria.
└ value Cadena Valor de la red publicitaria para solicitudes API.
└ logo Cadena URL del logo de la red publicitaria.
<?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>';
    }

Buscar creativos Push

Búsqueda de creativos push con varios filtros.

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
limit Número No Número de elementos por página (10-100). Predeterminado: 10.
offset Número No Número de elementos a omitir. Usado para paginación. Predeterminado: 0.
keyword Cadena No Palabra clave de búsqueda para filtrar creativos por título o descripción.
countries Array No Array de códigos ISO-2 de países (ej., ["US", "GB", "DE"]).
country_ids Array No Array de IDs de países del endpoint /api/filters/countries. Tiene prioridad sobre countries.
languages Array No Array de códigos ISO de idiomas (ej., ["EN", "ES", "DE"]).
lang_ids Array No Array de IDs de idiomas del endpoint /api/filters/languages. Tiene prioridad sobre languages.
advertising_networks Array No Array de nombres de redes publicitarias.
network_ids Array No Array de IDs de redes del endpoint /api/filters/advertising-networks. Tiene prioridad sobre advertising_networks.
browsers Array No Array de nombres de navegadores.
browser_ids Array No Array de IDs de navegadores del endpoint /api/filters/browsers. Tiene prioridad sobre browsers.
operating_systems Array No Array de valores de sistemas operativos (ej., ["windows", "macos", "android"]).
devices Array No Array de tipos de dispositivos (ej., ["desktop", "mobile", "tablet"]).
date_from Cadena No Fecha de inicio para filtrar (formato: Y-m-d, ej., "2025-01-01").
date_to Cadena No Fecha de fin para filtrar (formato: Y-m-d, ej., "2025-12-31").
sort_by Cadena No Campo de ordenación: creation, activity, popularity.
sort_order Cadena No Dirección de ordenación: asc o desc.
only_adult Boolean No Filtrar solo contenido para adultos. Booleano (true/false).
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
data Object Array de datos de flujos que coinciden con la solicitud.
└ format Cadena Formato de creativo (push, inpage, facebook, tiktok).
└ items Array Array de objetos de creativos.
  └ id Número Identificador único del creativo.
  └ title Cadena Texto del título del creativo.
  └ description Cadena Texto de descripción del creativo.
  └ category Cadena Formato/categoría del creativo (push, inpage, facebook, tiktok).
  └ country Object Objeto de información del país (code, name, iso_code_3).
    └ code Cadena Código ISO 3166-1 alpha-2 del país (ej., "ES" para España).
    └ name Cadena Nombre del país en inglés.
    └ iso_code_3 Cadena Código ISO 3166-1 alpha-3 del país (ej., "ESP" para España).
  └ file_size Cadena Tamaño total de archivo formateado.
  └ icon_url Cadena URL de la imagen del icono del creativo.
  └ landing_url Cadena URL de la página de destino.
  └ created_at Cadena Fecha de creación del creativo (formato Y-m-d).
  └ advertising_networks Array Array de nombres de redes publicitarias.
  └ languages Array Array de códigos ISO de idiomas.
  └ operating_systems Array Array de valores de sistemas operativos.
  └ browsers Array Array de nombres de navegadores.
  └ devices Array Array de tipos de dispositivos.
  └ main_image_url Cadena URL de la imagen principal del creativo.
  └ is_adult Boolean Si el creativo contiene contenido para adultos.
  └ is_active Boolean Si el creativo está actualmente activo.
└ pagination Object Objeto de información de paginación.
  └ total Número Número total de creativos que coinciden con los filtros.
  └ limit Número Número de elementos por página.
  └ offset Número Offset actual.
  └ has_more Boolean Si hay más elementos disponibles.
  └ returned_count Número Número de elementos devueltos en esta respuesta.
└ filters_applied Object Objeto que contiene los filtros aplicados.
└ timestamp Cadena Marca de tiempo de respuesta en formato 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

Buscar creativos Inpage

Búsqueda de creativos inpage con varios filtros.

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
limit Número No Número de elementos por página (10-100). Predeterminado: 10.
offset Número No Número de elementos a omitir. Usado para paginación. Predeterminado: 0.
keyword Cadena No Palabra clave de búsqueda para filtrar creativos por título o descripción.
countries Array No Array de códigos ISO-2 de países (ej., ["US", "GB", "DE"]).
country_ids Array No Array de IDs de países del endpoint /api/filters/countries. Tiene prioridad sobre countries.
languages Array No Array de códigos ISO de idiomas (ej., ["EN", "ES", "DE"]).
lang_ids Array No Array de IDs de idiomas del endpoint /api/filters/languages. Tiene prioridad sobre languages.
advertising_networks Array No Array de nombres de redes publicitarias.
network_ids Array No Array de IDs de redes del endpoint /api/filters/advertising-networks. Tiene prioridad sobre advertising_networks.
browsers Array No Array de nombres de navegadores.
browser_ids Array No Array de IDs de navegadores del endpoint /api/filters/browsers. Tiene prioridad sobre browsers.
operating_systems Array No Array de valores de sistemas operativos (ej., ["windows", "macos", "android"]).
devices Array No Array de tipos de dispositivos (ej., ["desktop", "mobile", "tablet"]).
date_from Cadena No Fecha de inicio para filtrar (formato: Y-m-d, ej., "2025-01-01").
date_to Cadena No Fecha de fin para filtrar (formato: Y-m-d, ej., "2025-12-31").
sort_by Cadena No Campo de ordenación: creation, activity, popularity.
sort_order Cadena No Dirección de ordenación: asc o desc.
only_adult Boolean No Filtrar solo contenido para adultos. Booleano (true/false).
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
data Object Array de datos de flujos que coinciden con la solicitud.
└ format Cadena Formato de creativo (push, inpage, facebook, tiktok).
└ items Array Array de objetos de creativos.
  └ id Número Identificador único del creativo.
  └ title Cadena Texto del título del creativo.
  └ description Cadena Texto de descripción del creativo.
  └ category Cadena Formato/categoría del creativo (push, inpage, facebook, tiktok).
  └ country Object Objeto de información del país (code, name, iso_code_3).
    └ code Cadena Código ISO 3166-1 alpha-2 del país (ej., "ES" para España).
    └ name Cadena Nombre del país en inglés.
    └ iso_code_3 Cadena Código ISO 3166-1 alpha-3 del país (ej., "ESP" para España).
  └ file_size Cadena Tamaño total de archivo formateado.
  └ icon_url Cadena URL de la imagen del icono del creativo.
  └ landing_url Cadena URL de la página de destino.
  └ created_at Cadena Fecha de creación del creativo (formato Y-m-d).
  └ advertising_networks Array Array de nombres de redes publicitarias.
  └ languages Array Array de códigos ISO de idiomas.
  └ operating_systems Array Array de valores de sistemas operativos.
  └ browsers Array Array de nombres de navegadores.
  └ devices Array Array de tipos de dispositivos.
  └ main_image_url Cadena URL de la imagen principal del creativo.
  └ is_adult Boolean Si el creativo contiene contenido para adultos.
  └ is_active Boolean Si el creativo está actualmente activo.
└ pagination Object Objeto de información de paginación.
  └ total Número Número total de creativos que coinciden con los filtros.
  └ limit Número Número de elementos por página.
  └ offset Número Offset actual.
  └ has_more Boolean Si hay más elementos disponibles.
  └ returned_count Número Número de elementos devueltos en esta respuesta.
└ filters_applied Object Objeto que contiene los filtros aplicados.
└ timestamp Cadena Marca de tiempo de respuesta en formato 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

Buscar creativos Facebook

Búsqueda de creativos de Facebook con varios filtros. Cuando hay pocos resultados, la API puede iniciar una búsqueda en vivo y devolver un scrapingJob para polling.

Si scrapingJob.needStartPolling es true, llame al mismo endpoint con isPolling=true y job_id para recibir nuevos elementos. Si el estado es recently_completed o rejected, no se crea trabajo y no se debe iniciar el polling.

La búsqueda en vivo se inicia solo cuando se especifica exactamente un país en el array countries.

La búsqueda en vivo se inicia solo cuando se proporciona una palabra clave no vacía.

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
limit Número No Número de elementos por página (10-100). Predeterminado: 10.
offset Número No Número de elementos a omitir. Usado para paginación. Predeterminado: 0.
keyword Cadena No Palabra clave de búsqueda para filtrar creativos por título o descripción.
countries Array No Array de códigos ISO-2 de países (ej., ["US", "GB", "DE"]).
country_ids Array No Array de IDs de países del endpoint /api/filters/countries. Tiene prioridad sobre countries.
languages Array No Array de códigos ISO de idiomas (ej., ["EN", "ES", "DE"]).
lang_ids Array No Array de IDs de idiomas del endpoint /api/filters/languages. Tiene prioridad sobre languages.
date_from Cadena No Fecha de inicio para filtrar (formato: Y-m-d, ej., "2025-01-01").
date_to Cadena No Fecha de fin para filtrar (formato: Y-m-d, ej., "2025-12-31").
sort_by Cadena No Campo de ordenación: creation, activity, popularity.
sort_order Cadena No Dirección de ordenación: asc o desc.
status Cadena No Filtro de estado de anuncio: ALL, ACTIVE, INACTIVE.
media_type Cadena No Filtro de tipo de medios: ALL, IMAGE, VIDEO.
search_type Cadena No Tipo de búsqueda: keyword_unordered, keyword_exact_phrase.
isPolling Boolean No Habilitar polling para actualizaciones de búsqueda en vivo. Usar con job_id.
lastId Número No Último ID de creativo recibido para polling incremental (opcional).
perPage Número No Tamaño de página esperado para detección de pocos resultados (12-96).
job_id Cadena No ID de trabajo de búsqueda en vivo de scrapingJob. Requerido cuando isPolling=true.
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
data Object Array de datos de flujos que coinciden con la solicitud.
└ format Cadena Formato de creativo (push, inpage, facebook, tiktok).
└ items Array Array de objetos de creativos.
  └ id Número Identificador único del creativo.
  └ title Cadena Texto del título del creativo.
  └ description Cadena Texto de descripción del creativo.
  └ category Cadena Formato/categoría del creativo (push, inpage, facebook, tiktok).
  └ country Object Objeto de información del país (code, name, iso_code_3).
    └ code Cadena Código ISO 3166-1 alpha-2 del país (ej., "ES" para España).
    └ name Cadena Nombre del país en inglés.
    └ iso_code_3 Cadena Código ISO 3166-1 alpha-3 del país (ej., "ESP" para España).
  └ file_size Cadena Tamaño total de archivo formateado.
  └ icon_url Cadena URL de la imagen del icono del creativo.
  └ landing_url Cadena URL de la página de destino.
  └ created_at Cadena Fecha de creación del creativo (formato Y-m-d).
  └ advertising_networks Array Array de nombres de redes publicitarias.
  └ languages Array Array de códigos ISO de idiomas.
  └ operating_systems Array Array de valores de sistemas operativos.
  └ browsers Array Array de nombres de navegadores.
  └ devices Array Array de tipos de dispositivos.
  └ main_image_url Cadena URL de la imagen principal del creativo.
  └ has_video Boolean Si el creativo contiene video.
  └ video_url Cadena URL del video (si has_video es true).
  └ video_duration Número Duración del video en segundos (si aplica).
  └ social_likes Número Número de likes (para anuncios sociales).
  └ social_comments Número Número de comentarios (para anuncios sociales).
  └ social_shares Número Número de compartidos (para anuncios sociales).
  └ is_adult Boolean Si el creativo contiene contenido para adultos.
  └ is_active Boolean Si el creativo está actualmente activo.
└ pagination Object Objeto de información de paginación.
  └ total Número Número total de creativos que coinciden con los filtros.
  └ limit Número Número de elementos por página.
  └ offset Número Offset actual.
  └ has_more Boolean Si hay más elementos disponibles.
  └ returned_count Número Número de elementos devueltos en esta respuesta.
└ filters_applied Object Objeto que contiene los filtros aplicados.
└ scrapingJob Object Objeto de trabajo de búsqueda en vivo (presente cuando la búsqueda en vivo está iniciada o activa).
  └ type Cadena Identificador de tipo de búsqueda en vivo (ej., facebook_search).
  └ status Cadena Estado del trabajo: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected.
  └ needStartPolling Boolean Si el cliente debe comenzar el polling para actualizaciones.
  └ needStopPolling Boolean Si el cliente debe detener el polling.
  └ job_id Cadena Identificador de trabajo para polling (ausente cuando el estado es recently_completed o rejected).
  └ polling_interval_seconds Número Intervalo de polling recomendado en segundos.
  └ estimatedDuration Número Duración estimada en segundos (0 cuando completed o recently_completed).
  └ message Cadena Mensaje de estado adicional del servidor o parser.
  └ retry_after_seconds Número Cuánto esperar antes de reintentar cuando recently_completed/rejected (si se proporciona).
  └ error Cadena Detalles del error (presente cuando el estado es failed o error).
└ timestamp Cadena Marca de tiempo de respuesta en formato 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.

Buscar creativos TikTok

Búsqueda de creativos de TikTok con varios filtros. Cuando hay pocos resultados, la API puede iniciar una búsqueda en vivo y devolver un scrapingJob para polling.

Si scrapingJob.needStartPolling es true, llame al mismo endpoint con isPolling=true y job_id para recibir nuevos elementos. Si el estado es recently_completed o rejected, no se crea trabajo y no se debe iniciar el polling.

La búsqueda en vivo se inicia solo cuando se especifica exactamente un país en el array countries.

La búsqueda en vivo se inicia solo cuando se proporciona una palabra clave no vacía.

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
limit Número No Número de elementos por página (10-100). Predeterminado: 10.
offset Número No Número de elementos a omitir. Usado para paginación. Predeterminado: 0.
keyword Cadena No Palabra clave de búsqueda para filtrar creativos por título o descripción.
countries Array No Array de códigos ISO-2 de países (ej., ["US", "GB", "DE"]).
country_ids Array No Array de IDs de países del endpoint /api/filters/countries. Tiene prioridad sobre countries.
languages Array No Array de códigos ISO de idiomas (ej., ["EN", "ES", "DE"]).
lang_ids Array No Array de IDs de idiomas del endpoint /api/filters/languages. Tiene prioridad sobre languages.
date_from Cadena No Fecha de inicio para filtrar (formato: Y-m-d, ej., "2025-01-01").
date_to Cadena No Fecha de fin para filtrar (formato: Y-m-d, ej., "2025-12-31").
sort_by Cadena No Campo de ordenación: creation, activity, popularity.
sort_order Cadena No Dirección de ordenación: asc o desc.
video_duration Cadena No Filtro de duración de video TikTok: ALL, SHORT, MEDIUM, LONG.
isPolling Boolean No Habilitar polling para actualizaciones de búsqueda en vivo. Usar con job_id.
lastId Número No Último ID de creativo recibido para polling incremental (opcional).
perPage Número No Tamaño de página esperado para detección de pocos resultados (12-96).
job_id Cadena No ID de trabajo de búsqueda en vivo de scrapingJob. Requerido cuando isPolling=true.
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
data Object Array de datos de flujos que coinciden con la solicitud.
└ format Cadena Formato de creativo (push, inpage, facebook, tiktok).
└ items Array Array de objetos de creativos.
  └ id Número Identificador único del creativo.
  └ title Cadena Texto del título del creativo.
  └ description Cadena Texto de descripción del creativo.
  └ category Cadena Formato/categoría del creativo (push, inpage, facebook, tiktok).
  └ country Object Objeto de información del país (code, name, iso_code_3).
    └ code Cadena Código ISO 3166-1 alpha-2 del país (ej., "ES" para España).
    └ name Cadena Nombre del país en inglés.
    └ iso_code_3 Cadena Código ISO 3166-1 alpha-3 del país (ej., "ESP" para España).
  └ file_size Cadena Tamaño total de archivo formateado.
  └ icon_url Cadena URL de la imagen del icono del creativo.
  └ landing_url Cadena URL de la página de destino.
  └ created_at Cadena Fecha de creación del creativo (formato Y-m-d).
  └ advertising_networks Array Array de nombres de redes publicitarias.
  └ languages Array Array de códigos ISO de idiomas.
  └ operating_systems Array Array de valores de sistemas operativos.
  └ browsers Array Array de nombres de navegadores.
  └ devices Array Array de tipos de dispositivos.
  └ main_image_url Cadena URL de la imagen principal del creativo.
  └ has_video Boolean Si el creativo contiene video.
  └ video_url Cadena URL del video (si has_video es true).
  └ video_duration Número Duración del video en segundos (si aplica).
  └ social_likes Número Número de likes (para anuncios sociales).
  └ social_comments Número Número de comentarios (para anuncios sociales).
  └ social_shares Número Número de compartidos (para anuncios sociales).
  └ is_adult Boolean Si el creativo contiene contenido para adultos.
  └ is_active Boolean Si el creativo está actualmente activo.
└ pagination Object Objeto de información de paginación.
  └ total Número Número total de creativos que coinciden con los filtros.
  └ limit Número Número de elementos por página.
  └ offset Número Offset actual.
  └ has_more Boolean Si hay más elementos disponibles.
  └ returned_count Número Número de elementos devueltos en esta respuesta.
└ filters_applied Object Objeto que contiene los filtros aplicados.
└ scrapingJob Object Objeto de trabajo de búsqueda en vivo (presente cuando la búsqueda en vivo está iniciada o activa).
  └ type Cadena Identificador de tipo de búsqueda en vivo (ej., facebook_search).
  └ status Cadena Estado del trabajo: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected.
  └ needStartPolling Boolean Si el cliente debe comenzar el polling para actualizaciones.
  └ needStopPolling Boolean Si el cliente debe detener el polling.
  └ job_id Cadena Identificador de trabajo para polling (ausente cuando el estado es recently_completed o rejected).
  └ polling_interval_seconds Número Intervalo de polling recomendado en segundos.
  └ estimatedDuration Número Duración estimada en segundos (0 cuando completed o recently_completed).
  └ message Cadena Mensaje de estado adicional del servidor o parser.
  └ retry_after_seconds Número Cuánto esperar antes de reintentar cuando recently_completed/rejected (si se proporciona).
  └ error Cadena Detalles del error (presente cuando el estado es failed o error).
└ timestamp Cadena Marca de tiempo de respuesta en formato 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.

Transferir fondos

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
amount Número Monto de transferencia (mínimo 10 USD).
email Cadena Email del destinatario de la transferencia. Debe ser válido.
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
transaction_number Cadena Número de transacción único asociado con la transferencia.
<?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>';
    }

Obtener saldo de cuenta

URL de solicitud

Parámetro Tipo de datos Requerido Descripción
api_key Cadena Clave API única para autenticación de solicitudes.
Parámetro Tipo de datos Descripción
status Cadena Campo que indica ejecución exitosa ("success") o error ("error").
msg Cadena Mensaje de error o información adicional de la solicitud.
code Número Código de respuesta, ej., 200 para solicitud exitosa.
balance Número Saldo actual de la cuenta del usuario.
<?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>';
    }