NAV Navegación
cURL Python JavaScript

Resumen de NinjaPear

NinjaPear es una plataforma de inteligencia empresarial B2B centrada en la propiedad de datos y el abastecimiento ético. Como proveedor de primera parte, mantenemos un ecosistema sostenible de datos propietarios y legalmente verificados. Nuestra misión es proporcionar una infraestructura de datos confiable que permita a las empresas desarrollar y escalar aplicaciones y flujos de trabajo de valor agregado con confianza.

Para agentes de IA

¿Está desarrollando con un agente de codificación de IA? Use la versión en Markdown simple de esta documentación, optimizada para LLMs y herramientas de IA como Claude, Cursor y ChatGPT:

AI Skill

El NinjaPear AI Skill proporciona a los agentes de codificación el conocimiento procedimental para escribir código de integración NinjaPear correcto en sus aplicaciones. Instálelo con un solo comando y su agente sabrá cómo autenticarse, elegir el endpoint correcto, generar código SDK y manejar casos extremos, todo con conciencia de costos integrada.

Requisitos previos — Una clave de API de NinjaPear de nubela.co/dashboard y Node.js 18+.

Instala la habilidad usando el npx skills CLI. Elija el comando para su 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

Qué ofrece la habilidad

Una vez instalada, la habilidad proporciona a su agente de código el conocimiento procedimental para trabajar correctamente con NinjaPear:

Capacidad Descripción
Configuración de autenticación Configure claves API a través de variables de entorno e inicialización de SDK
Selección de punto final Elija el punto final API NinjaPear adecuado con conocimiento de costos
Integración del SDK de Python Generar código correcto usando el ninjapear Paquete de Python
Integración del SDK de JavaScript Generar código correcto usando el ninjapear paquete npm
Manejo de paginación Implementar paginación basada en cursor para puntos finales de lista
Manejo de límite de tarifa Respete los límites de velocidad con una lógica adecuada de reintento y retroceso
Manejo de errores Maneja todos los códigos de error de NinjaPear (401, 403, 404, 429, 500, 503)
Configuración de tiempo de espera Establecer tiempos de espera adecuados para puntos finales de larga duración

Explícamelo como si tuviera 5 años

Autenticación

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);
});

La API de NinjaPear utiliza tokens de portador para autenticar usuarios. A cada usuario se le asigna una clave secreta generada aleatoriamente en la Sección API en el Panel.

El token bearer se inyecta en el Authorization encabezado.

Bibliotecas de cliente

Proporcionamos bibliotecas cliente oficiales para JavaScript y Python para facilitar la integración con la API de 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

Límite de velocidad

Los límites de velocidad se aplican por cuenta de producto y son compartidos por todas las claves API de ese producto.

Los endpoints de API de pago están limitados a 50 solicitudes por minuto.

Para la limitación de velocidad, los endpoints de gestión de fuentes y objetivos de Monitor cuentan como tráfico de API de pago incluso cuando el costo en créditos del endpoint es 0.

En períodos de alta carga, nuestro sistema puede ajustar los límites de frecuencia para todas las cuentas a fin de garantizar que nuestros servicios permanezcan accesibles para todos los usuarios.

Devolvemos HTTP 429 cuando se supera el límite de tasa. También puede recibir HTTP 429 si la capacidad de nuestra parte nos lo impide.

Debe gestionar los errores 429 y aplicar retroceso exponencial.

Las respuestas con límite de velocidad incluyen:

Encabezado Descripción
Retry-After Segundos de espera antes de reintentar
X-RateLimit-Limit Solicitudes máximas permitidas en el minuto actual
X-RateLimit-Remaining Solicitudes restantes en el minuto actual
X-RateLimit-Reset Marca de tiempo Unix de cuándo se restablece el minuto actual

Límite de velocidad para API gratuitas

Para ofrecer APIs gratuitas de forma sostenible, el límite de solicitudes para APIs gratuitas depende de su plan de suscripción:

El límite de tasa de la API gratuita aplica a Company Logo, Disposable Email Checker, View Credit Balance y el consumo de fuentes RSS.

Créditos

Cada solicitud válida requiere al menos 0.1 crédito para ser procesado, a menos que sea un endpoint de API gratuito.

Se consume un crédito si y solo si la solicitud se procesa correctamente.

Una solicitud exitosa es una solicitud que retorna con un 200 Código de estado HTTP.

Facturación de caché

Para endpoints con un use_cache parámetro, un producto no vuelve a ser cobrado cuando la misma solicitud normalizada se sirve desde la misma versión del registro en caché por la que el producto pagó anteriormente. La respuesta incluye X-NinjaPear-Credit-Cost: 0 para estos accesos repetidos a la caché.

use_cache=never siempre realiza una extracción nueva y cobra de forma normal. use_cache=if-recent solo califica para una repetición gratuita mientras el registro en caché esté dentro de la ventana de vigencia de ese endpoint.

Para endpoints paginados, el acceso repetido gratuito está limitado a las páginas ya pagadas con la misma consulta, filtros, cadena de cursor y page_size. Las páginas paginadas de pago se reproducen exactamente en accesos de caché repetidos, incluido el next_page valor. Las páginas posteriores que aún no han sido pagadas se cobran normalmente.

Tiempos de espera y tiempo de respuesta de la API

Los endpoints de la API de NinjaPear aceptan 30-60 segundos para completarse.

Se recomienda realizar solicitudes concurrentes a nuestro servicio API para maximizar el rendimiento. Consulte esta publicación sobre cómo puede maximizar el rendimiento.

Recomendamos un tiempo de espera de 100 segundos.

Errores

Estos son los errores comunes que puede devolver nuestra API:

Código HTTP ¿Se cobra? Descripción
400 No Parámetros no válidos proporcionados. Consulte la documentación y el cuerpo del mensaje para más información
401 No API Key no válida
403 No Se han agotado sus créditos
404 El recurso solicitado (p. ej., perfil de usuario, empresa) no pudo encontrarse
410 No Esta API está obsoleta
429 No Límite de velocidad alcanzado. Por favor, vuelve a intentarlo
500 No Hay un error con nuestra API. Por favor Contáctenos para obtener asistencia
503 No El enriquecimiento falló, por favor reintente.

Nunca se le cobrará por solicitudes fallidas.

Garantía de compatibilidad con versiones anteriores

Nos comprometemos a garantizar que nuestra API mantenga compatibilidad con versiones anteriores, permitiéndole integrar con confianza. Nuestra garantía de compatibilidad con versiones anteriores significa que no introduciremos cambios que rompan la funcionalidad existente ni eliminaremos endpoints sin un período de obsolescencia.

Para ser específicos, no introduciremos cambios incompatibles de las siguientes maneras:

  1. No eliminaremos parámetros documentados ni atributos de respuesta.
  2. No cambiaremos el tipo de dato tal como está documentado en las respuestas de nuestra API.

Sin embargo, los siguientes no se consideran cambios disruptivos:

Recomendamos ampliamente integrar nuestra API de manera que no falle si se introducen nuevos atributos de respuesta o encabezados.

Si realizamos cambios en nuestra API, proporcionaremos documentación clara y un aviso suficiente (30 días) para garantizar una transición sin inconvenientes. Los avisos se compartirán mediante correos electrónicos del boletín, publicaciones en Twitter/X y actualizaciones en nuestro blog.

API de cliente

Endpoint de listado de clientes

GET /api/v1/customer/listing

Costo: 1 crédito / solicitud + 2 crédito / empresa devuelta. Los créditos se cobran incluso cuando la solicitud devuelve un resultado vacío.

Obtenga una lista de clientes, inversores y socios/plataformas altamente probables de una empresa objetivo, categorizados por tipo de relación.

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);
});

Respuesta de ejemplo:

