firecrawl

Developer Tools

The context API to search, scrape, and interact with the web at scale. 🔥

Latest v2.11.0 · by firecrawlWebsitefirecrawl/firecrawl

Release activity

Release activity — 10 releases across 10 days since Sep 12, 2025. Each cell is one day; darker means more releases that day. Nothing is recorded before Sep 12, 2025. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 19, 2026No releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026
MondayNo releases on Apr 20, 2026No releases on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026
TuesdayNo releases on Apr 21, 2026No releases on Apr 28, 2026No releases on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026
WednesdayNo releases on Apr 22, 2026No releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Apr 23, 2026No releases on Apr 30, 2026No releases on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on Apr 24, 2026No releases on May 1, 2026No releases on May 8, 20261 release on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 20261 release on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on Apr 25, 2026No releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026

10 releases since Sep 12, 2025

Changelog

v2.11.0

Firecrawl v2.11.0

Firecrawl v2.11.0

Improvements
  • Firecrawl Research Index — Added a specialized index for agentic AI/ML research: search across 3M+ arXiv papers and the GitHub code behind them (issues, merged PRs, and READMEs, refreshed daily), fetch a paper's details or related work, and check claims against full text. It has state-of-the-art recall on arXivQA, outperforming the next best provider by 18% at comparable cost. Available via the API, SDKs, MCP, and CLI.
  • Keyless access for core endpoints — Use /scrape, /search, /interact, and /parse without an API key from official MCP, CLI, and SDK clients.
  • Automatic PII redaction — Added a redactPII option that strips personal and sensitive data like names, emails, phone numbers, addresses, and secrets out of scraped content before it's returned.
  • deterministicJson format — Added a format that returns structured JSON without running an LLM on every request. Firecrawl generates a reusable extractor for your schema and caches it per site, so repeat scrapes are cheaper and return consistent results.
  • Video discovery on any page — Expanded the video format to find videos on any page, not just supported providers like YouTube, returning each video's URL, title, thumbnail, duration, and more.
  • Attach your own browser automation — Added a CDP WebSocket URL (cdpUrl) to browser session responses, so you can drive a live Firecrawl browser session directly with Playwright, Puppeteer, or any other CDP client.
  • Smarter monitor alerts — Added a goal to monitors so an LLM judges each detected change as meaningful or noise against what you actually care about, cutting alert spam and surfacing the changes that matter first in summary emails.
  • Field-level JSON diffs for monitors — Monitors that scrape in JSON mode now compare the actual field values between runs instead of the rendered page, so you see exactly which fields changed rather than noise from layout shifts.
  • Monitor email confirmation — Added an opt-in confirmation flow with one-click unsubscribe for external monitor recipients; team members are auto-confirmed, and Monitor responses now report each recipient's subscription status.
  • AM/PM monitor schedules — Added support for 12-hour schedule inputs like daily at 9am and daily at 5:30pm, converted to the correct UTC cron expression.
  • Monitor webhook delivery status — Added delivery status to each monitor check, so you can see whether its webhook was attempted, delivered, or failed — and why.
  • Steadier monitor checks — Monitors now wait for pages to finish rendering before diffing, cutting false alerts caused by partially-loaded pages.
  • PDF size cap — Raised the PDF download and scrape size cap from 30 MB to 50 MB.
  • Python SDK crawl() scrape kwargs — Added direct scrape kwargs (formats, headers, include_tags, exclude_tags, etc.) to crawl() and start_crawl(), removing the need to wrap them in ScrapeOptions(...).
  • Clearer .data errors — Improved the error raised when accessing .data on a search result to point at .web, .news, and .images with their counts, instead of returning a silent None.
  • Python format defaults — Removed the required type= argument on JsonFormat and ChangeTrackingFormat, defaulting it like ScreenshotFormat.
  • ChangeTrackingFormat casing — Added acceptance of both change_tracking and changeTracking for the format type so payloads round-trip between snake_case and camelCase clients.
