PT PT
Entrar

API

Para obter acesso à nossa API, entre em contato com nosso serviço de suporte via Telegram no link: @Spy_House

Obter lista de idiomas

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
data Array Array de idiomas disponíveis.
└ lang_id Número Identificador único do idioma.
└ name String Nome do idioma em inglês.
└ iso_code String Código ISO do idioma (ex., "EN" para inglês, "PT" para português).
<?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>';
    }

Obter lista de países

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
data Array Array de países disponíveis.
└ country_id Número Identificador único do país.
└ name String Nome do país em inglês.
└ iso_code String Código ISO 3166-1 alpha-2 do país (ex., "BR" para Brasil).
└ iso_code_3 String Código ISO 3166-1 alpha-3 do país (ex., "BRA" para Brasil).
<?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>';
    }

Obter lista de navegadores

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
data Array Array de navegadores disponíveis.
└ browser_id Número Identificador único do navegador.
└ name String Nome do 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>';
    }

Obter lista de dispositivos

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
data Array Array de tipos de dispositivos disponíveis.
└ device_id Número Identificador único do tipo de dispositivo.
└ name String Nome de exibição do tipo de dispositivo.
└ value String Valor do tipo de dispositivo para requisições 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>';
    }

Obter lista de sistemas operacionais

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
data Array Array de sistemas operacionais disponíveis.
└ os_id Número Identificador único do sistema operacional.
└ name String Nome de exibição do sistema operacional.
└ value String Valor do sistema operacional para requisições 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>';
    }

Obter lista de redes de publicidade

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
data Array Array de redes de publicidade disponíveis.
└ network_id Número Identificador único da rede de publicidade.
└ name String Nome de exibição da rede de publicidade.
└ value String Valor da rede de publicidade para requisições API.
└ logo String URL do logo da rede de publicidade.
<?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>';
    }

Pesquisar criativos Push

Pesquisa de criativos push com vários filtros.

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
limit Número Não Número de itens por página (10-100). Padrão: 10.
offset Número Não Número de itens a pular. Usado para paginação. Padrão: 0.
keyword String Não Palavra-chave de pesquisa para filtrar criativos por título ou descrição.
countries Array Não Array de códigos ISO-2 de países (ex., ["US", "GB", "DE"]).
country_ids Array Não Array de IDs de países do endpoint /api/filters/countries. Tem prioridade sobre countries.
languages Array Não Array de códigos ISO de idiomas (ex., ["EN", "PT", "DE"]).
lang_ids Array Não Array de IDs de idiomas do endpoint /api/filters/languages. Tem prioridade sobre languages.
advertising_networks Array Não Array de nomes de redes de publicidade.
network_ids Array Não Array de IDs de redes do endpoint /api/filters/advertising-networks. Tem prioridade sobre advertising_networks.
browsers Array Não Array de nomes de navegadores.
browser_ids Array Não Array de IDs de navegadores do endpoint /api/filters/browsers. Tem prioridade sobre browsers.
operating_systems Array Não Array de valores de sistemas operacionais (ex., ["windows", "macos", "android"]).
devices Array Não Array de tipos de dispositivos (ex., ["desktop", "mobile", "tablet"]).
date_from String Não Data inicial para filtragem (formato: Y-m-d, ex., "2025-01-01").
date_to String Não Data final para filtragem (formato: Y-m-d, ex., "2025-12-31").
sort_by String Não Campo de ordenação: creation, activity, popularity.
sort_order String Não Direção de ordenação: asc ou desc.
only_adult Boolean Não Filtrar apenas conteúdo adulto. Booleano (true/false).
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
data Object Array de dados de fluxos correspondentes à requisição.
└ format String Formato do criativo (push, inpage, facebook, tiktok).
└ items Array Array de objetos de criativos.
  └ id Número Identificador único do criativo.
  └ title String Texto do título do criativo.
  └ description String Texto de descrição do criativo.
  └ category String Formato/categoria do criativo (push, inpage, facebook, tiktok).
  └ country Object Objeto de informações do país (code, name, iso_code_3).
    └ code String Código ISO 3166-1 alpha-2 do país (ex., "BR" para Brasil).
    └ name String Nome do país em inglês.
    └ iso_code_3 String Código ISO 3166-1 alpha-3 do país (ex., "BRA" para Brasil).
  └ file_size String Tamanho total do arquivo formatado.
  └ icon_url String URL da imagem do ícone do criativo.
  └ landing_url String URL da página de destino.
  └ created_at String Data de criação do criativo (formato Y-m-d).
  └ advertising_networks Array Array de nomes de redes de publicidade.
  └ languages Array Array de códigos ISO de idiomas.
  └ operating_systems Array Array de valores de sistemas operacionais.
  └ browsers Array Array de nomes de navegadores.
  └ devices Array Array de tipos de dispositivos.
  └ main_image_url String URL da imagem principal do criativo.
  └ is_adult Boolean Se o criativo contém conteúdo adulto.
  └ is_active Boolean Se o criativo está atualmente ativo.
