Довідник API

Шукайте контакти, прямо з вашого агента.

Один ендпоінт для пошуку бізнес-контактів за галуззю, містом чи країною — наша власна зрозуміла термінологія, а не низькорівневі параметри для прямої передачі.

Огляд

API B2BLeads — це єдиний ендпоінт для пошуку, зручний для MCP. Базовий URL:

bash
https://api.b2bleadsapi.com

Кожна відповідь у форматі JSON. SDK не потрібен — прості HTTPS-запити працюють з будь-якої мови програмування або через нативний виклик інструментів AI-агентом.

Автентифікація

Передавайте свій API-ключ як bearer-токен. Створюйте ключі в панелі керування в розділі API-ключі.

bash
Authorization: Bearer b2bl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Запити без дійсного ключа повертають 401 Unauthorized. Кожен ключ має обмеження за кількістю запитів на хвилину та обмежений місячною квотою пошуків згідно з вашим тарифом.

GET /v1/search-leads

Знаходить компанії за вашою власною зрозумілою термінологією пошуку — чіткі, цілеспрямовані параметри замість низькорівневих полів запиту. Потрібен хоча б один із параметрів q, industry або city.

Параметри запиту

ПараметрТипОпис
qstringДовільний текстовий запит, напр. "сімейні пекарні". Необов'язковий, якщо задано industry або city.
industryenumОдне зі значень нашого власного переліку галузей — повний список див. у GET /v1/search-leads/industries.
citystringНазва міста або регіону, напр. "Мюнхен" або "Остін, Техас". Поєднуйте з radius_km для обмеженого пошуку.
radius_kmnumberРадіус пошуку навколо міста, в кілометрах (максимум 50). Ігнорується без city.
min_ratingnumber 0–5Повертати лише компанії з рейтингом не нижче зазначеного, фільтрація виконується на сервері для коректної пагінації.
has_websitebooleantrue — повертати лише компанії з вказаним веб-сайтом.
verified_onlybooleantrue — виключити компанії, які постійно або тимчасово закриті.
open_nowbooleantrue — повертати лише компанії, які зараз відкриті.
price_levelenum, comma-separatedОдне або кілька значень: budget, moderate, expensive, luxury. Напр. price_level=budget,moderate.
rank_byenumrelevance (за замовчуванням) або distance. Для distance обов'язково має бути задано city.
limitnumber 1–20Максимальна кількість результатів на сторінку. За замовчуванням 20 (максимум на один запит).
page_tokenstringЗначення nextPageToken з попередньої відповіді для отримання наступної сторінки. Якщо задано, усі інші фільтри ігноруються (вони вже закладені в токен).
langstringМова для назв/адрес результатів, напр. "pt" або "pt-BR". Перевизначає мову панелі керування вашого акаунта для цього запиту; якщо не вказано, використовується мова акаунта.
list_idstringЗберегти ці результати в наявний список, яким ви володієте. У відповідь додається об'єкт savedTo.
list_namestringЗберегти в список із такою назвою, створивши його, якщо він ще не існує. Ігнорується, якщо також задано list_id.
save_to_listbooleantrue — зберігає в список із назвою "API searches" (створюється при першому використанні), якщо не задано ні list_id, ні list_name.

Приклад запиту

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"

Приклад відповіді

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

Передайте nextPageToken назад як page_token, щоб отримати наступну сторінку. Він стає null, коли результатів більше немає.

Примітка для AI-агентів: на тарифах із Email Finder поле email збереженого контакту може повернутися як буквальний рядок CFD* замість адреси. Це означає, що кожна спроба збору даних (звичайний HTTP-запит, потім резервний варіант через headless-браузер) була заблокована захистом від ботів Cloudflare на цільовому сайті — це не порожній результат і не помилка, і повторна спроба на тому самому сайті не буде успішною. Сприймайте CFD* як "електронна адреса недоступна", а не як реальну адресу, і не показуйте це кінцевому користувачеві як його контактну електронну пошту.

Спробувати наживо

Спробувати

Запит надсилається прямо з вашого браузера до реального API — це враховується у вашій квоті. Ваш ключ залишається в цьому браузері (localStorage) і ніколи не надсилається нікуди, крім api.b2bleadsapi.com.

GET /v1/search-leads/industries

Публічний ендпоінт без автентифікації — повертає поточний перелік підтримуваних значень industry, щоб клієнтам і агентам ніколи не доводилося прописувати їх у коді.

curl
curl "https://api.b2bleadsapi.com/v1/search-leads/industries"
json
{
  "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" }
  ]
}

Спробувати наживо

Спробувати

Публічний ендпоінт, API-ключ не потрібен.

Помилки

Помилки повертаються у вигляді простого JSON з одним полем error.

ПараметрТипОпис
400Bad RequestВідсутні всі з q/industry/city, невідоме значення industry/price_level/rank_by, rank_by=distance без city, або radius_km/min_rating/limit поза допустимим діапазоном.
401UnauthorizedВідсутній або недійсний API-ключ.
402Payment RequiredПеревищено місячну квоту пошуків для тарифу цього ключа.
403ForbiddenАкаунт призупинено або заблоковано.
429Too Many RequestsПеревищено ліміт запитів для ключа — зменшіть частоту запитів і повторіть спробу.
502Bad GatewayПомилка постачальника пошуку даних; можна безпечно повторити запит.
503Service UnavailableПошук контактів тимчасово вимкнено через feature flag.

Ліміти запитів і квота

Кожен API-ключ має ліміт запитів на хвилину та місячну квоту пошуків, обидва визначаються вашим тарифом. Перевірити поточне використання можна в будь-який момент у розділі панелі керування Оплата або через ендпоінт GET /v1/billing, якщо ви автентифіковані токеном сесії.

Використання як MCP-інструмент

Ми публікуємо офіційний MCP-сервер, який обгортає цей API у п'ять інструментів — search_leads, list_industries, list_saved_lists, get_saved_list і find_email — для Claude Desktop, Claude Code, Cursor, ChatGPT, Gemini/Antigravity, Grok Build, GitHub Copilot та будь-якого іншого MCP-сумісного клієнта. Ручна інтеграція через REST не потрібна.

Додайте його до конфігурації вашого MCP-клієнта з API-ключем зі сторінки API-ключі:

json
{
  "mcpServers": {
    "b2bleads": {
      "command": "npx",
      "args": ["-y", "b2bleads-mcp"],
      "env": {
        "B2BLEADS_API_KEY": "your-api-key-here"
      }
    }
  }
}

Хочете підключити самостійно через звичайний REST? Наведені вище параметри напряму відповідають вхідній схемі інструмента — агент обирає галузь і місто звичайною мовою, а B2BLeads сам перетворює це на реальний пошуковий запит.

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

Окремий інструмент виконує вичерпний пошук по всьому місту — але з явним попередженням про підвищену вартість, щоб агенти не викликали його за замовчуванням:

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

Додаткові інструменти лише для читання доповнюють MCP-набір:

json
{
  "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 доступний на будь-якому платному тарифі (починаючи зі Starter) — на тому самому рівні, на якому search_leads вже автоматично збагачує результати електронними адресами. Без активного тарифу ключ отримає просту помилку "потрібне підвищення тарифу" замість результату.