Skip to content

firecrawl

v2.10 Security

This release patches 1 CVE for security teams tracking exposure across their dependency inventory.

1 patched CVE
Read the diff → Tool health → What is this tool? →
This release patches 1 known CVE CVE-2023-4863 EPSS 93%
1 CVEs patched

Topics

ai ai-agents ai-crawler ai-scraping ai-search crawler
+13 more
data-extraction html-to-markdown llm markdown scraper scraping web-crawler web-data web-data-extraction web-scraper web-scraping web-search webscraping

Affected surfaces

deps

ReleasePort's take

Moderate signal
editorial:auto 9d

The `ignoreRobots` org flag now uses an enum (disabled/allowed/forced) instead of a boolean; legacy request shapes are removed.

Why it matters: All integrations sending the old boolean flag must update to the new enum values before v2.10 adoption, or risk rejected requests.

Summary

AI summary

Migrated ignoreRobots org flag from boolean to enum pattern — legacy request shape removed.

Changes in this release

Security Medium

Resolved multiple CVEs across API and SDKs including axios and postcss

Resolved multiple CVEs across API and SDKs including axios and postcss

Source: llm_adapter@2026-05-21

Confidence: low

Breaking Medium

ignoreRobots flag migrated from boolean to disabled/allowed/forced pattern

ignoreRobots flag migrated from boolean to disabled/allowed/forced pattern

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

Upload local files to /parse endpoint for Markdown, JSON, or summary conversion

Upload local files to /parse endpoint for Markdown, JSON, or summary conversion

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Question format returns grounded, hallucination-free answers from scraped pages

Question format returns grounded, hallucination-free answers from scraped pages

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Lockdown mode serves results from cache with zero outbound requests

Lockdown mode serves results from cache with zero outbound requests

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Highlights format extracts matching sentences, code blocks, and table rows

Highlights format extracts matching sentences, code blocks, and table rows

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

PDF billing now reflects pages processed instead of raw page count

PDF billing now reflects pages processed instead of raw page count

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Official Go SDK for v2 API with context-aware retry backoff available

Official Go SDK for v2 API with context-aware retry backoff available

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Official Ruby SDK v2 with full endpoint coverage and v2-native typing released

Official Ruby SDK v2 with full endpoint coverage and v2-native typing released

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Official PHP SDK with Laravel support published to Composer package manager

Official PHP SDK with Laravel support published to Composer package manager

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

.NET SDK v2 published to NuGet with full API support and parse endpoint

.NET SDK v2 published to NuGet with full API support and parse endpoint

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Rust SDK promoted to official v2 with full endpoint parity across all features

Rust SDK promoted to official v2 with full endpoint parity across all features

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Video format returns signed downloadable URLs for supported video sites

Video format returns signed downloadable URLs for supported video sites

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Search endpoint supports domain filtering with includeDomains and excludeDomains

Search endpoint supports domain filtering with includeDomains and excludeDomains

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Search feedback endpoint allows rating results with credit refunds per submission

Search feedback endpoint allows rating results with credit refunds per submission

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

PDF upload size limit increased from 10 MB to 30 MB maximum

PDF upload size limit increased from 10 MB to 30 MB maximum

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Custom robots.txt user agent parameter controls crawl-delay evaluation rules

Custom robots.txt user agent parameter controls crawl-delay evaluation rules

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

JS SDK adds explicit request timeout option to prevent hanging requests

JS SDK adds explicit request timeout option to prevent hanging requests

Source: llm_adapter@2026-05-21

Confidence: low

Feature Low

/parse endpoint supports uploading PDF, DOCX, DOC, ODT, RTF, XLSX, XLS, HTML up to 50 MB

/parse endpoint supports uploading PDF, DOCX, DOC, ODT, RTF, XLSX, XLS, HTML up to 50 MB

Source: granite4.1:30b@2026-05-22-audit

Confidence: low

Feature Low

question format in /scrape returns grounded, hallucination‑free answers via managed model chain

question format in /scrape returns grounded, hallucination‑free answers via managed model chain

Source: granite4.1:30b@2026-05-22-audit

Confidence: low

Deprecation Medium

Deprecated /v0 and /v1 endpoints: scrape, crawl, search, extract, research

Deprecated /v0 and /v1 endpoints: scrape, crawl, search, extract, research

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Fixed stack overflow in marked.parse when handling certain PDF outputs

Fixed stack overflow in marked.parse when handling certain PDF outputs

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Fixed JS SDK watcher emitting duplicates, leaking timeouts, and hanging

Fixed JS SDK watcher emitting duplicates, leaking timeouts, and hanging

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Fixed screenshot signed URLs returning stale cached results on expiry