└ pagination Object Objeto de informações de paginação.
  └ total Número Número total de criativos que correspondem aos filtros.
  └ limit Número Número de itens por página.
  └ offset Número Offset atual.
  └ has_more Boolean Se há mais itens disponíveis.
  └ returned_count Número Número de itens retornados nesta resposta.
└ filters_applied Object Objeto contendo os filtros aplicados.
└ timestamp String Timestamp da resposta no 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

Pesquisar criativos Inpage

Pesquisa de criativos inpage com vários filtros.

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
limit Número Não Número de itens por página (10-100). Padrão: 10.
offset Número Não Número de itens a pular. Usado para paginação. Padrão: 0.
keyword String Não Palavra-chave de pesquisa para filtrar criativos por título ou descrição.
countries Array Não Array de códigos ISO-2 de países (ex., ["US", "GB", "DE"]).
country_ids Array Não Array de IDs de países do endpoint /api/filters/countries. Tem prioridade sobre countries.
languages Array Não Array de códigos ISO de idiomas (ex., ["EN", "PT", "DE"]).
lang_ids Array Não Array de IDs de idiomas do endpoint /api/filters/languages. Tem prioridade sobre languages.
advertising_networks Array Não Array de nomes de redes de publicidade.
network_ids Array Não Array de IDs de redes do endpoint /api/filters/advertising-networks. Tem prioridade sobre advertising_networks.
browsers Array Não Array de nomes de navegadores.
browser_ids Array Não Array de IDs de navegadores do endpoint /api/filters/browsers. Tem prioridade sobre browsers.
operating_systems Array Não Array de valores de sistemas operacionais (ex., ["windows", "macos", "android"]).
devices Array Não Array de tipos de dispositivos (ex., ["desktop", "mobile", "tablet"]).
date_from String Não Data inicial para filtragem (formato: Y-m-d, ex., "2025-01-01").
date_to String Não Data final para filtragem (formato: Y-m-d, ex., "2025-12-31").
sort_by String Não Campo de ordenação: creation, activity, popularity.
sort_order String Não Direção de ordenação: asc ou desc.
only_adult Boolean Não Filtrar apenas conteúdo adulto. Booleano (true/false).
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
data Object Array de dados de fluxos correspondentes à requisição.
└ format String Formato do criativo (push, inpage, facebook, tiktok).
└ items Array Array de objetos de criativos.
  └ id Número Identificador único do criativo.
  └ title String Texto do título do criativo.
  └ description String Texto de descrição do criativo.
  └ category String Formato/categoria do criativo (push, inpage, facebook, tiktok).
  └ country Object Objeto de informações do país (code, name, iso_code_3).
    └ code String Código ISO 3166-1 alpha-2 do país (ex., "BR" para Brasil).
    └ name String Nome do país em inglês.
    └ iso_code_3 String Código ISO 3166-1 alpha-3 do país (ex., "BRA" para Brasil).
  └ file_size String Tamanho total do arquivo formatado.
  └ icon_url String URL da imagem do ícone do criativo.
  └ landing_url String URL da página de destino.
  └ created_at String Data de criação do criativo (formato Y-m-d).
  └ advertising_networks Array Array de nomes de redes de publicidade.
  └ languages Array Array de códigos ISO de idiomas.
  └ operating_systems Array Array de valores de sistemas operacionais.
  └ browsers Array Array de nomes de navegadores.
  └ devices Array Array de tipos de dispositivos.
  └ main_image_url String URL da imagem principal do criativo.
  └ is_adult Boolean Se o criativo contém conteúdo adulto.
  └ is_active Boolean Se o criativo está atualmente ativo.
