NAV Navigation
cURL Python JavaScript

Vue d'ensemble de NinjaPear

NinjaPear est une plateforme d'intelligence B2B sur les entreprises, axée sur la propriété des données et l'approvisionnement éthique. En tant que fournisseur de première partie, nous maintenons un écosystème durable de données propriétaires et légalement vérifiées. Notre mission est de fournir une infrastructure de données fiable, permettant aux entreprises de développer et de faire évoluer des applications et des workflows à valeur ajoutée en toute confiance.

Pour les agents IA

Vous développez avec un agent de code IA ? Utilisez la version Markdown brute de ces docs — optimisée pour les LLMs et les outils IA comme Claude, Cursor et ChatGPT :

AI Skill

L'AI Skill NinjaPear donne aux agents de codage les connaissances procédurales nécessaires pour écrire un code d'intégration NinjaPear correct dans vos applications. Installez-la avec une seule commande et votre agent saura comment s'authentifier, choisir le bon point de terminaison, générer du code SDK et gérer les cas limites — le tout avec une conscience des coûts intégrée.

Conditions préalables — Une clé API NinjaPear de nubela.co/dashboard et Node.js 18+.

Installez la compétence à l'aide du npx skills CLI. Choisissez la commande pour votre agent :

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

Ce que la compétence fournit

Une fois installée, la compétence donne à votre agent de codage les connaissances procédurales nécessaires pour utiliser NinjaPear correctement :

Capacité Descriptif
Configuration de l'authentification Configurer les clés API via les variables d'environnement et l'initialisation du SDK
Sélection du point de terminaison Choisissez le bon point de terminaison de l'API NinjaPear en tenant compte des coûts
Intégration du SDK Python Générez le code correct à l'aide du ninjapear Paquet Python
Intégration du SDK JavaScript Générez le code correct à l'aide du ninjapear paquet npm
Gestion des paginations Implémenter une pagination basée sur le curseur pour les points de terminaison de la liste
Gestion des limites de débit Respectez les limites de débit avec une logique de nouvelle tentative et d'attente appropriée
Gestion des erreurs Gérez tous les codes d'erreur NinjaPear (401, 403, 404, 429, 500, 503)
Configuration du délai d'attente Définir des délais d'attente appropriés pour les points de terminaison de longue durée

Explique-moi comme si j'avais 5 ans

Authentification

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

L'API de NinjaPear utilise des tokens bearer pour authentifier les utilisateurs. Chaque utilisateur se voit attribuer une clé secrète générée aléatoirement dans Section API dans le Tableau de bord.

Le bearer token est injecté dans le Authorization header.

Bibliothèques clientes

Nous proposons des bibliothèques clientes officielles pour JavaScript et Python afin de faciliter l'intégration avec l'API NinjaPear.

JavaScript (Node.js)

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

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

Python

uv add ninjapear
# or: pip install ninjapear
import ninjapear

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

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

Limite de débit

Les limites de débit sont appliquées par compte produit et partagées par toutes les clés API associées à ce produit.

Les endpoints API payants sont limités à 50 requêtes par minute.

Pour la limitation de débit, les endpoints de gestion des flux et des cibles Monitor sont comptabilisés comme du trafic API payant, même lorsque le coût en crédits de l'endpoint est 0.

En période de forte charge, notre système peut resserrer les limites de débit pour tous les comptes afin de garantir que nos services restent accessibles à tous les utilisateurs.

Nous retournons HTTP 429 lorsque vous êtes soumis à une limitation de débit. Vous pouvez également recevoir HTTP 429 si notre capacité de traitement est limitée.

Vous devez gérer les erreurs 429 et appliquer un backoff exponentiel.

Les réponses soumises à une limite de débit incluent :

En-tête Descriptif
Retry-After Secondes à attendre avant de réessayer
X-RateLimit-Limit Nombre maximum de requêtes autorisées dans la minute en cours
X-RateLimit-Remaining Requêtes restantes dans la minute en cours
X-RateLimit-Reset Horodatage Unix indiquant la réinitialisation de la minute en cours

Limite de débit pour les API gratuites

Pour fournir des API gratuites de manière pérenne, la limite de débit des API gratuites dépend de votre plan d'abonnement :

La limite de débit de l'API gratuite s'applique au logo de l'entreprise, au vérificateur d'e-mails jetables, à la consultation du solde de crédits et à la consommation du flux RSS.

Crédits

Chaque requête valide nécessite au moins 0.1 crédit pour être traité, sauf s'il s'agit d'un endpoint API gratuit.

Un crédit est consommé si et seulement si la requête est analysée avec succès.

Une requête réussie est une requête qui retourne avec un 200 Code de statut HTTP.

Facturation du cache

Pour les points de terminaison avec un use_cache paramètre, un produit n'est pas facturé à nouveau lorsque la même requête normalisée est servie depuis la même version d'enregistrement mis en cache pour laquelle le produit a déjà été facturé. La réponse inclut X-NinjaPear-Credit-Cost: 0 pour ces accès répétés au cache.

use_cache=never effectue toujours une nouvelle récupération et facture normalement. use_cache=if-recent n'est éligible à une répétition gratuite que si l'enregistrement mis en cache se trouve dans la fenêtre de fraîcheur de cet endpoint.

Pour les endpoints paginés, l'accès gratuit répété est limité aux pages déjà payées avec la même requête, les mêmes filtres, la même chaîne de curseur et page_size. Les pages paginées payantes sont rejouées à l'identique lors des accès répétés au cache, y compris le next_page valeur. Les pages suivantes non encore payées sont facturées normalement.

Délais d'attente et temps de réponse de l'API

Les endpoints de l'API NinjaPear acceptent 30-60 secondes pour se terminer.

Nous vous encourageons à effectuer des requêtes simultanées vers notre service API pour maximiser le débit. Voir cet article sur la façon de maximiser le débit.

Nous recommandons un délai d'expiration de 100 secondes.

Erreurs

Voici les erreurs courantes pouvant être renvoyées par notre API :

Code HTTP Facturation ? Descriptif
400 Non Paramètres invalides fournis. Consultez la documentation et le corps du message pour plus d'informations
401 Non Clé API invalide
403 Non Vous n'avez plus de crédits
404 Oui La ressource demandée (ex. : profil utilisateur, entreprise) est introuvable
410 Non Cette API est obsolète
429 Non Débit limité. Veuillez réessayer
500 Non Une erreur s'est produite avec notre API. Veuillez Nous contacter pour obtenir de l'aide
503 Non L'enrichissement a échoué, veuillez réessayer.

Vous ne serez jamais facturé pour requêtes échouées.

Garantie de compatibilité ascendante

Nous nous engageons à maintenir la compatibilité ascendante de notre API, vous permettant d'intégrer en toute confiance. Notre garantie de compatibilité ascendante signifie que nous n'introduirons pas de modifications qui cassent les fonctionnalités existantes ni ne supprimerons des endpoints sans période de dépréciation.

Plus précisément, nous n'introduirons pas de changements incompatibles de la manière suivante :

  1. Nous ne supprimerons pas les paramètres et attributs de réponse documentés.
  2. Nous ne modifierons pas le type de données tel que documenté dans nos réponses API.

Cependant, les éléments suivants ne sont pas considérés comme des changements majeurs :

Nous recommandons vivement d'intégrer notre API de manière à ce que l'ajout de nouveaux attributs de réponse ou en-têtes ne cause pas de rupture.

Si nous apportons des modifications à notre API, nous fournirons une documentation claire et un préavis suffisant (30 jours) pour garantir une transition sans interruption. Les avis seront communiqués par e-mail de newsletter, publications Twitter/X et mises à jour de notre blog.

API client

Endpoint de liste des clients

GET /api/v1/customer/listing

Coût : 1 crédit / requête + 2 crédit / entreprise retournée. Les crédits sont débités même lorsque la requête retourne un résultat vide.

Obtenez la liste des clients, investisseurs et partenaires/plateformes hautement probables d'une entreprise cible, classés par type de relation.

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

Exemple de réponse :

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

Paramètres URL