{
  "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 Requerido Descripción Ejemplo
sitio web La URL del sitio web o el nombre de la empresa objetivo. Una URL de sitio web (p. ej. https://www.stripe.com) es muy recomendable para mayor precisión. https://www.stripe.com
cursor No Cursor de paginación de next_page en una respuesta anterior abc123
page_size No Número de resultados por página (1-200, predeterminado 200) 50
quality_filter No Filtra resultados de baja calidad (TLDs no deseados como .top, .xyz y sitios web inaccesibles). Configura en false para incluir todos los resultados. (por defecto: true) false
use_cache No Controla el uso de caché. No distingue mayúsculas de minúsculas. Valores: if-recent (usa datos en caché si el último rastreo fue hace menos de 29 días, de lo contrario enriquece en tiempo real), if-present (predeterminado; devuelve primero la caché, enriquece en tiempo real si no está disponible), if-present-only (devuelve solo la caché; devuelve 404 si no está disponible), never (siempre enriquecer en tiempo real). Los valores no válidos recurren al valor predeterminado del endpoint. if-present

Respuesta

Clave Descripción Ejemplo
customers Una lista de empresas que son probables clientes de la empresa objetivo. Entidades que pagan por el producto/servicio del objetivo. Lista de objetos CustomerCompany
investors Una lista de empresas que son inversores (fondos de capital de riesgo, fondos de capital privado, redes de ángeles) de la empresa objetivo. Lista de objetos CustomerCompany
partner_platforms Una lista de empresas que son socios, plataformas o proveedores de servicios que la empresa objetivo utiliza o integra (stack tecnológico, medios, agencias). Lista de objetos CustomerCompany
next_page El URI de la API que sirve como cursor para la paginación. Seguir esta URL con su clave de API llevará a la siguiente página de resultados. Será nulo en la página final. https://nubela.co/api/v1/customer/list?...

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No No se pudo extraer suficiente información sobre la empresa objetivo
404 No No se encontraron datos en caché al use_cache=if-present-only

ClienteEmpresa

Clave Descripción Ejemplo
name Nombre de la empresa "Apple"
description Una breve descripción de la empresa "Apple Inc. designs, manufactures, and markets smartphones..."
tagline Eslogan o lema de la empresa "Think different."
sitio web URL del sitio web de la empresa "https://www.apple.com"
company_logo_url URL al API de logotipo de empresa para esta empresa. Desarrollado por Endpoint de logotipo de empresa. Autentícate con tu bearer token. null si no tiene sitio web. "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com"
id Identificador único "abc123"
industry Código de industria GICS de 8 dígitos 45202030
specialties Lista de especialidades de la empresa ["Technology"]
x_profile URL del perfil de X (Twitter) "https://x.com/Apple"

Nota sobre company_logo_url: Esta URL funciona con el Endpoint de logotipo de empresa. Autentícate con tu Bearer token (el mismo de la API principal). Estos son enlaces temporales — el enfoque recomendado es descargar la imagen a través de la URL en cuanto se reciba la respuesta y alojarla en tu propio servidor.

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 10
X-NinjaPear-Cache-Age-Days Antigüedad de los datos devueltos en días completos. 0 cuando se devuelven datos actualizados desde el enriquecimiento en vivo. 12

API de competidor

Punto final de listado de competidores

GET /api/v1/competitor/listing

Costo: 2 créditos / competidor devuelto. Mínimo 5 créditos por solicitud, cobrados incluso cuando no se encuentran resultados.

Obtenga una lista de empresas competidoras de una empresa objetivo, junto con el motivo de la competencia.

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);
});

Respuesta de ejemplo:

{
  "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 Requerido Descripción Ejemplo
sitio web La URL del sitio web o el nombre de la empresa objetivo. Una URL de sitio web (p. ej. https://www.stripe.com) es muy recomendable para mayor precisión. https://www.stripe.com
use_cache No Controla el uso de caché. No distingue mayúsculas de minúsculas. Valores: if-recent (usa datos en caché si el último rastreo fue hace menos de 29 días, de lo contrario enriquece en tiempo real), if-present (predeterminado; devuelve primero la caché, enriquece en tiempo real si no está disponible), if-present-only (devuelve solo la caché; devuelve 404 si no está disponible), never (siempre enriquecer en tiempo real). Los valores no válidos recurren al valor predeterminado del endpoint. if-present

Respuesta

Clave Descripción Ejemplo
competitors Una lista de empresas competidoras de la empresa objetivo. Lista de CompetidorEmpresa objetos

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No No se pudo extraer suficiente información sobre la empresa objetivo
404 No No se encontraron datos en caché al use_cache=if-present-only

CompetidorEmpresa

Clave Descripción Ejemplo
company_details_url URL al endpoint de detalles de empresa para este competidor. Autentíquese con su bearer token para obtener los detalles completos de la empresa. "https://nubela.co/api/v1/company/details?website=https://www.adyen.com"
sitio web URL del sitio web de la empresa "https://www.adyen.com"
competition_reason Por qué esta empresa se considera un competidor. Uno de los valores del campo Motivo de competencia enum. "product_overlap"

Enumeración de motivo de competencia

Valor Descripción
organic_keyword_overlap Ambas empresas posicionan para palabras clave de búsqueda orgánica similares
product_overlap Ambas empresas ofrecen productos o servicios similares

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 4
X-NinjaPear-Cache-Age-Days Antigüedad de los datos devueltos en días completos. 0 cuando se devuelven datos actualizados desde el enriquecimiento en vivo. 12

API de productos

Endpoint de listado de productos

GET /api/v1/product/listing

Costo: 3 créditos / solicitud. Los créditos se cobran incluso si no se encuentran productos para una empresa válida.

Obtenga una lista de productos y servicios ofrecidos por una empresa objetivo.

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);
});

Respuesta de ejemplo:

{
  "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 Requerido Descripción Ejemplo
sitio web La URL del sitio web o el nombre de la empresa objetivo. Una URL de sitio web (p. ej. https://matterport.com) es muy recomendable para mayor precisión. https://matterport.com
use_cache No Controla el uso de caché. No distingue mayúsculas de minúsculas. Valores: if-recent (predeterminado; usa datos en caché si el último rastreo fue hace menos de 29 días, de lo contrario enriquece en tiempo real), if-present (devuelve primero la caché, enriquece en tiempo real si no está disponible), if-present-only (devuelve solo la caché; devuelve 404 si no está disponible), never (siempre enriquecer en tiempo real). Los valores no válidos recurren al valor predeterminado del endpoint. if-recent

Respuesta

Clave Descripción Ejemplo
products Una lista de productos y servicios ofrecidos por la empresa objetivo. Devuelve una lista vacía cuando la empresa es válida pero no se detectan productos ni servicios. Lista de Objeto de producto objetos

Objeto de producto

Clave Descripción Ejemplo
name Nombre completo del producto o servicio. Los productos, SKUs, plataformas u ofertas con precio independiente que tengan nombre propio se devuelven como filas separadas. "Matterport Digital Twin Platform"
tagline Eslogan de una línea del producto cuando esté disponible. "Capture, share, and collaborate in immersive 3D."
description De una a tres oraciones que describan qué hace el producto. "Matterport's 3D digital twin platform allows users to create immersive 3D models of physical spaces..."
categories Categorías de producto, incluidas la clase de producto, el sector o los agrupamientos por caso de uso admitidos por el sitio web. ["3D Modeling", "Digital Twins"]
tags Atributos cortos de producto, estilos de implementación, etiquetas tecnológicas u otras etiquetas de búsqueda. ["ai-powered", "self-hosted"]
structured_features Mapa de características con claves canónicas y valores booleanos, de cadena o numéricos. Las claves varían según la categoría del producto. { "secure_cloud_hosting": true }
freeform_features Frases de características que no se ajustan a una clave canónica. ["unmatched 3D visual clarity"]
pricing Modelo de precios, precio inicial y niveles cuando los precios están disponibles. null cuando no se puede determinar el precio. Objeto de precios
integrations Nombres de productos, plataformas o servicios con los que este producto se integra. ["Procore", "Autodesk", "AWS"]
platforms Plataformas donde el producto está disponible, como web, ios, android, macos, windows, linux, api, cli, o chrome-extension. ["web"]
source_urls URLs del sitio web de la empresa objetivo donde se encontraron los datos del producto. ["https://matterport.com/solutions/design-construction"]

Objeto de precios

Clave Descripción Ejemplo
model Modelo de precios. Uno de los valores del Enum de modelo de precios. "subscription"
starts_at_monthly_usd Precio mensual más bajo en USD encontrado en el sitio web de la empresa. null cuando es desconocido o no está disponible. 29.0
tiers Niveles de precios encontrados en el sitio web de la empresa. Lista de Objeto PricingTier objetos

Objeto PricingTier

Clave Descripción Ejemplo
name Nombre del nivel de precios. "Business"
price_usd_monthly Precio mensual en USD para este nivel. null cuando es desconocido. 99.0
features Características listadas para este nivel de precios. ["SSO", "Audit logs"]

Enum de modelo de precios

Valor Descripción
freemium Plan gratuito con actualizaciones de pago
subscription Suscripción de pago recurrente
one-time Compra única
payg Precios de pago por uso
enterprise Precios empresariales personalizados
unknown Los precios existen o pueden existir, pero el modelo no está claro

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 3
X-NinjaPear-Cache-Age-Days Antigüedad de los datos devueltos en días completos. 0 cuando se devuelven datos actualizados desde el enriquecimiento en vivo. 12

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No El sitio web no es accesible o la entrada no es válida
404 No No se encontraron datos en caché al use_cache=if-present-only
503 No La capacidad de rastreo está temporalmente saturada. Reintente después de un breve intervalo.

API de empresa

Endpoint de logotipo de empresa

GET /api/v1/company/logo

Costo: 0 crédito / solicitud exitosa. (GRATIS)

Recupera el logotipo de una empresa a partir de su URL de sitio web. Devuelve el logotipo como imagen 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));
});

Respuesta de ejemplo:

Ejemplo de logotipo de empresa

Un binario de imagen PNG sin procesar (Content-Type: image/png).

Parámetros de URL

Parámetro Requerido Descripción Ejemplo
sitio web La URL del sitio web de la empresa objetivo https://www.stripe.com

Respuesta

A 200 la respuesta devuelve el logotipo como una imagen PNG sin procesar con Content-Type: image/png.

Códigos de error