Fixed screenshot signed URLs returning stale cached results on expiry

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Fixed billing period timestamps, subscription lookups, and plan credit reporting

Fixed billing period timestamps, subscription lookups, and plan credit reporting

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Fixed /v1 status endpoints returning 500 for non-UUID job IDs

Fixed /v1 status endpoints returning 500 for non-UUID job IDs

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Fixed Lockdown requests being billed twice for zero data retention

Fixed Lockdown requests being billed twice for zero data retention

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Fixed unbounded crawl-backlog timeouts by capping at 48 hours maximum

Fixed unbounded crawl-backlog timeouts by capping at 48 hours maximum

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Fixed proxy billing incorrectly charging credits for cached scrapes

Fixed proxy billing incorrectly charging credits for cached scrapes

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Fixed branding secondary color incorrectly defaulting when LLM omitted value

Fixed branding secondary color incorrectly defaulting when LLM omitted value

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Proxy billing fixed to avoid charging credits when no proxy egress occurs

Proxy billing fixed to avoid charging credits when no proxy egress occurs

Source: granite4.1:30b@2026-05-22-audit

Confidence: low

Full changelog

Firecrawl v2.10

Improvements

  • /parse endpoint — Upload local files (PDF, DOCX, DOC, ODT, RTF, XLSX, XLS, HTML) up to 50 MB and get back clean, LLM-ready Markdown, JSON, or a summary. Tables and reading order are preserved, with full Zero Data Retention support for enterprise plans. Available in JS, Python, Go, Rust, Java, .NET, PHP, Ruby, and Elixir SDKs.
  • Lockdown Mode — Set lockdown: true on /scrape to serve results exclusively from Firecrawl's index with zero outbound requests and zero data retention by default. Gated outbound paths include HTTP fetches, robots.txt, audio downloads, and media. Available in every SDK, the CLI (--lockdown), and MCP.
  • question format — Pass a natural-language prompt to /scrape and get a grounded, hallucination-free answer back in data.question. Runs on a managed model chain with automatic fallback, prompt-injection isolation via XML tagging and zero-width-space escaping, and up to 100x fewer tokens per call.
  • highlights format — Returns the exact sentences, code blocks, and table rows on a page that match your query. Consecutive sentences re-join into paragraphs, code lines wrap in fenced blocks with their original language, and table rows rebuild into Markdown tables with headers — all from the source page, using up to 100x fewer tokens per call.
  • video format — Added video to scrape formats. Returns a signed downloadable video URL for supported sites (e.g. YouTube), with cookie forwarding for authenticated downloads and explicit Lockdown gating.
  • /search domain filters — Added includeDomains and excludeDomains parameters to /search for scoping results to a specific set of sites.
  • /search feedback endpoint — Submit a rating on a search result with POST /v2/search/:jobId/feedback. Each accepted submission refunds 1 credit, capped per UTC day, with idempotent retries.
  • Custom robots.txt user agent — Added robotsUserAgent to crawl requests to evaluate robots.txt rules and crawl delays against a custom agent string, and a separate customRobotsAgent org flag independent from ignoreRobots. Available in JS, Python, and Java SDKs.
  • Official Go SDK — Added a first-party Go SDK for the v2 API, replacing the community module. Includes context-aware retry backoff and proper MapData.Links typing.
  • Ruby SDK — Added the official Firecrawl Ruby SDK v2 with full endpoint coverage and v2-native typing.
  • PHP SDK — Added the official PHP SDK with Laravel support, scrape/search/crawl/map/parse coverage, and a published firecrawl/firecrawl-sdk Composer package.
  • .NET SDK — Added the official .NET SDK with v2 API support, parse, and an firecrawl-sdk NuGet package.
  • Rust SDK v2 — The Rust SDK has been promoted to the official v2 SDK with parity across scrape, search, crawl, map, agent, and parse.
  • /interact suggestion — Calls to /scrape that pass an actions array now return a warning suggesting /interact for stateful browser automation.
  • PDF size cap — Raised the PDF upload size limit from 10 MB to 30 MB.
  • PDF page-processed billing — Updated PDF billing to reflect pages processed instead of raw page count.
  • Docker harness — Exposed HARNESS_STARTUP_TIMEOUT_MS through docker-compose for self-hosted users who need longer startup windows.
  • Elixir SDK — Added parse_file/3 to the Elixir SDK for the /parse endpoint.
  • JS SDK request timeout — Added an explicit request timeout option to the JS SDK to prevent hanging requests.