└ pagination Object Objeto de informações de paginação.
  └ total Número Número total de criativos que correspondem aos filtros.
  └ limit Número Número de itens por página.
  └ offset Número Offset atual.
  └ has_more Boolean Se há mais itens disponíveis.
  └ returned_count Número Número de itens retornados nesta resposta.
└ filters_applied Object Objeto contendo os filtros aplicados.
└ timestamp String Timestamp da resposta no 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

Pesquisar criativos Facebook

Pesquisa de criativos do Facebook com vários filtros. Quando os resultados são poucos, a API pode iniciar uma pesquisa ao vivo e retornar um scrapingJob para polling.

Se scrapingJob.needStartPolling for true, chame o mesmo endpoint com isPolling=true e job_id para receber novos itens. Se o status for recently_completed ou rejected, nenhum job é criado e o polling não deve ser iniciado.

A pesquisa ao vivo inicia apenas quando exatamente um país é especificado no array countries.

A pesquisa ao vivo inicia apenas quando uma palavra-chave não vazia é fornecida.

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
limit Número Não Número de itens por página (10-100). Padrão: 10.
offset Número Não Número de itens a pular. Usado para paginação. Padrão: 0.
keyword String Não Palavra-chave de pesquisa para filtrar criativos por título ou descrição.
countries Array Não Array de códigos ISO-2 de países (ex., ["US", "GB", "DE"]).
country_ids Array Não Array de IDs de países do endpoint /api/filters/countries. Tem prioridade sobre countries.
languages Array Não Array de códigos ISO de idiomas (ex., ["EN", "PT", "DE"]).
lang_ids Array Não Array de IDs de idiomas do endpoint /api/filters/languages. Tem prioridade sobre languages.
date_from String Não Data inicial para filtragem (formato: Y-m-d, ex., "2025-01-01").
date_to String Não Data final para filtragem (formato: Y-m-d, ex., "2025-12-31").
sort_by String Não Campo de ordenação: creation, activity, popularity.
sort_order String Não Direção de ordenação: asc ou desc.
status String Não Filtro de status do anúncio: ALL, ACTIVE, INACTIVE.
media_type String Não Filtro de tipo de mídia: ALL, IMAGE, VIDEO.
search_type String Não Tipo de pesquisa: keyword_unordered, keyword_exact_phrase.
isPolling Boolean Não Ativar polling para atualizações de pesquisa ao vivo. Usar com job_id.
lastId Número Não Último ID de criativo recebido para polling incremental (opcional).
perPage Número Não Tamanho de página esperado para detecção de poucos resultados (12-96).
job_id String Não ID de job de pesquisa ao vivo do scrapingJob. Obrigatório quando isPolling=true.
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
data Object Array de dados de fluxos correspondentes à requisição.
└ format String Formato do criativo (push, inpage, facebook, tiktok).
└ items Array Array de objetos de criativos.
  └ id Número Identificador único do criativo.
  └ title String Texto do título do criativo.
  └ description String Texto de descrição do criativo.
  └ category String Formato/categoria do criativo (push, inpage, facebook, tiktok).
  └ country Object Objeto de informações do país (code, name, iso_code_3).
    └ code String Código ISO 3166-1 alpha-2 do país (ex., "BR" para Brasil).
    └ name String Nome do país em inglês.
    └ iso_code_3 String Código ISO 3166-1 alpha-3 do país (ex., "BRA" para Brasil).
  └ file_size String Tamanho total do arquivo formatado.
  └ icon_url String URL da imagem do ícone do criativo.
  └ landing_url String URL da página de destino.
  └ created_at String Data de criação do criativo (formato Y-m-d).
  └ advertising_networks Array Array de nomes de redes de publicidade.
  └ languages Array Array de códigos ISO de idiomas.
  └ operating_systems Array Array de valores de sistemas operacionais.
  └ browsers Array Array de nomes de navegadores.
  └ devices Array Array de tipos de dispositivos.
  └ main_image_url String URL da imagem principal do criativo.
  └ has_video Boolean Se o criativo contém vídeo.
  └ video_url String URL do vídeo (se has_video for true).
  └ video_duration Número Duração do vídeo em segundos (se aplicável).
  └ social_likes Número Número de likes (para anúncios sociais).
  └ social_comments Número Número de comentários (para anúncios sociais).
  └ social_shares Número Número de compartilhamentos (para anúncios sociais).
  └ is_adult Boolean Se o criativo contém conteúdo adulto.
  └ is_active Boolean Se o criativo está atualmente ativo.