Código de estado ¿Cobrado? Descripción
404 No No se encontró logotipo para el dominio indicado

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 0

Endpoint de detalles de empresa

GET /api/v1/company/details

Prom. 10,4 s

Costo: 3 créditos / solicitud (base). Agrega 2 créditos cuando include_employee_count=true. Agrega 1 crédito cuando follower_count=include. Agrega 2 créditos cuando addresses=best-effort-exhaustive. Total máximo: 8 créditos. Los créditos se cobran incluso si no se encuentran datos.

Recupera los detalles de una empresa a partir de su URL. Devuelve metadatos de la empresa, incluidos descripción, sector, URL de redes sociales, el equipo directivo actual y más.

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);
});

Respuesta de ejemplo (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
}

Respuesta de ejemplo (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 Requerido Descripción Ejemplo
sitio web La URL del sitio web o el nombre de la empresa objetivo. Una URL de sitio web (p. ej. https://www.stripe.com) es muy recomendable para mayor precisión. https://www.stripe.com
include_employee_count No Obtiene datos actualizados del número de empleados mediante búsqueda web. Agrega 2 créditos al costo de la solicitud. Valores válidos: true, false (predeterminado). true
follower_count No Incluir conteos de seguidores y seguidos en Twitter/X. Agrega 1 crédito al costo de la solicitud. Valores válidos: include. Omite o pasa cualquier otro valor para excluir. include
addresses No Modo de detalle de dirección. Por defecto hq-only. Usa best-effort-exhaustive para obtener y conservar, en la medida de lo posible, las direcciones físicas de oficinas corporativas a nivel global. Agrega 2 créditos al costo de la solicitud. best-effort-exhaustive
use_cache No Controla el uso de caché. No distingue mayúsculas de minúsculas. Valores: if-recent (predeterminado; usa datos en caché si el último rastreo fue hace menos de 29 días, de lo contrario enriquece en tiempo real), if-present (devuelve primero la caché, enriquece en tiempo real si no está disponible), if-present-only (devuelve solo la caché; devuelve 404 si no está disponible), never (siempre enriquecer en tiempo real). Los valores no válidos recurren al valor predeterminado del endpoint. if-recent

Respuesta

Clave Descripción Ejemplo
websites Lista de todas las URL del sitio web de la empresa ["https://stripe.com", "https://stripe.dev"]
description Una breve descripción de la empresa "Stripe is a technology company..."
industry Código de industria 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 Año de fundación de la empresa 2010
specialties Lista de especialidades de la empresa ["Payments", "Financial Services"]
name Nombre de la empresa "Stripe"
tagline Eslogan o lema de la empresa "Financial infrastructure for the internet"
logo_url URL a la Endpoint de logotipo de empresa. Autentícate con tu token bearer de API key. "https://nubela.co/api/v1/company/logo?website=https://stripe.com"
cover_pic_url URL a la imagen de portada/banner de la empresa "https://example.com/cover.png"
facebook_url URL del perfil de Facebook "https://facebook.com/stripe"
twitter_url URL del perfil de Twitter/X "https://twitter.com/stripe"
instagram_url URL de perfil de Instagram null
employee_count Número estimado de empleados 8000
employee_count_range_min Límite inferior del rango de cantidad de empleados. Solo presente cuando include_employee_count=true. 7500
employee_count_range_max Límite superior del rango de recuento de empleados. Solo presente cuando include_employee_count=true. 8500
follower_count Número de seguidores en Twitter/X. Solo presente cuando follower_count=include. 272190
following_count Número de cuentas de Twitter/X seguidas. Solo presente cuando follower_count=include. 555
addresses Lista de direcciones de la empresa. Por defecto solo la sede central, a menos que addresses=best-effort-exhaustive se solicita. [Objeto de dirección]
executives Lista de ejecutivos y miembros del consejo de la empresa [Objeto Executive]
similar_companies URL a la Endpoint de listado de competidores. Autentícate con tu bearer token para obtener los competidores. "https://nubela.co/api/v1/competitor/listing?website=https%3A%2F%2Fstripe.com"
updates URL a la Endpoint de actualizaciones de empresa. Autentícate con tu bearer token para obtener las actualizaciones. "https://nubela.co/api/v1/company/updates?website=https%3A%2F%2Fstripe.com"
funding URL a la Endpoint de financiamiento de empresa. Autentícate con tu bearer token para obtener el historial de financiamiento. "https://nubela.co/api/v1/company/funding?website=https%3A%2F%2Fstripe.com"
public_listing Datos de empresas públicas, incluida información bursátil y financiera. null para empresas privadas. Objeto PublicListing

Objeto de dirección

Clave Descripción Ejemplo
address_type Tipo de dirección (HEADQUARTERS, REGISTERED, BRANCH, MAILING, OTHER) "HEADQUARTERS"
line1 Dirección, línea 1 "354 Oyster Point Blvd"
line2 Dirección, línea 2 null
city Nombre de la ciudad "South San Francisco"
state Estado, provincia o región "CA"
postal_code Código postal "94080"
country_code Código de país ISO 3166-1 alpha-2 "US"
country Nombre completo del país "United States"
is_primary Si esta es la dirección principal true

Objeto Executive

Clave Descripción Ejemplo
name Nombre completo del ejecutivo "Patrick Collison"
title Cargo "Chief Executive Officer"
role Tipo de rol normalizado (CEO, CFO, COO, CTO, CMO, PRESIDENT, VICE_PRESIDENT, DIRECTOR, BOARD_MEMBER, CHAIRMAN, FOUNDER, OTHER) "CEO"
person_profile_url URL precargada al Endpoint de perfil de persona. Autentícate con tu bearer token para obtener el perfil del ejecutivo. null cuando falta el nombre de pila o el sitio web de la empresa. "https://nubela.co/api/v2/employee/profile?employer_website=https%3A%2F%2Fstripe.com&first_name=Patrick&last_name=Collison"

Objeto PublicListing

Este objeto solo está presente (no nulo) para empresas públicas. Para empresas privadas, public_listing será null.

Clave Descripción Ejemplo
stock_symbol Símbolo de cotización bursátil "AAPL"
ipo_date Fecha de IPO en formato ISO "1980-12-12"
isin Número Internacional de Identificación de Valores "US0378331005"
figi Identificador Global de Instrumento Financiero "BBG000B9XRY4"
cusip Identificador CUSIP "037833100"
lei Identificador de Entidad Legal "HWUPKR0MPOU8FGXBT394"
cik Clave de índice central SEC "0000320193"
sic_code Código de clasificación industrial estándar SEC "3571"
revenue_usd Ingresos anuales en USD 383285000000
revenue_captured_at Fecha en que se capturaron los datos de ingresos (formato ISO) "2024-09-28"
ebitda_usd EBITDA en USD 134000000000
ebitda_captured_at Fecha en que se capturaron los datos de EBITDA (formato ISO) "2024-09-28"

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 2
X-NinjaPear-Cache-Age-Days Antigüedad de los datos devueltos en días completos. 0 cuando se devuelven datos actualizados desde el enriquecimiento en vivo. 12

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No El sitio web no es accesible
404 No No se encontraron datos en caché al use_cache=if-present-only
404 No se pudieron extraer datos de empresa del sitio web

Endpoint de conteo de empleados

GET /api/v1/company/employee-count

Costo: 2 créditos / solicitud exitosa.

Recupera el rango de número de empleados de una empresa a partir de su URL.

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);
});

Respuesta de ejemplo:

{
  "employee_count": 3500
}

Parámetros de URL

Parámetro Requerido Descripción Ejemplo
sitio web La URL del sitio web o el nombre de la empresa objetivo. Una URL de sitio web (p. ej. https://www.stripe.com) es muy recomendable para mayor precisión. https://www.stripe.com
use_cache No Controla el uso de caché. No distingue mayúsculas de minúsculas. Valores: if-recent (predeterminado; usa datos en caché si el último rastreo fue hace menos de 29 días, de lo contrario enriquece en tiempo real), if-present (devuelve primero la caché, enriquece en tiempo real si no está disponible), if-present-only (devuelve solo la caché; devuelve 404 si no está disponible), never (siempre enriquecer en tiempo real). Los valores no válidos recurren al valor predeterminado del endpoint. if-recent

Respuesta

Clave Descripción Ejemplo
employee_count Número estimado de empleados 3500

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 2
X-NinjaPear-Cache-Age-Days Antigüedad de los datos devueltos en días completos. 0 cuando se devuelven datos actualizados desde el enriquecimiento en vivo. 12

Códigos de error

Código de estado ¿Cobrado? Descripción
404 No No se encontraron datos de número de empleados para el sitio web indicado
404 No No se encontraron datos en caché al use_cache=if-present-only

Endpoint de actualizaciones de empresa

GET /api/v1/company/updates

Costo: 2 créditos / solicitud.

Recupera las últimas publicaciones de blog y actualizaciones de X/Twitter de una empresa. Devuelve una línea de tiempo mixta de publicaciones recientes de blog y X, ordenadas por marca de tiempo.

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);
});

Respuesta de ejemplo

