Ein Endpunkt, um Geschäftskontakte nach Branche, Stadt oder Land zu finden — eigenes Vokabular statt technischer Low-Level-Parameter.
Die B2BLeads-API ist ein einzelner, MCP-freundlicher Such-Endpunkt. Basis-URL:
https://api.b2bleadsapi.comJede Antwort ist JSON. Es ist kein SDK erforderlich — einfache HTTPS-Anfragen funktionieren aus jeder Sprache oder über den nativen Tool-Aufruf eines KI-Agenten.
Übergib deinen API-Schlüssel als Bearer-Token. Erstelle Schlüssel im Dashboard unter API-Schlüssel.
Authorization: Bearer b2bl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAnfragen ohne gültigen Schlüssel liefern 401 Unauthorized. Jeder Schlüssel ist pro Minute rate-limitiert und durch das monatliche Suchkontingent deines Plans gedeckelt.
Findet Unternehmen anhand deines eigenen Suchvokabulars — saubere, zweckgebundene Optionen statt technischer Low-Level-Felder. Mindestens eines von q, industry oder city ist erforderlich.
| Parameter | Typ | Beschreibung |
|---|---|---|
| q | string | Freitext-Suche, z. B. "family-owned bakeries". Optional, wenn industry oder city gesetzt ist. |
| industry | enum | Einer unserer eigenen Branchenwerte — die vollständige Liste findest du unter GET /v1/search-leads/industries. |
| city | string | Stadt- oder Regionsname, z. B. "Munich" oder "Austin, TX". Kombiniere mit radius_km für eine begrenzte Suche. |
| radius_km | number | Suchradius um die Stadt, in Kilometern (max. 50). Wird ohne city ignoriert. |
| min_rating | number 0–5 | Gibt nur Unternehmen mit mindestens dieser Bewertung zurück, serverseitig gefiltert für korrekte Paginierung. |
| has_website | boolean | true, um nur Unternehmen mit hinterlegter Website zurückzugeben. |
| verified_only | boolean | true, um dauerhaft oder vorübergehend geschlossene Unternehmen auszuschließen. |
| open_now | boolean | true, um nur derzeit geöffnete Unternehmen zurückzugeben. |
| price_level | enum, comma-separated | Eines oder mehrere von: budget, moderate, expensive, luxury. Z. B. price_level=budget,moderate. |
| rank_by | enum | relevance (Standard) oder distance. distance erfordert, dass city gesetzt ist. |
| limit | number 1–20 | Maximale Ergebnisse pro Seite. Standard 20 (Obergrenze pro Anfrage). |
| page_token | string | Wert aus dem nextPageToken einer vorherigen Antwort, um die nächste Seite abzurufen. Wenn gesetzt, werden alle anderen Filter ignoriert (bereits im Token enthalten). |
| lang | string | Sprache für Ergebnisnamen/-adressen, z. B. "pt" oder "pt-BR". Überschreibt die Dashboard-Sprache deines Kontos für diese Anfrage; fällt bei Weglassen darauf zurück. |
| list_id | string | Speichert diese Ergebnisse in einer bestehenden, dir gehörenden gespeicherten Liste. Fügt der Antwort ein savedTo-Objekt hinzu. |
| list_name | string | Speichert in einer Liste mit diesem Namen und erstellt sie, falls sie noch nicht existiert. Wird ignoriert, wenn list_id ebenfalls gesetzt ist. |
| save_to_list | boolean | true speichert in einer Liste namens "API searches" (beim ersten Gebrauch erstellt), wenn weder list_id noch list_name angegeben ist. |
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..."
}Gib nextPageToken als page_token zurück, um die nächste Seite abzurufen. Der Wert ist null, sobald keine weiteren Ergebnisse vorliegen.
Hinweis für KI-Agenten: bei Plänen mit Email Finder kann das email-Feld eines gespeicherten Kontakts statt einer Adresse den wörtlichen String CFD* enthalten. Das bedeutet, dass jeder Scraping-Versuch (ein einfacher HTTP-Abruf, danach ein Headless-Browser-Fallback) durch den Cloudflare-Bot-Schutz der Zielseite blockiert wurde — es ist kein leeres Ergebnis und kein Fehler, und ein erneuter Versuch auf derselben Seite wird nicht erfolgreich sein. Behandle CFD* als "keine E-Mail verfügbar" statt als echte Adresse und melde es dem Endnutzer nicht als dessen Kontakt-E-Mail.
Wird direkt aus deinem Browser an die Live-API gesendet — das zählt gegen dein Kontingent. Dein Schlüssel bleibt in diesem Browser (localStorage) und wird nirgendwohin außer an api.b2bleadsapi.com gesendet.
Öffentlicher, nicht authentifizierter Endpunkt — liefert die aktuelle Liste unterstützter industry-Werte, sodass Clients und Agenten sie nie fest codieren müssen.
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" }
]
}Öffentlicher Endpunkt, kein API-Schlüssel nötig.
Fehler sind einfaches JSON mit einem einzelnen error-Feld.
| Parameter | Typ | Beschreibung |
|---|---|---|
| 400 | Bad Request | q/industry/city fehlen alle, unbekannter industry-/price_level-/rank_by-Wert, rank_by=distance ohne city, oder ein außerhalb des Bereichs liegender radius_km-/min_rating-/limit-Wert. |
| 401 | Unauthorized | Fehlender oder ungültiger API-Schlüssel. |
| 402 | Payment Required | Monatliches Suchkontingent für den Plan dieses Schlüssels überschritten. |
| 403 | Forbidden | Konto ist gesperrt oder gebannt. |
| 429 | Too Many Requests | Rate-Limit pro Schlüssel überschritten — drossle die Anfragen und versuche es erneut. |
| 502 | Bad Gateway | Der vorgelagerte Such-Provider ist ausgefallen; ein erneuter Versuch ist unbedenklich. |
| 503 | Service Unavailable | Die Kontaktsuche ist vorübergehend per Feature-Flag deaktiviert. |
Jeder API-Schlüssel hat ein Rate-Limit pro Minute und ein monatliches Suchkontingent, beide durch deinen Plan festgelegt. Die aktuelle Nutzung kannst du jederzeit im Dashboard unter Abrechnung einsehen, oder über den GET /v1/billing-Endpunkt, wenn du mit einem Session-Token authentifiziert bist.
Wir veröffentlichen einen offiziellen MCP-Server, der diese API als fünf Tools bereitstellt — search_leads, list_industries, list_saved_lists, get_saved_list und find_email — für Claude Desktop, Claude Code, Cursor, ChatGPT, Gemini/Antigravity, Grok Build, GitHub Copilot und jeden anderen MCP-kompatiblen Client. Keine manuelle REST-Integration nötig.
Füge ihn deiner MCP-Client-Konfiguration mit einem API-Schlüssel aus API-Schlüssel:
{
"mcpServers": {
"b2bleads": {
"command": "npx",
"args": ["-y", "b2bleads-mcp"],
"env": {
"B2BLEADS_API_KEY": "your-api-key-here"
}
}
}
}Möchtest du es lieber selbst über reines REST anbinden? Die obigen Parameter entsprechen direkt dem Input-Schema des Tools — der Agent wählt Branche und Stadt in natürlicher Sprache, und B2BLeads übersetzt das im Hintergrund in eine echte Such-Anfrage.
{
"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"
}
}Ein separates Tool übernimmt erschöpfende Suchen über eine ganze Stadt — jedoch mit einem ausdrücklichen Hinweis auf erhöhte Kosten, damit Agenten es nicht standardmäßig aufrufen:
{
"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"
}
}Weitere schreibgeschützte Tools ergänzen die MCP-Oberfläche:
{
"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 ist in jedem kostenpflichtigen Plan verfügbar (ab Starter) — derselben Stufe, die search_leads-Ergebnisse bereits automatisch mit E-Mails anreichert. Ohne aktiven Plan erhält der Schlüssel stattdessen schlicht einen "Upgrade erforderlich"-Fehler.