└ pagination Object Objeto de informações de paginação.
  └ total Número Número total de criativos que correspondem aos filtros.
  └ limit Número Número de itens por página.
  └ offset Número Offset atual.
  └ has_more Boolean Se há mais itens disponíveis.
  └ returned_count Número Número de itens retornados nesta resposta.
└ filters_applied Object Objeto contendo os filtros aplicados.
└ scrapingJob Object Objeto de job de pesquisa ao vivo (presente quando a pesquisa ao vivo está iniciada ou ativa).
  └ type String Identificador de tipo de pesquisa ao vivo (ex., facebook_search).
  └ status String Status do job: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected.
  └ needStartPolling Boolean Se o cliente deve começar o polling para atualizações.
  └ needStopPolling Boolean Se o cliente deve parar o polling.
  └ job_id String Identificador do job para polling (ausente quando o status é recently_completed ou rejected).
  └ polling_interval_seconds Número Intervalo de polling recomendado em segundos.
  └ estimatedDuration Número Duração estimada em segundos (0 quando completed ou recently_completed).
  └ message String Mensagem de status adicional do servidor ou parser.
  └ retry_after_seconds Número Quanto esperar antes de tentar novamente quando recently_completed/rejected (se fornecido).
  └ error String Detalhes do erro (presente quando o status é failed ou error).
└ timestamp String Timestamp da resposta no 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.

Pesquisar criativos TikTok

Pesquisa de criativos do TikTok com vários filtros. Quando os resultados são poucos, a API pode iniciar uma pesquisa ao vivo e retornar um scrapingJob para polling.

Se scrapingJob.needStartPolling for true, chame o mesmo endpoint com isPolling=true e job_id para receber novos itens. Se o status for recently_completed ou rejected, nenhum job é criado e o polling não deve ser iniciado.

A pesquisa ao vivo inicia apenas quando exatamente um país é especificado no array countries.