{
  "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 Requerido Descripción Ejemplo
sitio web La URL del sitio web o el nombre de la empresa objetivo. Una URL de sitio web (p. ej. https://www.stripe.com) es muy recomendable para mayor precisión. https://www.stripe.com
use_cache No Controla el uso de caché. No distingue mayúsculas de minúsculas. Valores: if-recent (predeterminado; usa datos en caché si el último rastreo fue hace menos de 1 día, de lo contrario enriquece en tiempo real), if-present (devuelve primero la caché, enriquece en tiempo real si no está disponible), if-present-only (devuelve solo la caché; devuelve 404 si no está disponible), never (siempre enriquecer en tiempo real). Los valores no válidos recurren al valor predeterminado del endpoint. if-recent

Respuesta

Clave Descripción Ejemplo
blogs Lista de URL de fuentes RSS del blog (si se detectó RSS) o URL de páginas del blog ["https://stripe.com/blog/feed.rss"]
x_profile URL del perfil de X/Twitter, o null si no se encontró "https://x.com/stripe"
youtube_channels Lista de URL de canales de YouTube encontrados para la empresa, o vacío si no se encontró ninguno ["https://www.youtube.com/channel/UCdog0Ap82jpFvSnxorxF_lA"]
updates Lista de objetos de actualización (entradas de blog, tweets y videos de YouTube mezclados), ordenados por marca de tiempo descendente. Ver Objeto de actualización
timestamp Marca de tiempo UTC de cuándo se obtuvieron estos datos "2025-03-16T10:00:00+00:00"

Objeto de actualización

Clave Descripción Ejemplo
url URL de la publicación del blog, tweet o video de YouTube "https://stripe.com/blog/example"
title Título de la publicación (primeros 80 caracteres para tweets) "Stripe's annual letter"
description Descripción de la publicación, texto del tweet o descripción del video (hasta 500 caracteres para blogs) "A look back at..."
image_url URL de imagen (contenido multimedia del tweet o miniatura de video), o null "https://pbs.twimg.com/media/example.jpg"
timestamp Marca de tiempo de publicación ISO 8601, o null si se desconoce "2025-03-01T12:00:00+00:00"
source Tipo de fuente de la actualización "blog", "x", o "youtube"

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 2
X-NinjaPear-Cache-Age-Days Antigüedad de los datos devueltos en días completos. 0 cuando se devuelven datos actualizados desde el enriquecimiento en vivo. 1

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No Parámetro de sitio web faltante o inválido
403 No Créditos insuficientes
404 No No se encontraron datos en caché al use_cache=if-present-only

Endpoint de financiamiento de empresa

GET /api/v1/company/funding

Costo: 2 créditos / solicitud (base) + 1 crédito por inversor único devuelto. El cargo base sigue aplicando cuando no se encuentran datos de financiamiento (ver error_code: "no_funding_data" a continuación).

Recupera el historial de financiamiento de una empresa a partir de su URL. Devuelve el total de fondos recaudados, rondas de financiamiento individuales con fechas e importes, e inversores participantes con sus sitios web.

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);
});

Respuesta de ejemplo

{
  "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 Requerido Descripción Ejemplo
sitio web La URL del sitio web o el nombre de la empresa objetivo. Una URL de sitio web (p. ej. https://www.stripe.com) es muy recomendable para mayor precisión. https://www.stripe.com
use_cache No Controla el uso de caché. No distingue mayúsculas de minúsculas. Valores: if-recent (predeterminado; usa datos en caché si el último rastreo fue hace menos de 29 días, de lo contrario enriquece en tiempo real), if-present (devuelve primero la caché, enriquece en tiempo real si no está disponible), if-present-only (devuelve solo la caché; devuelve 404 si no está disponible), never (siempre enriquecer en tiempo real). Los valores no válidos recurren al valor predeterminado del endpoint. if-recent

Respuesta

Clave Descripción Ejemplo
sitio web El dominio de empresa que describe la respuesta, reflejado desde la solicitud "stripe.com"
total_funds_raised_usd Financiamiento total recaudado en USD, o null si no se divulgó 9810000000
funding_rounds Array de objetos FundingRound, ordenados por fecha descendente Ver a continuación
credit_cost Total de créditos cobrados por esta llamada (2 base + 1 por inversor único). Las respuestas en streaming entregan el costo en créditos en el cuerpo de la respuesta en lugar del X-NinjaPear-Credit-Cost encabezado. 7

Objeto FundingRound

Clave Descripción Ejemplo
round_type Tipo de ronda de financiamiento (consulte los valores de tipo de ronda a continuación) "SERIES_A"
date Fecha de la ronda en YYYY-MM-DD formato, o null si se desconoce "2023-03-01"
amount_usd Monto recaudado en esta ronda en USD, o null si no se divulgó 600000000
investors Array de objetos Investor que participaron en esta ronda Ver a continuación

Objeto Investor

Clave Descripción Ejemplo
name Nombre del inversor (firma o individuo) "Sequoia Capital"
sitio web Dominio del sitio web del inversor, o null si se desconoce "sequoiacap.com"
type Ya sea "company" (firma de capital de riesgo, fondo, corporativo) o "angel" (individual) "company"
amount_usd Monto que aportó este inversor en USD, o null si no se divulgó null

Valores de tipo de ronda

PRE_SEED, SEED, SERIES_A, SERIES_B, SERIES_C, SERIES_D, SERIES_E, SERIES_F, SERIES_G, SERIES_H, SERIES_I a través de 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

Cabeceras de respuesta

Este endpoint transmite su respuesta en streaming; los HTTP trailers no son compatibles, por lo que el costo en créditos se entrega en el cuerpo de la respuesta (el credit_cost campo) en lugar del X-NinjaPear-Credit-Cost encabezado. Cuando la respuesta se sirve desde caché, el X-NinjaPear-Credit-Cost encabezado se devuelve con normalidad. El X-NinjaPear-Cache-Age-Days encabezado se devuelve en respuestas exitosas para todos los use_cache modos; el enriquecimiento en vivo actualizado devuelve 0.

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API (2 base + 1 por inversor). Solo aciertos de caché. 7
X-NinjaPear-Cache-Age-Days Antigüedad de los datos devueltos en días completos. 0 cuando se devuelven datos actualizados desde el enriquecimiento en vivo. 12

Códigos de error

Los errores del lado del cliente (HTTP 400 / 403) se devuelven antes de que comience el cuerpo del streaming. En caso de errores de caché, los errores del lado del servidor se entregan como HTTP 200 con error y error_code campos en el cuerpo de la respuesta — como la conexión de streaming ya ha sido establecida, el código de estado no puede cambiarse. Los clientes que anteriormente ramificaban en response.status_code == 404 debe ramificarse en el error_code campo en su lugar.

Código de estado ¿Cobrado? error_code (cuerpo) Descripción
400 No Parámetro de sitio web faltante o inválido
403 No Créditos insuficientes
404 No No se encontraron datos en caché al use_cache=if-present-only
200 (el cuerpo contiene el error) Sí (2 créditos) no_funding_data No se encontraron datos de financiamiento para el sitio web indicado. funding_rounds es [].
200 (el cuerpo contiene el error) No service_temp_unavailable Servicio temporalmente no disponible. Inténtelo de nuevo más tarde. funding_rounds es [].

Endpoint de consulta de sitio web

GET /api/v1/company/website

Costo: 1 crédito / solicitud (se cobra independientemente de si se encuentra una coincidencia).

Resuelve el nombre de una empresa a su URL de sitio web 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);
});

Respuesta de ejemplo:

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

Parámetros de URL

Parámetro Requerido Descripción Ejemplo
company_name El nombre de la empresa a consultar. Apex
country_code No Código de país ISO 3166-1 alfa-2 de 2 letras opcional, usado para orientar la búsqueda geográficamente (p. ej. us, gb, de, sg). Consulta el lista completa de códigos ISO 3166-1 alpha-2. El valor predeterminado es us cuando se omite. us
pista No Proporciona una pista para diferenciar empresas con nombres similares en el mismo país. cybersecurity firm

Respuesta

Clave Descripción Ejemplo
sitio web La URL canónica resuelta del sitio web. https://www.stripe.com

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 1

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No Faltante o inválido company_name parámetro.
400 No No válido country_code (no es un código de 2 letras reconocido).
404 Sí (1) No se encontró ningún sitio web coincidente para el nombre de empresa indicado.

API de empleado

endpoint de correo laboral

GET /api/v1/employee/work-email

Costo: 2 créditos en una consulta exitosa (correo laboral encontrado). Cuando no se encuentra correo (work_email es null), un cargo de token de 0.5 créditos se aplican — esto desincentiva el abuso y mantiene las consultas especulativas a bajo costo.

Realiza un intento de mejor esfuerzo para devolver un correo laboral público de una persona dado su nombre (apellido opcional) y un dominio de 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);
  });

Respuesta de ejemplo (correo encontrado)

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

Respuesta de ejemplo (sin evidencia)

{
  "work_email": null
}

Parámetros de URL