Paramètre Requis Descriptif Exemple
site web Oui L'URL du site web ou le nom de l'entreprise cible. Une URL de site web (ex. : https://www.stripe.com) est fortement recommandé pour la précision. https://www.stripe.com
cursor Non Curseur de pagination issu de next_page dans une réponse précédente abc123
page_size Non Nombre de résultats par page (1-200, défaut 200) 50
quality_filter Non Exclure les résultats de faible qualité (TLD indésirables tels que .top, .xyz et les sites web inaccessibles). Définir sur false pour inclure tous les résultats. (par défaut : true) false
use_cache Non Contrôle l'utilisation du cache. Insensible à la casse. Valeurs : if-recent (utiliser les données en cache si le dernier scraping date de moins de 29 jours, sinon enrichir en direct), if-present (par défaut ; retourner le cache en premier, enrichir en direct si absent), if-present-only (retourner uniquement le cache ; retourner 404 si absent), never (toujours enrichir en direct). Les valeurs invalides reviennent à la valeur par défaut de l'endpoint. if-present

Réponse

Clé Descriptif Exemple
customers Une liste d'entreprises qui sont des clients probables de l'entreprise cible. Entités qui paient pour le produit/service de la cible. Liste d'objets CustomerCompany
investors Une liste d'entreprises qui sont des investisseurs (sociétés de capital-risque, fonds de capital-investissement, réseaux de business angels) de l'entreprise cible. Liste d'objets CustomerCompany
partner_platforms Une liste d'entreprises qui sont des partenaires, plateformes ou prestataires de services que l'entreprise cible utilise ou avec lesquels elle s'intègre (stack technique, médias, agences). Liste d'objets CustomerCompany
next_page L'URI de l'API qui sert de curseur pour la pagination. Suivre cette URL avec votre clé API mènera à la page de résultats suivante. Cette valeur sera nulle pour la dernière page. https://nubela.co/api/v1/customer/list?...

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Impossible d'extraire suffisamment d'informations sur l'entreprise cible
404 Non Aucune donnée en cache trouvée lors de use_cache=if-present-only

ClientEntreprise

Clé Descriptif Exemple
name Nom de l'entreprise "Apple"
description Une brève description de l'entreprise "Apple Inc. designs, manufactures, and markets smartphones..."
tagline Accroche ou slogan de l'entreprise "Think different."
site web URL du site web de l'entreprise "https://www.apple.com"
company_logo_url URL vers l'API Company Logo pour cette entreprise. Propulsé par Endpoint Logo de l'entreprise. Authentifiez-vous avec votre bearer token. null si aucun site web. "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com"
id Identifiant unique "abc123"
industry Code sectoriel GICS à 8 chiffres 45202030
specialties Liste des spécialités de l'entreprise ["Technology"]
x_profile URL du profil X (Twitter) "https://x.com/Apple"

Remarque sur company_logo_url: Cette URL est alimentée par le Endpoint Logo de l'entreprise. Authentifiez-vous avec votre Bearer token (identique à l'API principale). Ces liens sont temporaires — l'approche recommandée consiste à télécharger l'image via l'URL dès la réception de la réponse et à l'héberger de votre côté.

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 10
X-NinjaPear-Cache-Age-Days Ancienneté des données retournées en jours entiers. 0 lorsque des données fraîches sont renvoyées par un enrichissement en direct. 12

API concurrent

Endpoint de liste de concurrents

GET /api/v1/competitor/listing

Coût : 2 crédits / concurrent retourné. Minimum 5 crédits par requête, facturés même lorsqu'aucun résultat n'est trouvé.

Obtenez la liste des entreprises concurrentes d'une entreprise cible, avec la raison de la concurrence.

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

Exemple de réponse :

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

Paramètres URL

Paramètre Requis Descriptif Exemple
site web Oui L'URL du site web ou le nom de l'entreprise cible. Une URL de site web (ex. : https://www.stripe.com) est fortement recommandé pour la précision. https://www.stripe.com
use_cache Non Contrôle l'utilisation du cache. Insensible à la casse. Valeurs : if-recent (utiliser les données en cache si le dernier scraping date de moins de 29 jours, sinon enrichir en direct), if-present (par défaut ; retourner le cache en premier, enrichir en direct si absent), if-present-only (retourner uniquement le cache ; retourner 404 si absent), never (toujours enrichir en direct). Les valeurs invalides reviennent à la valeur par défaut de l'endpoint. if-present

Réponse

Clé Descriptif Exemple
competitors Une liste d'entreprises concurrentes de l'entreprise cible. Liste de Entreprise concurrente objets

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Impossible d'extraire suffisamment d'informations sur l'entreprise cible
404 Non Aucune donnée en cache trouvée lors de use_cache=if-present-only

Entreprise concurrente

Clé Descriptif Exemple
company_details_url URL vers l'endpoint Company Details pour ce concurrent. Authentifiez-vous avec votre bearer token pour récupérer les détails complets de l'entreprise. "https://nubela.co/api/v1/company/details?website=https://www.adyen.com"
site web URL du site web de l'entreprise "https://www.adyen.com"
competition_reason Raison pour laquelle cette entreprise est considérée comme un concurrent. L'une des valeurs provenant de Motif de concurrence enum. "product_overlap"

Énumération des motifs de concurrence

Valeur Descriptif
organic_keyword_overlap Les deux entreprises se positionnent sur des mots-clés de recherche organique similaires
product_overlap Les deux entreprises proposent des produits ou services similaires

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 4
X-NinjaPear-Cache-Age-Days Ancienneté des données retournées en jours entiers. 0 lorsque des données fraîches sont renvoyées par un enrichissement en direct. 12

API Produit

Endpoint de liste de produits

GET /api/v1/product/listing

Coût : 3 crédits / requête. Les crédits sont débités même si aucun produit n'est trouvé pour une entreprise valide.

Obtenez la liste des produits et services proposés par une entreprise cible.

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

Exemple de réponse :

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

Paramètres URL

Paramètre Requis Descriptif Exemple
site web Oui L'URL du site web ou le nom de l'entreprise cible. Une URL de site web (ex. : https://matterport.com) est fortement recommandé pour la précision. https://matterport.com
use_cache Non Contrôle l'utilisation du cache. Insensible à la casse. Valeurs : if-recent (par défaut ; utiliser les données en cache si le dernier scraping date de moins de 29 jours, sinon enrichir en direct), if-present (retourner le cache en premier, enrichir en direct si absent), if-present-only (retourner uniquement le cache ; retourner 404 si absent), never (toujours enrichir en direct). Les valeurs invalides reviennent à la valeur par défaut de l'endpoint. if-recent

Réponse

Clé Descriptif Exemple
products Une liste de produits et services proposés par l'entreprise cible. Retourne une liste vide lorsque l'entreprise est valide mais qu'aucun produit ou service n'est détecté. Liste de Objet Produit objets

Objet Produit

Clé Descriptif Exemple
name Nom complet du produit ou service. Les produits distincts, SKU, plateformes ou offres à tarification séparée sont renvoyés en lignes séparées. "Matterport Digital Twin Platform"
tagline Accroche produit en une ligne, si disponible. "Capture, share, and collaborate in immersive 3D."
description Une à trois phrases décrivant ce que fait le produit. "Matterport's 3D digital twin platform allows users to create immersive 3D models of physical spaces..."
categories Catégories de produits, notamment la classe de produit, le secteur d'activité ou les regroupements par cas d'usage pris en charge par le site web. ["3D Modeling", "Digital Twins"]
tags Attributs produit courts, styles de déploiement, étiquettes technologiques ou autres tags consultables. ["ai-powered", "self-hosted"]
structured_features Carte de fonctionnalités utilisant des clés canoniques et des valeurs booléennes, chaînes ou numériques. Les clés varient selon la catégorie de produit. { "secure_cloud_hosting": true }
freeform_features Phrases de fonctionnalités ne correspondant à aucune clé canonique. ["unmatched 3D visual clarity"]
pricing Modèle de tarification, prix de départ et paliers lorsque les tarifs sont disponibles. null lorsque le tarif ne peut pas être déterminé. Objet de tarification
integrations Noms des produits, plateformes ou services avec lesquels ce produit s'intègre. ["Procore", "Autodesk", "AWS"]
platforms Plateformes sur lesquelles le produit est disponible, telles que web, ios, android, macos, windows, linux, api, cli, ou chrome-extension. ["web"]
source_urls URL du site web de l'entreprise cible où les données produit ont été trouvées. ["https://matterport.com/solutions/design-construction"]

Objet de tarification

Clé Descriptif Exemple
model Modèle de tarification. L'une des valeurs issues de Énumération du modèle de tarification. "subscription"
starts_at_monthly_usd Prix mensuel en USD le plus bas trouvé sur le site web de l'entreprise. null lorsqu'il est inconnu ou indisponible. 29.0
tiers Paliers de tarification trouvés sur le site web de l'entreprise. Liste de Objet PricingTier objets

Objet PricingTier

Clé Descriptif Exemple
name Nom du palier de tarification. "Business"
price_usd_monthly Prix mensuel en USD pour ce niveau. null lorsqu'il est inconnu. 99.0
features Fonctionnalités répertoriées pour ce niveau de tarification. ["SSO", "Audit logs"]

Énumération du modèle de tarification

Valeur Descriptif
freemium Plan gratuit avec mises à niveau payantes
subscription Abonnement payant récurrent
one-time Achat unique
payg Tarification à l'usage
enterprise Tarification entreprise personnalisée
unknown Des tarifs existent ou peuvent exister, mais le modèle n'est pas précisé

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 3
X-NinjaPear-Cache-Age-Days Ancienneté des données retournées en jours entiers. 0 lorsque des données fraîches sont renvoyées par un enrichissement en direct. 12

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Le site web est inaccessible ou la saisie est invalide
404 Non Aucune donnée en cache trouvée lors de use_cache=if-present-only
503 Non La capacité d'exploration est temporairement saturée. Réessayez après un court délai.

API entreprise

Endpoint Logo de l'entreprise

GET /api/v1/company/logo

Coût : 0 crédit / requête réussie. (GRATUIT)

Récupère le logo d'une entreprise à partir de son URL de site web. Retourne le logo sous forme d'image 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));
});

Exemple de réponse :

Exemple de logo d'entreprise

Un binaire d'image PNG brut (Content-Type : image/png).

Paramètres URL

Paramètre Requis Descriptif Exemple
site web Oui L'URL du site web de l'entreprise cible https://www.stripe.com

Réponse

A 200 la réponse renvoie le logo sous forme d'image PNG brute avec Content-Type: image/png.

Codes d'erreur

Code de statut Facturé ? Descriptif
404 Non Aucun logo trouvé pour le domaine indiqué

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 0

