Extract API

Используйте искусственный интеллект для извлечения структурированных данных с веб-страниц по пользовательским запросам и схемам.

Эндпоинт

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

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

Требуется 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

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

urls
array
required
Массив URL для обработки и извлечения данных
prompt
string
required
Промпт для ИИ, описывающий какие данные нужно извлечь
schema
object
JSON схема для структурирования извлеченных данных
useLocalFirst
boolean
default:true
Попробовать сначала локальный парсер, затем облачный при неудаче

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

curl -X POST https://api.firecrawl.ru/api/v1/extract \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": [
      "https://example.com/product1",
      "https://example.com/product2"
    ],
    "prompt": "Извлеките информацию о товаре: название, цену, описание и рейтинг",
    "schema": {
      "type": "object",
      "properties": {
        "name": {"type": "string"},
        "price": {"type": "number"},
        "description": {"type": "string"},
        "rating": {"type": "number", "minimum": 0, "maximum": 5}
      },
      "required": ["name", "price"]
    }
  }'

Ответ

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

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

{
  "success": true,
  "url": "https://example.com/product1",
  "data": {
    "json": {
      "results": [
        {
          "url": "https://example.com/product1",
          "name": "Умный телефон XYZ Pro",
          "price": 45990,
          "description": "Флагманский смартфон с тройной камерой и быстрой зарядкой",
          "rating": 4.7
        },
        {
          "url": "https://example.com/product2",
          "name": "Наушники ABC Wireless",
          "price": 12990,
          "description": "Беспроводные наушники с шумоподавлением",
          "rating": 4.3
        }
      ],
      "summary": {
        "totalProducts": 2,
        "averagePrice": 29490,
        "averageRating": 4.5
      },
      "metadata": {
        "extractedAt": "2024-01-15T14:30:00Z",
        "processingModel": "gpt-4",
        "confidence": 0.95
      }
    }
  },
  "source": "local",
  "processingTime": 4560
}

Примеры промптов

Извлечение контактной информации

{
  "prompt": "Найдите контактную информацию: телефон, email, адрес компании",
  "schema": {
    "type": "object",
    "properties": {
      "phone": {"type": "string"},
      "email": {"type": "string", "format": "email"},
      "address": {"type": "string"}
    }
  }
}

Извлечение событий

{
  "prompt": "Извлеките информацию о мероприятиях: название, дата, место, цена билета",
  "schema": {
    "type": "object",
    "properties": {
      "events": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "title": {"type": "string"},
            "date": {"type": "string", "format": "date"},
            "venue": {"type": "string"},
            "price": {"type": "number"}
          }
        }
      }
    }
  }
}

Извлечение статей

{
  "prompt": "Извлеките основную информацию о статье: заголовок, автор, дата публикации, категория",
  "schema": {
    "type": "object",
    "properties": {
      "title": {"type": "string"},
      "author": {"type": "string"},
      "publishedDate": {"type": "string", "format": "date-time"},
      "category": {"type": "string"},
      "wordCount": {"type": "number"}
    }
  }
}

Гибридная обработка

Extract API использует гибридную архитектуру:
  1. Локальная обработка - Быстрое извлечение простых данных
  2. Облачная обработка - ИИ-модели для сложного извлечения
  3. Автоматический fallback - Переключение при ошибках

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

  • Hobby: Extract недоступен
  • Starter: Входит в общий лимит 3,500 запросов/мес, до 3 URL за запрос
  • Scale: Входит в общий лимит 20,000 запросов/мес, до 10 URL за запрос + персональный менеджер

Коды ошибок

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

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

{
  "success": false,
  "url": "https://example.com/product1",
  "data": {
    "json": {}
  },
  "error": "Не удалось извлечь данные: страница недоступна",
  "source": "local",
  "processingTime": 2000
}

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

Создание эффективных промптов

  • Будьте конкретны - Четко описывайте нужные данные
  • Указывайте формат - Уточняйте желаемый формат данных
  • Приводите примеры - Добавляйте примеры ожидаемых результатов
  • Учитывайте контекст - Адаптируйте промпт под тип сайта

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

  • Определяйте типы - Указывайте правильные типы данных
  • Добавляйте валидацию - Используйте ограничения и форматы
  • Делайте гибкими - Не все поля должны быть обязательными
  • Тестируйте - Проверяйте схему на разных страницах

Оптимизация производительности

  • Ограничивайте URL - Обрабатывайте разумное количество страниц
  • Используйте кэш - Избегайте повторной обработки одинаковых данных
  • Мониторьте время - Следите за временем обработки больших запросов