Parámetro Requerido Descripción Ejemplo
first_name Nombre de pila de la persona. Patrick
last_name No Apellido de la persona. Mejora la precisión cuando el patrón lo requiere. Collison
domain Dominio de empresa. El protocolo y la ruta se eliminan si están presentes. stripe.com

Respuesta

Clave Descripción Ejemplo
work_email Dirección de correo laboral con mejor esfuerzo. null si no se encontró ningún correo público Y no se pudo inferir ningún patrón. "[email protected]" | null

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Total de créditos cobrados por esta llamada. 2 en un acierto; 0.5 en un fallo (cargo anti-abuso de token). 2 o 0.5

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No Faltante o inválido first_name / domain.
403 No Créditos insuficientes.
503 No Servicio temporalmente no disponible. Inténtelo de nuevo más tarde.

Endpoint de perfil de persona

GET /api/v2/employee/profile

Rápido, promedio 10,5 s Detallado promedio 38.7s

Costo: 3 créditos / solicitud. Los créditos se cobran incluso si no se encuentran datos.

Enriquece el perfil profesional de un empleado a partir de un correo laboral, una combinación de nombre y empleador, o una combinación de cargo y empleador. Devuelve datos de perfil estructurados que incluyen historial laboral, educación, ubicación y presencia en redes sociales.

Debe proporcionar al menos una de estas combinaciones de entrada:

Siempre puede agregar más parámetros para mejorar la precisión. Por ejemplo, proporcionar work_email junto con first_name, last_name, y role producirá mejores resultados que work_email solo.

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);
});

Respuesta de ejemplo

{
  "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 Requerido Descripción Ejemplo
work_email Condicional Dirección de correo laboral de la persona. Obligatorio si employer_website no se proporcionó. [email protected]
first_name Condicional Nombre de pila de la persona. Requerido al usar nombre + employer_website combinación. John
middle_name No Segundo nombre de la persona. Mejora la precisión cuando se combina con otros parámetros. Michael
last_name No Apellido de la persona. Mejora la precisión cuando se combina con otros parámetros. Smith
employer_website Condicional URL del sitio web o nombre de la empresa del empleador de la persona. Se recomienda encarecidamente una URL del sitio web para mayor precisión. Obligatorio si work_email no se proporcionó. https://stripe.com
role No Cargo o función actual. Mejora la precisión. Requerido al usar employer_website sin nombre. CTO
slug No Slug de persona para una consulta directa de un perfil enriquecido existente. elon-musk
id No ID de persona para una consulta directa de un perfil enriquecido existente. abc123de-...
enrichment No Controla la profundidad del enriquecimiento en tiempo real. Valores: fast (predeterminado; responde rápidamente e inicia el enriquecimiento detallado en segundo plano), detailed (espera el enriquecimiento detallado antes de responder).

Una respuesta rápida incluye menos detalle biográfico, como datos del sitio web y foto de perfil, pero devuelve rápidamente el historial laboral y educativo estructurado.

Una solicitud de enriquecimiento rápido también inicia un enriquecimiento detallado en segundo plano, y usted también tiene derecho a ese resultado. Consulte la misma solicitud con los mismos parámetros y use_cache=if-recent 10 a 30 segundos después para obtener el resultado completamente enriquecido sin costo adicional. Detén el sondeo cuando el X-NinjaPear-Enrichment-Status el encabezado de respuesta es complete. Una vez que el enriquecimiento detallado finaliza, la misma solicitud devuelve el perfil detallado en caché sin costo adicional.

Usar enrichment=fast cuando necesita un resultado rápido para casos de uso como poblar una interfaz. Utilice enrichment=detailed cuando necesita la respuesta completa y no le importa esperar.
fast
use_cache No Controla el uso de caché. No distingue mayúsculas de minúsculas. Valores: if-recent (predeterminado; usa datos en caché si el último rastreo fue hace menos de 29 días, de lo contrario enriquece en tiempo real), if-present (devuelve primero la caché, enriquece en tiempo real si no está disponible), if-present-only (devuelve solo la caché; devuelve 404 si no está disponible), never (siempre enriquecer en tiempo real). Los valores no válidos recurren al valor predeterminado del endpoint. if-recent

Combinaciones de entrada válidas

Combinación Ejemplo
work_email solo [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 o id ?slug=elon-musk

Siempre se pueden incluir parámetros adicionales para mejorar la precisión de los resultados.

Respuesta

Clave Descripción Ejemplo
id ID único de persona. Presente cuando el perfil está respaldado por un registro de persona persistido. "abc123de-f456-7890-abcd-ef1234567890"
slug Slug único de persona. Presente cuando el perfil está respaldado por un registro de persona persistido. "elon-musk"
profile_pic_url URL a la foto de perfil de la persona (de X/Twitter). Puede ser null. "https://pbs.twimg.com/.../photo_400x400.jpg"
first_name nombre "Elon"
middle_name Segundo nombre. Puede ser null. "Reeve"
last_name Apellido "Musk"
full_name Nombre completo "Elon Reeve Musk"
bio Biografía/descripción del perfil de X/Twitter. Puede ser null. "Mars & Cars, Chips & Dips"
follower_count Número de seguidores en X/Twitter. Puede ser null. 195000000
following_count Número de cuentas de X/Twitter seguidas. Puede ser null. 782
country País de residencia. Código ISO 3166-1 alpha-2. "US"
city Ciudad de residencia. UN/LOCODE. "USAUS"
state Estado o región de residencia. Código de subdivisión ISO 3166-2. "US-TX"
x_handle Nombre de usuario de X/Twitter (sin @). Puede ser null. "elonmusk"
x_profile_url URL del perfil de X/Twitter. Puede ser null. "https://x.com/elonmusk"
personal_website URL del sitio web personal. Puede ser null. "https://elonmusk.com"
work_experience Lista de entradas de historial laboral, la más reciente primero [Objeto WorkExperience]
education Lista de entradas de educación, la más reciente primero [Objeto de educación]
work_email_lookup URL predefinida al endpoint de correo laboral para esta persona, con first_name, last_name, y domain (el sitio web de la experiencia laboral más reciente) ya está completado. Llámalo directamente con tu bearer token para resolver el correo laboral de la persona — no es necesario volver a pasar los parámetros. Cuesta 2 créditos por llamada. Puede ser null cuando se desconoce el sitio web del empleador actual. "https://nubela.co/api/v1/employee/work-email?first_name=Elon&last_name=Musk&domain=tesla.com"
similar_people URL predefinida al Endpoint de personas similares para esta persona, indexado por su id. Llámalo directamente para obtener personas con el mismo rol en empresas competidoras — no es necesario volver a enviar los parámetros de búsqueda. "https://nubela.co/api/v1/employee/similar?id=abc123de-..."

Objeto WorkExperience

Clave Descripción Ejemplo
role Cargo o función "CEO"
company_name Nombre de la empresa "Tesla"
company_website Dominio del sitio web de la empresa. Puede ser null. "tesla.com"
description Descripción de lo que hizo la persona en este rol. Puede ser null. "Leading Tesla's mission..."
start_date Fecha de inicio en formato YYYY-MM. Puede ser null. "2008-10"
end_date Fecha de fin en formato YYYY-MM. null significa actualmente en este cargo. null

Objeto de educación

Clave Descripción Ejemplo
major Título y campo de estudio "B.S. Economics"
school Nombre de la escuela o universidad "Wharton School, University of Pennsylvania"
start_date Fecha de inicio en formato YYYY-MM. Puede ser null. "1992-01"
end_date Fecha de fin en formato YYYY-MM. Puede ser null. "1997-01"

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 3
X-NinjaPear-Cache-Age-Days Antigüedad de los datos devueltos en días completos. 0 cuando se devuelven datos actualizados desde el enriquecimiento en vivo. 12
X-NinjaPear-Enrichment-Status Estado de enriquecimiento detallado para respuestas de Perfil de Persona v2. pending significa que la respuesta es el perfil rápido y el enriquecimiento detallado aún está en ejecución o en espera de finalizar. complete significa que la respuesta es el perfil detallado en caché o un enrichment=detailed resultado. Consulte periódicamente hasta que este encabezado sea complete. complete

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No Entrada no válida. Debe proporcionar work_email, o first_name + employer_website, o employer_website + role.
400 No No válido enrichment. Usa fast o detailed. El obsoleto speed el parámetro no es aceptado.
400 No work_email es un correo personal/gratuito (p. ej. [email protected]). Proporciona un correo laboral corporativo.
403 No Créditos insuficientes
404 No work_email es un buzón basado en roles / genérico (p. ej. info@, support@, sales@, noreply@) que no corresponde a una persona individual.
404 No No se encontraron datos en caché al use_cache=if-present-only
404 Sí (3 créditos) No se encontraron datos de perfil para la entrada indicada
503 No Servicio temporalmente no disponible. Inténtelo de nuevo más tarde.

Endpoint de personas similares

GET /api/v1/employee/similar

Costo: 10 créditos base + 5 créditos por tupla (empresa, rol) intentada. El costo base se cobra independientemente de si se encuentran personas similares, porque el endpoint consume recursos de enriquecimiento en tiempo real para atender cada solicitud. Los resultados en caché son gratuitos (ver más abajo).

Encuentra personas que son similar a una persona objetivo, definida como personas que ocupan el el mismo rol en empresas competidoras. Dado un objetivo (p. ej., el CEO de nubela.co), el endpoint identifica el empleador actual del objetivo, busca los competidores de ese empleador e intenta enriquecer a la persona con el mismo rol en cada competidor en tiempo real. La respuesta devuelve el perfil del objetivo, la lista de tuplas (empresa, rol) que se intentaron buscar y las personas similares que se enriquecieron correctamente.

Los parámetros de entrada son idénticos al Endpoint de perfil de persona. Debes proporcionar al menos una de estas combinaciones 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);
});