Endpoint Détails de l'entreprise

GET /api/v1/company/details

Avg 10.4s

Coût : 3 crédits / requête (base). Ajouter 2 crédits lorsque include_employee_count=true. Ajoutez 1 crédit lorsque follower_count=include. Ajoutez 2 crédits lorsque addresses=best-effort-exhaustive. Total maximum : 8 crédits. Les crédits sont débités même si aucune donnée n'est trouvée.

Récupérez les détails d'une entreprise à partir de son URL de site web. Renvoie les métadonnées de l'entreprise, notamment la description, le secteur d'activité, les URL des réseaux sociaux, l'équipe dirigeante actuelle, et bien plus encore.

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

Exemple de réponse (entreprise privée) :

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

Exemple de réponse (entreprise publique) :

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

Paramètres URL

Paramètre Requis Descriptif Exemple
site web Oui L'URL du site web ou le nom de l'entreprise cible. Une URL de site web (ex. : https://www.stripe.com) est fortement recommandé pour la précision. https://www.stripe.com
include_employee_count Non Récupère des données d'effectif actualisées via une recherche web. Ajoute 2 crédits au coût de la requête. Valeurs valides : true, false (par défaut). true
follower_count Non Inclure le nombre d'abonnés et d'abonnements Twitter/X. Ajoute 1 crédit au coût de la requête. Valeurs valides : include. Omettez ou passez toute autre valeur pour exclure. include
addresses Non Mode de détail d'adresse. Par défaut : hq-only. Utilisez best-effort-exhaustive pour récupérer et conserver les adresses physiques des bureaux d'entreprise à l'échelle mondiale, dans la mesure du possible. Ajoute 2 crédits au coût de la requête. best-effort-exhaustive
use_cache Non Contrôle l'utilisation du cache. Insensible à la casse. Valeurs : if-recent (par défaut ; utiliser les données en cache si le dernier scraping date de moins de 29 jours, sinon enrichir en direct), if-present (retourner le cache en premier, enrichir en direct si absent), if-present-only (retourner uniquement le cache ; retourner 404 si absent), never (toujours enrichir en direct). Les valeurs invalides reviennent à la valeur par défaut de l'endpoint. if-recent

Réponse

Clé Descriptif Exemple
websites Liste de toutes les URL du site web de l'entreprise ["https://stripe.com", "https://stripe.dev"]
description Une brève description de l'entreprise "Stripe is a technology company..."
industry Code sectoriel GICS à 8 chiffres 45102010
company_type Type d'entreprise (PUBLIC_COMPANY, PRIVATELY_HELD, GOVERNMENT_AGENCY, NON_PROFIT, EDUCATIONAL, PARTNERSHIP, SELF_EMPLOYED, SELF_OWNED) "PRIVATELY_HELD"
founded_year Année de fondation de l'entreprise 2010
specialties Liste des spécialités de l'entreprise ["Payments", "Financial Services"]
name Nom de l'entreprise "Stripe"
tagline Accroche ou slogan de l'entreprise "Financial infrastructure for the internet"
logo_url URL vers le Endpoint logo de l'entreprise. Authentifiez-vous avec votre bearer token de clé API. "https://nubela.co/api/v1/company/logo?website=https://stripe.com"
cover_pic_url URL vers l'image de couverture/bannière de l'entreprise "https://example.com/cover.png"
facebook_url URL du profil Facebook "https://facebook.com/stripe"
twitter_url URL du profil Twitter/X "https://twitter.com/stripe"
instagram_url URL du profil Instagram null
employee_count Nombre estimé d'employés 8000
employee_count_range_min Borne inférieure de la plage d'effectifs. Présente uniquement lorsque include_employee_count=true. 7500
employee_count_range_max Limite supérieure de la plage du nombre d'employés. Présente uniquement quand include_employee_count=true. 8500
follower_count Nombre d'abonnés Twitter/X. Présent uniquement lorsque follower_count=include. 272190
following_count Nombre de comptes Twitter/X suivis. Présent uniquement lorsque follower_count=include. 555
addresses Liste des adresses de l'entreprise. Par défaut, uniquement le siège social, sauf si addresses=best-effort-exhaustive est demandé. [Objet Adresse]
executives Liste des dirigeants et membres du conseil d'administration de l'entreprise [Objet Executive]
similar_companies URL vers le Endpoint liste des concurrents. Authentifiez-vous avec votre bearer token pour récupérer les concurrents. "https://nubela.co/api/v1/competitor/listing?website=https%3A%2F%2Fstripe.com"
updates URL vers le Endpoint mises à jour de l'entreprise. Authentifiez-vous avec votre bearer token pour récupérer les mises à jour. "https://nubela.co/api/v1/company/updates?website=https%3A%2F%2Fstripe.com"
funding URL vers le Endpoint financement de l'entreprise. Authentifiez-vous avec votre bearer token pour récupérer l'historique de financement. "https://nubela.co/api/v1/company/funding?website=https%3A%2F%2Fstripe.com"
public_listing Données des entreprises cotées en bourse, notamment les informations boursières et les données financières. null pour les entreprises privées. Objet PublicListing

Objet Adresse

Clé Descriptif Exemple
address_type Type d'adresse (HEADQUARTERS, REGISTERED, BRANCH, MAILING, OTHER) "HEADQUARTERS"
line1 Adresse ligne 1 "354 Oyster Point Blvd"
line2 Adresse ligne 2 null
city Nom de la ville "South San Francisco"
state État, province ou région "CA"
postal_code Code postal "94080"
country_code Code pays ISO 3166-1 alpha-2 "US"
country Nom complet du pays "United States"
is_primary Indique s'il s'agit de l'adresse principale true

Objet Executive

Clé Descriptif Exemple
name Nom complet du dirigeant "Patrick Collison"
title Intitulé de poste "Chief Executive Officer"
role Type de rôle normalisé (CEO, CFO, COO, CTO, CMO, PRESIDENT, VICE_PRESIDENT, DIRECTOR, BOARD_MEMBER, CHAIRMAN, FOUNDER, OTHER) "CEO"
person_profile_url URL préremplie vers le Endpoint de profil de personne. Authentifiez-vous avec votre bearer token pour récupérer le profil du dirigeant. null lorsque le prénom ou le site web de l'entreprise est manquant. "https://nubela.co/api/v2/employee/profile?employer_website=https%3A%2F%2Fstripe.com&first_name=Patrick&last_name=Collison"

Objet PublicListing

Cet objet n'est présent (non nul) que pour les entreprises cotées en bourse. Pour les entreprises privées, public_listing sera null.

Clé Descriptif Exemple
stock_symbol Symbole boursier "AAPL"
ipo_date Date d'introduction en bourse au format ISO "1980-12-12"
isin Numéro international d'identification des valeurs mobilières "US0378331005"
figi Financial Instrument Global Identifier "BBG000B9XRY4"
cusip Identifiant CUSIP "037833100"
lei Identifiant d'entité juridique "HWUPKR0MPOU8FGXBT394"
cik Clé d'index central SEC "0000320193"
sic_code Code de classification industrielle standard SEC "3571"
revenue_usd Chiffre d'affaires annuel en USD 383285000000
revenue_captured_at Date à laquelle les données de chiffre d'affaires ont été collectées (format ISO) "2024-09-28"
ebitda_usd EBITDA en USD 134000000000
ebitda_captured_at Date à laquelle les données EBITDA ont été collectées (format ISO) "2024-09-28"

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 2
X-NinjaPear-Cache-Age-Days Ancienneté des données retournées en jours entiers. 0 lorsque des données fraîches sont renvoyées par un enrichissement en direct. 12

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Le site web est inaccessible
404 Non Aucune donnée en cache trouvée lors de use_cache=if-present-only
404 Oui Aucune donnée d'entreprise n'a pu être extraite du site web

Endpoint de nombre d'employés

GET /api/v1/company/employee-count

Coût : 2 crédits / requête réussie.

Récupérez la fourchette d'effectif d'une entreprise à partir de son URL de site web.

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

Exemple de réponse :

{
  "employee_count": 3500
}

Paramètres URL

Paramètre Requis Descriptif Exemple
site web Oui L'URL du site web ou le nom de l'entreprise cible. Une URL de site web (ex. : https://www.stripe.com) est fortement recommandé pour la précision. https://www.stripe.com
use_cache Non Contrôle l'utilisation du cache. Insensible à la casse. Valeurs : if-recent (par défaut ; utiliser les données en cache si le dernier scraping date de moins de 29 jours, sinon enrichir en direct), if-present (retourner le cache en premier, enrichir en direct si absent), if-present-only (retourner uniquement le cache ; retourner 404 si absent), never (toujours enrichir en direct). Les valeurs invalides reviennent à la valeur par défaut de l'endpoint. if-recent

Réponse

Clé Descriptif Exemple
employee_count Nombre estimé d'employés 3500

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 2
X-NinjaPear-Cache-Age-Days Ancienneté des données retournées en jours entiers. 0 lorsque des données fraîches sont renvoyées par un enrichissement en direct. 12

Codes d'erreur

Code de statut Facturé ? Descriptif
404 Non Aucune donnée d'effectif trouvée pour le site web indiqué
404 Non Aucune donnée en cache trouvée lors de use_cache=if-present-only

Endpoint Mises à jour de l'entreprise

GET /api/v1/company/updates

Coût : 2 crédits / requête.

Récupère les derniers articles de blog et les mises à jour X/Twitter d'une entreprise. Retourne une chronologie mixte des récents articles de blog et publications X, triés par horodatage.

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

Exemple de réponse

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

Paramètres URL

Paramètre Requis Descriptif Exemple
site web Oui L'URL du site web ou le nom de l'entreprise cible. Une URL de site web (ex. : https://www.stripe.com) est fortement recommandé pour la précision. https://www.stripe.com
use_cache Non Contrôle l'utilisation du cache. Insensible à la casse. Valeurs : if-recent (par défaut ; utiliser les données en cache si le dernier scraping date de moins d'1 jour, sinon enrichir en direct), if-present (retourner le cache en premier, enrichir en direct si absent), if-present-only (retourner uniquement le cache ; retourner 404 si absent), never (toujours enrichir en direct). Les valeurs invalides reviennent à la valeur par défaut de l'endpoint. if-recent

Réponse

Clé Descriptif Exemple
blogs Liste des URL de flux RSS de blog (si RSS a été découvert) ou des URL de pages de blog ["https://stripe.com/blog/feed.rss"]
x_profile URL du profil X/Twitter, ou null si introuvable "https://x.com/stripe"
youtube_channels Liste des URL de chaînes YouTube découvertes pour l'entreprise, ou vide si aucune n'est trouvée ["https://www.youtube.com/channel/UCdog0Ap82jpFvSnxorxF_lA"]
updates Liste d'objets de mise à jour (articles de blog, tweets et vidéos YouTube mélangés), triés par horodatage décroissant. Voir Objet de mise à jour
timestamp Horodatage UTC indiquant quand ces données ont été récupérées "2025-03-16T10:00:00+00:00"

Objet de mise à jour

Clé Descriptif Exemple
url URL de l'article de blog, du tweet ou de la vidéo YouTube "https://stripe.com/blog/example"
title Titre du post (80 premiers caractères pour les tweets) "Stripe's annual letter"
description Description de la publication, texte du tweet ou description de la vidéo (jusqu'à 500 caractères pour les blogs) "A look back at..."
image_url URL de l'image (média du tweet ou miniature vidéo), ou null "https://pbs.twimg.com/media/example.jpg"
timestamp Horodatage de publication ISO 8601, ou null si inconnu "2025-03-01T12:00:00+00:00"
source Type de source de la mise à jour "blog", "x", ou "youtube"

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 2
X-NinjaPear-Cache-Age-Days Ancienneté des données retournées en jours entiers. 0 lorsque des données fraîches sont renvoyées par un enrichissement en direct. 1

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Paramètre de site web manquant ou invalide
403 Non Crédits insuffisants
404 Non Aucune donnée en cache trouvée lors de use_cache=if-present-only

Endpoint Financement de l'entreprise

GET /api/v1/company/funding

Coût : 2 crédits / requête (base) + 1 crédit par investisseur unique retourné. Le tarif de base s'applique toujours lorsqu'aucune donnée de financement n'est trouvée (voir error_code: "no_funding_data" ci-dessous).

Récupérez l'historique de financement d'une entreprise à partir de son URL de site web. Renvoie le total des fonds levés, les tours de financement individuels avec leurs dates et montants, ainsi que les investisseurs participants avec leurs sites 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);
});

