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.
- Trouvez les produits par ce qu'ils font, leurs intégrations, plates-formes et tarification, gratuitement, avec la Endpoint Recherche de produits.
- Obtenez l'enregistrement complet d'un produit avec la Endpoint Détails du produit.
- 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.
- Trouver des entreprises par secteur d'activité, localisation, taille et financement avec le Endpoint Recherche d'entreprises.
- 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 à Company Logo, Disposable Email Checker, View Credit Balance et à la consommation de flux RSS et JSON.
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
La plupart des endpoints de l'API NinjaPear prennent 30-60 secondes. Utilisez un délai de lecture de 100 secondes pour ces endpoints.
Les endpoints Financement d'entreprise et Personnes similaires sont des endpoints de streaming longs avec une limite stricte de cinq minutes. Utilisez un délai de lecture de 300 secondes pour ces deux endpoints.
| Groupe d'endpoints | Délai de connexion | Délai de lecture | Délai d'écriture | Délai du pool |
|---|---|---|---|---|
| Financement d'entreprise et personnes similaires | 10 secondes |
300 secondes |
30 secondes |
10 secondes |
| Tous les autres endpoints | 10 secondes |
100 secondes |
30 secondes |
10 secondes |
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.
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. |
Endpoint Recherche de produits
GET /api/v1/product/search
Coût : Gratuit. Ce point de terminaison suit la limite de débit pour les points de terminaison gratuits.
Trouvez les produits et services qui correspondent à ce dont vous avez besoin, dans chaque entreprise que NinjaPear a cataloguée. Recherchez par sens avec query (par exemple reconcile invoices automatically), filtrer par catégorie, intégration, plateforme et tarification, ou combiner les deux. Chaque résultat vous donne un produit id et une Endpoint Détails du produit URL pour l'enregistrement complet.
curl -G \
-H "Authorization: Bearer YOUR_API_KEY" \
--data-urlencode "query=reconcile invoices automatically" \
--data-urlencode "integration=Slack" \
--data-urlencode "has_free_tier=true" \
"https://nubela.co/api/v1/product/search"
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.search_products(
query="reconcile invoices automatically",
integration="Slack",
has_free_tier="true",
)
print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";
var api = new NinjaPear.ProductAPIApi();
api.searchProducts({
query: "reconcile invoices automatically",
integration: "Slack",
hasFreeTier: "true",
}).then(function (data) {
console.log(data);
});
Exemple de réponse :
{
"products": [
{
"id": "stripe-billing",
"name": "Stripe Billing",
"tagline": "Subscription management software",
"product_details_url": "https://nubela.co/api/v1/product/details?id=stripe-billing",
"company_details_url": "https://nubela.co/api/v1/company/details?website=stripe.com"
}
],
"total_count": 214,
"next_page": "https://nubela.co/api/v1/product/search?cursor=eyJxIjp7InF1ZXJ5IjoicmVjb25jaWxlIGludm9pY2VzIn0sInYiOjAuNTEsImkiOiJzdHJpcGUtYmlsbGluZyJ9"
}
Comment fonctionne la Recherche de produits
- Fournissez au moins un filtre.
- Les différents paramètres doivent tous correspondre. Les valeurs séparées par des virgules au sein d'un paramètre correspondent à l'une d'entre elles (
platform=Web,iOSsignifie Web ou iOS). queryrecherche par sens, pas par mots exacts, donctool to chase unpaid invoicespeut trouver un produit décrit comme « récupération automatisée des paiements ». Unqueryretourne jusqu'à 1 000 produits les plus proches qui passent également vos autres filtres et sont suffisamment proches en sens ;total_countcompte dans cet ensemble.category,tag,integrationetplatformcorrespondent à des valeurs entières, insensible à la casse. Ils fonctionnent mieux avec les valeurs que vous avez vues en Détails du produit ou Liste de produits résultats ; utilisezqueryquand tu ne connais pas l'étiquette exacte.- La clé d'API de démonstration fonctionne sur ce point de terminaison, avec une limite de débit partagée de 2 demandes par minute pour tous ceux qui l'utilisent.
Paramètres URL
| Paramètre | Requis | Descriptif | Exemple |
|---|---|---|---|
query |
Non | Ce que le produit devrait faire, en langage naturel. Recherché par sens dans le nom du produit, le slogan, la description, les catégories, les balises, les fonctionnalités, les intégrations et les plates-formes. Jusqu'à 200 caractères. | reconcile invoices automatically |
category |
Non | Catégories de produits séparées par des virgules. Correspondance de valeur entière, insensible à la casse. | Billing,Invoicing |
tag |
Non | Balises de produit séparées par des virgules. Correspondance de valeur entière, insensible à la casse. | No-Code |
integration |
Non | Produits ou services séparés par des virgules avec lesquels le produit s'intègre. Correspondance de valeur entière, insensible à la casse. | Slack,Salesforce |
platform |
Non | Plates-formes séparées par des virgules sur lesquelles le produit s'exécute. Correspondance de valeur entière, insensible à la casse. | Web,iOS |
pricing_model |
Non | Modèles de tarification séparés par des virgules. Utilise les valeurs de la Énumération du modèle de tarification sauf unknown. |
freemium,subscription |
has_free_tier |
Non | true pour les produits avec un niveau gratuit, false pour les produits sans. |
true |
starts_at_monthly_usd_min |
Non | Prix d'entrée le plus bas par mois, en USD. Même valeur que starts_at_monthly_usd dans le Objet de tarification. |
0 |
starts_at_monthly_usd_max |
Non | Prix d'entrée le plus élevé par mois, en USD. | 50 |
sort_by |
Non | Un des relevance, name, starts_at_monthly_usd. Par défaut à relevance quand query est défini, sinon name. relevance exige query. |
starts_at_monthly_usd |
sort_order |
Non | asc ou desc. Par défaut à asc pour name et desc pour tous les autres tris. Les produits sans valeur pour le champ de tri sont toujours derniers. |
asc |
page_size |
Non | Nombre de produits par page (1-100, par défaut 100). | 100 |
cursor |
Non | Curseur de pagination issu de next_page dans une réponse précédente. Le curseur se souvient de vos filtres, du tri et de la taille de la page, donc il doit être envoyé seul. Le combiner avec n'importe quel autre paramètre retourne un 400. |
Réponse
| Clé | Descriptif | Exemple |
|---|---|---|
products |
Liste de ProductSearchResult objets sur cette page. Vide quand rien ne correspond. | Voir ProductSearchResult objet |
total_count |
Nombre total de produits correspondant à vos filtres, sur toutes les pages. | 214 |
next_page |
URL de la page suivante des résultats, ou null sur la dernière page. Appelez-le tel quel. Il continue la même recherche, donc vous n'avez pas besoin de répéter vos filtres. |
null |
ProductSearchResult
| Clé | Descriptif | Exemple |
|---|---|---|
id |
L'ID du produit. Passez-le à la Endpoint Détails du produit. | stripe-billing |
name |
Le nom du produit. | Stripe Billing |
tagline |
Slogan produit d'une ligne, ou null quand il n'y a aucun. |
Subscription management software |
product_details_url |
URL préremplie vers le Endpoint Détails du produit pour ce produit. | https://nubela.co/api/v1/product/details?id=stripe-billing |
company_details_url |
URL préremplie vers le Endpoint Détails de l'entreprise pour l'entreprise qui fabrique le produit. | https://nubela.co/api/v1/company/details?website=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 | 0 |
Codes d'erreur
| Code de statut | Facturé ? | Descriptif |
|---|---|---|
| 400 | Non | Aucun filtre n'a été fourni. |
| 400 | Non | Un paramètre a une valeur invalide, ou un paramètre inconnu a été fourni. Le message d'erreur le nomme. |
| 400 | Non | Invalide cursor, ou cursor combiné avec un autre paramètre. |
| 429 | Non | Limite de débit dépassée. |
| 503 | Non | Rechercher par query est temporairement indisponible. Réessayez plus tard, ou recherchez sans query. |
Endpoint Détails du produit
GET /api/v1/product/details
Coût : 1 crédit par demande. Les demandes pour un produit inconnu id sont gratuits.
Obtenez l'enregistrement complet d'un produit : description, catégories, fonctionnalités, tarification, intégrations et plates-formes, plus l'entreprise qui le fabrique. Utilisez la id du Endpoint Recherche de produits.
curl -G \
-H "Authorization: Bearer YOUR_API_KEY" \
--data-urlencode "id=stripe-billing" \
"https://nubela.co/api/v1/product/details"
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_details(id="stripe-billing")
print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";
var api = new NinjaPear.ProductAPIApi();
api.getProductDetails("stripe-billing").then(function (data) {
console.log(data);
});
Exemple de réponse :
{
"id": "stripe-billing",
"name": "Stripe Billing",
"tagline": "Subscription management software",
"description": "Businesses managing recurring revenue often face complexity when handling varied pricing models, churn, and customer payment updates. Stripe Billing provides software to manage recurring subscriptions, usage-based billing, and one-time charges through composable APIs or no-code tools. This allows users to respond quickly to demand changes, increase revenue via automated recovery workflows like Smart Retries, and save engineering time. A key differentiator is the flexibility to support complex models while integrating recovery automations that reduce involuntary churn.",
"company_website": "stripe.com",
"company_details_url": "https://nubela.co/api/v1/company/details?website=stripe.com",
"categories": ["Billing", "Subscription Management"],
"tags": ["Recurring Revenue", "Usage-Based Billing", "Churn Reduction"],
"structured_features": {},
"freeform_features": [
"Subscription management for recurring, usage-based, and one-time billing",
"Smart Retries and recovery workflow automations",
"No-code tools or composable APIs"
],
"pricing": {
"model": "payg",
"starts_at_monthly_usd": 0.0,
"tiers": [
{
"name": null,
"price_usd_monthly": null,
"features": ["Subscription Management"]
}
]
},
"integrations": ["Stripe Payments", "Stripe Invoicing"],
"platforms": [],
"source_urls": [
"https://stripe.com/en-sg/pricing",
"https://stripe.com/en-sg/",
"https://stripe.com/en-sg/customers/figma",
"https://stripe.com/en-sg/customers/anthropic"
]
}
Paramètres URL
| Paramètre | Requis | Descriptif | Exemple |
|---|---|---|---|
id |
Oui | L'ID de produit renvoyé par la Endpoint Recherche de produits. | stripe-billing |
Réponse
Chaque clé de la Objet Produit, plus :
| Clé | Descriptif | Exemple |
|---|---|---|
id |
L'ID du produit. Il reste le même quand les données du produit sont actualisées. | stripe-billing |
company_website |
Site Web de l'entreprise qui fabrique le produit. | stripe.com |
company_details_url |
URL préremplie vers le Endpoint Détails de l'entreprise pour cette entreprise. | https://nubela.co/api/v1/company/details?website=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 |
X-NinjaPear-Cache-Age-Days |
Âge des données de produit renvoyées en jours entiers | 12 |
Codes d'erreur
| Code de statut | Facturé ? | Descriptif |
|---|---|---|
| 400 | Non | Manquant ou mal formé id. |
| 404 | Non | Aucun produit avec cet id. Un produit supprimé du site Web de l'entreprise ne sera plus disponible. |
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
Tarifs
| Élément | Facultatif | Crédits |
|---|---|---|
| Requête de base. Les crédits sont facturés même si aucune donnée n’est trouvée. | Non | 3 |
include_employee_count=true |
Oui | +2 |
follower_count=include |
Oui | +1 |
addresses=best-effort-exhaustive |
Oui | +2 |
| Maximum par requête | 8 |
Récupérez les métadonnées de l’entreprise, notamment la description, le secteur, les URL des réseaux sociaux, l’équipe dirigeante actuelle et plus encore.
Vous devez fournir au moins l'une de ces combinaisons de paramètres :
- Site web -
website=https://stripe.com - URL de réseau social -
socmed_url=https://x.com/stripe
Fournissez exactement l’un de site web ou socmed_url. Un socmed_url est analysée localement pour obtenir un nom d’entreprise, puis suit la même résolution du nom d’entreprise vers le site web que celle utilisée par site web. Aucun supplément ne s’applique.
curl -G \
-H "Authorization: Bearer YOUR_API_KEY" \
--data-urlencode "website=https://www.stripe.com" \
"https://nubela.co/api/v1/company/details"
curl -G \
-H "Authorization: Bearer YOUR_API_KEY" \
--data-urlencode "socmed_url=https://x.com/stripe" \
"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 |
Conditionnel | L'URL du site Web ou le nom de l'entreprise de l'entreprise cible. Fournissez exactement l'un de site web ou socmed_url. Une URL de site web est fortement recommandée pour plus de précision. |
https://www.stripe.com |
socmed_url |
Conditionnel | URL de profil d’entreprise comportant le nom sur LinkedIn, X, Crunchbase, TikTok, Facebook, YouTube, Twitch, Instagram, Pinterest, Reddit ou Threads. Fournissez exactement l’un de site web ou socmed_url. Cette entrée n’entraîne aucun supplément.L’URL fournie est analysée localement afin d’en extraire un nom d’entreprise, qui est ensuite associé à un site web d’entreprise. NinjaPear ne consulte ni ne collecte de données sur l’URL de réseau social fournie dans le cadre de cette recherche. Les formats de profil social comportant le nom pris en charge sont LinkedIn /company/{name}, X ou Twitter /{handle}, Crunchbase /organization/{name}, TikTok /@handle, Facebook /{handle}, YouTube /@handle, /c/{name}, ou /user/{name}, Twitch /{handle}, Instagram /{handle}, Pinterest /{handle}, Reddit /r/{name} et Threads /@handle. Les URL de contenu et les identifiants de profil opaques ne sont pas acceptés. |
https://x.com/stripe |
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 | Fournissez exactement l’un de site web ou socmed_url |
| 400 | Non | socmed_url n’est pas une URL de profil d’entreprise comportant le nom prise en charge |
| 404 | Oui | 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 en fonction de son URL de site Web. Retourne les fonds totaux collectés, les tours de financement individuels avec dates et montants, les devises natives, les conversions USD quand disponibles et les investisseurs participants avec leurs sites Web.
Les montants de financement natif sont renvoyés en amount plus currency. L'ancien amount_usd et total_funds_raised_usd les champs sont remplis uniquement quand la devise source est USD ou une conversion USD est disponible. Si la conversion FX n'est pas disponible, les champs de montant natif restent remplis et le champ USD correspondant est null.
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": 9810000000,
"currency": "USD",
"total_funds_raised_usd": 9810000000,
"credit_cost": 7,
"funding_rounds": [
{
"round_type": "SECONDARY_SALE",
"date": "2026-02-01",
"amount": null,
"currency": null,
"amount_usd": null,
"investors": [
{
"name": "Thrive Capital",
"website": "thrivecap.com",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
},
{
"name": "Coatue",
"website": "coatue.com",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
},
{
"name": "Andreessen Horowitz",
"website": "a16z.com",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
}
]
},
{
"round_type": "SERIES_I",
"date": "2024-04-01",
"amount": 694200000,
"currency": "USD",
"amount_usd": 694200000,
"investors": [
{
"name": "Sequoia Capital",
"website": "sequoiacap.com",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
},
{
"name": "Brookfield",
"website": "brookfield.com",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
},
{
"name": "Paradigm",
"website": "paradigm.co",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
}
]
},
{
"round_type": "SERIES_I",
"date": "2023-03-01",
"amount": 6500000000,
"currency": "USD",
"amount_usd": 6500000000,
"investors": [
{
"name": "GIC",
"website": "gic.com.sg",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
},
{
"name": "Goldman Sachs",
"website": "goldmansachs.com",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
},
{
"name": "Temasek",
"website": "temasek.com.sg",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
},
{
"name": "Thrive Capital",
"website": "thrivecap.com",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
}
]
},
{
"round_type": "SERIES_H",
"date": "2021-03-01",
"amount": 600000000,
"currency": "USD",
"amount_usd": 600000000,
"investors": [
{
"name": "Allianz X",
"website": "allianzx.com",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
},
{
"name": "Fidelity",
"website": "fidelity.com",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
},
{
"name": "Baillie Gifford",
"website": "bailliegifford.com",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
}
]
},
{
"round_type": "SEED",
"date": "2011-03-01",
"amount": 2000000,
"currency": "USD",
"amount_usd": 2000000,
"investors": [
{
"name": "Peter Thiel",
"website": null,
"type": "angel",
"amount": null,
"currency": null,
"amount_usd": null
},
{
"name": "Sequoia Capital",
"website": "sequoiacap.com",
"type": "company",
"amount": null,
"currency": null,
"amount_usd": null
},
{
"name": "Elon Musk",
"website": null,
"type": "angel",
"amount": null,
"currency": null,
"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 |
Montant total collecté dans la devise source, ou null si non divulgué |
9810000000 |
currency |
Code de devise ISO 4217 pour total_funds_raised, ou null si inconnu |
"USD" |
total_funds_raised_usd |
Montant total collecté converti en USD, ou null s'il n'est pas divulgué ou si la conversion FX n'est pas disponible |
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 |
Montant collecté dans ce tour dans la devise source, ou null si non divulgué |
600000000 |
currency |
Code de devise ISO 4217 pour amount, ou null si inconnu |
"USD" |
amount_usd |
Montant collecté dans ce tour converti en USD, ou null s'il n'est pas divulgué ou si la conversion FX n'est pas disponible |
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 |
Montant que cet investisseur a contribué dans la devise source, ou null si non divulgué |
null |
currency |
Code de devise ISO 4217 pour amount, ou null si inconnu |
null |
amount_usd |
Montant que cet investisseur a contribué converti en USD, ou null s'il n'est pas divulgué ou si la conversion FX n'est pas disponible |
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 | INSUFFICIENT_CREDITS |
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é. |
Endpoint Recherche d'entreprises
GET /api/v1/company/search
Coût : 2 crédits / 100 résultats / demande. Les demandes qui ne retournent aucun résultat sont gratuites.
Trouvez les entreprises qui correspondent à un ensemble de filtres, tels que le secteur d'activité, la localisation du siège social, le type d'entreprise, l'année de fondation, le nombre d'employés, le financement et les mots-clés. Chaque résultat vous donne le nom de l'entreprise et un Endpoint Détails de l'entreprise URL.
curl -G \
-H "Authorization: Bearer YOUR_API_KEY" \
--data-urlencode "industry=4510" \
--data-urlencode "country=US,CA" \
--data-urlencode "founded_year_min=2018" \
"https://nubela.co/api/v1/company/search"
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.search_companies(
industry="4510",
country="US,CA",
founded_year_min=2018,
)
print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";
var api = new NinjaPear.CompanyAPIApi();
api.searchCompanies({
industry: "4510",
country: "US,CA",
foundedYearMin: 2018,
}).then(function (data) {
console.log(data);
});
Exemple de réponse :
{
"companies": [
{
"name": "Stripe",
"company_details_url": "https://nubela.co/api/v1/company/details?website=https%3A%2F%2Fstripe.com"
},
{
"name": "Shopify",
"company_details_url": "https://nubela.co/api/v1/company/details?website=https%3A%2F%2Fwww.shopify.com"
}
],
"total_count": 1284,
"next_page": "https://nubela.co/api/v1/company/search?cursor=eyJxIjp7ImNvdW50cnkiOiJVUyxDQSIsImZvdW5kZWRfeWVhcl9taW4iOiIyMDE4IiwiaW5kdXN0cnkiOiI0NTEwIn0sInYiOiJTaG9waWZ5IiwiaSI6Ii4uLiJ9"
}
Comment les filtres se combinent
- Fournissez au moins un filtre.
- Différents paramètres doivent tous correspondre (
industry=4510&country=USsignifie des entreprises logicielles et dont le siège social est aux États-Unis). - Les valeurs séparées par des virgules dans un paramètre correspondent à l'une d'entre elles (
country=US,CAsignifie US ou Canada). - Les plages utilisent
_minet_maxet sont inclusifs. Vous pouvez passer l'un ou l'autre ou les deux. - Les valeurs de filtre sont les mêmes valeurs que le Endpoint Détails de l'entreprise retourne, vous pouvez donc en nourrir un dans l'autre.
- Une entreprise sans valeur connue pour un champ ne correspond jamais à un filtre sur ce champ. Par exemple,
employee_count_min=50retourne les entreprises connues pour avoir au moins 50 employés. La couverture est la plus large pour le secteur d'activité, la localisation, le type d'entreprise et l'année de fondation. Le nombre d'employés et le financement sont connus pour moins d'entreprises, et le revenu n'est connu que pour les entreprises publiques.
Paramètres URL
| Paramètre | Requis | Descriptif | Exemple |
|---|---|---|---|
query |
Non | Mots-clés appairés au nom de l'entreprise, au slogan, à la description et aux spécialités. Jusqu'à 200 caractères. | payments infrastructure |
industry |
Non | Séparé par des virgules GICS codes de 2, 4, 6 ou 8 chiffres. Un code plus court correspond à chaque secteur d'activité en dessous, donc 45 correspond à tout Information Technology et 45103010 correspond uniquement à Application Software. |
4510 |
country |
Non | Codes ISO 3166-1 alpha-2 séparés par des virgules du pays du siège social. | US,CA |
state |
Non | État ou région du siège social. Correspondance exacte, insensible à la casse. | Californie |
city |
Non | Ville du siège social. Correspondance exacte, insensible à la casse. | San Francisco |
company_type |
Non | Types d'entreprise séparés par des virgules. Valeurs valides : PUBLIC_COMPANY, PRIVATELY_HELD. |
PRIVATELY_HELD |
founded_year_min |
Non | Année de fondation la plus ancienne. | 2018 |
founded_year_max |
Non | Année de fondation la plus récente. | 2024 |
employee_count_min |
Non | Nombre minimum d'employés. | 50 |
employee_count_max |
Non | Nombre maximum d'employés. | 500 |
total_funding_usd_min |
Non | Financement total minimum levé, en USD. | 1000000 |
total_funding_usd_max |
Non | Financement total maximum levé, en USD. | 50000000 |
last_funding_type |
Non | Types de tour de financement le plus récent de l'entreprise séparés par des virgules. Voir Valeurs de type de tour de financement pour la liste complète des valeurs valides. | SEED,SERIES_A |
last_funding_date_min |
Non | Date la plus ancienne du tour de financement le plus récent, comme YYYY-MM-DD. |
2025-01-01 |
last_funding_date_max |
Non | Date la plus récente du tour de financement le plus récent, comme YYYY-MM-DD. |
2025-12-31 |
revenue_usd_min |
Non | Revenu annuel minimum, en USD. Entreprises publiques uniquement. | 10000000 |
revenue_usd_max |
Non | Revenu annuel maximum, en USD. Entreprises publiques uniquement. | 1000000000 |
sort_by |
Non | Un des relevance, name, founded_year, employee_count, total_funding_usd. Par défaut à relevance quand query est défini, sinon name. relevance exige query. |
founded_year |
sort_order |
Non | asc ou desc. Par défaut à asc pour name et desc pour tout autre tri. Les entreprises sans valeur pour le champ de tri viennent toujours en dernier. |
desc |
page_size |
Non | Nombre d'entreprises par page (1-100, défaut 100). | 100 |
cursor |
Non | Curseur de pagination issu de next_page dans une réponse précédente. Le curseur se souvient de vos filtres, du tri et de la taille de la page, donc il doit être envoyé seul. Le combiner avec n'importe quel autre paramètre retourne un 400. |
Réponse
| Clé | Descriptif | Exemple |
|---|---|---|
entreprises |
Liste de CompanySearchResult objets sur cette page. Vide quand rien ne correspond. | Voir CompanySearchResult objet |
total_count |
Nombre total d'entreprises correspondant à vos filtres, sur toutes les pages. | 1284 |
next_page |
URL de la page suivante des résultats, ou null sur la dernière page. Appelez-le tel quel. Il continue la même recherche, donc vous n'avez pas besoin de répéter vos filtres. |
null |
CompanySearchResult
| Clé | Descriptif | Exemple |
|---|---|---|
name |
Le nom de l'entreprise. | Stripe |
company_details_url |
URL préremplie vers le Endpoint Détails de l'entreprise. Appelez-le avec votre clé API pour obtenir le profil complet de l'entreprise. Les tarifs réguliers de Détails de l'entreprise s'appliquent. | https://nubela.co/api/v1/company/details?website=https%3A%2F%2Fstripe.com |
Recherches gratuites
La recherche d'entreprises est gratuite, à raison de 1 requête gratuite toutes les 10 secondes, pour :
- Les comptes dans les 30 premiers jours de leur premier plan d'abonnement.
- Nos 100 meilleurs abonnés, classés par plan d'abonnement puis par utilisation des crédits dans la période de facturation actuelle.
Les demandes effectuées dans les 10 secondes suivant une demande gratuite ne sont pas rejetées. Elles sont facturées au tarif régulier 2 crédits. Les demandes gratuites rapportent 0 dans le X-NinjaPear-Credit-Cost en-tête. Vous pouvez voir si votre compte est actuellement admissible dans votre tableau de bord.
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 |
Codes d'erreur
| Code de statut | Facturé ? | Descriptif |
|---|---|---|
| 400 | Non | Aucun filtre n'a été fourni. |
| 400 | Non | Un paramètre a une valeur invalide. Le message d'erreur nomme le paramètre et les valeurs acceptées. |
| 400 | Non | Un paramètre inconnu a été fourni. Le message d'erreur le nomme. |
| 400 | Non | Invalide cursor, ou cursor combiné avec un autre paramètre. |
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édit est appliqué. Cela décourage les abus tout en gardant les recherches spéculatives peu coûteuses.
Avec la valeur par défaut use_cache=if-recent, les résultats positifs et sans e-mail sont mis en cache pendant 29 jours. Un produit qui a déjà payé pour la même requête normalisée et la même version du cache reçoit les réponses répétées pour 0 crédit. Après l’expiration ou l’actualisation du résultat en cache, la première requête pour la nouvelle version est facturée normalement.
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" \
--data-urlencode "use_cache=if-recent" \
"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 |
use_cache |
Non | Contrôle l'utilisation du cache. Insensible à la casse. Valeurs : if-recent (par défaut ; utilise les résultats positifs ou sans e-mail datant de 29 jours au maximum, sinon effectue une recherche en direct), if-present (utilise tout résultat positif en cache ; les résultats sans e-mail expirent après 29 jours), if-present-only (retourner uniquement le cache ; retourner 404 si absent), never (effectue toujours une recherche en direct). Les valeurs non valides utilisent la valeur par défaut de l’endpoint. |
if-recent |
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 pour un nouveau résultat positif, 0.5 pour un nouveau résultat négatif et 0 pour une répétition de cache autorisée. |
0, 0.5, 2 |
X-NinjaPear-Cache-Age-Days |
Âge du résultat retourné en jours entiers. Les nouveaux résultats d’une recherche en direct retournent 0. |
12 |
Codes d'erreur
| Code de statut | Facturé ? | Descriptif |
|---|---|---|
| 400 | Non | Manquant ou invalide first_name / domain. |
| 403 | Non | Crédits insuffisants. |
| 404 | Non | Aucun résultat en cache n’a été trouvé avec use_cache=if-present-only. |
| 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.
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, role, et location produira de meilleurs résultats que work_email seul.
curl -G \
-H "Authorization: Bearer YOUR_API_KEY" \
--data-urlencode "[email protected]" \
--data-urlencode "location=San Francisco, California, United States" \
"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 |
location |
Non | Indication de localisation au format libre utilisée pour améliorer la précision de la correspondance de personnes. | Austin, Texas, United States |
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 : detailed (par défaut; attend l'enrichissement détaillé avant de répondre), fast (répond rapidement et lance l'enrichissement détaillé en arrière-plan).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=detailed lorsque vous avez besoin de la réponse complète et que cela ne vous dérange pas d'attendre. Utilisez enrichment=fast lorsque vous avez besoin d'un résultat rapide pour des cas d'utilisation comme remplir une interface utilisateur. |
detailed |
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 détaillé mis en cache ou un résultat d'enrichissement détaillé. Pour enrichment=fast, 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 | Format d'e-mail invalide |
| 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 - consultez 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 | Format d'e-mail invalide |
| 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 détaillées par cible définissant les éléments à surveiller (blog, X, site web, YouTube) et leur fréquence.
- Les sources sont des URL facultatives propres à la cible. Une cible peut utiliser la détection automatique ou une liste manuelle comprenant jusqu’à 10 URL de blogs.
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 rss_url et json_url afin que vous puissiez consommer les mêmes mises à jour en RSS ou en flux JSON.
2. Consommer le flux: Copier rss_url dans un lecteur RSS, ou utilisez json_url depuis une application ou un agent. Les articles de blog, publications X et modifications de sites web de toutes les cibles apparaissent comme des éléments dans un seul flux.
Chaque élément inclut une catégorie (blog, x, website update, ou website new page). Voir Point de terminaison de consommation de flux RSS et Point de terminaison de consommation de flux JSON pour les schémas de flux.
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"
Paramètres URL
| Paramètre | Requis | Descriptif | Exemple |
|---|---|---|---|
include_targets |
Non | Définissez sur true pour inclure le tableau targets complet de chaque flux. La valeur par défaut est false. |
true |
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",
"json_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/feed.json?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" |
json_url |
L’URL du flux JSON. Pour les flux privés, elle inclut un paramètre de requête de jeton. | "https://nubela.co/api/v1/monitor/feeds/feed_abc123/feed.json?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
},
"sources": {
"blog": [
{
"blog_url": "https://stripe.com/blog",
"rss_url": "https://stripe.com/blog/feed.rss"
},
{
"blog_url": "https://stripe.com/newsroom"
}
]
}
},
{
"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",
"json_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/feed.json?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. La cible stockée peut utiliser son host nu résolu ou www host HTTPS. |
"https://stripe.com" |
settings |
Non | Préférences de suivi. Si omises, les valeurs par défaut s'appliquent. | Voir Objet Paramètres |
sources |
Non | Remplacements de sources propres à la cible, avec jusqu’à 10 URL de blogs. | Voir la section Objet Sources. |
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 une
website_url. La validation essaie le host nu HTTPS, puis sonwwwhôte, et suit les redirections. La réponse stocke l'URL de travail. Les URL inaccessibles retournent400. - Au moins un paramètre de Monitor (
monitor_blog,monitor_x,monitor_website,monitor_youtube) doit êtretruepar cible. - La liste des sources de blogs accepte au maximum 10 entrées. Chaque URL de blog et URL RSS facultative doit être une URL HTTP ou HTTPS accessible.
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 résolue surveillée pour l'entreprise | "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" |
blog_sources |
Blog et URL RSS surveillés. Chaque entrée a blog_url, rss_url, et source ("auto" pour la découverte par scanner, "manual" pour une correction par l'utilisateur). Vide jusqu'à ce que la première vérification les découvre. |
[{"blog_url": "https://stripe.com/blog", "rss_url": "https://stripe.com/blog/feed.rss", "source": "auto"}] |
blog_source_mode |
Indique si les sources de blogs utilisent la détection automatique ou la liste manuelle de la cible. Cela distingue une liste manuelle vide des sources qui n’ont pas encore été découvertes. | "auto" |
x_profile |
Le profil X (Twitter) surveillé avec username, url, et source, ou null s'il n'a pas encore été découvert |
{"username": "stripe", "url": "https://x.com/stripe", "source": "auto"} |
youtube_channel |
La chaîne YouTube surveillée avec handle, url, et source, ou null s'il n'a pas encore été découvert |
{"handle": "@StripeOfficial", "url": "https://www.youtube.com/channel/UCd1mYewCZ7vqCghBc-9wcRQ", "source": "auto"} |
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",
"json_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/feed.json?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.
L'URL cible est résolue lors de la validation. La cible renvoyée peut utiliser le host nu HTTPS ou son www équivalent, le cas échéant, a été accessible.
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
},
"sources": {
"blog": [
{"blog_url": "https://shopify.com/blog"},
{"blog_url": "https://shopify.com/news", "rss_url": "https://shopify.com/news.xml"}
]
}
}' \
"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. La cible stockée peut utiliser son host nu résolu ou www host HTTPS. |
"https://shopify.com" |
settings |
Non | Préférences de suivi. Si omises, les valeurs par défaut s'appliquent. | Voir Objet Paramètres |
sources |
Non | Remplacements de sources propres à la cible, avec jusqu’à 10 URL de blogs. | Voir la section Objet Sources. |
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 surveillance pour une cible spécifique, et/ou corrige les URL de source (blog, profil X, chaîne YouTube) quand la découverte automatique s'est trompée.
curl -X PATCH \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"settings": {
"frequency_days": 1,
"monitor_website": true
},
"sources": {
"blog": [
{
"blog_url": "https://stripe.com/blog",
"rss_url": "https://stripe.com/blog/feed.rss"
},
{
"blog_url": "https://stripe.com/newsroom"
}
],
"x": {"username": "stripe"},
"youtube": {"url": "https://www.youtube.com/@StripeOfficial"}
}
}' \
"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
Au moins l'un de settings ou sources est requis.
| Paramètre | Requis | Descriptif | Exemple |
|---|---|---|---|
settings |
Non | Mise à jour partielle des paramètres. Seuls les champs fournis sont modifiés. | Voir Objet Paramètres |
sources |
Non | Corrections manuelles des URL de source surveillées. Seuls les canaux fournis sont modifiés. | Voir Objet Sources |
Objet Sources
Le canal blog accepte un tableau comprenant jusqu’à 10 objets source. Les canaux X et YouTube acceptent un objet. Chaque canal accepte également null pour supprimer sa correction manuelle et rétablir la détection automatique. Les canaux omis restent inchangés. Une correction manuelle fait autorité pour cette cible et prend effet à la prochaine interrogation; le canal corrigé redéfinit silencieusement sa référence afin que votre flux ne soit pas inondé par son historique.
Pour les sources de blogs, un tableau vide est différent de null. Un tableau vide enregistre une liste manuelle vide et désactive le monitoring des blogs. Null supprime la liste manuelle et rétablit la détection automatique. L’ancien format à objet unique reste accepté pour la rétrocompatibilité, mais les nouvelles intégrations doivent toujours envoyer un tableau.
Définir une source ne permet pas par elle-même de surveiller un canal désactivé. Pour corriger une URL sur un canal désactivé et commencer à le surveiller, transmettez l'indicateur correspondant settings indicateur (par exemple monitor_youtube: true) dans la même demande. Le tableau de bord le fait automatiquement.
| Paramètre | Requis | Descriptif | Exemple |
|---|---|---|---|
blog |
Non | Tableau comprenant jusqu’à 10 objets d’URL de blog et d’URL RSS facultative. Utilisez un tableau vide pour n’enregistrer aucun blog manuel, ou null pour rétablir la détection automatique. Les URL doivent être accessibles. | [{"blog_url": "https://stripe.com/blog"}] |
x |
Non | {"username": "..."} (handle seul, @handle, ou URL de profil complet) ou {"url": "..."}, ou null pour revenir. |
{"username": "stripe"} |
youtube |
Non | {"url": "..."} avec une URL de canal (youtube.com/channel/UC..., /@handle, /c/..., ou /user/...), ou null pour revenir en arrière. Les URL de handle sont résolues vers la chaîne canonique. |
{"url": "https://www.youtube.com/@StripeOfficial"} |
Réponse
Retourne le/la mis(e) à jour Objet cible. Les canaux corrigés indiquent des sources manuelles dans les champs de réponse du blog, de X et de YouTube. Le mode de source du blog indique manuel même lorsque la liste manuelle enregistrée est vide.
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": null,
"is_baseline_complete": true,
"created_at": "2026-02-24T09:55:00Z",
"blog_sources": [
{
"blog_url": "https://stripe.com/blog",
"rss_url": "https://stripe.com/blog/feed.rss",
"source": "manual"
}
],
"blog_source_mode": "manual",
"x_profile": {
"username": "stripe",
"url": "https://x.com/stripe",
"source": "manual"
},
"youtube_channel": {
"handle": "@StripeOfficial",
"url": "https://www.youtube.com/channel/UCd1mYewCZ7vqCghBc-9wcRQ",
"source": "manual"
}
}
Codes d'erreur
| Code de statut | Facturé ? | Descriptif |
|---|---|---|
| 400 | Non | Aucun paramètre valide de paramètres ou de sources fournis |
| 400 | Non | Correction de source invalide (canal non pris en charge, URL malformée ou inaccessible, URL YouTube qui ne se résout pas en un canal) |
| 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 |
Point de terminaison de consommation de flux RSS
GET /api/v1/monitor/feeds/{feed_id}/rss.xml
Coût : 0 crédits par requête. Des coûts de surveillance sont facturés à chaque extraction de chaque cible. Voir Tarifs.
Renvoie un flux XML RSS 2.0 paginé par curseur, utilisable par les lecteurs RSS (Feedly, Slack, extensions de navigateur, etc.). Chaque page contient au plus 1 000 éléments.
Si le is_public est false, authentifiez-vous soit avec le token paramètre de requête ou une Authorization: Bearer clé API appartenant au produit du flux. Utilisez le jeton de requête pour les lecteurs RSS et les autres clients qui ne peuvent pas définir d'en-têtes de requête.
curl "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=YOUR_RSS_TOKEN&max_items=100"
curl \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?max_items=100"
Exemple de réponse :
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ninjapear="https://ninjapear.com/ns/monitor/1.0">
<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: New blog post about enterprise pricing</title>
<link>https://shopify.com/blog/enterprise-pricing</link>
<ninjapear:sourceLink>https://shopify.com/blog</ninjapear:sourceLink>
<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 |
token |
Non | Identifiant facultatif de flux privé. Utilisez le jeton renvoyé dans l'objet de flux lorsque le client ne peut pas envoyer d'en-tête bearer. | YOUR_RSS_TOKEN |
target_id |
Non | Renvoie les mises à jour pour une cible active du flux. | target_xyz789 |
max_items |
Non | Nombre maximal d’éléments à renvoyer. Entier de 1 via 1000. Par défaut à 1000. |
100 |
cursor |
Non | Curseur opaque renvoyé dans l’ Link . Utilisez-le sans le modifier pour demander la page suivante, plus ancienne. |
eyJhbGciOi... |
after_guid |
Non | Renvoie uniquement les éléments plus récents que ce GUID. Utilisez ceci pour l’interrogation. Le GUID doit exister dans le flux demandé et le périmètre de cible facultatif. | x_post_123456789 |
Format de réponse
Le corps de la réponse est un document XML RSS 2.0 standard. Sa structure est la suivante.
Lorsqu’une autre page est disponible, la réponse inclut un en-tête HTTP standard Link en-tête. Suivez son URL sans la modifier, y compris son curseur signé et ses filtres d'origine. Les liens authentifiés par jeton incluent le jeton. Les clients authentifiés par bearer doivent conserver l'en-tête Authorization lorsqu'ils suivent l'URL.
Link: <https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?max_items=100&cursor=eyJhbGciOi...>; rel="next"
Lors de l’interrogation avec after_guid, enregistrez le GUID de l’élément le plus récent que vous avez traité. Lors de la requête suivante, transmettez-le comme after_guid; le point de terminaison renvoie uniquement les éléments plus récents. Un GUID absent ou hors périmètre renvoie 400 Bad Request.
É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 de mise à jour directe lorsqu’elle est identifiée, sinon la page source surveillée | https://stripe.com/blog/global-network-2026 |
<ninjapear:sourceLink> |
Page source surveillée lorsque <link> est une URL de mise à jour directe |
https://shopify.com/blog |
<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 |
|---|---|---|
| 400 | Non | Paramètres de page non valides ou after_guid |
| 401 | Non | Clé API bearer non valide |
| 403 | Non | Identifiants manquants ou non valides pour un flux privé |
| 404 | Non | Flux introuvable |
| 429 | Non | Limite de débit de l’API gratuite dépassée |
Point de terminaison de consommation de flux JSON
GET /api/v1/monitor/feeds/{feed_id}/feed.json
Coût : 0 crédits par requête. Des coûts de surveillance sont facturés à chaque extraction de chaque cible. Voir Tarifs.
Renvoie des mises à jour paginées par curseur au format JSON Feed 1.1. Les flux privés acceptent soit le token paramètre de requête ou une Authorization: Bearer clé API appartenant au produit du flux.
curl "https://nubela.co/api/v1/monitor/feeds/feed_abc123/feed.json?token=YOUR_RSS_TOKEN&target_id=target_xyz789&max_items=100"
curl \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://nubela.co/api/v1/monitor/feeds/feed_abc123/feed.json?target_id=target_xyz789&max_items=100"
Paramètres URL
| Paramètre | Requis | Descriptif | Exemple |
|---|---|---|---|
feed_id |
Oui | L'identifiant du flux | feed_abc123 |
token |
Non | Identifiant facultatif de flux privé. Utilisez le jeton renvoyé dans l'objet de flux lorsque le client ne peut pas envoyer d'en-tête bearer. | YOUR_RSS_TOKEN |
target_id |
Non | Renvoie les mises à jour pour une cible active du flux. | target_xyz789 |
max_items |
Non | Nombre maximal d’éléments à renvoyer. Entier de 1 via 1000. Par défaut à 1000. |
100 |
cursor |
Non | Curseur opaque renvoyé dans l’ Link . Utilisez-le sans le modifier pour demander la page suivante, plus ancienne. |
eyJhbGciOi... |
after_guid |
Non | Renvoie uniquement les éléments plus récents que ce GUID. Utilisez ceci pour l’interrogation. Le GUID doit exister dans le flux demandé et le périmètre de cible facultatif. | x_post_123456789 |
Format de réponse JSON Feed
La réponse a le type de contenu application/feed+json et est un document JSON Feed 1.1. Son items tableau contient des objets de mise à jour. Chaque mise à jour inclut id, target_id, url, title, content_text, et date_published. Les champs facultatifs sont summary, tags, authors, et attachments; chaque pièce jointe comprend url, mime_type, et size_in_bytes.
Champs de réponse JSON Feed
| Clé | Descriptif | Exemple |
|---|---|---|
version |
URL de la version JSON Feed | https://jsonfeed.org/version/1.1 |
title |
Le nom du flux | SaaS Competitors |
description |
Description du flux | Automated updates for Stripe, Shopify, and Vercel. |
feed_url |
URL de cette page de flux | https://nubela.co/api/v1/monitor/feeds/feed_abc123/feed.json |
date_modified |
Heure de génération du document | 2026-02-24T14:30:00+08:00 |
next_url |
URL de la page suivante, lorsqu’elle est disponible | https://nubela.co/.../feed.json?cursor=eyJhbGciOi... |
items |
Liste d’éléments de mise à jour | Voir Objet d’élément JSON Feed |
Objet d’élément JSON Feed
| Clé | Descriptif | Exemple |
|---|---|---|
id |
Identifiant unique de la mise à jour | https://stripe.com/blog/global-network-2026 |
target_id |
Identifiant de la cible surveillée | target_xyz789 |
url |
URL de mise à jour directe lorsqu’elle est identifiée, sinon la page source surveillée | https://stripe.com/blog/global-network-2026 |
title |
Titre de la mise à jour | Stripe: Expanding our Global Payment Network |
content_text |
Contenu texte brut de la mise à jour | Stripe is expanding its payments infrastructure... |
date_published |
Horodatage de publication | 2026-02-23T14:30:00+08:00 |
summary |
Résumé facultatif de la mise à jour | Stripe is expanding its payments infrastructure... |
tags |
Liste des catégories de mise à jour | ["blog"] |
authors |
Liste d’objets créateurs de mise à jour | Voir Objet d’auteur JSON Feed |
attachments |
Liste d’objets de pièces jointes multimédias | Voir Objet de pièce jointe JSON Feed |
_ninjapear_monitor |
Métadonnées NinjaPear facultatives contenant la page source lorsque url est directe |
{"source_url":"https://shopify.com/blog"} |
Objet d’auteur JSON Feed
| Clé | Descriptif | Exemple |
|---|---|---|
name |
Nom du créateur de la mise à jour | Stripe |
Objet de pièce jointe JSON Feed
| Clé | Descriptif | Exemple |
|---|---|---|
url |
URL de la pièce jointe | https://b.stripecdn.com/blog/og-image.jpg |
mime_type |
Type MIME de la pièce jointe | image/jpeg |
size_in_bytes |
Taille de la pièce jointe en octets | 150000 |
Lorsqu’une autre page est disponible, next_url contient l’URL complète de la page suivante. La réponse inclut également l’en-tête HTTP équivalent Link avec rel="next". Les URL authentifiées par jeton incluent le jeton. Les clients authentifiés par bearer doivent conserver l'en-tête Authorization lorsqu'ils suivent l'une ou l'autre URL.
{
"version": "https://jsonfeed.org/version/1.1",
"title": "SaaS Competitors",
"description": "Automated updates for Stripe, Shopify, and Vercel.",
"feed_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/feed.json",
"next_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/feed.json?max_items=100&cursor=eyJhbGciOi...",
"items": [
{
"id": "https://stripe.com/blog/global-network-2026",
"target_id": "target_xyz789",
"url": "https://stripe.com/blog/global-network-2026",
"title": "Stripe: Expanding our Global Payment Network",
"content_text": "Stripe is expanding its payments infrastructure to 15 new countries, enabling merchants to accept local payment methods seamlessly.",
"summary": "Stripe is expanding its payments infrastructure to 15 new countries, enabling merchants to accept local payment methods seamlessly.",
"date_published": "2026-02-23T14:30:00+08:00",
"tags": ["blog"],
"authors": [{"name": "Stripe"}],
"attachments": [
{
"url": "https://b.stripecdn.com/blog/og-global-network.jpg",
"mime_type": "image/jpeg",
"size_in_bytes": 150000
}
]
},
{
"id": "website_update_shopify_blog_1708416000",
"target_id": "target_xyz789",
"url": "https://shopify.com/blog/enterprise-pricing",
"title": "Shopify: New blog post about enterprise pricing",
"content_text": "Shopify added a blog post about enterprise pricing.",
"date_published": "2026-02-20T08:00:00+08:00",
"tags": ["website update"],
"_ninjapear_monitor": {
"source_url": "https://shopify.com/blog"
}
}
]
}
Codes d'erreur
| Code de statut | Facturé ? | Descriptif |
|---|---|---|
| 400 | Non | Paramètres de page non valides ou after_guid |
| 401 | Non | Clé API bearer non valide |
| 403 | Non | Identifiants manquants ou non valides pour un flux privé |
| 404 | Non | Flux introuvable |
| 429 | Non | Limite de débit de l’API gratuite dépassée |
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=...",
"json_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/feed.json?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 |
Intégrations d'agents IA
NinjaPear fournit un serveur MCP hébergé pour Claude, OpenAI Codex, OpenCode et les autres clients compatibles avec Streamable HTTP. Il permet à un agent IA d'interroger des données B2B d'entreprise en direct et de gérer directement les flux de surveillance.
Démarrage rapide
- Ouvrez le paramétrage MCP dans votre tableau de bord
- Choisissez Claude, OpenAI Codex ou OpenCode
- Copiez l'endpoint et la configuration générés
- Redémarrez le client et vérifiez que
ninjapearapparaît dans sa liste de serveurs MCP
Configuration
L'endpoint Streamable HTTP recommandé est https://nubela.co/mcp. Le tableau de bord génère la configuration d'authentification adaptée à chaque client.
Plateforme Claude
- Obtenez votre chaîne de connexion depuis le paramétrage MCP
- 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
Utiliser YOUR_API_KEY, puis ajoutez le serveur Streamable HTTP :
claude mcp add --transport http ninjapear "https://nubela.co/mcp?api_key=YOUR_API_KEY"
OpenAI Codex
Définir NINJAPEAR_API_KEY, puis ajoutez ceci à ~/.codex/config.toml:
La CLI Codex, l'application de bureau et l'extension IDE partagent cette configuration. Redémarrez Codex et exécutez /mcp pour confirmer la connexion.
OpenCode
Définir NINJAPEAR_API_KEY, puis ajoutez ceci à opencode.json:
Redémarrez OpenCode et exécutez opencode mcp list pour confirmer la connexion.
Outils disponibles
| Outil | Descriptif | Coût |
|---|---|---|
get_customer_listing |
Obtenir les clients, investisseurs et partenaires | 1 + 2/entreprise |
get_competitor_listing |
Obtenir les concurrents et les raisons de concurrence | 2/competitor, minimum 5 |
get_product_listing |
Obtenir les produits, services, tarifs et positionnement | 3 crédits |
search_products |
Trouvez les produits par sens, intégration, plateforme et tarification | GRATUIT |
get_product_details |
Obtenez l'enregistrement complet d'un produit | 1 crédit |
get_company_details |
Obtenir les métadonnées, dirigeants, sites et liens d'une entreprise | 3 + selected enrichments |
get_employee_count |
Obtenir l'effectif | 2 crédits |
get_company_updates |
Obtenir les mises à jour récentes du blog et de X | 2 crédits |
get_company_funding |
Obtenir les levées de fonds et les investisseurs | 2 + 1/investor |
lookup_company_website |
Associer un nom d'entreprise à son site web | Voir la tarification de l'endpoint |
get_person_profile |
Obtenir le profil professionnel d'une personne | 3 crédits |
get_similar_people |
Trouver des personnes ayant le même rôle dans des entreprises concurrentes | 10 + 5/attempt |
get_work_email |
Trouver ou déduire l'adresse e-mail professionnelle d'une personne | 2 hit, 0.5 miss |
search_employees |
Rechercher les employés d'une entreprise par rôle et lieu | 3 crédits |
search_companies |
Trouver des entreprises par secteur d'activité, localisation, taille et financement | 2 crédits, gratuit si vide |
check_disposable_email |
Vérifier si une adresse e-mail est jetable ou gratuite | GRATUIT |
get_credit_balance |
Consulter le solde de crédits actuel | GRATUIT |
get_company_logo |
Récupérer le logo d'une entreprise comme contenu d'image MCP | GRATUIT |
get_company_logo_url |
Obtenir l'URL API du logo de l'entreprise; une authentification est requise | GRATUIT |
list_feeds |
Lister les flux de surveillance, avec leurs cibles si demandé | GRATUIT |
create_feed |
Créer un flux de surveillance | 3 crédits |
describe_feed |
Obtenir les détails et les cibles d'un flux | GRATUIT |
update_feed |
Mettre à jour les paramètres du flux et les notifications par e-mail | GRATUIT |
delete_feed |
Supprimer un flux et ses cibles | GRATUIT |
add_target |
Ajouter une cible avec des URL de blogs manuelles facultatives | GRATUIT |
update_target |
Mettre à jour les paramètres ou jusqu’à 10 URL de blogs manuelles | GRATUIT |
remove_target |
Supprimer une entreprise cible | GRATUIT |
consume_feed |
Lire les mises à jour paginées du flux RSS sous forme de données structurées | GRATUIT |
consume_json_feed |
Lire les mises à jour paginées du flux JSON | GRATUIT |
Exemples de prompts
Une fois connecté, vous pouvez poser à l'agent choisi des questions comme :
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 échecs des outils MCP définissent isError et incluent le même objet d'erreur JSON dans le contenu textuel et le contenu structuré. Chaque erreur contient status_code, error_code, message, attempts, et request_id.
Les requêtes GET en lecture seule ne sont réessayées que pour les réponses HTTP 429 et HTTP 503 réelles, avec un maximum de trois tentatives au total. Une réponse HTTP 200 en streaming contenant error_code=service_temp_unavailable est immédiatement convertie en erreur d'outil HTTP 503 structurée, sans nouvelle tentative. Les mutations, délais d'attente, échecs de connexion, échecs d'analyse et tous les autres codes d'état ne sont pas réessayés.
Détails techniques
Protocole MCP
Le serveur MCP NinjaPear implémente le Model Context Protocol . Les annotations des outils indiquent aux clients quelles opérations sont en lecture seule, modifient des données ou sont destructives. Les instructions du serveur demandent aussi aux agents d'exécuter en parallèle les requêtes indépendantes en lecture seule, tout en gardant séquentielles les opérations dépendantes et les mutations.
Transport
Streamable HTTP est le transport recommandé :
- Endpoint Streamable HTTP:
https://nubela.co/mcp - Contrôle d'état:
GET /mcp/health
Les connexions SSE existantes restent prises en charge :
- Endpoint SSE:
GET /mcp/sse?api_key=YOUR_API_KEY - Endpoint Messages:
POST /mcp/messages/
Authentification
Transmettez votre clé API avec Authorization: Bearer YOUR_API_KEY, le X-API-Key , l'en-tête ou le api_key paramètre de requête. L'authentification Bearer est recommandée pour Codex, OpenCode et Claude Code. Le paramètre de requête reste disponible pour les connecteurs Claude personnalisés et les clients SSE existants.
