Firecrawl — это мост между живым вебом и языковой моделью. Дали URL — получили чистый markdown, готовый скормить агенту или RAG. Никаких селекторов, прокси-серверов и ночных дежурств на Cloudflare.
Что это
Firecrawl — это AI-движок для сбора данных с веб-сайтов, который сам превращает страницы в формат, понятный языковым моделям. На входе — обычный URL. На выходе — markdown, JSON, скриншоты или структурированные данные по заданной схеме.
Сервис берёт на себя всю ту работу, которую раньше делал здоровенный самописный парсер: рендер JavaScript, ожидание загрузки контента, обход антибот-защит, чтение PDF и DOCX, авторизацию по куки или токену. Вам остаётся только сказать, что нужно — и забрать результат в нужной форме.
Firecrawl работает в двух режимах. Закрытый облачный API с оплатой по запросам — для тех, кто хочет готовый сервис без своей инфраструктуры. И открытый self-hosted проект под лицензией MIT — для команд, которые хотят поднять свой краулер на своих серверах. Разработчик — компания Mendable.ai, проект поддерживается активным комьюнити на GitHub.
Зачем нужно
- Готовить датасеты для обучения и файнтюнинга LLM на реальных публичных данных — без месяцев на инфраструктуру парсинга.
- Строить RAG-систему поверх корпоративного сайта, базы знаний или технической документации — контент заходит в векторную базу одной командой.
- Кормить ИИ-агента свежими данными из интернета: цены конкурентов, новости индустрии, вакансии, документация к новым API.
- Делать чат-ботов по содержимому конкретного сайта — клиент пишет вопрос, агент лезет в актуальную страницу и отвечает по ней.
- Автоматизировать аналитику и мониторинг — регулярно собирать показатели с десятков сайтов и сводить в один отчёт.
Как устроено
Под капотом Firecrawl — это управляемый headless-браузер с AI-надстройкой. Когда вы передаёте URL, сервис не делает простой HTTP-запрос. Он запускает полноценный рендер страницы в Chromium, ждёт загрузки динамического контента, прогоняет JavaScript до конца, эмулирует поведение реального пользователя для обхода антибот-защит, вытаскивает основной контент и отдаёт его в выбранном формате.
Шесть базовых операций покрывают почти любой сценарий сбора данных.
| Операция | Что делает | Когда применять |
|---|---|---|
| Scrape | Конвертирует один URL в markdown, HTML, скриншот или структурированный JSON по схеме | Разовый сбор конкретной страницы: статья, карточка товара, профиль |
| Crawl | Рекурсивно обходит все страницы сайта от стартового URL | Полный импорт документации, каталога или контентного раздела |
| Map | Мгновенно возвращает список всех URL на домене без обхода страниц | Быстро оценить структуру сайта перед глубоким Crawl |
| Search | Ищет в интернете и сразу отдаёт полный контент найденных страниц | Сбор данных по запросу: темы, источники, свежие публикации |
| Extract | Извлекает структурированные данные по JSON-схеме — поля с типами и описаниями | Получение однородных сущностей: товаров, вакансий, компаний |
| Agent | Описываете задачу на естественном языке, AI сам находит и собирает данные | Сложные нестандартные сценарии, где непонятно, какие селекторы нужны |
Все шесть операций можно комбинировать: сначала Map для разведки, потом Crawl по выбранным веткам, в конце Extract по нужным сущностям. Это даёт pipeline любой сложности без написания собственного парсера.
Архитектурно сервис делится на два слоя. Первый слой — headless-браузер с ротацией прокси, обходом Cloudflare и reCAPTCHA, поддержкой авторизации. Второй слой — AI-модели, которые понимают структуру страницы: где заголовок, где основной контент, где навигация, где шум. Эти модели отфильтровывают служебные блоки и оставляют суть.
Именно поэтому Firecrawl кардинально отличается от обычных парсеров вроде BeautifulSoup или requests + регулярные выражения. Обычный парсер возвращает сырой HTML, в котором 70% — это скрипты, стили, реклама, навигация. Firecrawl сразу отдаёт готовый markdown без мусора.
| Аспект | Обычный парсер | Firecrawl |
|---|---|---|
| Возвращаемый формат | Сырой HTML с тегами, скриптами, стилями | Чистый markdown, HTML, JSON или скриншот |
| Поддержка JavaScript и SPA | Видит только пустую HTML-болванку | Полный рендер через headless-браузер |
| Обход антибот-защиты | Бан после нескольких запросов | Эмуляция реального пользователя, ротация прокси |
| Понимание структуры страницы | По заданным CSS/XPath-селекторам | AI определяет заголовки, контент, навигацию |
| Одна страница vs весь сайт | Только конкретная страница | Crawl обходит весь сайт одной командой |
| Поддержка PDF и DOCX | Нужны отдельные библиотеки | Встроена |
| Готовность для RAG | Нужно писать очистку | Формат сразу уходит в векторную базу |
| Инфраструктура | Свои прокси, rate limits, обслуживание | Managed-сервис с оплатой по запросам |
Ключевое правило: если вам нужно скормить LLM данные с веба — Firecrawl уже решает 80% задачи. Оставшиеся 20% — это либо специфические домены (соцсети), либо экзотика вроде авторизации через 2FA.
Когда использовать
Не любой сбор данных требует Firecrawl. Простой сайт-визитка с пятью страницами можно обойти и обычным скриптом. Но как только появляется хотя бы одно из условий ниже — Firecrawl начинает окупаться.
| Ситуация | Подходит | Почему |
|---|---|---|
| Документация на сайте поставщика API | Да | Crawl + Extract сразу даёт структурированные endpoint’ы для RAG-агента поддержки |
| Корпоративный сайт с JavaScript-рендером | Да | Headless-браузер дождётся загрузки контента, обычный парсер увидит пустоту |
| Интернет-магазин с тысячами карточек товаров | Да | Crawl пройдёт каталог, Extract соберёт название/цену/описание по схеме |
| Каталог вакансий с hh.ru и похожих площадок | Да | Extract по схеме «должность, компания, зарплата, ссылка» за минуты |
| Аналитика цен конкурентов раз в неделю | Да | Cron + Crawl + Extract, данные уходят в таблицу или дашборд |
| Подготовка датасета для файнтюнинга LLM | Да | Map + Crawl с лимитами, дальше — на очистку и разметку |
| Сбор данных из Twitter, Facebook, LinkedIn | Нет | Соцсети активно блокируют, нужен официальный API или Apify |
| Парсинг одного статичного HTML-файла | Избыточно | Проще прочитать простым скриптом на requests + BeautifulSoup, не нужен managed-сервис |
| Авторизация через 2FA в реальном времени | Ограниченно | Поддерживается, но требует ручной настройки и хранения сессий |
| Парсинг Intranet-портала за файрволом | Нет | Нужен self-hosted режим с доступом к сети, либо прокси-мост |
Пример
Установка через CLI — Firecrawl добавляется как скилл к вашему ИИ-агенту (Codex, Claude Code, OpenCode, Cursor и любому другому агенту, который читает skills-каталог).
npx skills add firecrawl/cli
После установки агент получает четыре ключевые возможности:
Scrape a page to clean markdown— превратить страницу в чистый markdownSearch and scrape top results— найти в интернете и сразу собрать содержимоеCrawl an entire website— обойти сайт целиком одной командойMap an entire domain— получить карту всех URL на домене
Все эндпоинты живут на актуальной второй версии API — https://api.firecrawl.dev/v2/. Аутентификация — через заголовок Authorization: Bearer <ваш-ключ>, ключ имеет формат fc-... и доступен в личном кабинете на firecrawl.dev.
Базовый пример вызова Scrape. Передаём URL и формат вывода, забираем результат в markdown:
curl -X POST https://api.firecrawl.dev/v2/scrape \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://docs.example.com/quickstart",
"formats": ["markdown"],
"onlyMainContent": true,
"waitFor": 1500
}'
Параметр waitFor заставляет движок подождать 1500 мс после загрузки страницы — полезно для SPA, где контент появляется после JavaScript-инициализации. По умолчанию 0. onlyMainContent отрезает навигацию, футер, сайдбары, оставляет только статью. По умолчанию уже true, но мы передаём явно для наглядности.
Extract со схемой. Хотим собрать товары с карточек — описываем JSON Schema, и Firecrawl сам понимает, где название, где цена, где описание. Параметр urls принимает массив URL в glob-формате, параметр schema — произвольный JSON Schema-объект (тип, properties, required).
curl -X POST https://api.firecrawl.dev/v2/extract \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://shop.example.com/catalog/page-1",
"https://shop.example.com/catalog/page-2"
],
"schema": {
"type": "object",
"properties": {
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {"type": "string"},
"price": {"type": "number"},
"currency": {"type": "string"},
"in_stock": {"type": "boolean"},
"sku": {"type": "string"}
},
"required": ["title", "price"]
}
}
}
}
}'
Crawl целого сайта. Запускаем обход раздела документации с лимитами. Важно: параметр глубины называется maxDiscoveryDepth, а не maxDepth — это видно прямо в OpenAPI-схеме эндпоинта. includePaths — regex-паттерны по pathname, например /docs/\ включает всё под /docs/. scrapeOptions вложенный объект с теми же параметрами, что у /scrape.
curl -X POST https://api.firecrawl.dev/v2/crawl \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://docs.example.com/",
"limit": 500,
"maxDiscoveryDepth": 3,
"includePaths": ["/docs/.*", "/api/.*"],
"scrapeOptions": {
"formats": ["markdown"],
"onlyMainContent": true
}
}'
Map без захода на страницы — мгновенный листинг всех URL домена. Идеально для разведки перед Crawl. По умолчанию возвращает до 5000 ссылок, лимит можно поднять до 100 000:
curl -X POST https://api.firecrawl.dev/v2/map \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "limit": 10000}'
Все ответы приходят в JSON. Дальше их можно напрямую отдавать в LLM или грузить в векторную базу — формат уже готовый.
Совет: начните с Map, потом Crawl с лимитами, потом Extract. Это самая надёжная последовательность — не сожжёте лимит запросов впустую на нерелевантных страницах.
Ограничения
Ограничения
Соцсети, специфические защиты и юридические тонкости — то, что Firecrawl пока не закрывает из коробки.
Социальные сети не поддерживаются
— Twitter (X), Facebook, Instagram, LinkedIn, TikTok активно блокируют автоматический сбор — нужны официальные API или Apify.
Только бизнес-сайты и документация — Сервис оптимизирован под визитки, каталоги, help-центры, блоги, новостные порталы.
С креативными лендингами и тяжёлыми SPA бывают сюрпризы.
2FA и сложная авторизация
— Поддерживается передача куки и токенов, но реальный 2FA в реальном времени требует ручной настройки сессий и хранения состояния.
Стоимость растёт с объёмом — Crawl больших сайтов сжигает кредиты быстро.
Без лимитов (limit, maxDiscoveryDepth, includePaths) можно получить счёт на сотни долларов.
Зависимость от внешнего сервиса — Если Firecrawl ляжет или изменит API (как переход v1
→ v2) — пайплайн ломается. Self-hosted режим снимает часть рисков, но требует своей инфраструктуры.
Юридические ограничения — Сбор данных регулируется законами о защите персональных данных, robots.txt, условиями использования сайтов.
Перед массовым Crawl — проверяйте права.
Антипаттерны
Антипаттерны
Что ломает эффект от Firecrawl — и как эти ошибки превращаются в сожжённые лимиты и битые данные.
Не делать: Crawl без includePaths и лимитов
— одна команда может обойти сотни тысяч страниц и принести счёт на тысячи долларов — всегда ставьте limit, maxDiscoveryDepth и белый список regex-паттернов.
Не делать: передавать PDF как обычный URL
— PDF требует отдельной обработки через parsers (pdf fast / auto / ocr), иначе получите мусор или пустой ответ.
Не делать: игнорировать robots.txt
— обход robots.txt грозит баном IP и юридическими последствиями — уважайте правила сайта, даже если технически можете их обойти.
Не делать: складывать результаты в одну большую строку
— Firecrawl отдаёт структурированные данные, но если склеить всё в один текст для LLM — потеряете метаданные и связи между страницами.
Не делать: использовать для сбора персональных данных
— GDPR, ФЗ-152 и аналогичные законы прямо запрещают массовый сбор PII без основания — это юридическое, а не техническое ограничение.
Не делать: парсить через Scrape вместо Map
— если нужно понять структуру сайта — сначала Map за секунды даст список URL, иначе будете тыкаться в Scrape наугад.
Чеклист
Чеклист
Перед запуском первого серьёзного сбора данных через Firecrawl — проверьте эти восемь пунктов.
API-ключ получен
— зарегистрируйтесь на firecrawl.dev, сгенерируйте ключ формата fc-…, положите в FIRECRAWL_API_KEY — не в код, а в секреты окружения.
Целевой сайт определён
— зафиксировано, какие именно страницы нужны, и что с ними будет после сбора.
Структура сайта разведана
— Map или ручной обход показал, как устроен сайт и где живёт нужный контент.
Лимиты заданы
— установлены limit, maxDiscoveryDepth, includePaths — нет шанса случайно обойти полмиллиона страниц.
Формат вывода выбран
— markdown для RAG, JSON по схеме для структурированных данных, скриншоты для визуальных задач.
Правовая проверка пройдена
— robots.txt прочитан, условия использования сайта изучены, ограничения по PII учтены.
Self-hosted готов (если нужен)
— при self-hosted — Docker-стек поднят, прокси-пул настроен, ресурсы сервера соответствуют объёмам Crawl.
Пайплайн обработки результатов собран
— результаты пойдут в векторную базу / таблицу / LLM — не в /dev/null.
Ссылки
Ссылки
- Сайт: Firecrawl
- Документация: docs.firecrawl.dev
- API Reference (v2): api-reference/endpoint/scrape
- GitHub (open-source): mendableai/firecrawl
- Разработчик: Mendable.ai