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