Fixes
  • Resolved security advisories across the API and SDKs by upgrading axios, esbuild, ws, openssl, and other dependencies.
  • Fixed scrape workers stalling for tens of seconds on very large LLM-extractor inputs, which previously caused dropped jobs and worker restarts.
  • Fixed Wikipedia scrapes missing metadata.ogImage on roughly half of Wikimedia URLs.
  • Fixed crawl and batch cancellation not draining the per-team concurrency backlog and reporting stale state; queued jobs are now removed and status reports cancelled immediately.
  • Fixed monitor checks being charged when the credit lock was denied; denied locks now mark the check skipped_no_credits and stop the run.
  • Fixed JSON-mode monitor diffs returning spurious changed verdicts when field values were identical but reordered; diffs now use order-insensitive equality.
  • Fixed JSON-mode monitors treating an empty-string scrape as missing input and reporting changed on every run.
  • Fixed monitor webhooks being dispatched twice for the same check.
  • Fixed monitor webhooks being dropped as malformed by wrapping monitor.page and monitor.check.completed payloads in an array to match the crawl/batch shape.
  • Fixed the monitor judge fabricating before/after text and losing context on long pages; it now receives the full unified diff as its only evidence.
  • Fixed corrupt or unexpected stored artifacts breaking GET /v2/monitor/:id/checks/:checkId; bad data now surfaces as no diff.
  • Fixed HTML tables losing their header row when the first row used td cells; the markdown converter now promotes it to a header so column labels survive into document.markdown.
  • Fixed the PDF size cap being bypassed on certain scrape paths so oversized PDFs are now rejected consistently.
  • Fixed ChangeTrackingFormat options (modes, prompt, and related fields) being dropped through Python SDK serialization round-trips.