Exemple de réponse

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

Paramètres URL

Paramètre Requis Descriptif Exemple
site web Oui L'URL du site web ou le nom de l'entreprise cible. Une URL de site web (ex. : https://www.stripe.com) est fortement recommandé pour la précision. https://www.stripe.com
use_cache Non Contrôle l'utilisation du cache. Insensible à la casse. Valeurs : if-recent (par défaut ; utiliser les données en cache si le dernier scraping date de moins de 29 jours, sinon enrichir en direct), if-present (retourner le cache en premier, enrichir en direct si absent), if-present-only (retourner uniquement le cache ; retourner 404 si absent), never (toujours enrichir en direct). Les valeurs invalides reviennent à la valeur par défaut de l'endpoint. if-recent

Réponse

Clé Descriptif Exemple
site web Le domaine de l'entreprise que la réponse décrit, répercuté depuis la requête "stripe.com"
total_funds_raised_usd Total du financement levé en USD, ou null si non divulgué 9810000000
funding_rounds Tableau d'objets FundingRound, triés par date décroissante Voir ci-dessous
credit_cost Total des crédits facturés pour cet appel (2 base + 1 par investisseur unique). Les réponses en streaming délivrent le coût en crédits dans le corps de la réponse plutôt que dans le X-NinjaPear-Credit-Cost header. 7

Objet FundingRound

Clé Descriptif Exemple
round_type Type de tour de financement (voir les valeurs de type de tour ci-dessous) "SERIES_A"
date Date du tour en YYYY-MM-DD format, ou null si inconnu "2023-03-01"
amount_usd Montant levé lors de ce tour en USD, ou null si non divulgué 600000000
investors Tableau d'objets Investor ayant participé à ce tour Voir ci-dessous

Objet Investor

Clé Descriptif Exemple
name Nom de l'investisseur (société ou particulier) "Sequoia Capital"
site web Domaine du site web de l'investisseur, ou null si inconnu "sequoiacap.com"
type L'un ou l'autre "company" (société de capital-risque, fonds, entreprise) ou "angel" (individuel) "company"
amount_usd Montant contribué par cet investisseur en USD, ou null si non divulgué null

Valeurs de type de tour de financement

PRE_SEED, SEED, SERIES_A, SERIES_B, SERIES_C, SERIES_D, SERIES_E, SERIES_F, SERIES_G, SERIES_H, SERIES_I via 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

En-têtes de réponse

Ce point de terminaison diffuse sa réponse en streaming ; les HTTP trailers ne sont pas pris en charge, le coût en crédits est donc transmis dans le corps de la réponse (le credit_cost champ) plutôt que le X-NinjaPear-Credit-Cost header. Lorsque la réponse est servie depuis le cache, le X-NinjaPear-Credit-Cost header est renvoyé normalement. Le X-NinjaPear-Cache-Age-Days header est renvoyé dans les réponses réussies pour tous les use_cache modes ; un enrichissement en direct renvoie 0.

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API (2 de base + 1 par investisseur). Uniquement les hits de cache. 7
X-NinjaPear-Cache-Age-Days Ancienneté des données retournées en jours entiers. 0 lorsque des données fraîches sont renvoyées par un enrichissement en direct. 12

Codes d'erreur

Les erreurs côté client (HTTP 400 / 403) sont renvoyées avant le début du corps en streaming. En cas d'absence de cache, les erreurs côté serveur sont transmises en tant que HTTP 200 avec error et error_code champs dans le corps de la réponse — étant donné que la connexion en streaming a déjà été établie, le code de statut ne peut pas être modifié. Les clients qui bifurquaient auparavant sur response.status_code == 404 doit se brancher sur le error_code champ à la place.

Code de statut Facturé ? error_code (corps) Descriptif
400 Non Paramètre de site web manquant ou invalide
403 Non Crédits insuffisants
404 Non Aucune donnée en cache trouvée lors de use_cache=if-present-only
200 (le corps contient l'erreur) Oui (2 crédits) no_funding_data Aucune donnée de financement n'a pu être trouvée pour le site web indiqué. funding_rounds est [].
200 (le corps contient l'erreur) Non service_temp_unavailable Service temporairement indisponible. Réessayez ultérieurement. funding_rounds est [].

Endpoint de recherche par site web

GET /api/v1/company/website

Coût : 1 crédit / requête (débité qu'une correspondance soit trouvée ou non).

Résolvez le nom d'une entreprise en son URL de site web canonique.

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

Exemple de réponse :

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

Paramètres URL

Paramètre Requis Descriptif Exemple
company_name Oui Le nom de l'entreprise à rechercher. Apex
country_code Non Code pays optionnel ISO 3166-1 alpha-2 à 2 lettres utilisé pour orienter la recherche géographiquement (ex. : us, gb, de, sg). Voir le liste complète des codes ISO 3166-1 alpha-2. Par défaut à us lorsqu'il est omis. us
indice Non Fournissez un indice pour différencier des entreprises portant des noms similaires dans le même pays. cybersecurity firm

Réponse

Clé Descriptif Exemple
site web L'URL canonique résolue du site web. https://www.stripe.com

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 1

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Manquant ou invalide company_name paramètre.
400 Non Invalide country_code (code à 2 lettres non reconnu).
404 Oui (1) Aucun site web correspondant n'a pu être trouvé pour le nom d'entreprise indiqué.

API employé

Endpoint d'e-mail professionnel

GET /api/v1/employee/work-email

Coût : 2 crédits pour une recherche réussie (e-mail professionnel trouvé). Lorsqu'aucun e-mail n'est trouvé (work_email est null), une facturation de tokens de 0.5 crédits est appliqué — cela décourage les abus tout en maintenant les recherches spéculatives peu coûteuses.

Effectue une tentative au meilleur effort pour retourner l'e-mail professionnel public d'une personne à partir de son prénom (nom de famille optionnel) et d'un domaine de l'entreprise.

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

Exemple de réponse (e-mail trouvé)

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

Exemple de réponse (aucune preuve)

{
  "work_email": null
}

Paramètres URL

Paramètre Requis Descriptif Exemple
first_name Oui Prénom de la personne. Patrick
last_name Non Nom de famille de la personne. Améliore la précision lorsque le modèle l'exige. Collison
domain Oui Domaine de l'entreprise. Le protocole et le chemin sont supprimés s'ils sont présents. stripe.com

Réponse

Clé Descriptif Exemple
work_email Adresse e-mail professionnelle fournie au mieux. null si aucun e-mail public n'a été trouvé ET qu'aucun modèle n'a pu être déduit. "[email protected]" | null

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Total des crédits facturés pour cet appel. 2 en cas de correspondance ; 0.5 en cas d'absence de correspondance (facturation anti-abus de token). 2 ou 0.5

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Manquant ou invalide first_name / domain.
403 Non Crédits insuffisants.
503 Non Service temporairement indisponible. Réessayez ultérieurement.

Endpoint de profil de personne

GET /api/v2/employee/profile

Rapide, moy. 10,5 s Détaillé moy. 38,7 s

Coût : 3 crédits / requête. Les crédits sont débités même si aucune donnée n'est trouvée.

Enrichissez le profil professionnel d'un employé à partir d'un e-mail professionnel, d'une combinaison nom et employeur, ou d'une combinaison rôle et employeur. Retourne des données de profil structurées incluant l'historique professionnel, la formation, la localisation et la présence sur les réseaux sociaux.

Vous devez fournir au moins l'une de ces combinaisons de paramètres :

Vous pouvez toujours ajouter des paramètres supplémentaires pour améliorer la précision. Par exemple, fournir work_email ainsi que first_name, last_name, et role produira de meilleurs résultats que work_email seul.

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

Exemple de réponse

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

Paramètres URL

Paramètre Requis Descriptif Exemple
work_email Conditionnel Adresse e-mail professionnelle de la personne. Obligatoire si employer_website n'est pas fourni. [email protected]
first_name Conditionnel Prénom de la personne. Obligatoire lors de l'utilisation du nom + employer_website combinaison. John
middle_name Non Deuxième prénom de la personne. Améliore la précision lorsqu'il est combiné avec d'autres paramètres. Michael
last_name Non Nom de famille de la personne. Améliore la précision lorsqu'il est combiné avec d'autres paramètres. Smith
employer_website Conditionnel URL du site web ou nom de l'entreprise de l'employeur de la personne. Une URL de site web est fortement recommandée pour plus de précision. Obligatoire si work_email n'est pas fourni. https://stripe.com
role Non Intitulé de poste ou rôle actuel. Améliore la précision. Requis lors de l'utilisation de employer_website sans nom. CTO
slug Non Slug de la personne pour une recherche directe d'un profil enrichi existant. elon-musk
id Non ID de la personne pour une recherche directe d'un profil enrichi existant. abc123de-...
enrichment Non Contrôle la profondeur d'enrichissement en direct. Valeurs : fast (par défaut ; répond rapidement et démarre l'enrichissement détaillé en arrière-plan), detailed (attend l'enrichissement détaillé avant de répondre).

Une réponse rapide inclut moins de détails biographiques, comme les données du site web et de la photo de profil, mais retourne rapidement l'historique structuré des emplois et de la formation.

Une requête d'enrichissement rapide lance également un enrichissement détaillé en arrière-plan, et vous avez droit à ce résultat également. Interrogez la même requête avec les mêmes paramètres et use_cache=if-recent 10 à 30 secondes plus tard pour récupérer le résultat entièrement enrichi sans frais supplémentaires. Arrêtez l'interrogation lorsque le X-NinjaPear-Enrichment-Status l'en-tête de réponse est complete. Une fois l'enrichissement détaillé terminé, la même requête renvoie le profil détaillé mis en cache sans frais supplémentaires.

Utiliser enrichment=fast lorsque vous avez besoin d'un résultat rapide pour des cas d'usage tels que le remplissage d'une interface utilisateur. Utilisez enrichment=detailed lorsque vous avez besoin de la réponse complète et que vous n'avez pas d'objection à patienter.
fast
use_cache Non Contrôle l'utilisation du cache. Insensible à la casse. Valeurs : if-recent (par défaut ; utiliser les données en cache si le dernier scraping date de moins de 29 jours, sinon enrichir en direct), if-present (retourner le cache en premier, enrichir en direct si absent), if-present-only (retourner uniquement le cache ; retourner 404 si absent), never (toujours enrichir en direct). Les valeurs invalides reviennent à la valeur par défaut de l'endpoint. if-recent

Combinaisons d'entrées valides

Combinaison Exemple
work_email seul [email protected]
first_name + employer_website ?first_name=John&employer_website=https://stripe.com
employer_website + role ?employer_website=https://stripe.com&role=CTO
slug ou id ?slug=elon-musk

Des paramètres supplémentaires peuvent toujours être inclus pour améliorer la précision des résultats.

Réponse

Clé Descriptif Exemple
id Identifiant unique de la personne. Présent lorsque le profil est associé à un enregistrement de personne persistant. "abc123de-f456-7890-abcd-ef1234567890"
slug Slug unique de la personne. Présent lorsque le profil est associé à un enregistrement de personne persistant. "elon-musk"
profile_pic_url URL vers la photo de profil de la personne (depuis X/Twitter). Peut être null. "https://pbs.twimg.com/.../photo_400x400.jpg"
first_name Prénom "Elon"
middle_name Deuxième prénom. Peut être null. "Reeve"
last_name Nom de famille "Musk"
full_name Nom complet "Elon Reeve Musk"
bio Bio/description du profil X/Twitter. Peut être null. "Mars & Cars, Chips & Dips"
follower_count Nombre d'abonnés X/Twitter. Peut être null. 195000000
following_count Nombre de comptes X/Twitter suivis. Peut être null. 782
country Pays de résidence. Code ISO 3166-1 alpha-2. "US"
city Ville de résidence. UN/LOCODE. "USAUS"
state État ou région de résidence. Code de subdivision ISO 3166-2. "US-TX"
x_handle Identifiant X/Twitter (sans @). Peut être null. "elonmusk"
x_profile_url URL vers le profil X/Twitter. Peut être null. "https://x.com/elonmusk"
personal_website URL du site web personnel. Peut être null. "https://elonmusk.com"
work_experience Liste des expériences professionnelles, de la plus récente à la plus ancienne [Objet WorkExperience]
education Liste des formations, de la plus récente à la plus ancienne [Objet Education]
work_email_lookup URL préconstruite vers le Endpoint d'e-mail professionnel pour cette personne, avec first_name, last_name, et domain (le site web de l'expérience professionnelle la plus récente) déjà renseigné. Appelez-le directement avec votre bearer token pour résoudre l'e-mail professionnel de la personne — inutile de repasser les paramètres. Coûte 2 crédits par appel. Peut être null lorsque le site web de l'employeur actuel est inconnu. "https://nubela.co/api/v1/employee/work-email?first_name=Elon&last_name=Musk&domain=tesla.com"
similar_people URL préconstruite vers le Endpoint Personnes similaires pour cette personne, indexé par leur id. Appelez-le directement pour récupérer des personnes occupant le même rôle dans des entreprises concurrentes — inutile de repasser les paramètres de recherche. "https://nubela.co/api/v1/employee/similar?id=abc123de-..."

Objet WorkExperience

Clé Descriptif Exemple
role Intitulé de poste ou rôle "CEO"
company_name Nom de l'entreprise "Tesla"
company_website Domaine du site web de l'entreprise. Peut être null. "tesla.com"
description Description de ce que la personne a accompli dans ce rôle. Peut être null. "Leading Tesla's mission..."
start_date Date de début au format YYYY-MM. Peut être null. "2008-10"
end_date Date de fin au format AAAA-MM. null signifie actuellement dans ce rôle. null

Objet Education

Clé Descriptif Exemple
major Diplôme et domaine d'études "B.S. Economics"
school Nom de l'école ou de l'université "Wharton School, University of Pennsylvania"
start_date Date de début au format YYYY-MM. Peut être null. "1992-01"
end_date Date de fin au format AAAA-MM. Peut être null. "1997-01"

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 3
X-NinjaPear-Cache-Age-Days Ancienneté des données retournées en jours entiers. 0 lorsque des données fraîches sont renvoyées par un enrichissement en direct. 12
X-NinjaPear-Enrichment-Status Statut d'enrichissement détaillé pour les réponses de profil de personne v2. pending signifie que la réponse est le profil rapide et que l'enrichissement détaillé est encore en cours ou en attente de finalisation. complete signifie que la réponse est le profil mis en cache détaillé ou un enrichment=detailed résultat. Interrogez jusqu'à ce que cet en-tête soit complete. complete

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Entrée invalide. Vous devez fournir work_email, ou first_name + employer_website, ou employer_website + role.
400 Non Invalide enrichment. Utilisez fast ou detailed. L'élément obsolète speed le paramètre n'est pas accepté.
400 Non work_email est un e-mail personnel/gratuit (p. ex. [email protected]). Fournissez un e-mail professionnel d'entreprise.
403 Non Crédits insuffisants
404 Non work_email est une boîte aux lettres générique/basée sur un rôle (p. ex. info@, support@, sales@, noreply@) qui ne correspond pas à une personne individuelle.
404 Non Aucune donnée en cache trouvée lors de use_cache=if-present-only
404 Oui (3 crédits) Aucune donnée de profil n'a pu être trouvée pour l'entrée indiquée
503 Non Service temporairement indisponible. Réessayez ultérieurement.

Endpoint Personnes similaires

GET /api/v1/employee/similar

Coût : 10 crédits de base + 5 crédits par tuple (entreprise, rôle) tenté. Le coût de base est facturé indépendamment du fait que des personnes similaires soient trouvées ou non, car l'endpoint consomme des ressources d'enrichissement en temps réel pour chaque requête. Les résultats mis en cache sont gratuits (voir ci-dessous).

Trouvez des personnes qui sont similaire vers une personne cible — définie comme les personnes occupant le même rôle dans des entreprises concurrentes. Pour une cible donnée (p. ex. le PDG de nubela.co), l'endpoint identifie l'employeur actuel de la cible, recherche les concurrents de cet employeur et tente d'enrichir en temps réel la personne occupant le même rôle chez chaque concurrent. La réponse retourne le profil de la cible, la liste des tuples (entreprise, rôle) sur lesquels nous avons tenté une recherche, ainsi que les personnes similaires que nous avons réussi à enrichir.

Les paramètres d'entrée sont identiques au Endpoint de profil de personne. Vous devez fournir au moins l'une de ces combinaisons d'entrée :

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

Exemple de réponse

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

Par souci de concision, l'exemple ci-dessus ne montre qu'un sous-ensemble de PersonProfile champs. Chaque entrée sous cible et similar_people est un PersonProfile objet — voir le Réponse de l'endpoint de profil de personne pour le schéma complet, y compris profile_pic_url, bio, country, x_handle, education, etc.

Paramètres URL

Identique au Paramètres URL de l'endpoint de profil de personne.

Paramètre Requis Descriptif Exemple
work_email Conditionnel Adresse e-mail professionnelle de la personne cible. Obligatoire si employer_website n'est pas fourni. [email protected]
first_name Conditionnel Prénom de la cible. Obligatoire lors de l'utilisation du nom + employer_website combinaison. Tim
middle_name Non Deuxième prénom de la cible. Améliore la précision lorsqu'il est combiné avec d'autres paramètres. Donald
last_name Non Nom de famille de la cible. Améliore la précision lorsqu'il est combiné avec d'autres paramètres. Cook
employer_website Conditionnel URL du site web ou nom de l'entreprise de l'employeur de la cible. Une URL de site web est fortement recommandée pour plus de précision. Obligatoire si work_email n'est pas fourni. https://apple.com
role Non Intitulé de poste ou rôle actuel. Requis lors de l'utilisation de employer_website sans nom. CEO

Combinaisons d'entrées valides

Combinaison Exemple
work_email seul [email protected]
first_name + employer_website ?first_name=Tim&employer_website=https://apple.com
employer_website + role ?employer_website=https://apple.com&role=CEO

Réponse

Clé Descriptif Exemple
cible Le profil complet de la personne cible résolue. Même schéma que le Endpoint de profil de personne. { "first_name": "Tim", ... }
attempted_searches Liste de tuples (entreprise, rôle) que nous avons tenté d'enrichir. Une entrée par concurrent de l'employeur actuel de la cible. Détermine la facturation par tuple (5 crédits chacun). [Objet AttemptedSearch]
similar_people Liste des profils enrichis avec succès pour les personnes occupant le même poste dans des entreprises concurrentes. Peut être un sous-ensemble de attempted_searches (certaines tentatives ne retournent aucune donnée). Chaque entrée utilise le même schéma que le Endpoint de profil de personne. [PersonProfile, ...]
credit_cost Total des crédits facturés pour cet appel. Égal à 10 + 5 * len(attempted_searches), ou 0 pour les résultats mis en cache servis au même produit ayant précédemment payé. 30

Objet AttemptedSearch

Clé Descriptif Exemple
employer_website Domaine du site web de l'entreprise concurrente que nous avons tenté. "google.com"
role Rôle recherché chez ce concurrent (miroir de la cible). "CEO"

En-têtes de réponse

Ce point de terminaison diffuse sa réponse en streaming, le coût en crédits ne peut donc pas être renvoyé dans un en-tête — les HTTP trailers ne sont pas pris en charge par la couche de streaming. Lisez le credit_cost champ dans le corps de la réponse à la place du X-NinjaPear-Credit-Cost header.

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Entrée invalide. Vous devez fournir work_email, ou first_name + employer_website, ou employer_website + role.
400 Non work_email est un e-mail personnel/gratuit (p. ex. [email protected]). Fournissez un e-mail professionnel d'entreprise.
403 Non Crédits insuffisants. Vous avez besoin d'au moins 10 crédits pour lancer une recherche de personnes similaires.
404 Non work_email est une boîte aux lettres générique/basée sur un rôle (p. ex. info@, support@, sales@, noreply@) qui ne correspond pas à une personne individuelle.
404 Non La personne cible n'a pas pu être résolue.
503 Non Ressource temporairement indisponible. Veuillez réessayer.

Endpoint de recherche d'employés

GET /api/v1/employee/search

Coût : base 2 crédits par appel (facturés même lorsqu'aucun employé n'est retourné), plus 1 crédit par employé dans le employés tableau. Une requête retournant 10 employés coûte 2 + 10 = 12 crédits.

Trouvez les employés actuels d'une entreprise filtrés par rôle, avec possibilité de restreindre par zone géographique.

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

Exemple de réponse

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

Paramètres URL

Paramètre Requis Descriptif Exemple
company_website Oui L'entreprise cible. La forme préférée est un site web (domaine nu comme stripe.com ou URL complète comme https://stripe.com). Un nom d'entreprise (ex. : Stripe) est également accepté. stripe.com
role Oui Rôle professionnel pour affiner la recherche. Correspond aux variantes de rôles associées (ex. : VP of Engineering correspond également à Vice President, Engineering). VP of Engineering
country Non Code pays ISO 3166-1 alpha-2 pour restreindre la recherche. US
state Non État ou région pour filtrer (forme libre). Californie
city Non Ville de restriction (format libre). San Francisco
use_cache Non Contrôle l'utilisation du cache. Insensible à la casse. Valeurs : if-recent (par défaut ; utiliser les données en cache si le dernier scraping date de moins de 29 jours, sinon enrichir en direct), if-present (retourner le cache en premier, enrichir en direct si absent), if-present-only (retourner uniquement le cache ; retourner 404 si absent), never (toujours enrichir en direct). Les valeurs invalides reviennent à la valeur par défaut de l'endpoint. if-recent

Réponse

Clé Descriptif Exemple
employés Liste des employés correspondants dans l'entreprise cible. Tableau vide si aucun n'est trouvé. [Objet Employee]

Objet Employee

Clé Descriptif Exemple
first_name Le prénom de l'employé. "Jane"
last_name Le nom de famille de l'employé. Peut être null si indisponible. "Doe"
role L'intitulé de poste actuel de l'employé dans l'entreprise cible. "VP of Engineering"
company_website Site web de l'entreprise cible où travaille l'employé. Reproduit la valeur résolue de company_website paramètre d'entrée sur chaque enregistrement. "stripe.com"
company_details URL préremplie vers le Endpoint Détails de l'entreprise, renseigné avec site web. Authentifiez-vous avec votre bearer token pour récupérer les détails de l'entreprise. "https://nubela.co/api/v1/company/details?website=stripe.com"
person_profile URL préremplie vers le Endpoint de profil de personne, renseigné avec first_name, last_name, et employer_website. Appelez directement avec votre bearer token pour enrichir la personne. Coûte 3 crédits par appel. "https://nubela.co/api/v2/employee/profile?first_name=Jane&last_name=Doe&employer_website=https%3A%2F%2Fstripe.com"
work_email URL préremplie vers le Endpoint d'e-mail professionnel, renseigné avec first_name, last_name, et domain. Appelez directement avec votre bearer token pour résoudre l'e-mail professionnel. Coûte 2 crédits en cas de résultat, 0.5 crédits lorsqu'aucun e-mail n'est trouvé. "https://nubela.co/api/v1/employee/work-email?first_name=Jane&last_name=Doe&domain=stripe.com"

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Total des crédits facturés pour cet appel. Égal à 2 + NN est le nombre d'employés retournés (2 lorsque le tableau est vide). 12
X-NinjaPear-Cache-Age-Days Ancienneté des données retournées en jours entiers. 0 lorsque des données fraîches sont renvoyées par un enrichissement en direct. 12

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Manquant ou invalide company_website ou role paramètre.
403 Non Crédits insuffisants. Vous avez besoin d'au moins 2 crédits pour démarrer une recherche.
404 Non Aucune donnée en cache trouvée lors de use_cache=if-present-only
404 Non La valeur fournie company_website n'a pas pu être associé à une entreprise connue.
503 Non Ressource temporairement indisponible. Veuillez réessayer.

Meta API

Endpoint de consultation du solde de crédits

GET /api/v1/meta/credit-balance

Coût : 0 crédit / requête réussie.

Consultez votre solde de crédits actuel.

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

Exemple de réponse :

{
  "credit_balance": 100000
}

Réponse

Clé Descriptif Exemple
credit_balance Votre solde de crédits actuel 100000

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 0

Codes d'erreur

Code de statut Facturé ? Descriptif
401 Non Clé API invalide

API de contact

Endpoint de vérification d'adresse e-mail jetable

GET /api/v1/contact/disposable-email

Coût : 0 crédit / requête réussie. (GRATUIT)

Vérifiez si une adresse e-mail est un e-mail jetable (temporaire/usage unique) ou provient d'un fournisseur d'e-mail gratuit.

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

Exemple de réponse :

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

Paramètres URL

Paramètre Requis Descriptif Exemple
e-mail Oui L'adresse e-mail à vérifier [email protected]

Réponse

Clé Descriptif Exemple
e-mail L'adresse e-mail qui a été vérifiée "[email protected]"
is_disposable_email Indique si le domaine de l'e-mail est un fournisseur d'e-mail jetable/temporaire connu true
is_free_email Indique si le domaine de l'e-mail est un fournisseur d'e-mail gratuit (par ex., gmail.com, yahoo.com) false

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 0

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Format d'e-mail invalide

Monitor API

L'API Monitor vous permet de surveiller les mises à jour des entreprises. Chaque nouvelle mise à jour est compilée dans un seul flux RSS. Le système surveille les blogs des entreprises, les profils X (Twitter) et les modifications des sites web.

Concepts fondamentaux

Comment utiliser

Supposons que vous souhaitiez surveiller un groupe de sites web de concurrents pour des articles de blog, l'activité sur X et des changements de site web — le tout livré sous la forme d'un seul flux RSS que vous pouvez connecter à Feedly, Slack, Zapier ou n'importe quel lecteur RSS.

1. Créez un flux avec des cibles — regroupez les entreprises que vous souhaitez surveiller dans un flux. Chaque entreprise est un cible identifiée par l'URL de son site 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 réponse inclut un rss_url — c'est l'URL à laquelle vous vous abonnez.

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

2. Abonnez-vous au flux RSS — copiez le rss_url et ajoutez-le à n'importe quel lecteur RSS (Feedly, Slack, Zapier, etc.). Les articles de blog, les publications X et les modifications de site web de toutes les cibles apparaissent sous forme d'éléments dans un flux unique.

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

Chaque élément inclut une catégorie (blog, x, website update, ou website new page). Voir Endpoint de consommation de flux pour le schéma RSS complet.

3. Ajoutez de nouvelles cibles — un nouveau concurrent est entré sur le marché ? Ajoutez-le au flux.

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. Supprimez des cibles — une entreprise n'est plus pertinente ? Retirez-la du flux.

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

5. Modifier les paramètres de surveillance — par défaut, chaque cible surveille les articles de blog, les publications X et les modifications du site web selon une cadence de 7 jours. Utilisez PATCH pour activer/désactiver les canaux ou modifier la fréquence.

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"

Seuls les champs que vous incluez sont modifiés — les champs omis conservent leurs valeurs actuelles. Voir Objet Paramètres pour toutes les options disponibles.

Tarifs

Action Coût
Créer un flux 3 crédits (unique)
Récupération d'articles de blog (par cible) 1 crédit/extraction
Extraction de monitoring du site web (par cible) 1 crédit/extraction
Extraction des mises à jour de posts X (par cible) 2 crédits/extraction
Récupération des mises à jour YouTube (par cible) 1 crédit/extraction
Tous les autres endpoints (lister, décrire, supprimer des flux ; gérer les cibles) 0 crédit

Chaque extraction vérifie une cible pour une source (blog, X, site web ou YouTube). Avec les quatre sources activées, une seule cible coûte 5 crédits par extraction (1 blog + 2 X + 1 site web + 1 YouTube).

Exemples de coûts mensuels

Scénario Cibles Fréquence Crédits/mois
Capital-risqueur suivant 20 entreprises en portefeuille 20 Hebdomadaire ~433 crédits (3 ponctuels + 20 × 5 × 4,3 semaines)
Startup surveillant 10 concurrents 10 Quotidien ~1,503 crédits (3 ponctuels + 10 × 5 × 30 jours)
Équipe commerciale surveillant 5 comptes prospects (blog + X uniquement, sans site web) 5 Quotidien ~453 crédits (3 ponctuels + 5 × 3 × 30 jours)

Le coût unique de création de flux (3 crédits) est inclus dans le premier mois uniquement.

Point de terminaison de liste des flux

GET /api/v1/monitor/feeds

Coût : 0 crédits / requête.

Récupère la liste de tous les flux appartenant à l'utilisateur authentifié.

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

Exemple de réponse :

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

Réponse

Clé Descriptif Exemple
feeds Liste d'objets flux Voir Objet Feed

Objet Feed

Clé Descriptif Exemple
id Identifiant unique du flux "feed_abc123"
name Nom du flux "SaaS Competitors"
is_public Indique si le flux est accessible publiquement false
is_suspended Indique si le flux est actuellement suspendu false
suspension_reason Raison de la suspension, si suspendu null ou "insufficient_credits"
rss_url L'URL du flux RSS. Pour les flux privés, inclut un paramètre de requête token. "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=sec_live_987654321"
email_notifications Mode de notification par e-mail "skip" ou "on_updates"
created_at Horodatage de création ISO 8601 "2026-02-24T00:00:00Z"
target_count Nombre de cibles dans le flux 2

Nouvel endpoint de flux

POST /api/v1/monitor/feeds

Coût : 3 crédits / requête (frais uniques).

Crée un nouveau flux et accepte éventuellement un tableau de cibles initiales.

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"

Exemple de réponse 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"
    }
  ]
}

