Строка
  • Документация
  • API
Начало работы
Руководства
Примеры
    Примеры запросовПоиск и первый экспортФильтрация выборкиHybrid-поиск с фильтрами и колонкамиМассовая выгрузкаПовторная выгрузкаPython и обработка ошибок
Справка
API ReferenceAPI
Примеры

Python и обработка ошибок

Когда ручных curl недостаточно — автоматизируйте поиск, пагинацию и export. Ниже — рабочий скрипт и разбор типичных ошибок.


Скрипт: поиск и экспорт

Code
import requests API_BASE = "https://app.strokka.com/api/v1" API_KEY = "ваш_secretKey" # 1. Поиск search = requests.get(f"{API_BASE}/companies", params={ "search": "маркетинговое агентство", "searchMode": "hybrid", "limit": 100, }).json() ids = [c["id"] for c in search["companies"]] print(f"Найдено: {search['totalCount']}, на странице: {len(ids)}") # 2. Экспорт export = requests.post(f"{API_BASE}/companies/export", json={ "companyIds": ids, "key": API_KEY, }) if export.status_code == 200: data = export.json() print(f"Экспортировано: {len(data['companies'])}, " f"кредитов: {data['creditsUsed']}, " f"остаток: {data['creditsRemaining']}") elif export.status_code == 402: print("Недостаточно кредитов:", export.json()["detail"]) else: export.raise_for_status()

Что делает скрипт:

  1. GET /companies — бесплатный поиск, контакты с маской
  2. Собирает id с первой страницы
  3. POST /companies/export — полные контакты, списание кредитов
  4. Обрабатывает 402 отдельно — нехватка баланса

Пагинация в Python

Для массовой выгрузки обойдите страницы в цикле:

Code
def collect_ids(params, page_size=1000): ids = [] skip = 0 total = None while total is None or skip < total: resp = requests.get(f"{API_BASE}/companies", params={ **params, "limit": page_size, "skip": skip, }).json() total = resp["totalCount"] page_ids = [c["id"] for c in resp["companies"]] if not page_ids: break ids.extend(page_ids) skip += page_size print(f"Собрано: {len(ids)} / {total}") return ids

Использование:

Code
ids = collect_ids({ "search": "маркетинговое агентство", "searchMode": "hybrid", })

См. также Массовая выгрузка.


Сохранение export в файл

TerminalCode
curl -sS -X POST "https://app.strokka.com/api/v1/companies/export" \ -H "Content-Type: application/json" \ -d '{ "companyIds": [123456, 789012], "key": "ваш_secretKey" }' \ -o export_result.json

В Python:

Code
data = export.json() with open("export_result.json", "w", encoding="utf-8") as f: import json json.dump(data, f, ensure_ascii=False, indent=2)

Типичные ошибки

Проверка через curl

TerminalCode
# Неверный ключ → 401 curl -sS -w "\nHTTP %{http_code}\n" -X POST "https://app.strokka.com/api/v1/companies/export" \ -H "Content-Type: application/json" \ -d '{"companyIds":[1],"key":"invalid"}' # Несуществующие ID → 404, кредиты не списаны curl -sS -w "\nHTTP %{http_code}\n" -X POST "https://app.strokka.com/api/v1/companies/export" \ -H "Content-Type: application/json" \ -d '{"companyIds":[999999999],"key":"ваш_secretKey"}' # Rate limit → 429 curl -sS -D - "https://app.strokka.com/api/v1/companies?limit=1" -o /dev/null | grep -i retry

Таблица HTTP-кодов

КодКогдаЧто делать
401Неверный или отозванный keyПроверить ключ в Настройки → API
402Недостаточно кредитовПополнить баланс; заранее сравнить totalCount (запрос с limit=1) с балансом
403Нет активной подпискиПроверить подписку в личном кабинете
404Компании не найденыId не существуют; кредиты не списаны
422Пустой key или companyIdsПроверить тело запроса
429Rate limitПодождать Retry-After секунд, снизить частоту
500Ошибка сервераПовторить с задержкой

Полный список — в Лимиты и ошибки.


Повтор при 429 и 500

Code
import time def api_get(url, params=None, max_retries=3): for attempt in range(max_retries): response = requests.get(url, params=params) if response.status_code == 200: return response.json() if response.status_code == 429: wait = int(response.headers.get("Retry-After", 2 ** attempt)) time.sleep(wait) continue if response.status_code >= 500: time.sleep(2 ** attempt) continue response.raise_for_status() raise RuntimeError(f"Failed after {max_retries} retries")

Что дальше?

  • Лимиты и ошибки — rate limits, заголовки
  • Авторизация — безопасность API-ключа
  • Примеры запросов — все сценарии
Нашли ошибку?

Связаться

Last modified on July 3, 2026
Повторная выгрузкаРанжирование и relevance
On this page
  • Скрипт: поиск и экспорт
  • Пагинация в Python
  • Сохранение export в файл
  • Типичные ошибки
    • Проверка через curl
    • Таблица HTTP-кодов
  • Повтор при 429 и 500
  • Что дальше?