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 — превратить страницу в чистый markdown
  • Search 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.

Ссылки

Ссылки