A pesquisa ao vivo inicia apenas quando uma palavra-chave não vazia é fornecida.

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
limit Número Não Número de itens por página (10-100). Padrão: 10.
offset Número Não Número de itens a pular. Usado para paginação. Padrão: 0.
keyword String Não Palavra-chave de pesquisa para filtrar criativos por título ou descrição.
countries Array Não Array de códigos ISO-2 de países (ex., ["US", "GB", "DE"]).
country_ids Array Não Array de IDs de países do endpoint /api/filters/countries. Tem prioridade sobre countries.
languages Array Não Array de códigos ISO de idiomas (ex., ["EN", "PT", "DE"]).
lang_ids Array Não Array de IDs de idiomas do endpoint /api/filters/languages. Tem prioridade sobre languages.
date_from String Não Data inicial para filtragem (formato: Y-m-d, ex., "2025-01-01").
date_to String Não Data final para filtragem (formato: Y-m-d, ex., "2025-12-31").
sort_by String Não Campo de ordenação: creation, activity, popularity.
sort_order String Não Direção de ordenação: asc ou desc.
video_duration String Não Filtro de duração de vídeo TikTok: ALL, SHORT, MEDIUM, LONG.
isPolling Boolean Não Ativar polling para atualizações de pesquisa ao vivo. Usar com job_id.
lastId Número Não Último ID de criativo recebido para polling incremental (opcional).
perPage Número Não Tamanho de página esperado para detecção de poucos resultados (12-96).
job_id String Não ID de job de pesquisa ao vivo do scrapingJob. Obrigatório quando isPolling=true.
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
data Object Array de dados de fluxos correspondentes à requisição.
└ format String Formato do criativo (push, inpage, facebook, tiktok).
└ items Array Array de objetos de criativos.
  └ id Número Identificador único do criativo.
  └ title String Texto do título do criativo.
  └ description String Texto de descrição do criativo.
  └ category String Formato/categoria do criativo (push, inpage, facebook, tiktok).
  └ country Object Objeto de informações do país (code, name, iso_code_3).
    └ code String Código ISO 3166-1 alpha-2 do país (ex., "BR" para Brasil).
    └ name String Nome do país em inglês.
    └ iso_code_3 String Código ISO 3166-1 alpha-3 do país (ex., "BRA" para Brasil).
  └ file_size String Tamanho total do arquivo formatado.
  └ icon_url String URL da imagem do ícone do criativo.
  └ landing_url String URL da página de destino.
  └ created_at String Data de criação do criativo (formato Y-m-d).
  └ advertising_networks Array Array de nomes de redes de publicidade.
  └ languages Array Array de códigos ISO de idiomas.
  └ operating_systems Array Array de valores de sistemas operacionais.
  └ browsers Array Array de nomes de navegadores.
  └ devices Array Array de tipos de dispositivos.
  └ main_image_url String URL da imagem principal do criativo.
  └ has_video Boolean Se o criativo contém vídeo.
  └ video_url String URL do vídeo (se has_video for true).
  └ video_duration Número Duração do vídeo em segundos (se aplicável).
  └ social_likes Número Número de likes (para anúncios sociais).
  └ social_comments Número Número de comentários (para anúncios sociais).
  └ social_shares Número Número de compartilhamentos (para anúncios sociais).
  └ is_adult Boolean Se o criativo contém conteúdo adulto.
  └ is_active Boolean Se o criativo está atualmente ativo.
└ pagination Object Objeto de informações de paginação.
  └ total Número Número total de criativos que correspondem aos filtros.
  └ limit Número Número de itens por página.
  └ offset Número Offset atual.
  └ has_more Boolean Se há mais itens disponíveis.
  └ returned_count Número Número de itens retornados nesta resposta.
└ filters_applied Object Objeto contendo os filtros aplicados.
└ scrapingJob Object Objeto de job de pesquisa ao vivo (presente quando a pesquisa ao vivo está iniciada ou ativa).
  └ type String Identificador de tipo de pesquisa ao vivo (ex., facebook_search).
  └ status String Status do job: dispatched, running, post_processing, completed, failed, error, recently_completed, rejected.
  └ needStartPolling Boolean Se o cliente deve começar o polling para atualizações.
  └ needStopPolling Boolean Se o cliente deve parar o polling.
  └ job_id String Identificador do job para polling (ausente quando o status é recently_completed ou rejected).
  └ polling_interval_seconds Número Intervalo de polling recomendado em segundos.
  └ estimatedDuration Número Duração estimada em segundos (0 quando completed ou recently_completed).
  └ message String Mensagem de status adicional do servidor ou parser.
  └ retry_after_seconds Número Quanto esperar antes de tentar novamente quando recently_completed/rejected (se fornecido).
  └ error String Detalhes do erro (presente quando o status é failed ou error).
└ timestamp String Timestamp da resposta no 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 fundos

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
amount Número Sim Valor da transferência (mínimo 10 USD).
email String Sim Email do destinatário da transferência. Deve ser válido.
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
transaction_number String Número de transação único associado à transferência.
<?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>';
    }

Obter saldo da conta

URL da requisição

Parâmetro Tipo de dados Obrigatório Descrição
api_key String Sim Chave API única para autenticação de requisições.
Parâmetro Tipo de dados Descrição
status String Campo indicando execução bem-sucedida ("success") ou erro ("error").
msg String Mensagem de erro ou informações adicionais da requisição.
code Número Código de resposta, ex., 200 para requisição bem-sucedida.
balance Número Saldo atual da conta do usuário.
<?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>';
    }