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 :
- Docs compatibles LLM (Markdown) — référence API complète en texte brut, prête à coller ou à glisser-déposer dans n'importe quel chat IA
- llms.txt — index léger pour la découverte par les agents IA
- Spécification OpenAPI 3.0 — schéma API lisible par machine
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
- Obtenez la liste des clients, investisseurs et partenaires de toute entreprise avec le Endpoint de liste des clients.
- Trouvez les concurrents de n'importe quelle entreprise et comprenez pourquoi ils sont en concurrence avec le Endpoint de liste de concurrents.
- Obtenez le catalogue de produits et services d'une entreprise avec le Endpoint de liste de produits.
- Obtenez gratuitement le logo de toute entreprise avec le Endpoint Logo de l'entreprise.
- Obtenez les informations complètes sur l'entreprise (secteur, description, dirigeants, adresses des bureaux) avec le Endpoint Détails de l'entreprise.
- Obtenez l'effectif de toute entreprise avec le Endpoint de nombre d'employés.
- Obtenez les derniers articles de blog et publications sur les réseaux sociaux de toute entreprise avec le Endpoint Mises à jour de l'entreprise.
- Obtenez l'historique complet du financement et les investisseurs de toute entreprise avec le Endpoint Financement de l'entreprise.
- Résolvez un nom d'entreprise en son URL de site web canonique avec le Endpoint de recherche par site web.
- Trouvez l'e-mail professionnel d'une personne à partir de son nom et du domaine de l'entreprise avec le Endpoint d'e-mail professionnel.
- Recherchez le profil, l'historique professionnel et la formation d'une personne à partir de son e-mail professionnel avec le Endpoint de profil de personne.
- Trouvez des personnes similaires à une cible — même rôle dans des entreprises concurrentes — avec le Endpoint Personnes similaires.
- Vérifiez si une adresse e-mail est jetable ou provient d'un fournisseur d'e-mail gratuit avec le Endpoint de vérification d'adresse e-mail jetable.
- Surveillez les entreprises pour de nouveaux articles de blog, tweets et modifications de site web via RSS avec le Monitor API.
- Vérifiez vos crédits API restants avec le Endpoint de consultation du solde de crédits.
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 :
- Plan gratuit, essai ou PAYG : 2 requêtes/min
- $49/mo plan : 20 requêtes/min
- $299/mo plan : 50 requêtes/min
- $899/mo plan : 100 requêtes/min
- $1899/mo plan : 300 requêtes/min
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 :
- Nous ne supprimerons pas les paramètres et attributs de réponse documentés.
- 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 :
- Ajout d'attributs/paramètres aux endpoints API sans préavis.
- Ajout d'en-têtes de réponse ou de requête supplémentaires à nos endpoints API sans préavis.
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 :
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
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
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 :
- E-mail professionnel uniquement — p. ex.
[email protected] - Prénom + site web de l'employeur — p. ex.
first_name=John&employer_website=https://stripe.com - Site web de l'employeur + rôle — p. ex.
employer_website=https://stripe.com&role=CTO
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 :
- E-mail professionnel uniquement — p. ex.
[email protected] - Prénom + site web de l'employeur — p. ex.
first_name=Tim&employer_website=https://apple.com - Site web de l'employeur + rôle — p. ex.
employer_website=https://apple.com&role=CEO
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 + N où N 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
- Flux : Le conteneur parent. Un flux peut être public ou privé. Les flux privés nécessitent un bearer token transmis via la chaîne de requête URL pour assurer la compatibilité avec les lecteurs RSS standard.
- Cible : Une entreprise/un site web spécifique faisant l'objet d'un monitoring dans un flux.
- Paramètres : Préférences granulaires par cible définissant ce qu'il faut surveiller (Blog, X, Site web) et à quelle fréquence.
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.
La réponse inclut un rss_url — c'est l'URL à laquelle vous vous abonnez.
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.
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.
4. Supprimez des cibles — une entreprise n'est plus pertinente ? Retirez-la du flux.
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.
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
- Au moins un
targetsl'entrée est obligatoire. - Chaque cible doit avoir un
website_urlqui est accessible (réponse HTTP 2xx). Les URL inaccessibles renvoient400. - Au moins un paramètre de Monitor (
monitor_blog,monitor_x,monitor_website,monitor_youtube) doit êtretruepar cible.
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
- Obtenez votre chaîne de connexion depuis le Tableau de bord
- Ajoutez NinjaPear comme connecteur dans Claude (voir les instructions de configuration ci-dessous)
- 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
Claude Platform (Recommandé)
- Obtenez votre chaîne de connexion depuis le Tableau de bord
- Assurez-vous d'être connecté à Claude, puis rendez-vous sur : Ajouter un connecteur personnalisé
- Saisissez les informations suivantes :
- Nom:
NinjaPear - URL du serveur MCP distant: Collez votre chaîne de connexion de l'étape 1
- Nom:
- Cliquez Ajouter un connecteur
- 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.
- "Monitor stripe.com, brex.com, et ramp.com for blog posts and website changes. Check daily."
- "What are the latest updates from my competitor feed?"
- "Get company details for each of my competitors — I want to know their employee counts and executives"
- "Who are Stripe's customers? Cross-reference them with Brex's customers to find overlap"
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 :
- "Create a monitoring feed for all these companies — track their blogs and website changes weekly"
- "Show me the latest updates across my portfolio feed"
- "Get employee counts for each of my portfolio companies — I want to see who's growing fastest"
- "Which of my portfolio companies have the most customers?"
Prospection commerciale
Vous travaillez dans la vente et souhaitez étudier des comptes avant de les contacter.
- "Get company details for acme.com — who are their executives, and what industry are they in?"
- "How many employees does acme.com have?"
- "Who are Salesforce's customers? Get company details for the top 5 by employee count"
- "Is [email protected] a real business email or a disposable address?"
- "Check if these emails are disposable: [email protected], [email protected]"
Étude de marché
Vous êtes analyste et cherchez à cartographier un secteur d'activité.
- "Find the investors behind Figma, Canva, and Miro. Who are the common VCs?"
- "Get company details for anthropic.com, openai.com, et cohere.com — compare their founding year, employee count, and specialties"
- "Who are the partners of Shopify? Get employee counts for each partner"
- "Get logos for stripe.com, square.com, et adyen.com — I'm building a market map"
Suivi et alertes
Vous souhaitez configurer un monitoring continu et revenir vérifier les mises à jour.
- "Create a feed called 'AI Companies' to track openai.com, anthropic.com, and deepmind.google — monitor blogs and X posts"
- "Add mistral.ai to my AI Companies feed"
- "Change the monitoring frequency for Anthropic to daily — they ship fast"
- "Pause my AI Companies feed for now, I'll resume it next quarter"
- "What's my current credit balance? How long will my monitoring last at this rate?"
Gestion de compte
Vérifications rapides sur votre utilisation de NinjaPear.
- "What's my credit balance?"
- "How many credits do I have left?"
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 :
- Endpoint SSE:
GET /mcp/sse?api_key=YOUR_API_KEY - Endpoint Messages:
POST /mcp/messages/ - Vérification de l'état:
GET /mcp/health
Authentification
Transmettez votre clé API via le api_key paramètre de requête ou le X-API-Key header
