Un seul endpoint pour trouver des contacts professionnels par secteur, ville ou pays — votre propre vocabulaire, pas des paramètres de bas niveau.
L'API B2BLeads est un unique point d'accès de découverte compatible MCP. URL de base :
https://api.b2bleadsapi.comChaque réponse est au format JSON. Aucun SDK requis — de simples requêtes HTTPS fonctionnent depuis n'importe quel langage ou depuis l'appel d'outils natif d'un agent IA.
Transmettez votre clé API sous forme de jeton porteur (bearer token). Créez des clés depuis le tableau de bord, sous Clés API.
Authorization: Bearer b2bl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxLes requêtes sans clé valide renvoient 401 Unauthorized. Chaque clé est limitée en débit par minute et plafonnée par le quota de recherche mensuel de votre forfait.
Trouve des entreprises correspondant à votre propre vocabulaire de recherche — des options claires et conçues sur mesure plutôt que des champs de requête de bas niveau. Au moins un des paramètres q, industry ou city est requis.
| Paramètre | Type | Description |
|---|---|---|
| q | string | Requête en texte libre, par ex. "boulangeries familiales". Facultatif si industry ou city est défini. |
| industry | enum | Une de nos propres valeurs de secteur — voir GET /v1/search-leads/industries pour la liste complète. |
| city | string | Nom de ville ou de région, par ex. "Munich" ou "Austin, TX". À combiner avec radius_km pour une recherche délimitée. |
| radius_km | number | Rayon de recherche autour de la ville, en kilomètres (max 50). Ignoré sans city. |
| min_rating | number 0–5 | Ne renvoie que les entreprises ayant au moins cette note, filtrées côté serveur pour une pagination précise. |
| has_website | boolean | true pour ne renvoyer que les entreprises avec un site web référencé. |
| verified_only | boolean | true pour exclure les entreprises définitivement ou temporairement fermées. |
| open_now | boolean | true pour ne renvoyer que les entreprises actuellement ouvertes. |
| price_level | enum, comma-separated | Un ou plusieurs parmi : budget, moderate, expensive, luxury. Ex. price_level=budget,moderate. |
| rank_by | enum | relevance (par défaut) ou distance. distance nécessite que city soit défini. |
| limit | number 1–20 | Nombre maximal de résultats par page. Par défaut 20 (plafond par requête). |
| page_token | string | Valeur provenant du nextPageToken d'une réponse précédente, pour récupérer la page suivante. Lorsqu'elle est définie, tous les autres filtres sont ignorés (déjà intégrés au jeton). |
| lang | string | Langue des noms/adresses des résultats, par ex. "pt" ou "pt-BR". Remplace la langue du tableau de bord de votre compte pour cette requête ; y revient par défaut si omis. |
| list_id | string | Enregistre ces résultats dans une liste enregistrée existante que vous possédez. Ajoute un objet savedTo à la réponse. |
| list_name | string | Enregistre dans une liste portant ce nom, en la créant si elle n'existe pas encore. Ignoré si list_id est également défini. |
| save_to_list | boolean | true enregistre dans une liste nommée "API searches" (créée à la première utilisation) lorsque ni list_id ni list_name ne sont fournis. |
curl "https://api.b2bleadsapi.com/v1/search-leads?industry=construction&city=Munich&radius_km=25&min_rating=4&has_website=true&open_now=true&rank_by=distance" \
-H "Authorization: Bearer b2bl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"{
"results": [
{
"id": "ChIJ...",
"name": "Bauunion GmbH",
"address": "Landsberger Str. 12, 80339 München",
"phone": "+49 89 1234567",
"website": "https://bauunion.de",
"rating": 4.7,
"ratingCount": 128,
"status": "OPERATIONAL",
"priceLevel": null,
"openNow": true
}
],
"nextPageToken": "AY1v..."
}Renvoyez nextPageToken en tant que page_token pour récupérer la page suivante. Il vaut null lorsqu'il n'y a plus de résultats.
Note pour les agents IA : sur les forfaits avec Email Finder, le champ email d'un prospect enregistré peut renvoyer la chaîne littérale CFD* au lieu d'une adresse. Cela signifie que chaque tentative d'extraction (une requête HTTP simple, puis un repli via navigateur headless) a été bloquée par la protection anti-bot Cloudflare du site cible — ce n'est ni un résultat vide ni une erreur, et retenter sur le même site ne fonctionnera pas. Traitez CFD* comme "aucun e-mail disponible" plutôt que comme une adresse réelle, et ne le signalez pas à l'utilisateur final comme étant son e-mail de contact.
Envoyé directement depuis votre navigateur vers l'API en direct — ceci compte dans votre quota. Votre clé reste dans ce navigateur (localStorage), jamais envoyée ailleurs qu'à api.b2bleadsapi.com.
Endpoint public, non authentifié — renvoie la liste actuelle des valeurs industry prises en charge, afin que les clients et les agents n'aient jamais besoin de les coder en dur.
curl "https://api.b2bleadsapi.com/v1/search-leads/industries"{
"industries": [
{ "value": "construction", "label": "Construction" },
{ "value": "restaurants", "label": "Restaurants" },
{ "value": "retail", "label": "Retail" },
{ "value": "manufacturing", "label": "Manufacturing" },
{ "value": "logistics", "label": "Logistics & Freight" },
{ "value": "it_services", "label": "IT Services" },
{ "value": "healthcare", "label": "Healthcare" },
{ "value": "real_estate", "label": "Real Estate" },
{ "value": "hospitality", "label": "Hospitality" },
{ "value": "professional_services", "label": "Professional Services" }
]
}Endpoint public, aucune clé API requise.
Les erreurs sont au format JSON simple avec un unique champ error.
| Paramètre | Type | Description |
|---|---|---|
| 400 | Bad Request | Absence de q/industry/city, valeur industry/price_level/rank_by inconnue, rank_by=distance sans city, ou radius_km/min_rating/limit hors plage. |
| 401 | Unauthorized | Clé API manquante ou invalide. |
| 402 | Payment Required | Quota de recherche mensuel dépassé pour le forfait de cette clé. |
| 403 | Forbidden | Le compte est suspendu ou banni. |
| 429 | Too Many Requests | Limite de débit par clé dépassée — patientez puis réessayez. |
| 502 | Bad Gateway | Échec du fournisseur de découverte en amont ; nouvelle tentative possible. |
| 503 | Service Unavailable | La recherche de prospects est temporairement désactivée via un indicateur de fonctionnalité. |
Chaque clé API dispose d'une limite de débit par minute et d'un quota de recherche mensuel, tous deux définis par votre forfait. Consultez l'utilisation actuelle à tout moment depuis la page Facturation du tableau de bord, ou via l'endpoint GET /v1/billing si vous êtes authentifié avec un jeton de session.
Nous publions un serveur MCP officiel qui encapsule cette API sous forme de cinq outils — search_leads, list_industries, list_saved_lists, get_saved_list et find_email — pour Claude Desktop, Claude Code, Cursor, ChatGPT, Gemini/Antigravity, Grok Build, GitHub Copilot, et tout autre client compatible MCP. Aucune intégration REST manuelle nécessaire.
Ajoutez-le à la configuration de votre client MCP avec une clé API provenant de la Clés API:
{
"mcpServers": {
"b2bleads": {
"command": "npx",
"args": ["-y", "b2bleads-mcp"],
"env": {
"B2BLEADS_API_KEY": "your-api-key-here"
}
}
}
}Vous préférez le configurer vous-même en REST simple ? Les paramètres ci-dessus correspondent directement au schéma d'entrée de l'outil — l'agent choisit un secteur et une ville en langage naturel, et B2BLeads se charge de traduire cela en une requête de découverte en direct en coulisses.
{
"name": "search_leads",
"description": "Find companies by industry, city and radius",
"parameters": {
"q": "string, optional free-text query",
"industry": "enum, see /v1/search-leads/industries",
"city": "string",
"radius_km": "number, max 50",
"min_rating": "number 0-5",
"has_website": "boolean",
"verified_only": "boolean",
"open_now": "boolean",
"price_level": "enum, comma-separated: budget, moderate, expensive, luxury",
"rank_by": "enum: relevance, distance (requires city)",
"limit": "number 1-20",
"page_token": "string, from a previous response's nextPageToken"
}
}Un outil distinct gère les recherches exhaustives sur toute une ville — avec un avertissement explicite de coût élevé pour éviter qu'un agent l'appelle par défaut :
{
"name": "search_leads_advanced",
"description": "⚠️ Elevated cost: 9x the quota of a single search_leads call. Tiles a city into a 3x3 grid of sub-searches to return up to ~180 deduplicated businesses in one city, beyond search_leads' normal ~20-60 result ceiling. Only use when more results are explicitly needed for one city — never as a default. Does not support pagination.",
"parameters": {
"q": "string, optional free-text query",
"industry": "enum, see /v1/search-leads/industries",
"city": "string, required — ONLY the city name, e.g. \"Lyon\" (not the full search query)",
"min_rating": "number 0-5",
"has_website": "boolean",
"verified_only": "boolean",
"open_now": "boolean",
"price_level": "enum, comma-separated: budget, moderate, expensive, luxury"
}
}D'autres outils en lecture seule complètent la surface MCP :
{
"name": "list_industries",
"description": "List the industry values accepted by search_leads",
"parameters": {}
}
{
"name": "list_saved_lists",
"description": "List this account's saved lead lists",
"parameters": {}
}
{
"name": "get_saved_list",
"description": "Get the leads saved in a specific list",
"parameters": {
"list_id": "string, required — from list_saved_lists"
}
}
{
"name": "find_email",
"description": "Look up a best-effort contact email for a single business website",
"parameters": {
"website": "string, required, e.g. https://example.com"
}
}find_email est disponible sur tout forfait payant (à partir de Starter) — le même niveau qui enrichit déjà automatiquement les résultats de search_leads avec des e-mails. Sans forfait actif, la clé reçoit simplement une erreur "mise à niveau requise" au lieu d'un résultat.