Respuesta de ejemplo

{
  "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 brevedad, el ejemplo anterior muestra solo un subconjunto de PersonProfile campos. Cada entrada en objetivo y similar_people es un PersonProfile objeto; consulte el Respuesta del endpoint de perfil de persona para el esquema completo, incluyendo profile_pic_url, bio, country, x_handle, education, etc.

Parámetros de URL

Idéntico al Parámetros de URL del endpoint de perfil de persona.

Parámetro Requerido Descripción Ejemplo
work_email Condicional Dirección de correo laboral de la persona objetivo. Obligatorio si employer_website no se proporcionó. [email protected]
first_name Condicional Primer nombre del objetivo. Obligatorio al usar nombre + employer_website combinación. Tim
middle_name No Segundo nombre del objetivo. Mejora la precisión cuando se combina con otros parámetros. Donald
last_name No Apellido del objetivo. Mejora la precisión cuando se combina con otros parámetros. Cook
employer_website Condicional URL del sitio web o nombre de la empresa del empleador del objetivo. Se recomienda encarecidamente una URL del sitio web para mayor precisión. Obligatorio si work_email no se proporcionó. https://apple.com
role No Cargo o función actual. Requerido al usar employer_website sin nombre. CEO

Combinaciones de entrada válidas

Combinación Ejemplo
work_email solo [email protected]
first_name + employer_website ?first_name=Tim&employer_website=https://apple.com
employer_website + role ?employer_website=https://apple.com&role=CEO

Respuesta

Clave Descripción Ejemplo
objetivo El perfil completo de la persona objetivo resuelta. Mismo esquema que el Endpoint de perfil de persona. { "first_name": "Tim", ... }
attempted_searches Lista de tuplas (empresa, rol) que intentamos enriquecer. Una entrada por cada competidor del empleador actual del objetivo. Determina la facturación por tupla (5 créditos cada una). [Objeto AttemptedSearch]
similar_people Lista de perfiles enriquecidos exitosamente para personas con el mismo rol en empresas competidoras. Puede ser un subconjunto de attempted_searches (algunos intentos no devuelven datos). Cada entrada usa el mismo esquema que el Endpoint de perfil de persona. [PersonProfile, ...]
credit_cost Total de créditos cobrados por esta llamada. Igual a 10 + 5 * len(attempted_searches), o 0 para resultados en caché servidos al mismo producto que pagó previamente. 30

Objeto AttemptedSearch

Clave Descripción Ejemplo
employer_website Dominio del sitio web del competidor que se intentó. "google.com"
role Rol que se buscó en ese competidor (refleja el objetivo). "CEO"

Cabeceras de respuesta

Este endpoint transmite su respuesta en streaming, por lo que el costo en créditos no puede devolverse en un encabezado — los HTTP trailers no son compatibles con la capa de streaming. Lea el credit_cost campo en el cuerpo de la respuesta en lugar del habitual X-NinjaPear-Credit-Cost encabezado.

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No Entrada no válida. Debe proporcionar work_email, o first_name + employer_website, o employer_website + role.
400 No work_email es un correo personal/gratuito (p. ej. [email protected]). Proporciona un correo laboral corporativo.
403 No Créditos insuficientes. Necesita al menos 10 créditos para iniciar una búsqueda de personas similares.
404 No work_email es un buzón basado en roles / genérico (p. ej. info@, support@, sales@, noreply@) que no corresponde a una persona individual.
404 No No se pudo resolver la persona objetivo.
503 No Recurso temporalmente no disponible. Por favor, inténtalo de nuevo.

Endpoint de búsqueda de empleados

GET /api/v1/employee/search

Costo: base 2 créditos por llamada (cobrados incluso cuando no se devuelven empleados), más 1 crédito por empleado en el empleados arreglo. Una consulta que devuelve 10 empleados cuesta 2 + 10 = 12 créditos.

Encuentra empleados actuales de una empresa filtrados por rol, con opción de acotarlos por geografía.

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);
});

Respuesta de ejemplo

{
  "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 Requerido Descripción Ejemplo
company_website La empresa objetivo. La forma preferida es un sitio web (dominio simple como stripe.com o URL completa como https://stripe.com). Un nombre de empresa (por ejemplo, Stripe) también se acepta. stripe.com
role Rol laboral para acotar la búsqueda. Coincide con variantes de roles relacionados (p. ej. VP of Engineering también coincide con Vice President, Engineering). VP of Engineering
country No Código de país ISO 3166-1 alpha-2 para restringir la búsqueda. US
state No Estado o región para filtrar (formato libre). California
city No Ciudad por la que filtrar (texto libre). San Francisco
use_cache No Controla el uso de caché. No distingue mayúsculas de minúsculas. Valores: if-recent (predeterminado; usa datos en caché si el último rastreo fue hace menos de 29 días, de lo contrario enriquece en tiempo real), if-present (devuelve primero la caché, enriquece en tiempo real si no está disponible), if-present-only (devuelve solo la caché; devuelve 404 si no está disponible), never (siempre enriquecer en tiempo real). Los valores no válidos recurren al valor predeterminado del endpoint. if-recent

Respuesta

Clave Descripción Ejemplo
empleados Lista de empleados coincidentes en la empresa objetivo. array vacío si no se encuentra ninguno. [Objeto de empleado]

Objeto de empleado

Clave Descripción Ejemplo
first_name El primer nombre del empleado. "Jane"
last_name El apellido del empleado. Puede ser null si no está disponible. "Doe"
role El cargo actual del empleado en la empresa objetivo. "VP of Engineering"
company_website Sitio web del empleador objetivo donde trabaja el empleado. Refleja el valor resuelto de company_website parámetro de entrada en cada registro. "stripe.com"
company_details URL precargada al Endpoint de detalles de empresa, completado con sitio web. Autentícate con tu bearer token para obtener los detalles de la empresa. "https://nubela.co/api/v1/company/details?website=stripe.com"
person_profile URL precargada al Endpoint de perfil de persona, completado con first_name, last_name, y employer_website. Llama directamente con tu bearer token para enriquecer a la persona. Cuesta 3 créditos por llamada. "https://nubela.co/api/v2/employee/profile?first_name=Jane&last_name=Doe&employer_website=https%3A%2F%2Fstripe.com"
work_email URL precargada al endpoint de correo laboral, completado con first_name, last_name, y domain. Llama directamente con tu bearer token para resolver el correo laboral. Cuesta 2 créditos en un resultado encontrado, 0.5 créditos cuando no se encuentra correo. "https://nubela.co/api/v1/employee/work-email?first_name=Jane&last_name=Doe&domain=stripe.com"

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Total de créditos cobrados por esta llamada. Equivale a 2 + N donde N es el número de empleados devueltos (2 cuando el array está vacío). 12
X-NinjaPear-Cache-Age-Days Antigüedad de los datos devueltos en días completos. 0 cuando se devuelven datos actualizados desde el enriquecimiento en vivo. 12

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No Faltante o inválido company_website o role parámetro.
403 No Créditos insuficientes. Necesita al menos 2 créditos para iniciar una búsqueda.
404 No No se encontraron datos en caché al use_cache=if-present-only
404 No Lo proporcionado company_website no pudo resolverse como una empresa conocida.
503 No Recurso temporalmente no disponible. Por favor, inténtalo de nuevo.

Meta API

Endpoint para ver saldo de créditos

GET /api/v1/meta/credit-balance

Costo: 0 crédito / solicitud exitosa.

Obtenga su saldo actual 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);
});

Respuesta de ejemplo:

{
  "credit_balance": 100000
}

Respuesta

Clave Descripción Ejemplo
credit_balance Tu saldo actual de créditos 100000

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 0

Códigos de error

Código de estado ¿Cobrado? Descripción
401 No API key no válida

API de contacto

Endpoint de verificación de correo desechable

GET /api/v1/contact/disposable-email

Costo: 0 crédito / solicitud exitosa. (GRATIS)

Compruebe si una dirección de correo electrónico es desechable (temporal/de un solo uso) o pertenece a un proveedor de correo 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);
});

Respuesta de ejemplo:

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

Parámetros de URL

Parámetro Requerido Descripción Ejemplo
correo La dirección de correo electrónico a verificar [email protected]

Respuesta

