Crawl API

Обойдите и проиндексируйте целые веб-сайты, извлекая контент с множества страниц.

Эндпоинт

POST https://api.firecrawl.ru/api/v1/crawl

Аутентификация

Требуется API ключ в одном из форматов:
# Вариант 1: X-API-Key заголовок (рекомендуемый)
X-API-Key: YOUR_API_KEY

# Вариант 2: Bearer токен
Authorization: Bearer YOUR_API_KEY

# Вариант 3: Query параметр
?api_key=YOUR_API_KEY

Параметры запроса

url
string
required
Стартовый URL для краулинга
limit
number
default:5
Максимальное количество страниц для краулинга
maxDepth
number
Максимальная глубина краулинга (количество переходов от стартового URL)
includes
array
Массив URL паттернов для включения (например, ["/blog/*", "/news/*"])
excludes
array
Массив URL паттернов для исключения (например, ["/admin/*", "*.pdf"])
formats
array
default:"[\"markdown\"]"
Форматы данных для извлечения: markdown, html, json, links
onlyMainContent
boolean
default:false
Извлекать только основной контент
excludeTags
array
HTML теги для исключения из результата
timeout
number
default:30000
Таймаут для каждой страницы в миллисекундах
useLocalFirst
boolean
default:true
Использовать сначала локальный парсер, затем облачный
webhook
object
Настройки вебхука для уведомлений о прогрессе

Пример запроса

curl -X POST https://api.firecrawl.ru/api/v1/crawl \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "limit": 10,
    "includes": ["/blog/*", "/news/*"],
    "excludes": ["/admin/*", "*.pdf"],
    "formats": ["markdown"],
    "onlyMainContent": true
  }'

Ответ

success
boolean
Указывает, был ли краулинг успешным
url
string
Стартовый URL краулинга
data
object
Результаты краулинга
source
string
Источник парсинга: local или cloud
processingTime
number
Общее время обработки в миллисекундах
error
string
Сообщение об ошибке (если произошла ошибка)

Пример успешного ответа

{
  "success": true,
  "url": "https://example.com",
  "data": {
    "pages": [
      {
        "url": "https://example.com",
        "markdown": "# Главная страница\n\nДобро пожаловать на наш сайт...",
        "metadata": {
          "title": "Главная - Пример сайта",
          "description": "Описание главной страницы",
          "statusCode": 200
        }
      },
      {
        "url": "https://example.com/blog/post-1",
        "markdown": "# Первый пост в блоге\n\nСодержание поста...",
        "metadata": {
          "title": "Первый пост - Блог",
          "description": "Описание первого поста",
          "statusCode": 200
        }
      }
    ],
    "total": 10,
    "completed": 10,
    "status": "completed"
  },
  "source": "local",
  "processingTime": 15340
}

Асинхронная обработка

Для больших сайтов краулинг может занять время. API автоматически отслеживает прогресс:
  1. Запуск краулинга - API возвращает начальный ответ
  2. Мониторинг прогресса - Система опрашивает статус каждую секунду
  3. Завершение - Возврат полных результатов

Ограничения по планам

  • Hobby: Входит в общий лимит 500 запросов/мес
  • Starter: Входит в общий лимит 3,500 запросов/мес
  • Scale: Входит в общий лимит 20,000 запросов/мес + массовая обработка

Коды ошибок

400
Bad Request
Неверные параметры запроса
401
Unauthorized
Неверный API ключ
403
Forbidden
Превышен лимит плана или недостаточно прав
408
Request Timeout
Превышен таймаут краулинга
429
Too Many Requests
Превышен лимит запросов

Пример ошибки

{
  "success": false,
  "url": "https://example.com",
  "data": {
    "pages": [],
    "total": 0,
    "completed": 0,
    "status": "failed"
  },
  "error": "Сайт заблокировал краулер",
  "source": "local",
  "processingTime": 5000
}

Лучшие практики

  • Используйте фильтры includes и excludes для оптимизации
  • Установите разумный лимит страниц для вашего плана
  • Мониторьте время обработки больших сайтов
  • Используйте вебхуки для отслеживания прогресса длительных задач