Corps de la requête

Paramètre Requis Descriptif Exemple
name Non Nom du flux. Si omis, un nom sera généré automatiquement. "SaaS Competitors"
is_public Non Indique si le flux est accessible publiquement (par défaut : false) false
email_notifications Non Mode de notification par e-mail. "on_updates" pour recevoir des e-mails lorsque de nouvelles mises à jour sont détectées, "skip" pour désactiver (par défaut : "skip") "on_updates"
targets Oui Tableau de cibles initiales à ajouter au flux (au moins 1 requis) Voir Objet d'entrée cible

Objet d'entrée cible

Paramètre Requis Descriptif Exemple
website_url Oui L'URL du site web de l'entreprise à surveiller "https://stripe.com"
settings Non Préférences de suivi. Si omises, les valeurs par défaut s'appliquent. Voir Objet Paramètres

Objet Paramètres

Paramètre Requis Descriptif Exemple
monitor_blog Non Surveiller le blog de l'entreprise pour les nouveaux articles (par défaut : true) true
monitor_x Non Surveiller le compte X (Twitter) de l'entreprise (par défaut : true) true
monitor_website Non Surveiller le site web de l'entreprise pour les modifications de contenu et les nouvelles pages (par défaut : true) true
monitor_youtube Non Surveiller la chaîne YouTube officielle de l'entreprise pour les nouvelles vidéos (par défaut : true) true
frequency_days Non Fréquence de vérification des mises à jour, en jours. Doit être compris entre 1 et 30 (par défaut : 7) 7

