Автоматизация

Скрипт поиска и экспорта на Python, файл, типичные ошибки.

На этой странице

Поиск и экспорт

import requests
 
API_BASE = "https://app.strokka.com/api/v1"
API_KEY = "ваш_secretKey"
 
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)}")
 
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()

Пагинация

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

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

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

Ошибки

КодЧто делать
401Проверить ключ в кабинете
402Пополнить баланс; сравнить totalCount с балансом
403Проверить подписку
404Id не существуют; кредиты не списаны
422Проверить тело запроса
429Подождать Retry-After
503 / 500Повторить с задержкой

Повтор при 429 и 5xx — в Лимитах.