Fixes

  • Resolved multiple CVEs across the API and SDKs including axios, postcss, fast-xml-parser, protobufjs, follow-redirects, langsmith, lodash, fast-uri, and fast-xml-builder.
  • Fixed branding colors.secondary being incorrectly populated when the LLM omitted a value — secondary is now optional and is no longer applied as a default.
  • Fixed the Playwright service ignoring the caller's User-Agent request header.
  • Fixed screenshot signed URLs returning stale results from cache by forcing a cache miss when the signed URL has expired.
  • Fixed Lockdown requests being billed twice for ZDR by treating Lockdown as zero data retention by default.
  • Fixed proxy billing for cached scrapes incorrectly charging proxy credits when no proxy egress occurred.
  • Fixed YouTube transcript scripts running on audio-only scrapes and audio downloads not receiving CDP cookies.
  • Fixed html-to-md conversion service ignoring zero data retention.
  • Fixed a stack overflow in marked.parse when handling certain PDF outputs.
  • Fixed robotsUserAgent not being honored by the native link filter and not being included in JS SDK crawl payloads.
  • Fixed /v1 status endpoints returning 500 on non-UUID job IDs — now returns a proper 400.
  • Fixed empty actions: [] arrays being treated as actions in feature flags.
  • Fixed JS SDK watcher emitting duplicate events, leaking timeouts, and hanging start() on watcher timeouts.
  • Fixed Ruby SDK unwrapping of credit_usage data fields and defaulted skipTlsVerification to false.
  • Fixed missing negative-limit validation in Python, Java, and Go SDKs.
  • Fixed Java SDK accepting empty API keys and missing async lifecycle methods.
  • Fixed billing period timestamps, subscription lookups, and plan credit reporting.
  • Fixed crawl-backlog timeouts being unbounded — now capped at 48h.

API

  • Added POST /v2/parse for multipart file uploads up to 50 MB. Returns a standard Document. Disallowed scrape options on parse: changeTracking, screenshot, branding, actions, waitFor, location, mobile; proxy is restricted to auto or basic. Errors with PARSE_UNSUPPORTED_OPTIONS on disallowed input.
  • Added lockdown: boolean to /scrape. Cache misses return 404 with SCRAPE_LOCKDOWN_CACHE_MISS. Billing: +4 credits when lockdown is enabled, 1 credit on cache miss. Available across all SDKs.
  • Added question and highlights to /scrape formats, returning data.question and data.highlights respectively.
  • Added video to /scrape formats. Returns document.video as a signed URL. +4 credits per request. Unsupported URLs raise SCRAPE_VIDEO_UNSUPPORTED_URL; parse rejects the video format client- and server-side.
  • Added includeDomains and excludeDomains arrays on /v2/search for scoping results to specific domains.
  • Added POST /v2/search/:jobId/feedback for rating search results. Each accepted submission refunds 1 credit, capped per UTC day via SEARCH_FEEDBACK_DAILY_CAP_CREDITS, with idempotent retries returning alreadySubmitted: true. Feedback submissions older than SEARCH_FEEDBACK_MAX_AGE_SEC (default 120s) are rejected. Search billing is now ceil(results/10) * 2 credits, surfaced in responses.
  • Added robotsUserAgent to /v2/crawl crawlerOptions for custom-agent robots.txt evaluation. Gated behind the ignoreRobots org flag.
  • Added a separate customRobotsAgent org flag independent from ignoreRobots, so teams can ship custom user-agents without disabling robots.txt enforcement.
  • Migrated the ignoreRobots org flag from a boolean to a disabled / allowed / forced pattern. The legacy ignoreRobots: boolean request shape has been removed — clients must use the new flag values.
  • Deprecated /v0/scrape, /v0/crawl, /v0/crawl/status/:jobId, DELETE /v0/crawl/cancel/:jobId, /v0/search, /v1/extract, /v1/extract/:jobId, /v2/extract, /v2/extract/:jobId, /v1/deep-research, /v1/deep-research/:jobId, /v1/llmstxt, and /v1/llmstxt/:jobId. Deprecated endpoints emit Deprecation: true, Warning: 299 - "<message>", Link; rel="successor-version", and (when configured) Sunset headers, plus warnings[] and replacement in the JSON body. JS and Python SDKs surface these to clients.

Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.9.0...v2.10

Breaking Changes

  • Removed legacy boolean `ignoreRobots` request shape; clients must use enum values (`disabled`, `allowed`, `forced`).

Security Fixes

  • Resolved multiple CVEs across API and SDK dependencies: axios, postcss, fast-xml-parser, protobufjs, follow-redirects, langsmith, lodash, fast-uri, fast-xml-builder

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track firecrawl

Get notified when new releases ship.

Sign up free

About firecrawl

The Web Data API for AI - Power AI agents with clean web data

All releases →

Related context

Related CVEs

Beta — feedback welcome: [email protected]