Clave Descripción Ejemplo
correo La dirección de correo electrónico que fue verificada "[email protected]"
is_disposable_email Si el dominio de correo es un proveedor de correo desechable/temporal conocido true
is_free_email Si el dominio de correo es un proveedor de correo gratuito (p. ej., gmail.com, yahoo.com) false

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 0

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No Formato de correo electrónico no válido

API de Monitor

La API Monitor le permite monitorear las actualizaciones de empresas. Cada nueva actualización se compila en una única fuente RSS. El sistema monitorea blogs de empresas, perfiles de X (Twitter) y cambios en sitios web.

Conceptos fundamentales

Cómo usar

Suponga que desea monitorear un grupo de sitios web de competidores en busca de publicaciones de blog, actividad en X y cambios en el sitio web, todo entregado como una única fuente RSS que puede conectar a Feedly, Slack, Zapier o cualquier lector RSS.

1. Crea una fuente con objetivos — agrupe las empresas que desea monitorear en una fuente. Cada empresa es un objetivo identificada por la URL de su sitio web.

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"

La respuesta incluye un rss_url — esta es la URL a la que se suscribe.

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

2. Suscríbete a la fuente RSS — copie el rss_url y agrégalo a cualquier lector RSS (Feedly, Slack, Zapier, etc.). Las publicaciones de blog, publicaciones en X y cambios en el sitio web de todos los objetivos aparecen como elementos en una sola fuente.

Stripe: Expanding our Payment Network [blog] Vercel on X: "Next.js 16 is here" [x] Shopify: Pricing Page [website update]

Cada elemento incluye una categoría (blog, x, website update, o website new page). Consulta Endpoint de consumo de fuente para el esquema RSS completo.

3. Agrega nuevos objetivos — ¿un nuevo competidor entró al mercado? Agrégalo a la fuente.

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. Elimina objetivos — ¿una empresa ya no es relevante? Elimínela de la fuente.

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

5. Cambiar la configuración de monitoreo — de forma predeterminada, cada objetivo monitorea publicaciones de blog, publicaciones de X y cambios en el sitio web con una cadencia de 7 días. Use PATCH para activar o desactivar canales o cambiar la frecuencia.

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"

Solo se modifican los campos que incluya; los campos omitidos conservan sus valores actuales. Consulte Objeto de configuración para todas las opciones disponibles.

Precios

Acción Costo
Crear una fuente 3 créditos (una sola vez)
Extracción de publicaciones de blog (por objetivo) 1 crédito/consulta
Extracción de monitoreo de sitio web (por objetivo) 1 crédito/consulta
Extracción de actualizaciones de publicaciones de X (por objetivo) 2 créditos/consulta
Extracción de actualizaciones de YouTube (por objetivo) 1 crédito/consulta
Todos los demás endpoints (listar, describir, eliminar fuentes; gestionar objetivos) 0 créditos

Cada extracción verifica un objetivo para una fuente (blog, X, sitio web o YouTube). Con las cuatro fuentes habilitadas, un solo objetivo cuesta 5 créditos por consulta (1 blog + 2 X + 1 sitio web + 1 YouTube).

Costos mensuales de ejemplo

Escenario Objetivos Frecuencia Créditos/mes
Capital de riesgo rastreando 20 empresas de cartera 20 Semanal ~433 créditos (3 únicos + 20 × 5 × 4.3 semanas)
Startup que monitorea 10 competidores 10 Diario ~1,503 créditos (3 únicos + 10 × 5 × 30 días)
Equipo de ventas monitoreando 5 cuentas de prospecto (solo blog + X, sin sitio web) 5 Diario ~453 créditos (3 únicos + 5 × 3 × 30 días)

El costo único de creación de fuente (3 créditos) se incluye solo en el primer mes.

Endpoint para listar fuentes

GET /api/v1/monitor/feeds

Costo: 0 créditos / solicitud.

Recupera una lista de todas las fuentes del usuario autenticado.

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

Respuesta de ejemplo:

{
  "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
    }
  ]
}

Respuesta

Clave Descripción Ejemplo
feeds Lista de objetos Feed Ver Objeto Feed

Objeto Feed

Clave Descripción Ejemplo
id Identificador único de fuente "feed_abc123"
name Nombre de la fuente "SaaS Competitors"
is_public Si la fuente es de acceso público false
is_suspended Si la fuente está actualmente suspendida false
suspension_reason Motivo de la suspensión, si está suspendido null o "insufficient_credits"
rss_url La URL de la fuente RSS. Para fuentes privadas, incluye un 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 notificación por correo electrónico "skip" o "on_updates"
created_at Marca de tiempo de creación ISO 8601 "2026-02-24T00:00:00Z"
target_count Número de objetivos en la fuente 2

Endpoint de nueva fuente

POST /api/v1/monitor/feeds

Costo: 3 créditos / solicitud (tarifa única).

Crea una nueva fuente y, opcionalmente, acepta un arreglo de objetivos iniciales.

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"

Respuesta de ejemplo 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"
    }
  ]
}

Cuerpo de la solicitud

Parámetro Requerido Descripción Ejemplo
name No Nombre de la fuente. Si se omite, se generará un nombre automáticamente. "SaaS Competitors"
is_public No Si la fuente es de acceso público (predeterminado: false) false
email_notifications No Modo de notificación por correo electrónico. "on_updates" para recibir correos electrónicos cuando se detecten nuevas actualizaciones, "skip" para deshabilitar (por defecto: "skip") "on_updates"
targets Array de objetivos iniciales para agregar a la fuente (se requiere al menos 1) Ver Objeto de entrada de destino

Objeto de entrada de destino

Parámetro Requerido Descripción Ejemplo
website_url La URL del sitio web de la empresa a monitorear "https://stripe.com"
settings No Preferencias de monitoreo. Si se omiten, se aplican los valores predeterminados. Ver Objeto de configuración

Objeto de configuración

Parámetro Requerido Descripción Ejemplo
monitor_blog No Monitorear el blog de la empresa en busca de nuevas publicaciones (predeterminado: true) true
monitor_x No Monitorear la cuenta de X (Twitter) de la empresa (predeterminado: true) true
monitor_website No Monitorear el sitio web de la empresa para detectar cambios de contenido y nuevas páginas (predeterminado: true) true
monitor_youtube No Monitorear el canal oficial de YouTube de la empresa para nuevos videos (predeterminado: true) true
frequency_days No Con qué frecuencia verificar actualizaciones, en días. Debe estar entre 1 y 30 (predeterminado: 7) 7

Reglas de validación

Respuesta

Retorna 201 Created. La respuesta incluye el creado Objeto Feed con un targets arreglo que contiene Objeto de destino entradas.

Objeto de destino

Clave Descripción Ejemplo
id Identificador único de objetivo "target_xyz789"
website_url La URL del sitio web de la empresa monitoreada "https://stripe.com"
settings Objeto de preferencias de monitoreo Ver Objeto de configuración
last_polled_at Marca de tiempo ISO 8601 del último sondeo, o null si nunca se consultó null
is_baseline_complete Si se ha capturado la instantánea de referencia inicial false
created_at Marca de tiempo de creación ISO 8601 "2026-02-24T09:55:00Z"

Cabeceras de respuesta

Clave de encabezado Descripción Ejemplo
X-NinjaPear-Credit-Cost Costo total en créditos para esta llamada a la API 3

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No Error de validación (objetivos faltantes, URL inalcanzable, sin indicadores de monitoreo habilitados)

Endpoint de descripción de fuente

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

Costo: 0 créditos / solicitud.

Recupera los detalles completos de una fuente, incluidos todos sus objetivos asociados.

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

Respuesta de ejemplo:

{
  "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 Requerido Descripción Ejemplo
feed_id El ID de la fuente feed_abc123

Respuesta

Devuelve un Objeto Feed con un targets arreglo que contiene Objeto de destino entradas.

Códigos de error

Código de estado ¿Cobrado? Descripción
404 No Fuente no encontrada

Endpoint de eliminación de fuente

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

Costo: 0 créditos / solicitud.

Elimina permanentemente una fuente y todos los objetivos asociados.

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

Parámetros de URL

Parámetro Requerido Descripción Ejemplo
feed_id El ID de la fuente a eliminar feed_abc123

Respuesta

Retorna 200 OK con un mensaje de confirmación.

{
  "message": "Feed deleted."
}

Códigos de error

Código de estado ¿Cobrado? Descripción
404 No Fuente no encontrada

Endpoint para agregar objetivo

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

Costo: 0 créditos / solicitud.

Agrega una nueva empresa a una fuente 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"

Respuesta de ejemplo 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 Requerido Descripción Ejemplo
feed_id El ID de la fuente a la que agregar el objetivo feed_abc123

Cuerpo de la solicitud

Parámetro Requerido Descripción Ejemplo
website_url La URL del sitio web de la empresa a monitorear "https://shopify.com"
settings No Preferencias de monitoreo. Si se omiten, se aplican los valores predeterminados. Ver Objeto de configuración

Respuesta

Devuelve un Objeto de destino.

Códigos de error

Código de estado ¿Cobrado? Descripción
404 No Fuente no encontrada

Endpoint de actualización de objetivo

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

Costo: 0 créditos / solicitud.

Modifica las preferencias de monitoreo para un objetivo 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 Requerido Descripción Ejemplo
feed_id El ID de la fuente feed_abc123
target_id El ID del objetivo a actualizar target_xyz789

Cuerpo de la solicitud

Parámetro Requerido Descripción Ejemplo
settings Actualización parcial de configuración. Solo se modifican los campos proporcionados. Ver Objeto de configuración

Respuesta

Devuelve el actualizado Objeto de destino.

Respuesta de ejemplo:

{
  "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 error

Código de estado ¿Cobrado? Descripción
400 No No se proporcionó una configuración válida
404 No Fuente u objetivo no encontrado

Endpoint de eliminación de objetivo

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

Costo: 0 créditos / solicitud.

Detiene el monitoreo de un sitio web y lo elimina de la fuente.

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 Requerido Descripción Ejemplo
feed_id El ID de la fuente feed_abc123
target_id El ID del objetivo a eliminar target_xyz789

Respuesta

Retorna 200 OK con un mensaje de confirmación.

{
  "message": "Target deleted."
}

Códigos de error

Código de estado ¿Cobrado? Descripción
404 No Fuente u objetivo no encontrado

Endpoint de consumo de fuente

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

Costo: 0 créditos / solicitud (los costos de monitoreo se cobran por extracción en cada objetivo — ver Precios).

Devuelve una fuente XML RSS 2.0 estándar compatible con lectores RSS (Feedly, Slack, extensiones de navegador, etc.).

Si el is_public es false, se debe pasar un token válido como token parámetro de consulta.

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

Respuesta de ejemplo:

<?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 Requerido Descripción Ejemplo
feed_id El ID de la fuente feed_abc123

Formato de respuesta

La respuesta es un documento XML RSS 2.0 estándar. La estructura es la siguiente:

Elementos del canal

Elemento Descripción Ejemplo
<title> El nombre de la fuente SaaS Competitors
<link> URL de la fuente RSS https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml
<description> Resumen generado automáticamente de las empresas monitoreadas Automated updates for Stripe, Shopify, and Vercel.
<lastBuildDate> Marca de tiempo RFC 2822 de la última compilación de la fuente Tue, 24 Feb 2026 10:00:00 +0800

Elementos del ítem

Cada <item> representa una única actualización de una empresa monitoreada.

Elemento Descripción Ejemplo
<title> Título de la actualización, precedido por el nombre de la empresa Stripe: Expanding our Global Payment Network
<link> URL del contenido original https://stripe.com/blog/global-network-2026
<guid> Identificador único del elemento. isPermaLink es true cuando el GUID es una URL. https://stripe.com/blog/global-network-2026
<pubDate> Marca de tiempo de publicación RFC 2822 Mon, 23 Feb 2026 14:30:00 +0800
<category> Tipo de actualización (ver categorías a continuación) blog
<dc:creator> Nombre de empresa (usa el espacio de nombres Dublin Core) Stripe
<description> Resumen o extracto de la actualización Contenido de texto
<enclosure> Archivo adjunto de imagen opcional con url, length (bytes), y type atributos de (tipo MIME) <enclosure url="..." length="150000" type="image/jpeg" />

Categorías de elementos RSS

Cada <item> incluye un <category> elemento que indica el tipo de actualización:

Categoría Descripción
blog Una nueva publicación de blog de la empresa
x Una publicación de la cuenta de X (Twitter) de la empresa
website update Se detectó un cambio en una página existente
website new page Se detectó una nueva página en el sitio web de la empresa
website unreachable El sitio web de la empresa se ha vuelto inaccesible (se activa una sola vez)

Códigos de error

Código de estado ¿Cobrado? Descripción
403 No Token faltante o inválido para una fuente privada
404 No Fuente no encontrada

Endpoint de actualización de fuente

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

Costo: 0 créditos / solicitud.

Actualice la configuración de la fuente, como el nombre, la visibilidad o el estado de suspensión. Fuentes suspendidas durante insufficient_credits se reanudan automáticamente cuando se agregan créditos.

# 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" }),
  },
);

Respuesta de ejemplo (igual que 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 Requerido Descripción Ejemplo
feed_id El ID de la fuente feed_abc123

Cuerpo de la solicitud

Parámetro Requerido Descripción Ejemplo
name No Nombre de la nueva fuente "My Feed"
is_public No Si la fuente RSS es de acceso público true
is_suspended No Establecer true para suspender, false para reanudar true
suspension_reason No Motivo de la suspensión (solo cuando is_suspended es true, predeterminado "manual") "manual"
email_notifications No Modo de notificación por correo electrónico. "on_updates" para recibir correos electrónicos cuando se detecten nuevas actualizaciones, "skip" para deshabilitar "on_updates"

Se debe proporcionar al menos un campo.

Respuesta

Devuelve el actualizado Objeto Feed con un targets arreglo que contiene Objeto de destino entradas.

Códigos de error

Código de estado ¿Cobrado? Descripción
400 No No se proporcionaron campos válidos
404 No Fuente no encontrada

Claude AI

NinjaPear ofrece un servidor MCP (Model Context Protocol) para integración directa con Claude. Esto le permite consultar datos de empresas B2B de forma conversacional: pregúntele a Claude sobre los clientes, inversores, número de empleados y más de cualquier empresa.

Inicio rápido

  1. Obtenga su cadena de conexión desde el Panel
  2. Agrega NinjaPear como conector en Claude (consulte las instrucciones de configuración a continuación)
  3. Inicia una nueva conversación y consulta datos de empresas B2B de forma conversacional

Configuración

Tu cadena de conexión está disponible en el Panel. Se ve así: https://nubela.co/mcp/sse?api_key=YOUR_API_KEY

  1. Obtenga su cadena de conexión desde el Panel
  2. Asegúrese de haber iniciado sesión en Claude y luego visite: Agregar conector personalizado
  3. Ingrese lo siguiente:
    • Nombre: NinjaPear
    • URL del servidor MCP remoto: Pegue su cadena de conector del paso 1
  4. Haga clic Agregar conector
  5. Inicia una nueva conversación y pide a Claude que use NinjaPear

Claude Code CLI

Obtenga su cadena de conexión desde el Panel, luego ejecuta:

claude mcp add ninjapear --transport sse "YOUR_CONNECTOR_STRING"

Herramientas disponibles

Herramienta Descripción Costo
get_customer_listing Obtenga clientes, inversores y socios de una empresa 1 + 2/empresa
get_company_details Obtenga información de la empresa, ejecutivos y datos financieros 2-4 créditos
get_employee_count Obtenga el número de empleados de una empresa 2 créditos
check_disposable_email Comprobar si el correo electrónico es desechable/gratuito GRATIS
get_credit_balance Consulte su saldo de créditos GRATIS
get_company_logo_url Obtenga la URL del logotipo de la empresa GRATIS
list_feeds Listar todas sus fuentes de monitoreo 0 créditos
create_feed Crear una nueva fuente de monitoreo con objetivos 3 créditos
describe_feed Obtenga los detalles de la fuente con todos los objetivos 0 créditos
update_feed Actualizar nombre, visibilidad o suspensión de la fuente 0 créditos
delete_feed Elimina una fuente y todos sus objetivos 0 créditos
add_target Agregar una empresa para monitorear en una fuente 0 créditos
update_target Actualizar la configuración de monitoreo para un objetivo 0 créditos
remove_target Eliminar una empresa de una fuente 0 créditos
consume_feed Leer las últimas actualizaciones de una fuente GRATIS

Ejemplos de prompts

Una vez conectado, puede hacerle preguntas a Claude como:

Inteligencia competitiva

Eres un gerente de producto que hace seguimiento de lo que hacen tus competidores.

Monitoreo de portafolio de capital de riesgo

Eres un inversor de capital de riesgo que quiere mantenerse al tanto de la actividad de las empresas en cartera. Sube un CSV o una captura de pantalla de tus empresas en cartera a Claude y pregunta:

Prospección de ventas

Trabajas en ventas y quieres investigar cuentas antes de contactarlas.

Investigación de mercado

Eres un analista trazando el panorama de una industria.

Monitoreo y alertas

Desea configurar un monitoreo continuo y volver a verificar las actualizaciones.

Gestión de cuenta

Verificaciones rápidas sobre tu uso de NinjaPear.

Manejo de errores

Los errores se devuelven como mensajes descriptivos que Claude le explicará:

Error Mensaje
API key no válida "Error: 401 Unauthorized"
Créditos insuficientes "Error: 402 Payment Required"
Límite de velocidad alcanzado "Error: 429 Too Many Requests"
Error del servidor "Error: 500 Internal Server Error"

Detalles técnicos

Protocolo MCP

El servidor MCP de NinjaPear implementa el Model Context Protocol especificación, que es el estándar abierto de Anthropic para conectar asistentes de IA a fuentes de datos externas y herramientas.

Transporte

Usamos el transporte Server-Sent Events (SSE) para comunicación en tiempo real:

Autenticación

Pase su clave de API mediante el api_key parámetro de consulta o el X-API-Key encabezado