NAV Navegação
cURL Python JavaScript

Visão geral do NinjaPear

O NinjaPear é uma plataforma de inteligência de empresas B2B com foco em propriedade de dados e coleta ética. Como provedor de dados primários, mantemos um ecossistema sustentável de dados proprietários e juridicamente homologados. Nossa missão é fornecer uma infraestrutura de dados confiável, permitindo que empresas desenvolvam e escalem aplicações e fluxos de trabalho de valor agregado com confiança.

Para Agentes de IA

Desenvolvendo com um agente de código com IA? Use a versão em Markdown simples desta documentação — otimizada para LLMs e ferramentas de IA como Claude, Cursor e ChatGPT:

AI Skill

O NinjaPear AI Skill fornece aos agentes de codificação o conhecimento procedural para escrever código de integração NinjaPear correto em suas aplicações. Instale com um único comando e seu agente saberá como autenticar, escolher o endpoint correto, gerar código SDK e lidar com casos extremos — tudo com consciência de custo incorporada.

Pré-requisitos — Uma chave de API do NinjaPear obtida em nubela.co/dashboard e Node.js 18+.

Instale a habilidade usando o npx skills CLI. Escolha o comando para o seu agente:

Claude Code

npx skills add NinjaPear/ninjapear-skill -a claude-code

Codex

npx skills add NinjaPear/ninjapear-skill -a codex

Opencode

npx skills add NinjaPear/ninjapear-skill -a opencode

O que a Skill Oferece

Após instalada, a skill fornece ao seu agente de codificação o conhecimento procedural para trabalhar corretamente com o NinjaPear:

Capacidade Descrição
Configuração de autenticação Configure chaves de API por meio de variáveis de ambiente e inicialização do SDK
Seleção de ponto final Escolha o endpoint de API NinjaPear certo com consciência de custos
Integração do SDK Python Gere o código correto usando o ninjapear Pacote Python
Integração do SDK JavaScript Gere o código correto usando o ninjapear pacote npm
Manipulação de paginação Implementar paginação baseada em cursor para terminais de lista
Tratamento de limite de taxa Respeite os limites de taxa com lógica adequada de novas tentativas e espera
Tratamento de erros Lidar com todos os códigos de erro NinjaPear (401, 403, 404, 429, 500, 503)
Configuração de tempo limite Defina tempos limite apropriados para endpoints de longa duração

Explique como se eu tivesse 5 anos

Autenticação

curl "https://nubela.co/api/v1/customer/listing" \
  -H "Authorization: Bearer YOUR_API_KEY"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CustomerAPIApi(api_client)
    response = api.get_customer_listing(website="https://example.com")
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
var bearerAuth = defaultClient.authentications["bearerAuth"];
bearerAuth.accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CustomerAPIApi();
api.getCustomerListing("https://example.com").then(function (data) {
  console.log(data);
});

A API do NinjaPear utiliza bearer tokens para autenticar usuários. Cada usuário recebe uma chave secreta gerada aleatoriamente em seção de API no Painel.

O bearer token é injetado no Authorization header.

Bibliotecas de cliente

Fornecemos bibliotecas de cliente oficiais para JavaScript e Python para facilitar a integração com a API do NinjaPear.

JavaScript (Node.js)

npm install ninjapear
# JavaScript library - see JavaScript tab
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
var bearerAuth = defaultClient.authentications["bearerAuth"];
bearerAuth.accessToken = "YOUR_API_KEY";

// Now you can use any API class
var companyApi = new NinjaPear.CompanyAPIApi();
var customerApi = new NinjaPear.CustomerAPIApi();
var productApi = new NinjaPear.ProductAPIApi();
var contactApi = new NinjaPear.ContactAPIApi();
var metaApi = new NinjaPear.MetaAPIApi();

Python

uv add ninjapear
# or: pip install ninjapear
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

# Use the client with a context manager
with ninjapear.ApiClient(configuration) as api_client:
    company_api = ninjapear.CompanyAPIApi(api_client)
    customer_api = ninjapear.CustomerAPIApi(api_client)
    product_api = ninjapear.ProductAPIApi(api_client)
    contact_api = ninjapear.ContactAPIApi(api_client)
    meta_api = ninjapear.MetaAPIApi(api_client)
// Python library - see Python tab

Limite de requisições

Os limites de requisições são aplicados por conta de produto e compartilhados por todas as chaves de API desse produto.

Os endpoints de API pagos são limitados a 50 requisições por minuto.

Para controle de limite de taxa, os endpoints de gerenciamento de feed e alvo do Monitor contam como tráfego pago de API mesmo quando o custo em créditos do endpoint é 0.

Em períodos de alta carga, nosso sistema pode reduzir os limites de taxa para todas as contas a fim de garantir que nossos serviços permaneçam acessíveis a todos os usuários.

Retornamos HTTP 429 quando você atingir o limite de requisições. Você também pode receber HTTP 429 caso nossa capacidade seja limitada.

Você deve tratar erros 429 e aplicar recuo exponencial.

As respostas com limite atingido incluem:

Cabeçalho Descrição
Retry-After Segundos para aguardar antes de tentar novamente
X-RateLimit-Limit Número máximo de requisições permitidas no minuto atual
X-RateLimit-Remaining Requisições restantes no minuto atual
X-RateLimit-Reset Timestamp Unix de quando o minuto atual é redefinido

Limite de requisições para APIs gratuitas

Para oferecer APIs gratuitas de forma sustentável, o limite de requisições das APIs gratuitas depende do seu plano de assinatura:

O limite de taxa da API gratuita aplica-se ao Logo da Empresa, Verificador de E-mail Descartável, Visualização de Saldo de Créditos e consumo de feed RSS.

Créditos

Cada requisição válida requer pelo menos 0.1 crédito para ser processado, a menos que seja um endpoint de API gratuito.

Um crédito é consumido se e somente se a requisição for processada com sucesso.

Uma requisição bem-sucedida é uma requisição que retorna com um 200 Código de status HTTP.

Faturamento de cache

Para endpoints com um use_cache parâmetro, um produto não é cobrado novamente quando a mesma requisição normalizada é servida a partir da mesma versão do registro em cache pela qual o produto já pagou. A resposta inclui X-NinjaPear-Credit-Cost: 0 para esses acertos de cache repetidos.

use_cache=never sempre realiza uma nova coleta e cobra normalmente. use_cache=if-recent só se qualifica para repetição gratuita enquanto o registro em cache estiver dentro da janela de atualização do endpoint.

Para endpoints paginados, o acesso repetido gratuito é limitado a páginas já pagas com a mesma consulta, filtros, cadeia de cursor e page_size. Páginas paginadas pagas são reproduzidas exatamente em cache hits repetidos, incluindo o next_page valor. As páginas seguintes que ainda não foram pagas continuam sendo cobradas normalmente.

Timeouts e tempo de resposta da API

Os endpoints da API do NinjaPear recebem 30-60 segundos para concluir.

Recomendamos que você faça requisições simultâneas ao nosso serviço de API para maximizar o throughput. Consulte esta publicação sobre como maximizar o throughput.

Recomendamos um timeout de 100 segundos.

Erros

Estes são os erros comuns que podem ser retornados pela nossa API:

Código HTTP Cobrado? Descrição
400 Não Parâmetros inválidos fornecidos. Consulte a documentação e o corpo da mensagem para mais informações
401 Não API Key inválida
403 Não Você ficou sem créditos
404 Sim O recurso solicitado (ex.: perfil de usuário, empresa) não foi encontrado
410 Não Esta API está descontinuada
429 Não Limite de requisições atingido. Tente novamente
500 Não Há um erro na nossa API. Por favor, Fale conosco para obter assistência
503 Não O enriquecimento falhou, tente novamente.

Você nunca será cobrado por requisições com falha.

Garantia de compatibilidade retroativa

Estamos comprometidos em garantir que nossa API permaneça compatível com versões anteriores, permitindo que você integre com confiança. Nossa garantia de compatibilidade retroativa significa que não introduziremos mudanças que quebrem funcionalidades existentes nem removeremos endpoints sem um período de descontinuação.

Especificamente, não introduziremos mudanças incompatíveis das seguintes formas:

  1. Não removeremos parâmetros documentados e atributos de resposta.
  2. Não alteraremos o tipo de dado conforme documentado em nossas respostas de API.

No entanto, as seguintes alterações não são consideradas breaking changes:

Recomendamos fortemente integrar nossa API de forma que não quebre caso novos atributos de resposta ou cabeçalhos sejam introduzidos.

Caso façamos alterações em nossa API, forneceremos documentação clara e aviso prévio suficiente (30 dias) para garantir uma transição tranquila. Os avisos serão compartilhados por e-mails de newsletter, publicações no Twitter/X e atualizações em nosso blog.

API de Clientes

Endpoint de Listagem de Clientes

GET /api/v1/customer/listing

Custo: 1 crédito / solicitação + 2 crédito / empresa retornada. Os créditos são cobrados mesmo quando a solicitação retorna um resultado vazio.

Obtenha uma lista de clientes, investidores e parceiros/plataformas altamente prováveis de uma empresa-alvo, categorizados por tipo de relacionamento.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/customer/listing"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CustomerAPIApi(api_client)
    response = api.get_customer_listing(website="https://www.stripe.com")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CustomerAPIApi();
api.getCustomerListing("https://www.stripe.com").then(function (data) {
  console.log(data);
});

Exemplo de resposta:

{
  "customers": [
    {
      "name": "Apple",
      "description": "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide.",
      "tagline": "Think different.",
      "website": "https://www.apple.com",
      "company_logo_url": "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com",
      "id": "abc123",
      "industry": 45202030,
      "specialties": ["Technology", "Consumer Electronics"],
      "x_profile": "https://x.com/Apple"
    }
  ],
  "investors": [
    {
      "name": "Sequoia Capital",
      "description": "Sequoia Capital is a venture capital firm focused on technology companies.",
      "tagline": null,
      "website": "https://www.sequoiacap.com",
      "company_logo_url": "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.sequoiacap.com",
      "id": "def456",
      "industry": 40203010,
      "specialties": ["Venture Capital", "Growth Equity"],
      "x_profile": "https://x.com/sequoia"
    }
  ],
  "partner_platforms": [
    {
      "name": "Amazon Web Services",
      "description": "Amazon Web Services provides cloud computing platforms and APIs.",
      "tagline": null,
      "website": "https://aws.amazon.com",
      "company_logo_url": "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Faws.amazon.com",
      "id": "ghi789",
      "industry": 45101010,
      "specialties": ["Cloud Computing", "Infrastructure"],
      "x_profile": "https://x.com/awscloud"
    }
  ],
  "next_page": "https://nubela.co/api/v1/customer/listing?website=https://www.stripe.com&cursor=abc123"
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
site Sim A URL do site ou o nome da empresa-alvo. Uma URL de site (ex.: https://www.stripe.com) é altamente recomendado para maior precisão. https://www.stripe.com
cursor Não Cursor de paginação de next_page em uma resposta anterior abc123
page_size Não Número de resultados por página (1-200, padrão 200) 50
quality_filter Não Filtra resultados de baixa qualidade (TLDs indesejados como .top, .xyz e sites inacessíveis). Defina como false para incluir todos os resultados. (padrão: true) false
use_cache Não Controla o uso de cache. Sem distinção entre maiúsculas e minúsculas. Valores: if-recent (usa dados em cache quando o último scrape foi há menos de 29 dias, caso contrário enriquece ao vivo), if-present (padrão; retorna o cache primeiro, enriquece ao vivo se ausente), if-present-only (retorna somente o cache; retorna 404 se ausente), never (sempre enriquecer ao vivo). Valores inválidos revertem para o padrão do endpoint. if-present

Resposta

Chave Descrição Exemplo
customers Uma lista de empresas que são prováveis clientes da empresa-alvo. Entidades que pagam pelo produto/serviço da empresa-alvo. Lista de objetos CustomerCompany
investors Uma lista de empresas que são investidoras (fundos de venture capital, fundos de private equity, redes de investidores anjo) da empresa-alvo. Lista de objetos CustomerCompany
partner_platforms Uma lista de empresas que são parceiras, plataformas ou fornecedoras de serviços que a empresa-alvo utiliza ou integra (stack tecnológico, mídia, agências). Lista de objetos CustomerCompany
next_page O URI da API que serve como cursor para paginação. Seguir este URL com sua chave de API levará à próxima página de resultados. Será nulo para a última página. https://nubela.co/api/v1/customer/list?...

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Não foi possível extrair informações suficientes sobre a empresa-alvo
404 Não Nenhum dado em cache encontrado ao use_cache=if-present-only

ClienteEmpresa

Chave Descrição Exemplo
name Nome da empresa "Apple"
description Uma breve descrição da empresa "Apple Inc. designs, manufactures, and markets smartphones..."
tagline Tagline ou slogan da empresa "Think different."
site URL do site da empresa "https://www.apple.com"
company_logo_url URL para a API de logotipo da empresa. Desenvolvido por Endpoint de Logo da Empresa. Autentique-se com seu bearer token. null se não houver site. "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com"
id Identificador único "abc123"
industry Código de setor GICS de 8 dígitos 45202030
specialties Lista de especialidades da empresa ["Technology"]
x_profile URL do perfil no X (Twitter) "https://x.com/Apple"

Observação sobre company_logo_url: Esta URL é fornecida pelo Endpoint de Logo da Empresa. Autentique-se com seu Bearer token (o mesmo da API principal). Estes são links temporários — a abordagem recomendada é baixar a imagem via URL assim que a resposta for retornada e hospedar a imagem no seu lado.

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 10
X-NinjaPear-Cache-Age-Days Idade dos dados retornados em dias inteiros. 0 quando dados atualizados são retornados do enriquecimento em tempo real. 12

API de Concorrentes

Endpoint de Listagem de Concorrentes

GET /api/v1/competitor/listing

Custo: 2 créditos / concorrente retornado. Mínimo 5 créditos por requisição, cobrados mesmo quando nenhum resultado é encontrado.

Obtenha uma lista de empresas concorrentes de uma empresa-alvo, com o motivo da concorrência.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/competitor/listing"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompetitorAPIApi(api_client)
    response = api.get_competitor_listing(website="https://www.stripe.com")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompetitorAPIApi();
api.getCompetitorListing("https://www.stripe.com").then(function (data) {
  console.log(data);
});

Exemplo de resposta:

{
  "competitors": [
    {
      "company_details_url": "https://nubela.co/api/v1/company/details?website=https://www.adyen.com",
      "website": "https://www.adyen.com",
      "competition_reason": "product_overlap"
    },
    {
      "company_details_url": "https://nubela.co/api/v1/company/details?website=https://squareup.com",
      "website": "https://squareup.com",
      "competition_reason": "product_overlap"
    },
    {
      "company_details_url": "https://nubela.co/api/v1/company/details?website=https://www.checkout.com",
      "website": "https://www.checkout.com",
      "competition_reason": "organic_keyword_overlap"
    }
  ]
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
site Sim A URL do site ou o nome da empresa-alvo. Uma URL de site (ex.: https://www.stripe.com) é altamente recomendado para maior precisão. https://www.stripe.com
use_cache Não Controla o uso de cache. Sem distinção entre maiúsculas e minúsculas. Valores: if-recent (usa dados em cache quando o último scrape foi há menos de 29 dias, caso contrário enriquece ao vivo), if-present (padrão; retorna o cache primeiro, enriquece ao vivo se ausente), if-present-only (retorna somente o cache; retorna 404 se ausente), never (sempre enriquecer ao vivo). Valores inválidos revertem para o padrão do endpoint. if-present

Resposta

Chave Descrição Exemplo
competitors Uma lista de empresas concorrentes da empresa-alvo. Lista de Empresa Concorrente objetos

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Não foi possível extrair informações suficientes sobre a empresa-alvo
404 Não Nenhum dado em cache encontrado ao use_cache=if-present-only

Empresa Concorrente

Chave Descrição Exemplo
company_details_url URL para o endpoint de detalhes da empresa deste concorrente. Autentique-se com seu bearer token para recuperar os detalhes completos da empresa. "https://nubela.co/api/v1/company/details?website=https://www.adyen.com"
site URL do site da empresa "https://www.adyen.com"
competition_reason Por que esta empresa é considerada concorrente. Um dos valores do campo Motivo da Concorrência enum. "product_overlap"

Enum de Motivo da Concorrência

Valor Descrição
organic_keyword_overlap Ambas as empresas posicionam para palavras-chave orgânicas similares
product_overlap Ambas as empresas oferecem produtos ou serviços similares

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 4
X-NinjaPear-Cache-Age-Days Idade dos dados retornados em dias inteiros. 0 quando dados atualizados são retornados do enriquecimento em tempo real. 12

API de Produto

Endpoint de Listagem de Produtos

GET /api/v1/product/listing

Custo: 3 créditos / requisição. Os créditos são cobrados mesmo que nenhum produto seja encontrado para uma empresa válida.

Obtenha uma lista de produtos e serviços oferecidos por uma empresa-alvo.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://matterport.com" \
  "https://nubela.co/api/v1/product/listing"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.ProductAPIApi(api_client)
    response = api.get_product_listing(website="https://matterport.com")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.ProductAPIApi();
api.getProductListing("https://matterport.com").then(function (data) {
  console.log(data);
});

Exemplo de resposta:

{
  "products": [
    {
      "name": "Matterport Digital Twin Platform",
      "tagline": "Capture, share, and collaborate in immersive 3D.",
      "description": "Matterport's 3D digital twin platform allows users to create immersive 3D models of physical spaces, enabling virtual tours, detailed measurements, and remote collaboration. It helps optimize space planning, manage costs, and streamline project management across various industries.",
      "categories": [
        "3D Modeling",
        "Digital Twins",
        "Virtual Tours",
        "Real Estate",
        "Construction",
        "Facilities Management"
      ],
      "tags": [],
      "structured_features": {
        "3d_insights": true,
        "centralized_management": true,
        "workplace_planning": true,
        "risk_mitigation": true,
        "bim_cad_generation": true,
        "qa_qc_monitoring": true,
        "asset_documentation": true,
        "space_planning": true,
        "capital_project_execution": true,
        "remote_oversight": true,
        "dimensionally_accurate_data": true,
        "secure_cloud_hosting": true
      },
      "freeform_features": [
        "immersive exploration from the palm of your hand",
        "cut the time and cost of workplace planning",
        "accelerating your ability to execute",
        "unmatched 3D visual clarity"
      ],
      "pricing": {
        "model": "unknown",
        "starts_at_monthly_usd": null,
        "tiers": []
      },
      "integrations": [
        "Procore",
        "Autodesk",
        "AWS"
      ],
      "platforms": [
        "web"
      ],
      "source_urls": [
        "http://matterport.com/",
        "https://go.matterport.com/corporate-occupiers.html",
        "https://matterport.com/solutions/design-construction",
        "http://matterport.com/solutions/corporate-real-estate",
        "http://matterport.com/contact-sales"
      ]
    }
  ]
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
site Sim A URL do site ou o nome da empresa-alvo. Uma URL de site (ex.: https://matterport.com) é altamente recomendado para maior precisão. https://matterport.com
use_cache Não Controla o uso de cache. Sem distinção entre maiúsculas e minúsculas. Valores: if-recent (padrão; usa dados em cache quando o último scrape foi há menos de 29 dias, caso contrário enriquece ao vivo), if-present (retorna o cache primeiro, enriquece ao vivo se ausente), if-present-only (retorna somente o cache; retorna 404 se ausente), never (sempre enriquecer ao vivo). Valores inválidos revertem para o padrão do endpoint. if-recent

Resposta

Chave Descrição Exemplo
products Uma lista de produtos e serviços oferecidos pela empresa-alvo. Retorna uma lista vazia quando a empresa é válida, mas nenhum produto ou serviço é detectado. Lista de Objeto Product objetos

Objeto Product

Chave Descrição Exemplo
name Nome completo do produto ou serviço. Produtos, SKUs, plataformas ou ofertas com preços separados são retornados como linhas distintas. "Matterport Digital Twin Platform"
tagline Tagline de uma linha do produto, quando disponível. "Capture, share, and collaborate in immersive 3D."
description Uma a três frases descrevendo o que o produto faz. "Matterport's 3D digital twin platform allows users to create immersive 3D models of physical spaces..."
categories Categorias de produto, incluindo classe do produto, setor ou agrupamentos por caso de uso compatíveis com o site. ["3D Modeling", "Digital Twins"]
tags Atributos resumidos do produto, estilos de implantação, rótulos de tecnologia ou outras tags pesquisáveis. ["ai-powered", "self-hosted"]
structured_features Mapa de recursos usando chaves canônicas e valores booleanos, textuais ou numéricos. As chaves variam por categoria de produto. { "secure_cloud_hosting": true }
freeform_features Frases de recursos que não se encaixam em uma chave canônica. ["unmatched 3D visual clarity"]
pricing Modelo de preços, preço inicial e níveis quando as informações de preço estão disponíveis. null quando o preço não pode ser determinado. Objeto de Preços
integrations Nomes de produtos, plataformas ou serviços com os quais este produto se integra. ["Procore", "Autodesk", "AWS"]
platforms Plataformas onde o produto está disponível, como web, ios, android, macos, windows, linux, api, cli, ou chrome-extension. ["web"]
source_urls URLs do site da empresa-alvo onde os dados do produto foram encontrados. ["https://matterport.com/solutions/design-construction"]

Objeto de Preços

Chave Descrição Exemplo
model Modelo de preços. Um dos valores do Enum de Modelo de Preços. "subscription"
starts_at_monthly_usd Menor preço mensal em USD encontrado no site da empresa. null quando desconhecido ou indisponível. 29.0
tiers Níveis de preço encontrados no site da empresa. Lista de Objeto PricingTier objetos

Objeto PricingTier

Chave Descrição Exemplo
name Nome do nível de preço. "Business"
price_usd_monthly Preço mensal em USD para este plano. null quando desconhecido. 99.0
features Recursos listados para este nível de preço. ["SSO", "Audit logs"]

Enum de Modelo de Preços

Valor Descrição
freemium Plano gratuito com upgrades pagos
subscription Assinatura paga recorrente
one-time Compra única
payg Preços por uso
enterprise Preços personalizados para empresas
unknown Preços existem ou podem existir, mas o modelo não está claro

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 3
X-NinjaPear-Cache-Age-Days Idade dos dados retornados em dias inteiros. 0 quando dados atualizados são retornados do enriquecimento em tempo real. 12

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Site inacessível ou a entrada é inválida
404 Não Nenhum dado em cache encontrado ao use_cache=if-present-only
503 Não A capacidade de rastreamento está temporariamente saturada. Tente novamente após um breve intervalo.

API de Empresa

Endpoint de Logo da Empresa

GET /api/v1/company/logo

Custo: 0 crédito / solicitação bem-sucedida. (GRÁTIS)

Recupera o logotipo de uma empresa a partir da URL do seu site. Retorna o logotipo como uma imagem PNG (128x128).

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/logo" \
  --output logo.png
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    logo_data = api.get_company_logo(website="https://www.stripe.com")

    # Save the logo image
    with open("logo.png", "wb") as f:
        f.write(logo_data)
var NinjaPear = require("ninjapear");
var fs = require("fs");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getCompanyLogo("https://www.stripe.com").then(function (data) {
  // Save the logo image
  fs.writeFileSync("logo.png", Buffer.from(data));
});

Exemplo de resposta:

Exemplo de Logo da Empresa

Um binário de imagem PNG bruta (Content-Type: image/png).

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
site Sim A URL do site da empresa-alvo https://www.stripe.com

Resposta

A 200 a resposta retorna o logotipo como uma imagem PNG bruta com Content-Type: image/png.

Códigos de Erro

Código de Status Cobrado? Descrição
404 Não Nenhum logotipo encontrado para o domínio informado

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 0

Endpoint de Detalhes da Empresa

GET /api/v1/company/details

Média de 10,4s

Custo: 3 créditos / solicitação (base). Adicione 2 créditos quando include_employee_count=true. Adicione 1 crédito quando follower_count=include. Adicione 2 créditos quando addresses=best-effort-exhaustive. Total máximo: 8 créditos. Os créditos são cobrados mesmo que nenhum dado seja encontrado.

Recupere os detalhes de uma empresa a partir da URL do seu site. Retorna metadados da empresa, incluindo descrição, setor, URLs de redes sociais, a equipe de liderança atual e mais.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/details"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    details = api.get_company_details(website="https://www.stripe.com")
    print(details)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getCompanyDetails("https://www.stripe.com").then(function (data) {
  console.log(data);
});

Exemplo de resposta (empresa privada):

{
  "websites": ["https://stripe.com", "https://stripe.dev"],
  "description": "Stripe is a technology company that builds economic infrastructure for the internet.",
  "industry": 45102010,
  "company_type": "PRIVATELY_HELD",
  "founded_year": 2010,
  "specialties": ["Payments", "Financial Services", "APIs"],
  "name": "Stripe",
  "tagline": "Financial infrastructure for the internet",
  "logo_url": "https://nubela.co/api/v1/company/logo?website=https://stripe.com",
  "cover_pic_url": "https://example.com/stripe-cover.png",
  "facebook_url": "https://facebook.com/stripe",
  "twitter_url": "https://twitter.com/stripe",
  "instagram_url": null,
  "employee_count": 8000,
  "addresses": [
    {
      "address_type": "HEADQUARTERS",
      "line1": "354 Oyster Point Blvd",
      "line2": null,
      "city": "South San Francisco",
      "state": "CA",
      "postal_code": "94080",
      "country_code": "US",
      "country": "United States",
      "is_primary": true
    }
  ],
  "executives": [
    {
      "name": "Patrick Collison",
      "title": "Chief Executive Officer",
      "role": "CEO",
      "person_profile_url": "https://nubela.co/api/v2/employee/profile?employer_website=https%3A%2F%2Fstripe.com&first_name=Patrick&last_name=Collison"
    }
  ],
  "similar_companies": "https://nubela.co/api/v1/competitor/listing?website=https%3A%2F%2Fstripe.com",
  "updates": "https://nubela.co/api/v1/company/updates?website=https%3A%2F%2Fstripe.com",
  "funding": "https://nubela.co/api/v1/company/funding?website=https%3A%2F%2Fstripe.com",
  "public_listing": null,
  "follower_count": 272190,
  "following_count": 555
}

Exemplo de resposta (empresa pública):

{
  "websites": ["https://apple.com"],
  "description": "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide.",
  "industry": 45202030,
  "company_type": "PUBLIC_COMPANY",
  "founded_year": 1976,
  "specialties": ["Consumer Electronics", "Software", "Services"],
  "name": "Apple",
  "tagline": "Think different",
  "logo_url": "https://nubela.co/api/v1/company/logo?website=https://apple.com",
  "cover_pic_url": "https://example.com/apple-cover.png",
  "facebook_url": "https://facebook.com/apple",
  "twitter_url": "https://twitter.com/apple",
  "instagram_url": "https://instagram.com/apple",
  "employee_count": 164000,
  "addresses": [
    {
      "address_type": "HEADQUARTERS",
      "line1": "One Apple Park Way",
      "line2": null,
      "city": "Cupertino",
      "state": "CA",
      "postal_code": "95014",
      "country_code": "US",
      "country": "United States",
      "is_primary": true
    }
  ],
  "executives": [
    {
      "name": "Tim Cook",
      "title": "Chief Executive Officer",
      "role": "CEO",
      "person_profile_url": "https://nubela.co/api/v2/employee/profile?employer_website=https%3A%2F%2Fapple.com&first_name=Tim&last_name=Cook"
    }
  ],
  "similar_companies": "https://nubela.co/api/v1/competitor/listing?website=https%3A%2F%2Fapple.com",
  "updates": "https://nubela.co/api/v1/company/updates?website=https%3A%2F%2Fapple.com",
  "funding": "https://nubela.co/api/v1/company/funding?website=https%3A%2F%2Fapple.com",
  "follower_count": 9500000,
  "following_count": 1,
  "public_listing": {
    "stock_symbol": "AAPL",
    "ipo_date": "1980-12-12",
    "isin": "US0378331005",
    "figi": "BBG000B9XRY4",
    "cusip": "037833100",
    "lei": "HWUPKR0MPOU8FGXBT394",
    "cik": "0000320193",
    "sic_code": "3571",
    "revenue_usd": 383285000000,
    "revenue_captured_at": "2024-09-28",
    "ebitda_usd": 134000000000,
    "ebitda_captured_at": "2024-09-28"
  }
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
site Sim A URL do site ou o nome da empresa-alvo. Uma URL de site (ex.: https://www.stripe.com) é altamente recomendado para maior precisão. https://www.stripe.com
include_employee_count Não Busca dados atualizados de número de funcionários via pesquisa na web. Adiciona 2 créditos ao custo da requisição. Valores válidos: true, false (padrão). true
follower_count Não Incluir contagens de seguidores e seguidos no Twitter/X. Adiciona 1 crédito ao custo da solicitação. Valores válidos: include. Omita ou passe qualquer outro valor para excluir. include
addresses Não Modo de detalhamento de endereço. O padrão é hq-only. Use best-effort-exhaustive para buscar e persistir endereços físicos de escritórios corporativos globalmente com base no melhor esforço. Adiciona 2 créditos ao custo da requisição. best-effort-exhaustive
use_cache Não Controla o uso de cache. Sem distinção entre maiúsculas e minúsculas. Valores: if-recent (padrão; usa dados em cache quando o último scrape foi há menos de 29 dias, caso contrário enriquece ao vivo), if-present (retorna o cache primeiro, enriquece ao vivo se ausente), if-present-only (retorna somente o cache; retorna 404 se ausente), never (sempre enriquecer ao vivo). Valores inválidos revertem para o padrão do endpoint. if-recent

Resposta

Chave Descrição Exemplo
websites Lista de todas as URLs do site da empresa ["https://stripe.com", "https://stripe.dev"]
description Uma breve descrição da empresa "Stripe is a technology company..."
industry Código de setor GICS de 8 dígitos 45102010
company_type Tipo de empresa (PUBLIC_COMPANY, PRIVATELY_HELD, GOVERNMENT_AGENCY, NON_PROFIT, EDUCATIONAL, PARTNERSHIP, SELF_EMPLOYED, SELF_OWNED) "PRIVATELY_HELD"
founded_year Ano de fundação da empresa 2010
specialties Lista de especialidades da empresa ["Payments", "Financial Services"]
name Nome da empresa "Stripe"
tagline Tagline ou slogan da empresa "Financial infrastructure for the internet"
logo_url URL para o Endpoint de logo da empresa. Autentique-se com seu bearer token de API key. "https://nubela.co/api/v1/company/logo?website=https://stripe.com"
cover_pic_url URL para a imagem de capa/banner da empresa "https://example.com/cover.png"
facebook_url URL do perfil no Facebook "https://facebook.com/stripe"
twitter_url URL do perfil no Twitter/X "https://twitter.com/stripe"
instagram_url URL do perfil no Instagram null
employee_count Número estimado de funcionários 8000
employee_count_range_min Limite inferior do intervalo de número de funcionários. Presente apenas quando include_employee_count=true. 7500
employee_count_range_max Limite superior do intervalo de contagem de funcionários. Presente apenas quando include_employee_count=true. 8500
follower_count Número de seguidores no Twitter/X. Presente somente quando follower_count=include. 272190
following_count Número de contas no Twitter/X seguidas. Presente somente quando follower_count=include. 555
addresses Lista de endereços da empresa. Por padrão, exibe apenas a sede, a menos que addresses=best-effort-exhaustive é solicitado. [Objeto de Endereço]
executives Lista de executivos e membros do conselho da empresa [Objeto Executive]
similar_companies URL para o Endpoint de listagem de concorrentes. Autentique-se com seu bearer token para recuperar os concorrentes. "https://nubela.co/api/v1/competitor/listing?website=https%3A%2F%2Fstripe.com"
updates URL para o Endpoint de atualizações da empresa. Autentique-se com seu bearer token para recuperar as atualizações. "https://nubela.co/api/v1/company/updates?website=https%3A%2F%2Fstripe.com"
funding URL para o Endpoint de captação da empresa. Autentique-se com seu bearer token para recuperar o histórico de captação. "https://nubela.co/api/v1/company/funding?website=https%3A%2F%2Fstripe.com"
public_listing Dados de empresas públicas, incluindo informações de ações e dados financeiros. null para empresas privadas. Objeto PublicListing

Objeto de Endereço

Chave Descrição Exemplo
address_type Tipo de endereço (HEADQUARTERS, REGISTERED, BRANCH, MAILING, OTHER) "HEADQUARTERS"
line1 Endereço, linha 1 "354 Oyster Point Blvd"
line2 Endereço, linha 2 null
city Nome da cidade "South San Francisco"
state Estado, província ou região "CA"
postal_code CEP/Código postal "94080"
country_code Código de país ISO 3166-1 alpha-2 "US"
country Nome completo do país "United States"
is_primary Se este é o endereço principal true

Objeto Executive

Chave Descrição Exemplo
name Nome completo do executivo "Patrick Collison"
title Cargo "Chief Executive Officer"
role Tipo de cargo normalizado (CEO, CFO, COO, CTO, CMO, PRESIDENT, VICE_PRESIDENT, DIRECTOR, BOARD_MEMBER, CHAIRMAN, FOUNDER, OTHER) "CEO"
person_profile_url URL pré-preenchida para o Endpoint de perfil de pessoa. Autentique-se com seu bearer token para buscar o perfil do executivo. null quando o primeiro nome ou o site da empresa estiver ausente. "https://nubela.co/api/v2/employee/profile?employer_website=https%3A%2F%2Fstripe.com&first_name=Patrick&last_name=Collison"

Objeto PublicListing

Este objeto está presente (não nulo) apenas para empresas públicas. Para empresas privadas, public_listing será null.

Chave Descrição Exemplo
stock_symbol Símbolo de ticker de ação "AAPL"
ipo_date Data do IPO em formato ISO "1980-12-12"
isin Número Internacional de Identificação de Valores Mobiliários "US0378331005"
figi Financial Instrument Global Identifier "BBG000B9XRY4"
cusip Identificador CUSIP "037833100"
lei Identificador de Entidade Legal "HWUPKR0MPOU8FGXBT394"
cik Chave de Índice Central SEC "0000320193"
sic_code Código de Classificação Industrial Padrão SEC "3571"
revenue_usd Receita anual em USD 383285000000
revenue_captured_at Data em que os dados de receita foram capturados (formato ISO) "2024-09-28"
ebitda_usd EBITDA em USD 134000000000
ebitda_captured_at Data em que os dados de EBITDA foram capturados (formato ISO) "2024-09-28"

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 2
X-NinjaPear-Cache-Age-Days Idade dos dados retornados em dias inteiros. 0 quando dados atualizados são retornados do enriquecimento em tempo real. 12

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Site inacessível
404 Não Nenhum dado em cache encontrado ao use_cache=if-present-only
404 Sim Não foi possível extrair dados da empresa do site

Endpoint de Contagem de Funcionários

GET /api/v1/company/employee-count

Custo: 2 créditos / requisição bem-sucedida.

Recupere a faixa de número de funcionários de uma empresa a partir da URL do seu site.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/employee-count"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    response = api.get_employee_count(website="https://www.stripe.com")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getEmployeeCount("https://www.stripe.com").then(function (data) {
  console.log(data);
});

Exemplo de resposta:

{
  "employee_count": 3500
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
site Sim A URL do site ou o nome da empresa-alvo. Uma URL de site (ex.: https://www.stripe.com) é altamente recomendado para maior precisão. https://www.stripe.com
use_cache Não Controla o uso de cache. Sem distinção entre maiúsculas e minúsculas. Valores: if-recent (padrão; usa dados em cache quando o último scrape foi há menos de 29 dias, caso contrário enriquece ao vivo), if-present (retorna o cache primeiro, enriquece ao vivo se ausente), if-present-only (retorna somente o cache; retorna 404 se ausente), never (sempre enriquecer ao vivo). Valores inválidos revertem para o padrão do endpoint. if-recent

Resposta

Chave Descrição Exemplo
employee_count Número estimado de funcionários 3500

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 2
X-NinjaPear-Cache-Age-Days Idade dos dados retornados em dias inteiros. 0 quando dados atualizados são retornados do enriquecimento em tempo real. 12

Códigos de Erro

Código de Status Cobrado? Descrição
404 Não Nenhum dado de número de funcionários encontrado para o site informado
404 Não Nenhum dado em cache encontrado ao use_cache=if-present-only

Endpoint de Atualizações da Empresa

GET /api/v1/company/updates

Custo: 2 créditos / requisição.

Recupera as publicações de blog e atualizações do X/Twitter mais recentes de uma empresa. Retorna uma linha do tempo combinada de publicações recentes de blog e do X, ordenadas por timestamp.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/updates"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    response = api.get_company_updates(website="https://www.stripe.com")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getCompanyUpdates("https://www.stripe.com").then(function (data) {
  console.log(data);
});

Exemplo de resposta

{
  "blogs": ["https://stripe.com/blog/feed.rss"],
  "x_profile": "https://x.com/stripe",
  "youtube_channels": ["https://www.youtube.com/channel/UCdog0Ap82jpFvSnxorxF_lA"],
  "updates": [
    {
      "url": "https://stripe.com/blog/annual-letter-2024",
      "title": "Stripe's annual letter",
      "description": "A look back at what we built in 2024 and what's ahead.",
      "image_url": null,
      "timestamp": "2025-03-01T12:00:00+00:00",
      "source": "blog"
    },
    {
      "url": "https://x.com/stripe/status/1234567890",
      "title": "We just launched a new feature...",
      "description": "We just launched a new feature that makes payments even easier. Check it out!",
      "image_url": "https://pbs.twimg.com/media/example.jpg",
      "timestamp": "2025-02-28T18:30:00+00:00",
      "source": "x"
    },
    {
      "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
      "title": "How Stripe scales payments",
      "description": "A deep dive into the infrastructure behind Stripe payments.",
      "image_url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
      "timestamp": "2025-02-20T09:00:00+00:00",
      "source": "youtube"
    }
  ],
  "timestamp": "2025-03-16T10:00:00+00:00"
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
site Sim A URL do site ou o nome da empresa-alvo. Uma URL de site (ex.: https://www.stripe.com) é altamente recomendado para maior precisão. https://www.stripe.com
use_cache Não Controla o uso de cache. Sem distinção entre maiúsculas e minúsculas. Valores: if-recent (padrão; usa dados em cache quando o último scrape foi há menos de 1 dia, caso contrário enriquece ao vivo), if-present (retorna o cache primeiro, enriquece ao vivo se ausente), if-present-only (retorna somente o cache; retorna 404 se ausente), never (sempre enriquecer ao vivo). Valores inválidos revertem para o padrão do endpoint. if-recent

Resposta

Chave Descrição Exemplo
blogs Lista de URLs de feeds RSS do blog (se RSS foi encontrado) ou URLs de páginas do blog ["https://stripe.com/blog/feed.rss"]
x_profile URL do perfil no X/Twitter, ou null se não encontrado "https://x.com/stripe"
youtube_channels Lista de URLs de canais do YouTube encontrados para a empresa, ou vazio se nenhum for encontrado ["https://www.youtube.com/channel/UCdog0Ap82jpFvSnxorxF_lA"]
updates Lista de objetos de atualização (posts de blog, tweets e vídeos do YouTube combinados), ordenados por data decrescente. Consulte Objeto de Atualização
timestamp Timestamp UTC de quando estes dados foram extraídos "2025-03-16T10:00:00+00:00"

Objeto de Atualização

Chave Descrição Exemplo
url URL da publicação no blog, tweet ou vídeo do YouTube "https://stripe.com/blog/example"
title Título da publicação (primeiros 80 caracteres para tweets) "Stripe's annual letter"
description Descrição da publicação, texto do tweet ou descrição do vídeo (até 500 caracteres para blogs) "A look back at..."
image_url URL da imagem (mídia do tweet ou miniatura de vídeo), ou null "https://pbs.twimg.com/media/example.jpg"
timestamp Timestamp de publicação no formato ISO 8601, ou null se desconhecido "2025-03-01T12:00:00+00:00"
source Tipo de origem da atualização "blog", "x", ou "youtube"

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 2
X-NinjaPear-Cache-Age-Days Idade dos dados retornados em dias inteiros. 0 quando dados atualizados são retornados do enriquecimento em tempo real. 1

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Parâmetro de site ausente ou inválido
403 Não Créditos insuficientes
404 Não Nenhum dado em cache encontrado ao use_cache=if-present-only

Endpoint de Captação da Empresa

GET /api/v1/company/funding

Custo: 2 créditos / solicitação (base) + 1 crédito por investidor único retornado. A cobrança base ainda se aplica quando nenhum dado de captação é encontrado (consulte error_code: "no_funding_data" abaixo).

Recupere o histórico de captação de uma empresa a partir da URL do seu site. Retorna o total captado, as rodadas individuais de captação com datas e valores, e os investidores participantes com seus sites.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --max-time 300 \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/funding"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    # Set a generous read timeout — calls can take up to 5 minutes.
    response = api.get_company_funding(website="https://www.stripe.com", _request_timeout=300)
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";
defaultClient.timeout = 300000; // 5 minutes

var api = new NinjaPear.CompanyAPIApi();
api.getCompanyFunding("https://www.stripe.com").then(function (data) {
  console.log(data);
});

Exemplo de resposta

{
  "website": "stripe.com",
  "total_funds_raised_usd": 9810000000,
  "credit_cost": 7,
  "funding_rounds": [
    {
      "round_type": "SECONDARY_SALE",
      "date": "2026-02-01",
      "amount_usd": null,
      "investors": [
        {
          "name": "Thrive Capital",
          "website": "thrivecap.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Coatue",
          "website": "coatue.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Andreessen Horowitz",
          "website": "a16z.com",
          "type": "company",
          "amount_usd": null
        }
      ]
    },
    {
      "round_type": "SERIES_I",
      "date": "2024-04-01",
      "amount_usd": 694200000,
      "investors": [
        {
          "name": "Sequoia Capital",
          "website": "sequoiacap.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Brookfield",
          "website": "brookfield.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Paradigm",
          "website": "paradigm.co",
          "type": "company",
          "amount_usd": null
        }
      ]
    },
    {
      "round_type": "SERIES_I",
      "date": "2023-03-01",
      "amount_usd": 6500000000,
      "investors": [
        {
          "name": "GIC",
          "website": "gic.com.sg",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Goldman Sachs",
          "website": "goldmansachs.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Temasek",
          "website": "temasek.com.sg",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Thrive Capital",
          "website": "thrivecap.com",
          "type": "company",
          "amount_usd": null
        }
      ]
    },
    {
      "round_type": "SERIES_H",
      "date": "2021-03-01",
      "amount_usd": 600000000,
      "investors": [
        {
          "name": "Allianz X",
          "website": "allianzx.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Fidelity",
          "website": "fidelity.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Baillie Gifford",
          "website": "bailliegifford.com",
          "type": "company",
          "amount_usd": null
        }
      ]
    },
    {
      "round_type": "SEED",
      "date": "2011-03-01",
      "amount_usd": 2000000,
      "investors": [
        {
          "name": "Peter Thiel",
          "website": null,
          "type": "angel",
          "amount_usd": null
        },
        {
          "name": "Sequoia Capital",
          "website": "sequoiacap.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Elon Musk",
          "website": null,
          "type": "angel",
          "amount_usd": null
        }
      ]
    }
  ]
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
site Sim A URL do site ou o nome da empresa-alvo. Uma URL de site (ex.: https://www.stripe.com) é altamente recomendado para maior precisão. https://www.stripe.com
use_cache Não Controla o uso de cache. Sem distinção entre maiúsculas e minúsculas. Valores: if-recent (padrão; usa dados em cache quando o último scrape foi há menos de 29 dias, caso contrário enriquece ao vivo), if-present (retorna o cache primeiro, enriquece ao vivo se ausente), if-present-only (retorna somente o cache; retorna 404 se ausente), never (sempre enriquecer ao vivo). Valores inválidos revertem para o padrão do endpoint. if-recent

Resposta

Chave Descrição Exemplo
site O domínio da empresa descrito na resposta, ecoado da requisição "stripe.com"
total_funds_raised_usd Total captado em USD, ou null se não divulgado 9810000000
funding_rounds Array de objetos FundingRound, ordenados por data decrescente Veja abaixo
credit_cost Total de créditos cobrados por esta chamada (2 base + 1 por investidor único). As respostas em streaming entregam o custo em créditos no corpo da resposta, em vez do X-NinjaPear-Credit-Cost header. 7

Objeto FundingRound

Chave Descrição Exemplo
round_type Tipo de rodada de captação (veja os valores de tipo de rodada abaixo) "SERIES_A"
date Data da rodada em YYYY-MM-DD formato, ou null se desconhecido "2023-03-01"
amount_usd Valor captado nesta rodada em USD, ou null se não divulgado 600000000
investors Array de objetos Investor que participaram desta rodada Veja abaixo

Objeto Investor

Chave Descrição Exemplo
name Nome do investidor (empresa ou pessoa física) "Sequoia Capital"
site Domínio do site do investidor, ou null se desconhecido "sequoiacap.com"
type Ou "company" (empresa de VC, fundo, corporativo) ou "angel" (individual) "company"
amount_usd Valor contribuído por este investidor em USD, ou null se não divulgado null

Valores de Tipo de Rodada

PRE_SEED, SEED, SERIES_A, SERIES_B, SERIES_C, SERIES_D, SERIES_E, SERIES_F, SERIES_G, SERIES_H, SERIES_I até SERIES_Z, BRIDGE, VENTURE_DEBT, CONVERTIBLE_NOTE, GRANT, SECONDARY_SALE, PRIVATE_EQUITY, GROWTH_EQUITY, IPO, POST_IPO_EQUITY, POST_IPO_DEBT, DEBT_FINANCING, CROWDFUNDING, CORPORATE_ROUND, UNKNOWN

Cabeçalhos da Resposta

Este endpoint transmite sua resposta em streaming; HTTP trailers não são suportados, portanto o custo em créditos é entregue no corpo da resposta (o credit_cost campo) em vez do X-NinjaPear-Credit-Cost header. Quando a resposta é servida do cache, o X-NinjaPear-Credit-Cost header é retornado normalmente. O X-NinjaPear-Cache-Age-Days header é retornado nas respostas bem-sucedidas para todos os use_cache modos; o enriquecimento fresco ao vivo retorna 0.

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API (2 base + 1 por investidor). Apenas acertos de cache. 7
X-NinjaPear-Cache-Age-Days Idade dos dados retornados em dias inteiros. 0 quando dados atualizados são retornados do enriquecimento em tempo real. 12

Códigos de Erro

Erros do lado do cliente (HTTP 400 / 403) são retornados antes do início do corpo de streaming. Em casos de falha de cache, erros do lado do servidor são entregues como HTTP 200 com error e error_code campos no corpo da resposta — como a conexão de streaming já foi estabelecida, o código de status não pode ser alterado. Clientes que anteriormente ramificavam com base em response.status_code == 404 deve ramificar com base no error_code campo em vez disso.

Código de Status Cobrado? error_code (corpo) Descrição
400 Não Parâmetro de site ausente ou inválido
403 Não Créditos insuficientes
404 Não Nenhum dado em cache encontrado ao use_cache=if-present-only
200 (corpo contém erro) Sim (2 créditos) no_funding_data Nenhum dado de captação foi encontrado para o site informado. funding_rounds é [].
200 (corpo contém erro) Não service_temp_unavailable Serviço temporariamente indisponível. Tente novamente mais tarde. funding_rounds é [].

Endpoint de Consulta por Site

GET /api/v1/company/website

Custo: 1 crédito / solicitação (cobrado independentemente de um resultado ser encontrado ou não).

Resolva o nome de uma empresa para sua URL de site canônica.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "company_name=Apex" \
  --data-urlencode "country_code=us" \
  --data-urlencode "hint=cybersecurity firm" \
  "https://nubela.co/api/v1/company/website"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    response = api.get_website_lookup(
        company_name="Apex",
        country_code="us",
        hint="cybersecurity firm",
    )
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getWebsiteLookup("Apex", {
  countryCode: "us",
  hint: "cybersecurity firm",
}).then(function (data) {
  console.log(data);
});

Exemplo de resposta:

{
  "website": "https://www.apexsecurity.com"
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
company_name Sim O nome da empresa a ser consultada. Apex
country_code Não Código de país ISO 3166-1 alpha-2 de 2 letras opcional, usado para direcionar geograficamente a pesquisa (ex.: us, gb, de, sg). Consulte o lista completa de códigos ISO 3166-1 alpha-2. Padrão: us quando omitido. us
dica Não Forneça uma dica para diferenciar empresas com nomes semelhantes no mesmo país. cybersecurity firm

Resposta

Chave Descrição Exemplo
site A URL canônica resolvida do site. https://www.stripe.com

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 1

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Ausente ou inválido company_name parâmetro.
400 Não Inválido country_code (não é um código de 2 letras reconhecido).
404 Sim (1) Nenhum site correspondente foi encontrado para o nome de empresa informado.

API de Funcionários

Endpoint de E-mail Corporativo

GET /api/v1/employee/work-email

Custo: 2 créditos em uma consulta bem-sucedida (e-mail corporativo encontrado). Quando nenhum e-mail é encontrado (work_email é null), uma cobrança de token de 0.5 créditos é aplicado — isso desencoraja abusos enquanto mantém as consultas especulativas com baixo custo.

Faz uma tentativa com base nos dados disponíveis para retornar um e-mail corporativo público de uma pessoa, dado seu primeiro nome (sobrenome opcional) e um domínio da empresa.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "first_name=Patrick" \
  --data-urlencode "last_name=Collison" \
  --data-urlencode "domain=stripe.com" \
  "https://nubela.co/api/v1/employee/work-email"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.EmployeeAPIApi(api_client)
    result = api.find_work_email(
        first_name="Patrick",
        last_name="Collison",
        domain="stripe.com",
    )
    print(result)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.EmployeeAPIApi();
api
  .findWorkEmail({
    firstName: "Patrick",
    lastName: "Collison",
    domain: "stripe.com",
  })
  .then(function (data) {
    console.log(data);
  });

Exemplo de resposta (e-mail encontrado)

{
  "work_email": "[email protected]"
}

Exemplo de resposta (sem evidências)

{
  "work_email": null
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
first_name Sim Primeiro nome da pessoa. Patrick
last_name Não Sobrenome da pessoa. Melhora a precisão quando o padrão exige. Collison
domain Sim Domínio da empresa. O protocolo e o caminho são removidos, se presentes. stripe.com

Resposta

Chave Descrição Exemplo
work_email Endereço de e-mail corporativo com melhor esforço. null se nenhum e-mail público foi encontrado E nenhum padrão pôde ser inferido. "[email protected]" | null

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Total de créditos cobrados por esta chamada. 2 em um acerto; 0.5 em um erro de cache (cobrança anti-abuso de token). 2 ou 0.5

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Ausente ou inválido first_name / domain.
403 Não Créditos insuficientes.
503 Não Serviço temporariamente indisponível. Tente novamente mais tarde.

Endpoint de Perfil de Pessoa

GET /api/v2/employee/profile

Rápido — média 10,5s Detalhado: média 38,7s

Custo: 3 créditos / requisição. Os créditos são cobrados mesmo que nenhum dado seja encontrado.

Enriqueça o perfil profissional de um funcionário fornecendo um e-mail corporativo, uma combinação de nome e empregador, ou uma combinação de cargo e empregador. Retorna dados de perfil estruturados, incluindo histórico profissional, formação acadêmica, localização e presença em redes sociais.

Você deve fornecer pelo menos uma destas combinações de entrada:

Você sempre pode adicionar mais parâmetros para melhorar a precisão. Por exemplo, fornecer work_email juntamente com first_name, last_name, e role produzirá resultados melhores do que work_email sozinho.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "[email protected]" \
  "https://nubela.co/api/v2/employee/profile"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.EmployeeAPIApi(api_client)
    profile = api.get_person_profile_v2(work_email="[email protected]")
    print(profile)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.EmployeeAPIApi();
api.getPersonProfileV2({ workEmail: "[email protected]" }).then(function (data) {
  console.log(data);
});

Exemplo de resposta

{
  "id": "abc123de-f456-7890-abcd-ef1234567890",
  "slug": "elon-musk",
  "profile_pic_url": "https://pbs.twimg.com/profile_images/1234567890/photo_400x400.jpg",
  "first_name": "Elon",
  "middle_name": "Reeve",
  "last_name": "Musk",
  "full_name": "Elon Reeve Musk",
  "bio": "Mars & Cars, Chips & Dips",
  "follower_count": 195000000,
  "following_count": 782,
  "country": "US",
  "city": "USAUS",
  "state": "US-TX",
  "x_handle": "elonmusk",
  "x_profile_url": "https://x.com/elonmusk",
  "personal_website": "https://elonmusk.com",
  "work_experience": [
    {
      "role": "CEO",
      "company_name": "Tesla",
      "company_website": "tesla.com",
      "description": "Leading Tesla's mission to accelerate the world's transition to sustainable energy.",
      "start_date": "2008-10",
      "end_date": null
    },
    {
      "role": "CEO and CTO",
      "company_name": "SpaceX",
      "company_website": "spacex.com",
      "description": "Founded SpaceX with the goal of reducing space transportation costs and enabling the colonization of Mars.",
      "start_date": "2002-05",
      "end_date": null
    },
    {
      "role": "Co-founder",
      "company_name": "PayPal",
      "company_website": "paypal.com",
      "description": null,
      "start_date": "1999-01",
      "end_date": "2002-10"
    }
  ],
  "education": [
    {
      "major": "B.S. Economics",
      "school": "Wharton School, University of Pennsylvania",
      "start_date": "1992-01",
      "end_date": "1997-01"
    },
    {
      "major": "B.S. Physics",
      "school": "University of Pennsylvania",
      "start_date": "1992-01",
      "end_date": "1997-01"
    }
  ],
  "work_email_lookup": "https://nubela.co/api/v1/employee/work-email?first_name=Elon&last_name=Musk&domain=tesla.com",
  "similar_people": "https://nubela.co/api/v1/employee/similar?id=abc123de-f456-7890-abcd-ef1234567890"
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
work_email Condicional E-mail corporativo da pessoa. Obrigatório se employer_website não é fornecido. [email protected]
first_name Condicional Primeiro nome da pessoa. Obrigatório ao usar nome + employer_website combinação. John
middle_name Não Nome do meio da pessoa. Melhora a precisão quando combinado com outros parâmetros. Michael
last_name Não Sobrenome da pessoa. Melhora a precisão quando combinado com outros parâmetros. Smith
employer_website Condicional URL do site ou nome da empresa empregadora da pessoa. Uma URL de site é fortemente recomendada para maior precisão. Obrigatório se work_email não é fornecido. https://stripe.com
role Não Cargo ou função atual. Melhora a precisão. Obrigatório ao usar employer_website sem nome. CTO
slug Não Slug de pessoa para consulta direta de um perfil enriquecido existente. elon-musk
id Não ID de pessoa para consulta direta de um perfil enriquecido existente. abc123de-...
enrichment Não Controla a profundidade do enriquecimento em tempo real. Valores: fast (padrão; retorna rapidamente e inicia o enriquecimento detalhado em segundo plano), detailed (aguarda o enriquecimento detalhado antes de retornar).

Uma resposta rápida inclui menos detalhes biográficos, como dados de site e foto de perfil, mas retorna rapidamente o histórico estruturado de trabalho e formação acadêmica.

Uma requisição de enriquecimento rápido também inicia o enriquecimento detalhado em segundo plano, e você também tem direito a esse resultado. Consulte a mesma requisição com os mesmos parâmetros e use_cache=if-recent 10 a 30 segundos depois para recuperar o resultado completamente enriquecido sem custo adicional. Pare de fazer polling quando o X-NinjaPear-Enrichment-Status cabeçalho de resposta é complete. Assim que o enriquecimento detalhado for concluído, a mesma requisição retorna o perfil detalhado em cache sem custo adicional.

Use enrichment=fast quando você precisa de um resultado rápido para casos de uso como preencher uma UI. Use enrichment=detailed quando você precisa da resposta completa e não se importa em aguardar.
fast
use_cache Não Controla o uso de cache. Sem distinção entre maiúsculas e minúsculas. Valores: if-recent (padrão; usa dados em cache quando o último scrape foi há menos de 29 dias, caso contrário enriquece ao vivo), if-present (retorna o cache primeiro, enriquece ao vivo se ausente), if-present-only (retorna somente o cache; retorna 404 se ausente), never (sempre enriquecer ao vivo). Valores inválidos revertem para o padrão do endpoint. if-recent

Combinações de Entrada Válidas

Combinação Exemplo
work_email sozinho [email protected]
first_name + employer_website ?first_name=John&employer_website=https://stripe.com
employer_website + role ?employer_website=https://stripe.com&role=CTO
slug ou id ?slug=elon-musk

Parâmetros adicionais sempre podem ser incluídos para melhorar a precisão dos resultados.

Resposta

Chave Descrição Exemplo
id ID único da pessoa. Presente quando o perfil está associado a um registro de pessoa persistido. "abc123de-f456-7890-abcd-ef1234567890"
slug Slug único da pessoa. Presente quando o perfil está associado a um registro de pessoa persistido. "elon-musk"
profile_pic_url URL para a foto de perfil da pessoa (proveniente do X/Twitter). Pode ser null. "https://pbs.twimg.com/.../photo_400x400.jpg"
first_name Primeiro nome "Elon"
middle_name Nome do meio. Pode ser null. "Reeve"
last_name Sobrenome "Musk"
full_name Nome completo "Elon Reeve Musk"
bio Bio/descrição do perfil do X/Twitter. Pode ser null. "Mars & Cars, Chips & Dips"
follower_count Número de seguidores no X/Twitter. Pode ser null. 195000000
following_count Número de contas no X/Twitter seguidas. Pode ser null. 782
country País de residência. Código ISO 3166-1 alfa-2. "US"
city Cidade de residência. UN/LOCODE. "USAUS"
state Estado ou região de residência. Código de subdivisão ISO 3166-2. "US-TX"
x_handle Handle no X/Twitter (sem @). Pode ser null. "elonmusk"
x_profile_url URL para o perfil no X/Twitter. Pode ser null. "https://x.com/elonmusk"
personal_website URL do site pessoal. Pode ser null. "https://elonmusk.com"
work_experience Lista de registros de histórico profissional, do mais recente para o mais antigo [Objeto WorkExperience]
education Lista de registros de educação, do mais recente para o mais antigo [Objeto de Educação]
work_email_lookup URL pré-construída para o Endpoint de E-mail Corporativo para esta pessoa, com first_name, last_name, e domain (o website da experiência de trabalho mais recente) já preenchido. Chame-o diretamente com seu bearer token para resolver o e-mail corporativo da pessoa — sem necessidade de repassar os parâmetros. Custa 2 créditos por chamada. Pode ser null quando o site do empregador atual for desconhecido. "https://nubela.co/api/v1/employee/work-email?first_name=Elon&last_name=Musk&domain=tesla.com"
similar_people URL pré-construída para o Endpoint de Pessoas Semelhantes para esta pessoa, indexado pelo(a) id. Chame-o diretamente para buscar pessoas com o mesmo cargo em empresas concorrentes — sem necessidade de repassar os parâmetros de busca. "https://nubela.co/api/v1/employee/similar?id=abc123de-..."

Objeto WorkExperience

Chave Descrição Exemplo
role Cargo ou função "CEO"
company_name Nome da empresa "Tesla"
company_website Domínio do site da empresa. Pode ser null. "tesla.com"
description Descrição do que a pessoa fez nesta função. Pode ser null. "Leading Tesla's mission..."
start_date Data de início no formato YYYY-MM. Pode ser null. "2008-10"
end_date Data de término no formato AAAA-MM. null significa atualmente nesta função. null

Objeto de Educação

Chave Descrição Exemplo
major Grau e área de estudo "B.S. Economics"
school Nome da escola ou universidade "Wharton School, University of Pennsylvania"
start_date Data de início no formato YYYY-MM. Pode ser null. "1992-01"
end_date Data de término no formato AAAA-MM. Pode ser null. "1997-01"

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 3
X-NinjaPear-Cache-Age-Days Idade dos dados retornados em dias inteiros. 0 quando dados atualizados são retornados do enriquecimento em tempo real. 12
X-NinjaPear-Enrichment-Status Status detalhado de enriquecimento para respostas de Perfil de Pessoa v2. pending significa que a resposta é o perfil rápido e o enriquecimento detalhado ainda está em execução ou aguardando conclusão. complete significa que a resposta é o perfil detalhado em cache ou um(a) enrichment=detailed resultado. Faça polling até que este cabeçalho seja complete. complete

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Entrada inválida. É necessário fornecer work_email, ou first_name + employer_website, ou employer_website + role.
400 Não Inválido enrichment. Use fast ou detailed. O obsoleto speed parâmetro não é aceito.
400 Não work_email é um e-mail pessoal/gratuito (ex.: [email protected]). Forneça um e-mail corporativo.
403 Não Créditos insuficientes
404 Não work_email é uma caixa de entrada genérica/baseada em função (ex.: info@, support@, sales@, noreply@) que não corresponde a uma pessoa individual.
404 Não Nenhum dado em cache encontrado ao use_cache=if-present-only
404 Sim (3 créditos) Nenhum dado de perfil foi encontrado para a entrada informada
503 Não Serviço temporariamente indisponível. Tente novamente mais tarde.

Endpoint de Pessoas Semelhantes

GET /api/v1/employee/similar

Custo: 10 créditos base + 5 créditos por tupla (empresa, cargo) tentada. O custo base é cobrado independentemente de pessoas semelhantes serem encontradas, pois o endpoint consome recursos de enriquecimento em tempo real para atender cada requisição. Resultados em cache são gratuitos (veja abaixo).

Encontre pessoas que são similar a uma pessoa-alvo — definida como pessoas que ocupam o mesmo cargo em empresas concorrentes. Dado um alvo (por exemplo, o CEO da nubela.co), o endpoint identifica o empregador atual do alvo, consulta os concorrentes desse empregador e tenta enriquecer a pessoa com a mesma função em cada concorrente em tempo real. A resposta retorna o perfil do alvo, a lista de tuplas (empresa, função) que tentamos pesquisar e as pessoas similares que enriquecemos com sucesso.

Os parâmetros de entrada são idênticos ao Endpoint de Perfil de Pessoa. Você deve fornecer pelo menos uma destas combinações de entrada:

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --max-time 300 \
  --data-urlencode "[email protected]" \
  "https://nubela.co/api/v1/employee/similar"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.EmployeeAPIApi(api_client)
    # Set a generous read timeout — calls can take up to 5 minutes.
    result = api.get_similar_people(work_email="[email protected]", _request_timeout=300)
    print(result)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";
defaultClient.timeout = 300000; // 5 minutes

var api = new NinjaPear.EmployeeAPIApi();
api.getSimilarPeople({ workEmail: "[email protected]" }).then(function (data) {
  console.log(data);
});

Exemplo de resposta

{
  "target": {
    "first_name": "Tim",
    "last_name": "Cook",
    "full_name": "Tim Cook",
    "work_experience": [
      {
        "role": "CEO",
        "company_name": "Apple",
        "company_website": "apple.com",
        "start_date": "2011-08",
        "end_date": null
      }
    ]
  },
  "attempted_searches": [
    { "employer_website": "samsung.com", "role": "CEO" },
    { "employer_website": "google.com", "role": "CEO" },
    { "employer_website": "microsoft.com", "role": "CEO" },
    { "employer_website": "huawei.com", "role": "CEO" }
  ],
  "similar_people": [
    {
      "first_name": "Sundar",
      "last_name": "Pichai",
      "full_name": "Sundar Pichai",
      "work_experience": [
        {
          "role": "CEO",
          "company_name": "Google",
          "company_website": "google.com",
          "start_date": "2015-08",
          "end_date": null
        }
      ]
    },
    {
      "first_name": "Satya",
      "last_name": "Nadella",
      "full_name": "Satya Nadella",
      "work_experience": [
        {
          "role": "CEO",
          "company_name": "Microsoft",
          "company_website": "microsoft.com",
          "start_date": "2014-02",
          "end_date": null
        }
      ]
    }
  ],
  "credit_cost": 30
}

Por brevidade, o exemplo acima mostra apenas um subconjunto de PersonProfile campos. Cada entrada em alvo e similar_people é um(a) completo(a) PersonProfile objeto — consulte o(a) Resposta do Endpoint de Perfil de Pessoa para o esquema completo, incluindo profile_pic_url, bio, country, x_handle, education, etc.

Parâmetros de URL

Idêntico ao Parâmetros de URL do Endpoint de Perfil de Pessoa.

Parâmetro Obrigatório Descrição Exemplo
work_email Condicional E-mail corporativo da pessoa alvo. Obrigatório se employer_website não é fornecido. [email protected]
first_name Condicional Primeiro nome do alvo. Obrigatório ao usar nome + employer_website combinação. Tim
middle_name Não Nome do meio do alvo. Melhora a precisão quando combinado com outros parâmetros. Donald
last_name Não Sobrenome do alvo. Melhora a precisão quando combinado com outros parâmetros. Cook
employer_website Condicional URL do site ou nome da empresa empregadora do alvo. Uma URL de site é fortemente recomendada para maior precisão. Obrigatório se work_email não é fornecido. https://apple.com
role Não Cargo ou função atual. Obrigatório ao usar employer_website sem nome. CEO

Combinações de Entrada Válidas

Combinação Exemplo
work_email sozinho [email protected]
first_name + employer_website ?first_name=Tim&employer_website=https://apple.com
employer_website + role ?employer_website=https://apple.com&role=CEO

Resposta

Chave Descrição Exemplo
alvo O perfil completo da pessoa-alvo resolvida. Mesmo esquema que o Endpoint de Perfil de Pessoa. { "first_name": "Tim", ... }
attempted_searches Lista de tuplas (empresa, cargo) que tentamos enriquecer. Uma entrada por concorrente do empregador atual do alvo. Define a cobrança por tupla (5 créditos cada). [Objeto AttemptedSearch]
similar_people Lista de perfis enriquecidos com sucesso de pessoas com o mesmo cargo em empresas concorrentes. Pode ser um subconjunto de attempted_searches (algumas tentativas não retornam dados). Cada entrada usa o mesmo esquema que o Endpoint de Perfil de Pessoa. [PersonProfile, ...]
credit_cost Total de créditos cobrados por esta chamada. Igual a 10 + 5 * len(attempted_searches), ou 0 para resultados em cache servidos ao mesmo produto que pagou anteriormente. 30

Objeto AttemptedSearch

Chave Descrição Exemplo
employer_website Domínio do site da empresa concorrente que tentamos. "google.com"
role Cargo pesquisado naquele concorrente (espelha o alvo). "CEO"

Cabeçalhos da Resposta

Este endpoint transmite sua resposta em streaming, portanto o custo em créditos não pode ser retornado em um cabeçalho — HTTP trailers não são suportados pela camada de streaming. Leia o credit_cost campo no corpo da resposta em vez do usual X-NinjaPear-Credit-Cost header.

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Entrada inválida. É necessário fornecer work_email, ou first_name + employer_website, ou employer_website + role.
400 Não work_email é um e-mail pessoal/gratuito (ex.: [email protected]). Forneça um e-mail corporativo.
403 Não Créditos insuficientes. Você precisa de pelo menos 10 créditos para iniciar uma busca de pessoas semelhantes.
404 Não work_email é uma caixa de entrada genérica/baseada em função (ex.: info@, support@, sales@, noreply@) que não corresponde a uma pessoa individual.
404 Não A pessoa alvo não pôde ser resolvida.
503 Não Recurso temporariamente indisponível. Tente novamente.

Endpoint de Busca de Funcionários

GET /api/v1/employee/search

Custo: base 2 créditos por chamada (cobrados mesmo quando nenhum funcionário é retornado), mais 1 crédito por funcionário no funcionários array. Uma consulta que retorna 10 funcionários custa 2 + 10 = 12 créditos.

Encontre funcionários atuais de uma empresa filtrados por cargo, com opção de restringir por geografia.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "company_website=stripe.com" \
  --data-urlencode "role=VP of Engineering" \
  "https://nubela.co/api/v1/employee/search"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.EmployeeAPIApi(api_client)
    result = api.search_employees(
        company_website="stripe.com",
        role="VP of Engineering",
    )
    print(result)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.EmployeeAPIApi();
api.searchEmployees({
  companyWebsite: "stripe.com",
  role: "VP of Engineering",
}).then(function (data) {
  console.log(data);
});

Exemplo de resposta

{
  "employees": [
    {
      "first_name": "Jane",
      "last_name": "Doe",
      "role": "VP of Engineering",
      "company_website": "stripe.com",
      "company_details": "https://nubela.co/api/v1/company/details?website=stripe.com",
      "person_profile": "https://nubela.co/api/v2/employee/profile?first_name=Jane&last_name=Doe&employer_website=https%3A%2F%2Fstripe.com",
      "work_email": "https://nubela.co/api/v1/employee/work-email?first_name=Jane&last_name=Doe&domain=stripe.com"
    },
    {
      "first_name": "John",
      "last_name": "Smith",
      "role": "Director of Engineering",
      "company_website": "stripe.com",
      "company_details": "https://nubela.co/api/v1/company/details?website=stripe.com",
      "person_profile": "https://nubela.co/api/v2/employee/profile?first_name=John&last_name=Smith&employer_website=https%3A%2F%2Fstripe.com",
      "work_email": "https://nubela.co/api/v1/employee/work-email?first_name=John&last_name=Smith&domain=stripe.com"
    }
  ]
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
company_website Sim A empresa-alvo. A forma preferida é um site (domínio simples como stripe.com ou URL completa como https://stripe.com). Um nome de empresa (ex.: Stripe) também é aceito. stripe.com
role Sim Cargo para refinar a busca. Corresponde a variações relacionadas do cargo (ex.: VP of Engineering também corresponde a Vice President, Engineering). VP of Engineering
country Não Código de país ISO 3166-1 alpha-2 para filtrar. US
state Não Estado ou região para filtrar (formato livre). Califórnia
city Não Cidade para filtrar (texto livre). San Francisco
use_cache Não Controla o uso de cache. Sem distinção entre maiúsculas e minúsculas. Valores: if-recent (padrão; usa dados em cache quando o último scrape foi há menos de 29 dias, caso contrário enriquece ao vivo), if-present (retorna o cache primeiro, enriquece ao vivo se ausente), if-present-only (retorna somente o cache; retorna 404 se ausente), never (sempre enriquecer ao vivo). Valores inválidos revertem para o padrão do endpoint. if-recent

Resposta

Chave Descrição Exemplo
funcionários Lista de funcionários correspondentes na empresa-alvo. Array vazio se nenhum for encontrado. [Objeto de Funcionário]

Objeto de Funcionário

Chave Descrição Exemplo
first_name O primeiro nome do funcionário. "Jane"
last_name O sobrenome do funcionário. Pode ser null se indisponível. "Doe"
role O cargo atual do funcionário na empresa alvo. "VP of Engineering"
company_website Site da empresa empregadora do alvo onde o funcionário trabalha. Espelha o valor resolvido de company_website parâmetro de entrada em cada registro. "stripe.com"
company_details URL pré-preenchida para o Endpoint de Detalhes da Empresa, preenchido com site. Autentique-se com seu bearer token para recuperar os detalhes da empresa. "https://nubela.co/api/v1/company/details?website=stripe.com"
person_profile URL pré-preenchida para o Endpoint de Perfil de Pessoa, preenchido com first_name, last_name, e employer_website. Chame diretamente com seu bearer token para enriquecer a pessoa. Custa 3 créditos por chamada. "https://nubela.co/api/v2/employee/profile?first_name=Jane&last_name=Doe&employer_website=https%3A%2F%2Fstripe.com"
work_email URL pré-preenchida para o Endpoint de E-mail Corporativo, preenchido com first_name, last_name, e domain. Chame diretamente com seu bearer token para resolver o e-mail corporativo. Custa 2 créditos em um acerto, 0.5 créditos quando nenhum e-mail é encontrado. "https://nubela.co/api/v1/employee/work-email?first_name=Jane&last_name=Doe&domain=stripe.com"

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Total de créditos cobrados por esta chamada. Equivale a 2 + N onde N é o número de funcionários retornados (2 quando o array estiver vazio). 12
X-NinjaPear-Cache-Age-Days Idade dos dados retornados em dias inteiros. 0 quando dados atualizados são retornados do enriquecimento em tempo real. 12

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Ausente ou inválido company_website ou role parâmetro.
403 Não Créditos insuficientes. Você precisa de pelo menos 2 créditos para iniciar uma pesquisa.
404 Não Nenhum dado em cache encontrado ao use_cache=if-present-only
404 Não O company_website não pôde ser resolvido para uma empresa conhecida.
503 Não Recurso temporariamente indisponível. Tente novamente.

Meta API

Endpoint de Visualização de Saldo de Créditos

GET /api/v1/meta/credit-balance

Custo: 0 crédito / solicitação bem-sucedida.

Consulte seu saldo atual de créditos.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://nubela.co/api/v1/meta/credit-balance"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.MetaAPIApi(api_client)
    response = api.get_credit_balance()
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.MetaAPIApi();
api.getCreditBalance().then(function (data) {
  console.log(data);
});

Exemplo de resposta:

{
  "credit_balance": 100000
}

Resposta

Chave Descrição Exemplo
credit_balance Seu saldo atual de créditos 100000

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 0

Códigos de Erro

Código de Status Cobrado? Descrição
401 Não API key inválida

API de Contato

Endpoint de Verificação de E-mail Descartável

GET /api/v1/contact/disposable-email

Custo: 0 crédito / solicitação bem-sucedida. (GRÁTIS)

Verifique se um endereço de e-mail é descartável (temporário) ou pertence a um provedor de e-mail gratuito.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "[email protected]" \
  "https://nubela.co/api/v1/contact/disposable-email"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.ContactAPIApi(api_client)
    response = api.check_disposable_email(email="[email protected]")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.ContactAPIApi();
api.checkDisposableEmail("[email protected]").then(function (data) {
  console.log(data);
});

Exemplo de resposta:

{
  "email": "[email protected]",
  "is_disposable_email": true,
  "is_free_email": false
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
e-mail Sim O endereço de e-mail a verificar [email protected]

Resposta

Chave Descrição Exemplo
e-mail O endereço de e-mail que foi verificado "[email protected]"
is_disposable_email Se o domínio de e-mail é de um provedor de e-mail descartável/temporário conhecido true
is_free_email Se o domínio de e-mail é de um provedor gratuito (ex.: gmail.com, yahoo.com) false

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 0

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Formato de e-mail inválido

API do Monitor

A API do Monitor permite monitorar atualizações de empresas. Cada nova atualização é compilada em um único feed RSS. O sistema monitora blogs de empresas, perfis no X (Twitter) e alterações em sites.

Conceitos Fundamentais

Como usar

Suponha que você queira monitorar um grupo de sites de concorrentes em busca de postagens de blog, atividade no X e alterações no site — tudo entregue como um único feed RSS que pode ser conectado ao Feedly, Slack, Zapier ou qualquer leitor de RSS.

1. Crie um feed com alvos — agrupe as empresas que deseja monitorar em um feed. Cada empresa é um alvo identificada pela URL do site

curl -X POST \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "SaaS Competitors", "targets": [ { "website_url": "https://stripe.com" }, { "website_url": "https://shopify.com" }, { "website_url": "https://vercel.com" } ] }' \ "https://nubela.co/api/v1/monitor/feeds"

A resposta inclui um rss_url — esta é a URL à qual você se inscreve.

{ "id": "feed_abc123", "rss_url": "https://nubela.co/.../rss.xml?token=sec_live_..." }

2. Assine o feed RSS — copie o rss_url e adicione-o a qualquer leitor de RSS (Feedly, Slack, Zapier, etc.). Posts de blog, posts no X e alterações no site de todos os alvos aparecem como itens em um único feed.

Stripe: Expanding our Payment Network [blog] Vercel no X: "Next.js 16 is here" [x] Shopify: Página de Preços [atualização do site]

Cada item inclui uma categoria (blog, x, website update, ou website new page). Consulte Endpoint de Consumo de Feed para o esquema RSS completo.

3. Adicione novos alvos — um novo concorrente entrou no mercado? Adicione-o ao feed.

curl -X POST \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "website_url": "https://linear.app" }' \ "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets"

4. Remova alvos — uma empresa deixou de ser relevante? Remova-a do feed.

curl -X DELETE \ -H "Authorization: Bearer YOUR_API_KEY" \ "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets/target_xyz789"

5. Alterar configurações de monitoramento — por padrão, cada alvo monitora posts de blog, posts no X e alterações no site em uma cadência de 7 dias. Use PATCH para ativar/desativar canais ou alterar a frequência.

curl -X PATCH \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "settings": { "monitor_x": false, "frequency_days": 1 } }' \ "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets/target_xyz789"

Apenas os campos incluídos são alterados — campos omitidos mantêm seus valores atuais. Consulte Objeto de Configurações para todas as opções disponíveis.

Preços

Ação Custo
Criar um feed 3 créditos (única vez)
Coleta de post de blog (por alvo) 1 crédito/consulta
Consulta de monitoramento de site (por alvo) 1 crédito/consulta
Consulta de atualizações de posts no X (por alvo) 2 créditos/consulta
Coleta de atualizações do YouTube (por alvo) 1 crédito/consulta
Todos os outros endpoints (listar, descrever, excluir feeds; gerenciar alvos) 0 créditos

Cada verificação confere um alvo para uma fonte (blog, X, website ou YouTube). Com as quatro fontes habilitadas, um único alvo custa 5 créditos por consulta (1 blog + 2 X + 1 website + 1 YouTube).

Exemplos de custos mensais

Cenário Alvos Frequência Créditos/mês
VC monitorando 20 empresas do portfólio 20 Semanal ~433 créditos (3 avulsos + 20 × 5 × 4,3 semanas)
Startup monitorando 10 concorrentes 10 Diário ~1,503 créditos (3 avulsos + 10 × 5 × 30 dias)
Equipe de vendas monitorando 5 contas de prospectos (apenas blog + X, sem site) 5 Diário ~453 créditos (3 avulsos + 5 × 3 × 30 dias)

O custo único de criação do feed (3 créditos) está incluído apenas no primeiro mês.

Endpoint de Listagem de Feeds

GET /api/v1/monitor/feeds

Custo: 0 créditos / requisição.

Recupera a lista de todos os feeds pertencentes ao usuário autenticado.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://nubela.co/api/v1/monitor/feeds"

Exemplo de resposta:

{
  "feeds": [
    {
      "id": "feed_abc123",
      "name": "SaaS Competitors",
      "is_public": false,
      "rss_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=sec_live_987654321",
      "created_at": "2026-02-24T00:00:00Z",
      "target_count": 2
    }
  ]
}

Resposta

Chave Descrição Exemplo
feeds Lista de objetos de feed Consulte Objeto Feed

Objeto Feed

Chave Descrição Exemplo
id Identificador único do feed "feed_abc123"
name Nome do feed "SaaS Competitors"
is_public Se o feed é acessível publicamente false
is_suspended Se o feed está atualmente suspenso false
suspension_reason Motivo da suspensão, se suspenso null ou "insufficient_credits"
rss_url O URL do feed RSS. Para feeds privados, inclui um parâmetro de consulta de token. "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=sec_live_987654321"
email_notifications Modo de notificação por e-mail "skip" ou "on_updates"
created_at Timestamp de criação no formato ISO 8601 "2026-02-24T00:00:00Z"
target_count Número de alvos no feed 2

Endpoint de Novo Feed

POST /api/v1/monitor/feeds

Custo: 3 créditos / requisição (taxa única).

Cria um novo feed e, opcionalmente, aceita um array de alvos iniciais.

curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "SaaS Competitors",
    "is_public": false,
    "targets": [
      {
        "website_url": "https://stripe.com",
        "settings": {
          "monitor_blog": true,
          "monitor_x": true,
          "monitor_website": true,
          "monitor_youtube": true,
          "frequency_days": 7
        }
      },
      {
        "website_url": "https://vercel.com"
      }
    ]
  }' \
  "https://nubela.co/api/v1/monitor/feeds"

Exemplo de resposta 201 Created:

{
  "id": "feed_abc123",
  "name": "SaaS Competitors",
  "is_public": false,
  "is_suspended": false,
  "suspension_reason": null,
  "rss_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=sec_live_987654321",
  "created_at": "2026-02-24T09:55:00Z",
  "targets": [
    {
      "id": "target_xyz789",
      "website_url": "https://stripe.com",
      "settings": {
        "monitor_blog": true,
        "monitor_x": true,
        "monitor_website": true,
        "monitor_youtube": true,
        "frequency_days": 7
      },
      "last_polled_at": null,
      "is_baseline_complete": false,
      "created_at": "2026-02-24T09:55:00Z"
    },
    {
      "id": "target_xyz790",
      "website_url": "https://vercel.com",
      "settings": {
        "monitor_blog": true,
        "monitor_x": true,
        "monitor_website": true,
        "monitor_youtube": true,
        "frequency_days": 7
      },
      "last_polled_at": null,
      "is_baseline_complete": false,
      "created_at": "2026-02-24T09:55:00Z"
    }
  ]
}

Corpo da Requisição

Parâmetro Obrigatório Descrição Exemplo
name Não Nome do feed. Se omitido, um nome será gerado automaticamente. "SaaS Competitors"
is_public Não Se o feed é acessível publicamente (padrão: false) false
email_notifications Não Modo de notificação por e-mail. "on_updates" para receber e-mails quando novas atualizações forem detectadas, "skip" para desabilitar (padrão: "skip") "on_updates"
targets Sim Array de alvos iniciais para adicionar ao feed (pelo menos 1 obrigatório) Consulte Objeto de Entrada do Alvo

Objeto de Entrada do Alvo

Parâmetro Obrigatório Descrição Exemplo
website_url Sim A URL do site da empresa a ser monitorada "https://stripe.com"
settings Não Preferências de monitoramento. Se omitido, os padrões serão aplicados. Consulte Objeto de Configurações

Objeto de Configurações

Parâmetro Obrigatório Descrição Exemplo
monitor_blog Não Monitore o blog da empresa para novos posts (padrão: true) true
monitor_x Não Monitore a conta X (Twitter) da empresa (padrão: true) true
monitor_website Não Monitore o site da empresa para alterações de conteúdo e novas páginas (padrão: true) true
monitor_youtube Não Monitore o canal oficial do YouTube da empresa para novos vídeos (padrão: true) true
frequency_days Não Com que frequência verificar atualizações, em dias. Deve ser entre 1 e 30 (padrão: 7) 7

Regras de Validação

Resposta

Retorna 201 Created. A resposta inclui o Objeto Feed com um adicional de targets array contendo Objeto Alvo entradas.

Objeto Alvo

Chave Descrição Exemplo
id Identificador único do alvo "target_xyz789"
website_url O URL do site da empresa monitorada "https://stripe.com"
settings Objeto de preferências de monitoramento Consulte Objeto de Configurações
last_polled_at Timestamp ISO 8601 da última verificação, ou null se nunca consultado null
is_baseline_complete Se o snapshot de linha de base inicial foi capturado false
created_at Timestamp de criação no formato ISO 8601 "2026-02-24T09:55:00Z"

Cabeçalhos da Resposta

Chave do cabeçalho Descrição Exemplo
X-NinjaPear-Credit-Cost Custo total em créditos para esta chamada de API 3

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Erro de validação (alvos ausentes, URL inacessível, nenhuma flag de monitoramento habilitada)

Endpoint de Descrição de Feed

GET /api/v1/monitor/feeds/{feed_id}

Custo: 0 créditos / requisição.

Recupera os detalhes completos de um único feed, incluindo todos os alvos vinculados a ele.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123"

Exemplo de resposta:

{
  "id": "feed_abc123",
  "name": "SaaS Competitors",
  "is_public": false,
  "is_suspended": false,
  "suspension_reason": null,
  "rss_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=sec_live_987654321",
  "created_at": "2026-02-24T09:55:00Z",
  "targets": [
    {
      "id": "target_xyz789",
      "website_url": "https://stripe.com",
      "settings": {
        "monitor_blog": true,
        "monitor_x": true,
        "monitor_website": true,
        "monitor_youtube": true,
        "frequency_days": 7
      },
      "last_polled_at": "2026-02-24T12:00:00Z",
      "is_baseline_complete": true,
      "created_at": "2026-02-24T09:55:00Z"
    },
    {
      "id": "target_xyz790",
      "website_url": "https://vercel.com",
      "settings": {
        "monitor_blog": true,
        "monitor_x": true,
        "monitor_website": true,
        "monitor_youtube": true,
        "frequency_days": 7
      },
      "last_polled_at": null,
      "is_baseline_complete": false,
      "created_at": "2026-02-24T09:55:00Z"
    }
  ]
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
feed_id Sim O ID do feed feed_abc123

Resposta

Retorna um Objeto Feed com um adicional de targets array contendo Objeto Alvo entradas.

Códigos de Erro

Código de Status Cobrado? Descrição
404 Não Feed não encontrado

Endpoint de Exclusão de Feed

DELETE /api/v1/monitor/feeds/{feed_id}

Custo: 0 créditos / requisição.

Exclui permanentemente um feed e todos os alvos associados.

curl -X DELETE \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123"

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
feed_id Sim O ID do feed a ser excluído feed_abc123

Resposta

Retorna 200 OK com uma mensagem de confirmação.

{
  "message": "Feed deleted."
}

Códigos de Erro

Código de Status Cobrado? Descrição
404 Não Feed não encontrado

Endpoint de Adição de Alvo

POST /api/v1/monitor/feeds/{feed_id}/targets

Custo: 0 créditos / requisição.

Adiciona uma nova empresa a um feed existente.

curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "website_url": "https://shopify.com",
    "settings": {
      "monitor_blog": true,
      "monitor_x": true,
      "monitor_website": false,
      "frequency_days": 3
    }
  }' \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets"

Exemplo de resposta 201 Created:

{
  "id": "target_xyz791",
  "website_url": "https://shopify.com",
  "settings": {
    "monitor_blog": true,
    "monitor_x": true,
    "monitor_website": false,
    "frequency_days": 3
  },
  "last_polled_at": null,
  "is_baseline_complete": false,
  "created_at": "2026-02-24T10:00:00Z"
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
feed_id Sim O ID do feed ao qual adicionar o alvo feed_abc123

Corpo da Requisição

Parâmetro Obrigatório Descrição Exemplo
website_url Sim A URL do site da empresa a ser monitorada "https://shopify.com"
settings Não Preferências de monitoramento. Se omitido, os padrões serão aplicados. Consulte Objeto de Configurações

Resposta

Retorna um Objeto Alvo.

Códigos de Erro

Código de Status Cobrado? Descrição
404 Não Feed não encontrado

Endpoint de Atualização de Alvo

PATCH /api/v1/monitor/feeds/{feed_id}/targets/{target_id}

Custo: 0 créditos / requisição.

Modifica as preferências de monitoramento de um alvo específico.

curl -X PATCH \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "settings": {
      "frequency_days": 1,
      "monitor_website": true
    }
  }' \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets/target_xyz789"

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
feed_id Sim O ID do feed feed_abc123
target_id Sim O ID do alvo a ser atualizado target_xyz789

Corpo da Requisição

Parâmetro Obrigatório Descrição Exemplo
settings Sim Atualização parcial de configurações. Apenas os campos fornecidos são alterados. Consulte Objeto de Configurações

Resposta

Retorna o Objeto Alvo.

Exemplo de resposta:

{
  "id": "target_xyz789",
  "website_url": "https://stripe.com",
  "settings": {
    "monitor_blog": true,
    "monitor_x": true,
    "monitor_website": true,
    "monitor_youtube": true,
    "frequency_days": 1
  },
  "last_polled_at": "2026-02-24T12:00:00Z",
  "is_baseline_complete": true,
  "created_at": "2026-02-24T09:55:00Z"
}

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Nenhuma configuração válida fornecida
404 Não Feed ou alvo não encontrado

Endpoint de Remoção de Alvo

DELETE /api/v1/monitor/feeds/{feed_id}/targets/{target_id}

Custo: 0 créditos / requisição.

Interrompe o monitoramento de um site e o remove do feed.

curl -X DELETE \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets/target_xyz789"

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
feed_id Sim O ID do feed feed_abc123
target_id Sim O ID do alvo a ser removido target_xyz789

Resposta

Retorna 200 OK com uma mensagem de confirmação.

{
  "message": "Target deleted."
}

Códigos de Erro

Código de Status Cobrado? Descrição
404 Não Feed ou alvo não encontrado

Endpoint de Consumo de Feed

GET /api/v1/monitor/feeds/{feed_id}/rss.xml

Custo: 0 créditos / requisição (os custos de monitoramento são cobrados por consulta em cada alvo — veja Preços).

Retorna um feed XML RSS 2.0 padrão, consumível por leitores de RSS (Feedly, Slack, extensões de navegador, etc.).

Se o is_public é false, um token válido deve ser passado como token parâmetro de consulta.

curl "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=YOUR_RSS_TOKEN"

Exemplo de resposta:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
  <title>SaaS Competitors</title>
  <link>https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml</link>
  <description>Automated updates for Stripe, Shopify, and Vercel.</description>
  <lastBuildDate>Tue, 24 Feb 2026 10:00:00 +0800</lastBuildDate>

  <item>
    <title>Stripe: Expanding our Global Payment Network</title>
    <link>https://stripe.com/blog/global-network-2026</link>
    <guid isPermaLink="true">https://stripe.com/blog/global-network-2026</guid>
    <pubDate>Mon, 23 Feb 2026 14:30:00 +0800</pubDate>
    <category>blog</category>
    <dc:creator>Stripe</dc:creator>
    <description>Stripe is expanding its payments infrastructure to 15 new countries, enabling merchants to accept local payment methods seamlessly.</description>
    <enclosure url="https://b.stripecdn.com/blog/og-global-network.jpg" length="150000" type="image/jpeg" />
  </item>

  <item>
    <title>Vercel on X: "Next.js 16 is here..."</title>
    <link>https://x.com/vercel/status/123456789</link>
    <guid isPermaLink="false">x_post_123456789</guid>
    <pubDate>Sun, 22 Feb 2026 10:15:00 +0800</pubDate>
    <category>x</category>
    <dc:creator>Vercel</dc:creator>
    <description>Next.js 16 is here, featuring completely redesigned server components and faster builds. Read the changelog.</description>
    <enclosure url="https://pbs.twimg.com/media/vercel-next16.jpg" length="85000" type="image/jpeg" />
  </item>

  <item>
    <title>Shopify: Pricing Page</title>
    <link>https://shopify.com/pricing</link>
    <guid isPermaLink="false">website_update_shopify_pricing_1708416000</guid>
    <pubDate>Fri, 20 Feb 2026 08:00:00 +0800</pubDate>
    <category>website update</category>
    <dc:creator>Shopify</dc:creator>
    <description>Compare Shopify's pricing plans to find the best fit for your business. Start your free trial today.</description>
    <enclosure url="https://cdn.shopify.com/assets/og-pricing.png" length="210000" type="image/png" />
  </item>

  <item>
    <title>Shopify: Enterprise Plus Solutions</title>
    <link>https://shopify.com/enterprise-plus</link>
    <guid isPermaLink="true">https://shopify.com/enterprise-plus</guid>
    <pubDate>Thu, 19 Feb 2026 11:20:00 +0800</pubDate>
    <category>website new page</category>
    <dc:creator>Shopify</dc:creator>
    <description>Unleash your brand's potential with Shopify Enterprise Plus. High-volume solutions for global commerce.</description>
    <enclosure url="https://cdn.shopify.com/assets/og-enterprise.jpg" length="320000" type="image/jpeg" />
  </item>

</channel>
</rss>

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
feed_id Sim O ID do feed feed_abc123

Formato da Resposta

A resposta é um documento XML RSS 2.0 padrão. A estrutura é a seguinte:

Elementos do canal

Elemento Descrição Exemplo
<title> O nome do feed SaaS Competitors
<link> URL do feed RSS https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml
<description> Resumo gerado automaticamente das empresas monitoradas Automated updates for Stripe, Shopify, and Vercel.
<lastBuildDate> Timestamp RFC 2822 da última geração do feed Tue, 24 Feb 2026 10:00:00 +0800

Elementos do Item

Cada <item> representa uma única atualização de uma empresa monitorada.

Elemento Descrição Exemplo
<title> Título da atualização, prefixado com o nome da empresa Stripe: Expanding our Global Payment Network
<link> URL do conteúdo original https://stripe.com/blog/global-network-2026
<guid> Identificador único do item. isPermaLink é true quando o GUID é uma URL. https://stripe.com/blog/global-network-2026
<pubDate> Timestamp de publicação RFC 2822 Mon, 23 Feb 2026 14:30:00 +0800
<category> Tipo de atualização (veja as categorias abaixo) blog
<dc:creator> Nome da empresa (usa o namespace Dublin Core) Stripe
<description> Resumo ou trecho da atualização Conteúdo de texto
<enclosure> Anexo de imagem opcional com url, length (bytes) e type (tipo MIME) atributos <enclosure url="..." length="150000" type="image/jpeg" />

Categorias de Item RSS

Cada <item> inclui um(a) <category> elemento indicando o tipo de atualização:

Categoria Descrição
blog Uma nova publicação no blog da empresa
x Uma publicação da conta X (Twitter) da empresa
website update Uma alteração detectada em uma página existente
website new page Uma nova página detectada no site da empresa
website unreachable O site da empresa ficou inacessível (disparado uma vez)

Códigos de Erro

Código de Status Cobrado? Descrição
403 Não Token ausente ou inválido para um feed privado
404 Não Feed não encontrado

Endpoint de Atualização de Feed

PATCH /api/v1/monitor/feeds/{feed_id}

Custo: 0 créditos / requisição.

Atualize as configurações do feed, como nome, visibilidade ou status de suspensão. Feeds suspensos por insufficient_credits são retomados automaticamente quando créditos são adicionados.

# Suspend a feed
curl -X PATCH \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "is_suspended": true, "suspension_reason": "manual" }' \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123"
import requests

response = requests.patch(
    "https://nubela.co/api/v1/monitor/feeds/feed_abc123",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"is_suspended": True, "suspension_reason": "manual"},
)
const response = await fetch(
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123",
  {
    method: "PATCH",
    headers: {
      Authorization: "Bearer YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ is_suspended: true, suspension_reason: "manual" }),
  },
);

Exemplo de resposta (igual ao Describe Feed):

{
  "id": "feed_abc123",
  "name": "My Feed",
  "is_public": false,
  "is_suspended": true,
  "suspension_reason": "manual",
  "rss_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=...",
  "created_at": "2025-01-15T10:30:00Z",
  "targets": [...]
}

Parâmetros de URL

Parâmetro Obrigatório Descrição Exemplo
feed_id Sim O ID do feed feed_abc123

Corpo da Requisição

Parâmetro Obrigatório Descrição Exemplo
name Não Nome do novo feed "My Feed"
is_public Não Se o feed RSS é acessível publicamente true
is_suspended Não Defina true para suspender, false para retomar true
suspension_reason Não Motivo da suspensão (somente quando is_suspended é true, padrão "manual") "manual"
email_notifications Não Modo de notificação por e-mail. "on_updates" para receber e-mails quando novas atualizações forem detectadas, "skip" para desabilitar "on_updates"

Pelo menos um campo deve ser fornecido.

Resposta

Retorna o Objeto Feed com um adicional de targets array contendo Objeto Alvo entradas.

Códigos de Erro

Código de Status Cobrado? Descrição
400 Não Nenhum campo válido fornecido
404 Não Feed não encontrado

Claude AI

O NinjaPear oferece um servidor MCP (Model Context Protocol) para integração direta com o Claude. Isso permite consultar dados de empresas B2B de forma conversacional — pergunte ao Claude sobre os clientes, investidores, número de funcionários de qualquer empresa e muito mais.

Início Rápido

  1. Obtenha sua string de conexão no Painel
  2. Adicione NinjaPear como conector no Claude (veja as instruções de configuração abaixo)
  3. Inicie uma nova conversa e consulte dados de empresas B2B de forma conversacional

Configuração

Sua string de conexão está disponível no Painel. Tem o seguinte formato: https://nubela.co/mcp/sse?api_key=YOUR_API_KEY

  1. Obtenha sua string de conexão no Painel
  2. Certifique-se de estar logado no Claude e acesse: Adicionar conector personalizado
  3. Insira o seguinte:
    • Nome: NinjaPear
    • URL do servidor MCP remoto: Cole sua string de conector do passo 1
  4. Clique Adicionar conector
  5. Inicie uma nova conversa e peça ao Claude para usar o NinjaPear

Claude Code CLI

Obtenha sua string de conexão no Painel, depois execute:

claude mcp add ninjapear --transport sse "YOUR_CONNECTOR_STRING"

Ferramentas disponíveis

Ferramenta Descrição Custo
get_customer_listing Obtenha clientes, investidores e parceiros de uma empresa 1 + 2/empresa
get_company_details Obtenha informações da empresa, executivos e dados financeiros 2-4 créditos
get_employee_count Obtenha o número de funcionários de uma empresa 2 créditos
check_disposable_email Verificar se o e-mail é descartável/gratuito GRÁTIS
get_credit_balance Verifique seu saldo de créditos GRÁTIS
get_company_logo_url Obtenha a URL do logotipo da empresa GRÁTIS
list_feeds Liste todos os seus feeds de monitoramento 0 créditos
create_feed Criar um novo feed de monitoramento com alvos 3 créditos
describe_feed Obtenha detalhes do feed com todos os alvos 0 créditos
update_feed Atualizar nome, visibilidade ou suspensão do feed 0 créditos
delete_feed Excluir um feed e todos os seus alvos 0 créditos
add_target Adicionar uma empresa para monitorar em um feed 0 créditos
update_target Atualizar configurações de monitoramento para um alvo 0 créditos
remove_target Remover uma empresa de um feed 0 créditos
consume_feed Leia as atualizações mais recentes de um feed GRÁTIS

Exemplos de Prompts

Após conectado, você pode fazer perguntas ao Claude como:

Inteligência Competitiva

Você é um gerente de produto acompanhando o que seus concorrentes estão fazendo.

Monitoramento de Portfólio de VC

Você é um investidor de venture capital que quer acompanhar a atividade das empresas do portfólio. Faça upload de um CSV ou screenshot das suas empresas de portfólio para o Claude e pergunte:

Prospecção de Vendas

Você trabalha com vendas e quer pesquisar contas antes de entrar em contato.

Pesquisa de Mercado

Você é um analista mapeando o cenário de um setor.

Monitoramento e Alertas

Você deseja configurar um monitoramento contínuo e retornar para verificar as atualizações.

Gerenciamento de Conta

Verificações rápidas sobre o uso do NinjaPear.

Tratamento de Erros

Os erros são retornados como mensagens descritivas que Claude irá explicar para você:

Erro Mensagem
API key inválida "Error: 401 Unauthorized"
Créditos insuficientes "Error: 402 Payment Required"
Limite de requisições atingido "Error: 429 Too Many Requests"
Erro do servidor "Error: 500 Internal Server Error"

Detalhes Técnicos

MCP Protocol

O servidor MCP do NinjaPear implementa o Model Context Protocol especificação, que é o padrão aberto da Anthropic para conectar assistentes de IA a fontes de dados externas e ferramentas.

Transporte

Utilizamos o transporte Server-Sent Events (SSE) para comunicação em tempo real:

Autenticação

Passe sua chave de API pelo api_key parâmetro de consulta ou o X-API-Key header