Règles de validation

Réponse

Retourne 201 Created. La réponse inclut l'élément créé Objet Feed avec un supplémentaire targets tableau contenant Objet cible entrées.

Objet cible

Clé Descriptif Exemple
id Identifiant unique de la cible "target_xyz789"
website_url L'URL du site web de l'entreprise surveillée "https://stripe.com"
settings Objet de préférences de suivi Voir Objet Paramètres
last_polled_at Horodatage ISO 8601 du dernier sondage, ou null si jamais interrogé null
is_baseline_complete Indique si le snapshot de référence initial a été capturé false
created_at Horodatage de création ISO 8601 "2026-02-24T09:55:00Z"

En-têtes de réponse

Clé d'en-tête Descriptif Exemple
X-NinjaPear-Credit-Cost Coût total en crédits pour cet appel API 3

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Erreur de validation (cibles manquantes, URL inaccessible, aucun indicateur de Monitor activé)

Endpoint de description de flux

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

Coût : 0 crédits / requête.

Récupère les détails complets d'un seul flux, y compris toutes ses cibles associées.

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

Exemple de réponse :

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

Paramètres URL

Paramètre Requis Descriptif Exemple
feed_id Oui L'identifiant du flux feed_abc123

Réponse

Retourne un Objet Feed avec un supplémentaire targets tableau contenant Objet cible entrées.