API
  • Replaced the experimental pii format with redactPII (boolean or { mode?, entities?, replaceStyle? }) on POST /v2/scrape, /v2/batch/scrape, /v2/crawl, /v2/parse, and /v2/extract; when enabled, document.markdown returns redacted text (defaults mode: "accurate", replaceStyle: "tag"). The old pii format and document.pii block are removed, and requests including "pii" in formats are now rejected.
  • Added the deterministicJson format ({ type: "deterministicJson", schema?, prompt? }) to POST /v2/scrape, /v2/batch/scrape, /v2/crawl, /v2/parse, and /v2/extract, populating document.json. Cannot be combined with the json format.
  • Added document.videos: VideoItem[] (with url, sourceURL, source, and optional title, thumbnail, duration, dimensions, and more) to POST /v2/scrape and the endpoints sharing its options when the video format is requested. The legacy document.video string remains for supported providers.
  • Added createdAt, completedAt, and duration (seconds) to GET /v2/crawl/{id} and GET /v2/batch/scrape/{id}; completedAt is present only on terminal states.
  • Added the /v2/search/research proxy — GET /v2/search/research/papers, /papers/:id, /papers/:id/similar, and /github — billed against SEARCH_CREDITS at 2 credits per 10 results (10 per 10 for ZDR teams). The legacy /v2/research/* mount is kept as a deprecated alias.
  • Added POST/GET /interact, POST /interact/:sessionId/execute, and DELETE /interact/:sessionId as full aliases for the /v2/browser session endpoints; behavior, rate limits, and the 2-credit session-create charge are identical.
  • Added cdpUrl (Python: cdp_url) to the POST /v2/scrape/:jobId/interact and /v2/browser execute responses, exposing the raw CDP WebSocket URL alongside the existing live-view URLs.
  • Added POST /v2/feedback covering search, scrape, parse, and map jobs with shared recording and refund logic; the legacy POST /v2/search/:jobId/feedback keeps working and writes to the same store.
  • Added keyless access to POST /v2/parse, matching scrape and search, and tightened keyless credit accounting so concurrent requests stay within the per-IP daily cap.
  • Added a WWW-Authenticate: Bearer realm="firecrawl" header to all 401 responses across /v0, /v1, and /v2 so agent clients can discover the credential scheme.
  • Added searchZDR values "forced-zdr" and "forced-anon" and deprecated "forced" (now an alias for "forced-zdr"); the resolved mode drives both billing and routing.
  • Added goal and judgeEnabled to POST /v2/monitor and PATCH /v2/monitor/:id; judgeEnabled defaults to true when goal is set, and goal: null clears it.
  • Added judgment, meaningfulChange (with a per-change reason), meaningfulChanges[], a structured diff object (text and/or json), and a snapshot field to monitor check pages; JSON-mode checks return field-level diffs plus a current-value snapshot.
  • Added unauthenticated POST /v2/monitor/email/confirm and POST /v2/monitor/email/unsubscribe (token accepted in the request body only), plus an emailRecipientSubscriptions array on Monitor responses reporting each recipient's email, status (pending/confirmed/unsubscribed), source, and confirmationEmailSent.
  • Added origin to monitor create/update bodies, matching the other v2 endpoints.
  • Added stricter validation on delay for POST /v2/crawl and POST /v1/crawl; non-numeric, negative, or values over 86400 are now rejected with a schema error instead of being silently applied.
  • Added include_domains and exclude_domains to the Python SDK's sync Firecrawl.search(), matching the async client and the /v2/search payload.
  • Added V1-compatible method aliases (scrape_url/scrapeUrl, crawl_url/crawlUrl, batch_scrape_urls, map_url, etc.) on the V2 Python and JS clients; aliases emit a DeprecationWarning.
  • Changed the monitor webhook payload to wrap data in an array; monitor.page now includes isMeaningful, judgment, and a diff object.
  • Normalized monitor scrapeOptions.formats so changeTracking json mode is rewritten to json, and the mixed ["json", "git-diff"] form now runs both diffs instead of silently falling back to one.

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

View originalPermalink
How v2.11.0 went
v2.10

Firecrawl v2.10

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

View originalPermalink
How v2.10 went

v2.9.0

Firecrawl v2.9.0

Improvements
  • Browser Interaction via /interact endpoint — Scrape a page, then call /interact to take actions on it — click buttons, fill forms, navigate deeper, or extract dynamic content. Describe what you want in natural language via prompt, or write Playwright code (Node.js, Python) and Bash (agent-browser) for full control. Sessions persist across calls, with live view and interactive live view URLs for real-time browser streaming. Persistent profiles let you save and reuse browser state (cookies, localStorage) across scrapes. Available in JS, Python, Java, and Rust SDKs.
  • query format — Added query format to the /scrape endpoint — pass a natural-language prompt and get a direct answer back in data.answer.
  • audio format — Added audio format option to scrape responses, returning audio output as a field on the document.
  • onlyCleanContent parameter — Added onlyCleanContent parameter to the /scrape endpoint, which strips navigation, ads, cookie banners, and other non-semantic content from markdown output.
  • PDF parsing modes — Added PDF parsing modes (fast, auto, ocr) and a maxPages option to control extraction depth and OCR behavior.
  • Java and Elixir SDKs — Added official Java and Elixir SDKs with full v2 API support.
  • Legacy .doc file support — Added support for parsing legacy .doc files.
  • Wikimedia engine — Added a dedicated engine for scraping Wikipedia and Wikimedia pages with improved output quality.
  • contentType in scrape responses — Added contentType to scrape responses for PDFs and documents.
  • PDF pipeline improvements — Improved PDF pipeline with better table detection, header/footer stripping, mixed PDF handling, inline image parsing, and magic byte detection.
  • Branding extraction — Improved branding extraction to skip hidden DOM elements for cleaner output.
  • HTML-to-markdown performance — Improved HTML-to-markdown conversion performance and fixed code blocks losing content during conversion.
  • Concurrency queue — New concurrency queue system with reconciler and backfill for more reliable job scheduling.
  • Rust SDK v2 — Added v2 API namespace with agent support to the Rust SDK.
  • Fixed Python SDK parameters timeout, max_retries, and backoff_factor — these were previously accepted but silently ignored.
  • Capped job timeouts at 48 hours to prevent runaway jobs from consuming resources.
  • Added retry limits to prevent scrape loops.
  • Binary content types are now rejected early in the scrape pipeline to avoid wasted processing.
Fixes
  • Fixed empty responses when using the o3-mini model on extract jobs.
  • Fixed revoked API keys remaining valid for up to 10 minutes after deletion.
  • Fixed a race condition in extract jobs that caused "Job not found" crashes.
  • Fixed time_taken in /v1/map always returning ~0.
  • Fixed crawl status responses now surfacing a failed status with an error message and partial data when a crawl-level failure occurs.
  • Fixed maxPages not being passed to the PDF extractor — previously, full PDF content was returned while only charging for the limited page count.
  • Fixed free request credits being incorrectly consumed and billed on agent jobs exceeding the maxCredits threshold.
  • Fixed dashboard displaying incorrect concurrency limits due to stale reads.
  • Fixed branding colors.secondary not being populated.
  • Fixed removeBase64Images running after deriveDiff in the transformer pipeline, causing diff issues.
  • Fixed GCS fetch using wrong row index for cache info lookups.
  • Fixed unhandled ZodError in /v1/search controller.
  • Resolved multiple CVEs across dependencies including handlebars, path-to-regexp, fast-xml-parser, rollup (CVE-2026-27606), undici, and others.
  • Hardened the Playwright service against SSRF attacks.
API
  • Added GET /v2/team/activity endpoint for listing recent scrape, crawl, and extract jobs with cursor-based pagination (last 24 hours, up to 100 results per page, filterable by endpoint type).
  • Added regexOnFullURL parameter on crawl requests to apply includePaths/excludePaths filtering against the full URL including query parameters. Available in JS, Python, Java, and Elixir SDKs.
  • Added deduplicateSimilarURLs parameter on crawl requests. Available in JS, Python, Java, and Elixir SDKs.
  • Deprecated the extract endpoint — use the /agent endpoint instead. Existing extract methods in JS and Python SDKs are marked deprecated.
  • Renamed persistentSession to profile on browser/interact requests (writeMode is now saveChanges). The old parameter name remains functional but is no longer documented.

New Contributors
Contributors
  • @nickscamara
  • @mogery
  • @amplitudesxd
  • @abimaelmartell
  • @ericciarla
  • @rafaelsideguide
  • @delong3
  • @devhims
  • @Chadha93
  • @tomsideguide
  • @charlietlamb
  • @developersdigest
  • @micahstairs
  • @rhys-firecrawl
  • @firecrawl-spring
  • @devin-ai-integration
  • @misza-one
  • @madmikeross
  • @rowinsg
  • @Bortlesboat
  • @dagecko
  • @cokemine
  • @paulonasc

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

View originalPermalink
How v2.9.0 went

v2.8.0

v2.8.0

Firecrawl v2.8.0 is here!

Firecrawl v2.8.0 brings major improvements to agent workflows, developer tooling, and self-hosted deployments across the API and SDKs, including our new Skill.

  • Parallel Agents for running thousands of /agent queries simultaneously, powered by our new Spark 1 Fast model.
  • Firecrawl CLI with full support for scrape, search, crawl, and map commands.
  • Firecrawl Skill for enabling AI agents (Claude Code, Codex, OpenCode) to use Firecrawl autonomously.
  • Three new models powering /agent: Spark 1 Fast for instant retrieval (currently only available in Playground), Spark 1 Mini for complex research queries, and Spark 1 Pro for advanced extraction tasks.
  • Agent enhancements including webhooks, model selection, and new MCP Server tools.
  • Platform-wide performance improvements including faster search execution and optimized Redis calls.
  • SDK improvements including Zod v4 compatibility.

And much more, check it out below!

New Features
  • Parallel Agents
    Execute thousands of /agent queries in parallel with automatic failure handling and intelligent waterfall execution. Powered by Spark 1-Fast for instant retrieval, automatically upgrading to Spark 1 Mini for complex queries requiring full research.

  • Firecrawl CLI
    New command-line interface for Firecrawl with full support for scrape, search, crawl, and map commands. Install with npm install -g firecrawl-cli.

  • Firecrawl Skill
    Enables agents like Claude Cursor, Codex, and OpenCode to use Firecrawl for web scraping and data extraction, installable via npx skills add firecrawl/cli.

  • Spark Model Family
    Three new models powering /agent: Spark 1 Fast for instant retrieval (currently available in Playground), Spark 1 Mini (default) for everyday extraction tasks at 60% lower cost, and Spark 1 Pro for complex multi-domain research requiring maximum accuracy. Spark 1 Pro achieves ~50% recall while Mini delivers ~40% recall, both significantly outperforming tools costing 4-7x more per task.

  • Firecrawl MCP Server Agent Tools
    New firecrawl_agent and firecrawl_agent_status tools for autonomous web data gathering via MCP-enabled agents.

  • Agent Webhooks
    Agent endpoint now supports webhooks for real-time notifications on job completion and progress.

  • Agent Model Selection
    Agent endpoint now accepts a model parameter and includes model info in status responses.

  • Multi-Arch Docker Images
    Self-hosted deployments now support linux/arm64 architecture in addition to amd64.

  • Sitemap-Only Crawl Mode
    New crawl option to exclusively use sitemap URLs without following links.

  • ignoreCache Map Parameter
    New option to bypass cached results when mapping URLs.

  • Custom Headers for /map
    Map endpoint now supports custom request headers.

  • Background Image Extraction
    Scraper now extracts background images from CSS styles.

  • Improved Error Messages
    All user-facing error messages now include detailed explanations to help diagnose issues.


API Improvements
  • Search without concurrency limits — scrapes in search now execute directly without queue overhead.
  • Return 400 for unsupported actions with clear errors when requested actions aren't supported by available engines.
  • Job ID now included in search metadata for easier tracking.
  • Metadata responses now include detected timezone.
  • Backfill metadata title from og:title or twitter:title when missing.
  • Preserve gid parameter when rewriting Google Sheets URLs.
  • Fixed v2 path in batch scrape status pagination.
  • Validate team ownership when appending to existing crawls.
  • Screenshots with custom viewport or quality settings now bypass cache.
  • Optimized Redis calls across endpoints.
  • Reduced excessive robots.txt fetching and parsing.
  • Minimum request timeout parameter now configurable.

SDK Improvements
JavaScript SDK
  • Zod v4 Compatibility — schema conversion now works with Zod v4 with improved error detection.
  • Watcher ExportsWatcher and WatcherOptions now exported from the SDK entrypoint.
  • Agent Webhook Support — new webhook options for agent calls.
  • Error Retry Polling — SDK retries polling after transient errors.
  • Job ID in Exceptions — error exceptions now include jobId for debugging.
Python SDK
  • Manual pagination helpers for iterating through results.
  • Agent webhook support added to agent client.
  • Agent endpoint now accepts model selection parameter.
  • Metadata now includes concurrency limit information.
  • Fixed max_pages handling in crawl requests.

Dashboard Improvements
  • Dark mode is now supported.
  • On the usage page, you can now view credit usage broken down by day.
  • On the activity logs page, you can now filter by the API key that was used.
  • The "images" output format is now supported in the Playground.
  • All admins can now manage their team's subscriptions.

Quality & Performance
  • Skip markdown conversion checks for large HTML documents.
  • Export Google Docs as HTML instead of PDF for improved performance.
  • Improved branding format with better logo detection and error messages for PDFs and documents.
  • Improved lopdf metadata loading performance.
  • Updated html-to-markdown module with multiple bug fixes.
  • Increased markdown service body limit and added request ID logging.
  • Better Sentry filtering for cancelled jobs and engine errors.
  • Fixed extract race conditions and RabbitMQ poison pill handling.
  • Centralized Firecrawl configuration across the codebase.
  • Multiple security vulnerability fixes, including CVE-2025-59466 and lodash prototype pollution.

Self-Hosted Improvements
  • CLI custom API URL support via firecrawl --api-url http://localhost:3002 for local instances.
  • ARM64 Docker support via multi-arch images for Apple Silicon and ARM servers.
  • Fixed docker-compose database credentials out of the box.
  • Fixed Playwright service startup caused by Chromium path issues.
  • Updated Node.js to major version 22 instead of a pinned minor.
  • Added RabbitMQ health check endpoint.
  • Fixed PostgreSQL port exposure in docker-compose.

New Contributors
  • @gemyago
  • @loganaden
  • @pcgeek86
  • @dmlarionov

Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.7.0...v2.8.0

What's Changed
View originalPermalink
How v2.8.0 went

v2.7.0

Firecrawl v2.7.0 is here!
  • ZDR Search support for enterprise customers.
  • Improved Branding Format with better detection.
  • Partner Integrations API now in closed beta.
  • Faster and more accurate screenshots.
  • Self-hosted improvements

And a lot more enhacements, check it out below!

New Features
  • Improved Branding Extract
    Better logo and color detection for more accurate brand extraction results.

  • NOQ Scrape System (Experimental)
    New scrape pipeline with improved stability and integrated concurrency checks.

  • Enhanced Redirect Handling
    URLs now resolve before mapping, with safer redirect-chain detection and new abort timeouts.

  • Enterprise Search Parameters
    New enterprise-level options available for the /search endpoint.

  • Integration-Based User Creation
    Users can now be automatically created when coming from referring integrations.

  • minAge Scrape Parameter
    Allows requiring a minimum cached age before re-scraping.

  • Extract Billing Credits
    Extract jobs now use the same credit billing system as other endpoints.

  • Self-Host: Configurable Crawl Concurrency
    Self-hosted deployments can now set custom concurrency limits.

  • Sentry Enhancements
    Added Vercel AI integration, configurable sampling rates, and improved exception filtering.

  • UUIDv7 IDs
    All new resources use lexicographically sortable UUIDv7.

API Improvements
  • DNS Resolution Errors Now Return 200 for more consistent failure handling.
  • Improved URL Mapping Logic including sitemap maxAge fixes, recursive sitemap support, Vue/Angular router normalization, and skipping subdomain logic for IP addresses.
  • Partial Results for Multi-Source Search instead of failing all sources.
  • Concurrency Metadata Added to scrape job responses.
  • Enhanced Metrics including total wait time, LLM usage, and format details.
  • Batch Scrape Upgrades
    • Added missing /v2/batch/scrape/:jobId/errors endpoint
    • Fixed pagination off-by-one bug
  • More Robust Error Handling for PDF/document engines, pydantic parsing, Zod validation, URL validation, and billing edge cases.

SDK Improvements
JavaScript SDK
  • Returns job ID from synchronous methods.
  • Improved WebSocket document event handling.
  • Fixed types, Deno WS, and added support for ignoreQueryParameter.
  • Version bump with internal cleanup.
Python SDK
  • Added extra metadata fields.
  • Improved batch validation handling.

Quality & Performance
  • Reduced log file size and improved tmp file cleanup.
  • Updated Express version and patched vulnerable packages.
  • Disabled markdown conversion for sitemap scrapes for improved performance.
  • Better precrawl logging and formatting.
  • Skip URL rewriting for published Google Docs.
  • Prevent empty cookie headers during webhook callbacks.

Self-Hosted Improvements
  • Disabled concurrency limit enforcement for self-hosted mode.
  • PostgreSQL credentials now configurable via environment variables.
  • Docker-compose build instructions fixed.

👥 New Contributors
  • @omahs
  • @davidkhala
  • @DraPraks
  • @devhims

Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.6.0...v2.7.0

What's Changed
New Contributors

Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.6.0...v2.7.0

View originalPermalink
How v2.7.0 went

v2.6.0

v2.6.0

Highlights
  • Unified Billing Model - Credits and tokens merged into single system. Extract now uses credits (15 tokens = 1 credit), existing tokens work everywhere.
  • Full Release of Branding Format - Full support across Playground, MCP, JS and Python SDKs.
  • Change Tracking - Faster and more reliable detection of web page content updates.
  • Reliability and Speed Improvements - All endpoints significantly faster with improved reliability.
  • Instant Credit Purchases - Buy credit packs directly from dashboard without waiting for auto-recharge.
  • Improved Markdown Parsing - Enhanced markdown conversion and main content extraction accuracy.
  • Core Stability Fixes - Fixed change-tracking issues, PDF timeouts, and improved error handling.
What's Changed
New Contributors

Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.5.0...v2.6.0

View originalPermalink
How v2.6.0 went
v2.5.0

v2.5.0 - The World's Best Web Data API

v2.5.0 - The World's Best Web Data API

We now have the highest quality and most comprehensive web data API available powered by our new semantic index and custom browser stack.

See the benchmarks below:

New Features
  • Implemented scraping for .xlsx (Excel) files.
  • Introduced new crawl architecture and NUQ concurrency tracking system.
  • Per-owner/group concurrency limiting + dynamic concurrency calculation.
  • Added group backlog handling and improved group operations.
  • Added /search pricing update
  • Added team flag to skip country check.
  • Always populate NUQ metrics for improved observability.
  • New test-site app for improved CI testing.
  • Extract metadata from document head for richer output.
Enhancements & Improvements
  • Improved blocklist loading and unsupported site error messages.
  • Updated x402-express version.
  • Improved includePaths handling for subdomains.
  • Updated self-hosted search to use DuckDuckGo.
  • JS & Python SDKs no longer require API key for self-hosted deployments.
  • Python SDK timeout handling improvements.
  • Rust client now uses tracing instead of print.
  • Reduced noise in auto-recharge Slack notifications.
Fixes
  • Ensured crawl robots.txt warnings surface reliably.
  • Resolved concurrency deadlocks and duplicate job handling.
  • Fixed search country defaults and pricing logic bugs.
  • Fixed port conflicts in harness environments.
  • Fixed viewport dimension support and screenshot behavior in Playwright.
  • Resolved CI test flakiness (playwright cache, prod tests).
👋 New Contributors
  • @delong3
  • @c4nc
  • @codetheweb

Full diff: https://github.com/firecrawl/firecrawl/compare/v2.4.0...v2.5.0

What's Changed
New Contributors

Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.4.0...v2.5.0

View originalPermalink
How v2.5.0 went

v2.4.0

v2.4.0
New Features
  • New PDF Search Category - You can now search for only pdfs via our v2/search endpoints by specifying .pdf category
  • Gemini 2.5 Flash CLI Image Editor — Create and edit images directly in the CLI using Firecrawl + Gemini 2.5 Flash integration (#2172)
  • x402 Search Endpoint (/v2/x402) — Added a next-gen search API with improved accuracy and speed (#2218)
  • RabbitMQ Event System — Firecrawl jobs now support event-based communication and prefetching from Postgres (#2230, #2233)
  • Improved Crawl Status API — More accurate and real-time crawl status reporting using the new crawl_status_2 RPC (#2239)
  • Low-Results & Robots.txt Warnings — Users now receive clear feedback when crawls are limited by robots.txt or yield few results (#2248)
  • Enhanced Tracing (OpenTelemetry) — Much-improved distributed tracing for better observability across services (#2219)
  • Metrics & Analytics — Added request-level metrics for both Scrape and Search endpoints (#2216)
  • Self-Hosted Webhook Support — Webhooks can now be delivered to private IP addresses for self-hosted environments (#2232)
Improvements
  • Reduced Docker Image Size — Playwright service image size reduced by 1 GB by only installing Chromium (#2210)
  • Python SDK Enhancements — Added "cancelled" job status handling and poll interval fixes (#2240, #2265)
  • Faster Node SDK Timeouts — Axios timeouts now propagate correctly, improving reliability under heavy loads (#2235)
  • Improved Crawl Parameter Previews — Enhanced prompts and validation for crawl parameter previews (#2220)
  • Zod Schema Validation — Stricter API parameter validation with rejection of extra fields (#2058)
  • Better Redis Job Handling — Fixed edge cases in getDoneJobsOrderedUntil for more stable Redis retrieval (#2258)
  • Markdown & YouTube Fixes — Fixed YouTube cache and empty markdown summary bugs (#2226, #2261)
  • Updated Docs & Metadata — README updates and new metadata fields added to the JS SDK (#2250, #2254)
  • Improved API Port Configuration — The API now respects environment-defined ports (#2209)
Fixes
  • Fixed recursive $ref schema validation edge cases (#2238)
  • Fixed enum arrays being incorrectly converted to objects (#2224)
  • Fixed harness timeouts and self-hosted docker-compose.yaml issues (#2242, #2252)
New Contributors

🔗 Full Changelog: v2.3.0 → v2.4.0

What's Changed
New Contributors

Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.3.0...v2.4.0

View originalPermalink
How v2.4.0 went

v2.3.0

v2.3.0
New Features
  • YouTube Support: You can now get YouTube transcripts
  • Enterprise Auto-Recharge: Added enterprise support for auto-recharge
  • odt and .rtf: Now support odt and rtf file parsing
  • Docx Parsing: 50x faster docx parsing
  • K8s Deployment: Added NuQ worker deployment example
  • Self Host: Tons of improvements for our self host users
Improvements & Fixes
  • Stability: Fixed timeout race condition, infinite scrape loop, and location query bug
  • Tooling: Replaced ts-prune with knip, updated pnpm with minimumReleaseAge
  • Docs: Added Rust to CONTRIBUTING and fixed typos
  • Security: Fixed pkgvuln issue
What's Changed
New Contributors

Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.2.0...v2.3.0

View originalPermalink
How v2.3.0 went

v2.2.0

v2.2.0
Features
  • MCP version 3 is live. Stable support for cloud mcp with HTTP Transport and SSE modes. Compatible with v2 and v1 from.
  • Webhooks: Now we support signatures + extract support + event failures
  • Map is now 15x faster + supports more urls
  • Search reliability improvements
  • Usage is now tracked by API Key
  • Support for additional locations (CA, CZ, IL, IN, IT, PL, and PT)
  • Queue status endpoint
  • Added maxPages parameter to v2 scrape API for pdf parsing
Improvements
  • API:
    • New /team/queue-status endpoint.
    • Added nuq feature.
    • Added VIASOCKET integration.
    • Historical credit/token usage endpoints with expanded data.
  • Student Program: Support for more universities + students to get free credits through our student program
  • Map: 15x faster and increased the limit to 100k
  • Scrape API: Added maxPages parameter for PDF parser.
  • Python SDK:
    • Added get_queue_status to aio + normalization of docs in search results.
    • SDKs: Added next cursor pagination and integration param support.
  • Infrastructure: Added static IP proxy pool + proxy location support.
  • Webhooks: Implemented signatures, refactored sending, added scrape error events.
  • Performance: Optimized map, converted Rust natives to single NAPI library.
  • CI/CD: Revamped CI, added pre-commit hooks, cross-platform harness.
🐛 Fixes
  • Corrected concurrency limit scaling.
  • Fixed search result links/descriptions and retry mechanism for empty results.
  • Re-signed expired screenshot URLs.
  • Trimmed null chars from PDF titles + fixed encoding.
  • Fixed sitemap parsing and added .gz sitemap support.
  • Fixed js-sdk zod-to-json-schema import.
  • Fixed webhook data format regression.
  • Improved credit handling in account object.
🛠️ Chores & Other
  • Removed unused dependencies, updated CONTRIBUTING.md.
  • Added debug logging, ignored scripts during CI build.
  • Various dependency bumps and build improvements.

🔗 Full Changelog: v2.1.0...v2.2.0

What's Changed

Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.1.0...v2.2.0

View originalPermalink
How v2.2.0 went
View all

Discussion