Codes d'erreur

Code de statut Facturé ? Descriptif
404 Non Flux introuvable

Endpoint de suppression de flux

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

Coût : 0 crédits / requête.

Supprime définitivement un flux et toutes les cibles associées.

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

Paramètres URL

Paramètre Requis Descriptif Exemple
feed_id Oui L'identifiant du flux à supprimer feed_abc123

Réponse

Retourne 200 OK avec un message de confirmation.

{
  "message": "Feed deleted."
}

Codes d'erreur

Code de statut Facturé ? Descriptif
404 Non Flux introuvable

Endpoint d'ajout de cible

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

Coût : 0 crédits / requête.

Ajoute une nouvelle entreprise à un flux existant.

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"

Exemple de réponse 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"
}

Paramètres URL

Paramètre Requis Descriptif Exemple
feed_id Oui L'identifiant du flux auquel ajouter la cible feed_abc123

Corps de la requête

Paramètre Requis Descriptif Exemple
website_url Oui L'URL du site web de l'entreprise à surveiller "https://shopify.com"
settings Non Préférences de suivi. Si omises, les valeurs par défaut s'appliquent. Voir Objet Paramètres

Réponse

Retourne un Objet cible.

Codes d'erreur

Code de statut Facturé ? Descriptif
404 Non Flux introuvable

Endpoint de mise à jour de la cible

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

Coût : 0 crédits / requête.

Modifie les préférences de suivi pour une cible spécifique.

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"

Paramètres URL

Paramètre Requis Descriptif Exemple
feed_id Oui L'identifiant du flux feed_abc123
target_id Oui L'identifiant de la cible à mettre à jour target_xyz789

Corps de la requête

Paramètre Requis Descriptif Exemple
settings Oui Mise à jour partielle des paramètres. Seuls les champs fournis sont modifiés. Voir Objet Paramètres

Réponse

Retourne le/la mis(e) à jour Objet cible.

Exemple de réponse :

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

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Aucun paramètre valide fourni
404 Non Flux ou cible introuvable

Endpoint de suppression de cible

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

Coût : 0 crédits / requête.

Arrête la surveillance d'un site web et le supprime du flux.

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

Paramètres URL

Paramètre Requis Descriptif Exemple
feed_id Oui L'identifiant du flux feed_abc123
target_id Oui L'identifiant de la cible à supprimer target_xyz789

Réponse

Retourne 200 OK avec un message de confirmation.

{
  "message": "Target deleted."
}

Codes d'erreur

Code de statut Facturé ? Descriptif
404 Non Flux ou cible introuvable

Endpoint de consommation de flux

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

Coût : 0 crédits / requête (les coûts de surveillance sont facturés par extraction sur chaque cible — voir Tarifs).

Retourne un flux XML RSS 2.0 standard consommé par les lecteurs RSS (Feedly, Slack, extensions de navigateur, etc.).

Si le is_public est false, un token valide doit être transmis en tant que token paramètre de requête.

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

Exemple de réponse :

<?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>

Paramètres URL

Paramètre Requis Descriptif Exemple
feed_id Oui L'identifiant du flux feed_abc123

Format de réponse

La réponse est un document XML RSS 2.0 standard. La structure est la suivante :

Éléments de canal

Élément Descriptif Exemple
<title> Le nom du flux SaaS Competitors
<link> URL du flux RSS https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml
<description> Résumé généré automatiquement des entreprises surveillées Automated updates for Stripe, Shopify, and Vercel.
<lastBuildDate> Horodatage RFC 2822 de la dernière génération du flux Tue, 24 Feb 2026 10:00:00 +0800

Éléments d'élément

Chaque <item> représente une seule mise à jour d'une entreprise surveillée.

Élément Descriptif Exemple
<title> Titre de la mise à jour, préfixé par le nom de l'entreprise Stripe: Expanding our Global Payment Network
<link> URL du contenu original https://stripe.com/blog/global-network-2026
<guid> Identifiant unique de l'élément. isPermaLink est true lorsque le GUID est une URL. https://stripe.com/blog/global-network-2026
<pubDate> Horodatage de publication RFC 2822 Mon, 23 Feb 2026 14:30:00 +0800
<category> Type de mise à jour (voir les catégories ci-dessous) blog
<dc:creator> Nom de l'entreprise (utilise l'espace de noms Dublin Core) Stripe
<description> Résumé ou extrait de la mise à jour Contenu textuel
<enclosure> Pièce jointe image optionnelle avec url, length (octets), et type attributs (type MIME) <enclosure url="..." length="150000" type="image/jpeg" />

Catégories d'éléments RSS

Chaque <item> inclut un <category> élément indiquant le type de mise à jour :

Catégorie Descriptif
blog Un nouvel article de blog de l'entreprise
x Une publication du compte X (Twitter) de l'entreprise
website update Un changement détecté sur une page existante
website new page Une nouvelle page détectée sur le site web de l'entreprise
website unreachable Le site web de l'entreprise est devenu inaccessible (déclenché une seule fois)

Codes d'erreur

Code de statut Facturé ? Descriptif
403 Non Token manquant ou invalide pour un flux privé
404 Non Flux introuvable

Endpoint de mise à jour du flux

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

Coût : 0 crédits / requête.

Mettez à jour les paramètres du flux tels que le nom, la visibilité ou le statut de suspension. Les flux suspendus depuis insufficient_credits reprennent automatiquement lorsque des crédits sont ajoutés.

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

Exemple de réponse (identique à 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": [...]
}

Paramètres URL

Paramètre Requis Descriptif Exemple
feed_id Oui L'identifiant du flux feed_abc123

Corps de la requête

Paramètre Requis Descriptif Exemple
name Non Nouveau nom de flux "My Feed"
is_public Non Indique si le flux RSS est accessible publiquement true
is_suspended Non Définir true pour suspendre, false pour reprendre true
suspension_reason Non Raison de la suspension (uniquement lorsque is_suspended est true, par défaut "manual") "manual"
email_notifications Non Mode de notification par e-mail. "on_updates" pour recevoir des e-mails lorsque de nouvelles mises à jour sont détectées, "skip" pour désactiver "on_updates"

Au moins un champ doit être fourni.

Réponse

Retourne le/la mis(e) à jour Objet Feed avec un supplémentaire targets tableau contenant Objet cible entrées.

Codes d'erreur

Code de statut Facturé ? Descriptif
400 Non Aucun champ valide fourni
404 Non Flux introuvable

Claude AI

NinjaPear fournit un serveur MCP (Model Context Protocol) pour une intégration directe avec Claude. Cela vous permet d'interroger les données B2B des entreprises de manière conversationnelle — posez à Claude des questions sur les clients, investisseurs, effectifs et bien plus d'une entreprise.

Démarrage rapide

  1. Obtenez votre chaîne de connexion depuis le Tableau de bord
  2. Ajoutez NinjaPear comme connecteur dans Claude (voir les instructions de configuration ci-dessous)
  3. Démarrez une nouvelle conversation et interrogez les données d'entreprises B2B de manière conversationnelle

Configuration

Votre chaîne de connexion est disponible sur la Tableau de bord. Cela ressemble à : https://nubela.co/mcp/sse?api_key=YOUR_API_KEY

  1. Obtenez votre chaîne de connexion depuis le Tableau de bord
  2. Assurez-vous d'être connecté à Claude, puis rendez-vous sur : Ajouter un connecteur personnalisé
  3. Saisissez les informations suivantes :
    • Nom: NinjaPear
    • URL du serveur MCP distant: Collez votre chaîne de connexion de l'étape 1
  4. Cliquez Ajouter un connecteur
  5. Démarrez une nouvelle conversation et demandez à Claude d'utiliser NinjaPear

Claude Code CLI

Obtenez votre chaîne de connexion depuis le Tableau de bord, puis exécutez :

claude mcp add ninjapear --transport sse "YOUR_CONNECTOR_STRING"

Outils disponibles

Outil Descriptif Coût
get_customer_listing Obtenez les clients, investisseurs et partenaires d'une entreprise 1 + 2/entreprise
get_company_details Obtenez les informations sur l'entreprise, les dirigeants et les données financières 2 à 4 crédits
get_employee_count Obtenez l'effectif d'une entreprise 2 crédits
check_disposable_email Vérifier si l'e-mail est jetable/gratuit GRATUIT
get_credit_balance Vérifiez votre solde de crédits GRATUIT
get_company_logo_url Obtenez l'URL du logo de l'entreprise GRATUIT
list_feeds Lister tous vos flux de monitoring 0 crédit
create_feed Créer un nouveau flux de monitoring avec des cibles 3 crédits
describe_feed Obtenez les détails du flux avec toutes les cibles 0 crédit
update_feed Mettre à jour le nom, la visibilité ou la suspension du flux 0 crédit
delete_feed Supprimer un flux et toutes ses cibles 0 crédit
add_target Ajouter une entreprise à surveiller dans un flux 0 crédit
update_target Mettre à jour les paramètres de monitoring pour une cible 0 crédit
remove_target Supprimer une entreprise d'un flux 0 crédit
consume_feed Lire les dernières mises à jour d'un flux GRATUIT

Exemples de prompts

Une fois connecté, vous pouvez poser à Claude des questions telles que :

Intelligence concurrentielle

Vous êtes chef de produit et souhaitez suivre les activités de vos concurrents.

Monitoring de portefeuille VC

Vous êtes un investisseur en capital-risque qui souhaite suivre l'activité de vos entreprises en portefeuille. Importez un CSV ou une capture d'écran de vos entreprises en portefeuille dans Claude, puis demandez :

Prospection commerciale

Vous travaillez dans la vente et souhaitez étudier des comptes avant de les contacter.

Étude de marché

Vous êtes analyste et cherchez à cartographier un secteur d'activité.

Suivi et alertes

Vous souhaitez configurer un monitoring continu et revenir vérifier les mises à jour.

Gestion de compte

Vérifications rapides sur votre utilisation de NinjaPear.

Gestion des erreurs

Les erreurs sont retournées sous forme de messages descriptifs que Claude vous expliquera :

Erreur Message
Clé API invalide "Error: 401 Unauthorized"
Crédits insuffisants "Error: 402 Payment Required"
Débit limité "Error: 429 Too Many Requests"
Erreur serveur "Error: 500 Internal Server Error"

Détails techniques

Protocole MCP

Le serveur MCP NinjaPear implémente le Model Context Protocol spécification, qui est la norme ouverte d'Anthropic pour connecter les assistants IA à des sources de données externes et à des outils.

Transport

Nous utilisons le transport Server-Sent Events (SSE) pour la communication en temps réel :

Authentification

Transmettez votre clé API via le api_key paramètre de requête ou le X-API-Key header