/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.fast, auto, ocr) and a maxPages option to control extraction depth and OCR behavior..doc file support — Added support for parsing legacy .doc files.contentType in scrape responses — Added contentType to scrape responses for PDFs and documents.timeout, max_retries, and backoff_factor — these were previously accepted but silently ignored.o3-mini model on extract jobs.time_taken in /v1/map always returning ~0.failed status with an error message and partial data when a crawl-level failure occurs.maxPages not being passed to the PDF extractor — previously, full PDF content was returned while only charging for the limited page count.maxCredits threshold.colors.secondary not being populated.removeBase64Images running after deriveDiff in the transformer pipeline, causing diff issues.ZodError in /v1/search controller.handlebars, path-to-regexp, fast-xml-parser, rollup (CVE-2026-27606), undici, and others.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).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.deduplicateSimilarURLs parameter on crawl requests. Available in JS, Python, Java, and Elixir SDKs.extract endpoint — use the /agent endpoint instead. Existing extract methods in JS and Python SDKs are marked deprecated.persistentSession to profile on browser/interact requests (writeMode is now saveChanges). The old parameter name remains functional but is no longer documented.Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.8.0...v2.9.0
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.
/agent queries simultaneously, powered by our new Spark 1 Fast model.And much more, check it out below!
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.
400 for unsupported actions with clear errors when requested actions aren't supported by available engines.og:title or twitter:title when missing.gid parameter when rewriting Google Sheets URLs.robots.txt fetching and parsing.Watcher and WatcherOptions now exported from the SDK entrypoint.jobId for debugging.max_pages handling in crawl requests.lopdf metadata loading performance.html-to-markdown module with multiple bug fixes.firecrawl --api-url http://localhost:3002 for local instances.Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.7.0...v2.8.0
And a lot more enhacements, check it out below!
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.
maxAge fixes, recursive sitemap support, Vue/Angular router normalization, and skipping subdomain logic for IP addresses./v2/batch/scrape/:jobId/errors endpointdocument event handling.ignoreQueryParameter.Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.6.0...v2.7.0
Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.6.0...v2.7.0
python-sdk with model selection by @Chadha93 in https://github.com/firecrawl/firecrawl/pull/2266Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.5.0...v2.6.0
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:
<img width="1200" height="675" alt="image" src="https://github.com/user-attachments/assets/96a2ba36-0c7f-4fa3-829e-d6ac91b53705" />.xlsx (Excel) files./search pricing updatetracing instead of print.Full diff: https://github.com/firecrawl/firecrawl/compare/v2.4.0...v2.5.0
tracing instead of print by @codetheweb in https://github.com/firecrawl/firecrawl/pull/2324Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.4.0...v2.5.0
/v2/x402) — Added a next-gen search API with improved accuracy and speed (#2218)crawl_status_2 RPC (#2239)"cancelled" job status handling and poll interval fixes (#2240, #2265)getDoneJobsOrderedUntil for more stable Redis retrieval (#2258)$ref schema validation edge cases (#2238)docker-compose.yaml issues (#2242, #2252)🔗 Full Changelog: v2.3.0 → v2.4.0
poll_interval param in watcher by @Chadha93 in https://github.com/firecrawl/firecrawl/pull/2155$ref for recursive schema validation by @Chadha93 in https://github.com/firecrawl/firecrawl/pull/2238queue_scrape for nuq schema by @Chadha93 in https://github.com/firecrawl/firecrawl/pull/2272Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.3.0...v2.4.0
pkgvuln issueFull Changelog: https://github.com/firecrawl/firecrawl/compare/v2.2.0...v2.3.0
maxPages parameter to v2 scrape API for pdf parsing/team/queue-status endpoint.nuq feature.VIASOCKET integration.maxPages parameter for PDF parser.get_queue_status to aio + normalization of docs in search results..gz sitemap support.zod-to-json-schema import.🔗 Full Changelog: v2.1.0...v2.2.0
include entries by @amplitudesxd in https://github.com/firecrawl/firecrawl/pull/2134Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.1.0...v2.2.0
categories parameter:
github: Search within GitHub repositories, code, issues, and documentationresearch: Search academic and research websites (arXiv, Nature, IEEE, PubMed, etc.)data-* attributes.scrapeOptions.formats.credits_billed in v0 scrape.Full Changelog: https://github.com/firecrawl/firecrawl/compare/v2.0.1...v2.1.0
This release fixes the "SSRF Vulnerability via malicious webhook" security advisory. It is recommended that people using the self-hosted version of Firecrawl update to v2.0.1 immediately. More info in the advisory: https://github.com/firecrawl/firecrawl/security/advisories/GHSA-p2wg-prhf-jx79
Faster by default: Requests are cached with maxAge defaulting to 2 days, and sensible defaults like blockAds, skipTlsVerification, and removeBase64Images are enabled.
New summary format: You can now specify "summary" as a format to directly receive a concise summary of the page content.
Updated JSON extraction: JSON extraction and change tracking now use an object format: { type: "json", prompt, schema }. The old "extract" format has been renamed to "json".
Enhanced screenshot options: Use the object form: { type: "screenshot", fullPage, quality, viewport }.
New search sources: Search across "news" and "images" in addition to web results by setting the sources parameter.
Smart crawling with prompts: Pass a natural-language prompt to crawl and the system derives paths/limits automatically. Use the new crawl-params-preview endpoint to inspect the derived options before starting a job.
const firecrawl = new Firecrawl({ apiKey: 'fc-YOUR-API-KEY' })firecrawl = Firecrawl(api_key='fc-YOUR-API-KEY')https://api.firecrawl.dev/v2/ endpoints."summary" where needed{ type: "json", prompt, schema } for JSON extractionstartCrawl + getCrawlStatus (or crawl waiter)startBatchScrape + getBatchScrapeStatus (or batchScrape waiter)startExtract + getExtractStatus (or extract waiter)prompt with crawl-params-previewScrape, Search, and Map
| v1 (FirecrawlApp) | v2 (Firecrawl) |
|---|---|
scrapeUrl(url, ...) | scrape(url, options?) |
search(query, ...) | search(query, options?) |
mapUrl(url, ...) | map(url, options?) |
Crawling
| v1 | v2 |
|---|---|
crawlUrl(url, ...) | crawl(url, options?) (waiter) |
asyncCrawlUrl(url, ...) | startCrawl(url, options?) |
checkCrawlStatus(id, ...) | getCrawlStatus(id) |
cancelCrawl(id) | cancelCrawl(id) |
checkCrawlErrors(id) | getCrawlErrors(id) |
Batch Scraping
| v1 | v2 |
|---|---|
batchScrapeUrls(urls, ...) | batchScrape(urls, opts?) (waiter) |
asyncBatchScrapeUrls(urls, ...) | startBatchScrape(urls, opts?) |
checkBatchScrapeStatus(id, ...) | getBatchScrapeStatus(id) |
checkBatchScrapeErrors(id) | getBatchScrapeErrors(id) |
Extraction
| v1 | v2 |
|---|---|
extract(urls?, params?) | extract(args) |
asyncExtract(urls, params?) | startExtract(args) |
getExtractStatus(id) | getExtractStatus(id) |
Other / Removed
| v1 | v2 |
|---|---|
generateLLMsText(...) | (not in v2 SDK) |
checkGenerateLLMsTextStatus(id) | (not in v2 SDK) |
crawlUrlAndWatch(...) | watcher(jobId, ...) |
batchScrapeUrlsAndWatch(...) | watcher(jobId, ...) |
Core Document Types
| v1 | v2 |
|---|---|
FirecrawlDocument | Document |
FirecrawlDocumentMetadata | DocumentMetadata |
Scrape, Search, and Map Types
| v1 | v2 |
|---|---|
ScrapeParams | ScrapeOptions |
ScrapeResponse | Document |
SearchParams | SearchRequest |
SearchResponse | SearchData |
MapParams | MapOptions |
MapResponse | MapData |
Crawl Types
| v1 | v2 |
|---|---|
CrawlParams | CrawlOptions |
CrawlStatusResponse | CrawlJob |
Batch Operations
| v1 | v2 |
|---|---|
BatchScrapeStatusResponse | BatchScrapeJob |
Action Types
| v1 | v2 |
|---|---|
Action | ActionOption |
Error Types
| v1 | v2 |
|---|---|
FirecrawlError | SdkError |
ErrorResponse | ErrorDetails |
Scrape, Search, and Map
| v1 | v2 |
|---|---|
scrape_url(...) | scrape(...) |
search(...) | search(...) |
map_url(...) | map(...) |
Crawling
| v1 | v2 |
|---|---|
crawl_url(...) | crawl(...) (waiter) |
async_crawl_url(...) | start_crawl(...) |
check_crawl_status(...) | get_crawl_status(...) |
cancel_crawl(...) | cancel_crawl(...) |
Batch Scraping
| v1 | v2 |
|---|---|
batch_scrape_urls(...) | batch_scrape(...) (waiter) |
async_batch_scrape_urls(...) | start_batch_scrape(...) |
get_batch_scrape_status(...) | get_batch_scrape_status(...) |
get_batch_scrape_errors(...) | get_batch_scrape_errors(...) |
Extraction
| v1 | v2 |
|---|---|
extract(...) | extract(...) |
start_extract(...) | start_extract(...) |
get_extract_status(...) | get_extract_status(...) |
Other / Removed
| v1 | v2 |
|---|---|
generate_llms_text(...) | (not in v2 SDK) |
get_generate_llms_text_status(...) | (not in v2 SDK) |
watch_crawl(...) | watcher(job_id, ...) |
AsyncFirecrawl mirrors the same methods (all awaitable)."markdown", "html", "rawHtml", "links", "summary".parsePDF use parsers: [ { "type": "pdf" } | "pdf" ]. curl -X POST https://api.firecrawl.dev/v2/scrape \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"url": "https://docs.firecrawl.dev/",
"formats": [{
"type": "json",
"prompt": "Extract the company mission from the page."
}]
}'
curl -X POST https://api.firecrawl.dev/v2/scrape \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"url": "https://docs.firecrawl.dev/",
"formats": [{
"type": "screenshot",
"fullPage": true,
"quality": 80,
"viewport": { "width": 1280, "height": 800 }
}]
}'
| v1 | v2 |
|---|---|
allowBackwardCrawling | (removed) use crawlEntireDomain |
maxDepth | (removed) use maxDiscoveryDepth |
ignoreSitemap (bool) | sitemap (e.g., "only", "skip", or "include") |
| (none) | prompt |
See crawl params preview examples:
curl -X POST https://api.firecrawl.dev/v2/crawl-params-preview \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"url": "https://docs.firecrawl.dev",
"prompt": "Extract docs and blog"
}'
crawl:<id>:visited size in Redis by 16x by @mogery in https://github.com/firecrawl/firecrawl/pull/1936maxAge: 0 explicit in Index tests by @mogery in https://github.com/firecrawl/firecrawl/pull/1946Full Changelog: https://github.com/firecrawl/firecrawl/compare/v1.15.0...v2.0.0
scrapeURL and HTML transformercreated_at field in /crawl/active responsefilterLinks ported to RustscrapeURL index bug & waitFor exclusionparsePDF=falsecrawl-status resilience for ejected jobsFull Changelog: https://github.com/mendableai/firecrawl/compare/v1.14.0...v1.15.0
We're excited to announce the release of Firecrawl v1.14.0, packed with cool updates.
Full Changelog: https://github.com/mendableai/firecrawl/compare/v1.13.0...v1.14.0
scrapeURL via safeFetchparsePDF support in Python & JS SDKspdf, credits scope, ignoreInvalidURLs bugsFull Changelog: https://github.com/mendableai/firecrawl/compare/v1.12.0...v1.13.0
P.S. Have feedback or ideas for v1.13.0? Hit reply and let us know. We're always listening to our community to build the features you need most.
maxConcurrency parameter (FIR-2191) by @mogery in https://github.com/mendableai/firecrawl/pull/1643Full Changelog: https://github.com/mendableai/firecrawl/compare/v1.11.0...v1.12.0
GET /crawl/ongoing endpointintegration field to jobs and propagated through queue workermuqueryIndexAtSplitLevel to RPCcredits_billed field across pipelinecallWebhook and added loggingPLAYWRIGHT_MICROSERVICE_URL in env exampleFull Changelog: https://github.com/mendableai/firecrawl/compare/v1.10.0...v1.11.0
Full Changelog: https://github.com/mendableai/firecrawl/compare/v1.10.0...v1.11.0
We’re excited to announce the launch of our new Search API endpoint that combines web search with Firecrawl’s powerful scraping capabilities.
scrapeURL, js-sdk) #1551, #1602scrapeURL/pdf #1570, #1604, #1592ignoreBlockedURLs, ignore concurrency limit #1580, #1617/cclog endpoint for concurrency logging #1589itemprop attributes #1624LLMs.txt + bypass option #1557og:locale:alternate, adblock toggle, Playwright-only logic, malformed metadata arrays #1597, #1616, #1574/scrape calls on worker side with stricter timeout enforcement (FIR-2162) by @mogery in https://github.com/mendableai/firecrawl/pull/1607Full Changelog: https://github.com/mendableai/firecrawl/compare/v1.9.0...v.10.0
Self-Host Improvements
MCP Improvements (v1.11.0)
SDK & API Enhancements
Performance & Limits
Fixes & Stability
Dashboard (Cloud version)
Full Changelog: https://github.com/mendableai/firecrawl/compare/v1.8.0...v1.9.0
For the final day of Launch Week III, we’re rolling out new and updated integrations that make it easier to connect Firecrawl to the tools and platforms you already use.
From automation platforms to AI pipelines, Firecrawl now integrates with 20+ services, giving you a faster path from web data to workflow execution.
More integrations are on the way — and if there’s one you’re missing, we’d love to hear about it.
Today we’re launching a major upgrade to our Firecrawl MCP server, our implementation of the Model Context Protocol for LLM-connected scraping workflows.
This release brings FIRE-1 agent support to the MCP, letting you unlock data hidden behind interaction barriers like logins and buttons — all via scrape and extract endpoints.
We’re also introducing Server-Sent Events (SSE) support for local use, making setup and real-time integration easier than ever.
These updates make it simpler to stream web data into LLM pipelines, with intelligent agents handling the heavy lifting.
Today is all about developers. We’re rolling out upgrades that make building with Firecrawl smoother and more scalable — whether you’re working in Python, Rust, or your favorite editor.
We’ve introduced a fully async Python SDK with named params and return types, powerful new features in the Rust SDK, expanded team support on every plan, and a brand new Firecrawl Dark Theme for VSCode and compatible editors.
Today we’re announcing http://llmstxt.new — the fastest way to turn any website into a clean, consolidated text file for LLMs.
Just add llmstxt.new/ in front of any URL, and you’ll get back a plain .txt file, optimized for AI training and inference. No boilerplate, no noise — just useful content.
Built on top of Firecrawl, this tool makes it effortless to prepare real-world web content for use in LLM pipelines.
llmstxt.new/ before any URL.llms.txt for concise summaries, llms-full.txt for full content.http://llmstxt.new/{YOUR_URL} or with a Firecrawl API key for full output.Today we’re launching /extract v2, a major upgrade to our extraction system — powered by the FIRE-1 agent.
With full support for pagination, multi-step flows, and dynamic interactions, extract v2 goes way beyond what we shipped back in January. It’s also now possible to extract data without a URL, using a built-in search layer to find the content you’re after.
We’ve rebuilt the internals from the ground up — improved models, better architecture, and significantly better performance across our internal benchmarks.
Meet FIRE-1, Firecrawl's first AI Agent built to take web scraping to the next level. With intelligent navigation and interaction capabilities, FIRE-1 can go far beyond traditional scraping methods.
From handling pagination to interacting with dynamic site elements like buttons and links, FIRE-1 allows for powerful, context-aware scraping and extraction workflows.
Change tracking is a powerful feature that allows you to monitor and detect changes in web content over time. It is available in both the JavaScript and Python SDKs.
Using the changeTracking format, you can effectively monitor changes on a website and receive comprehensive information about the timestamp of the previous scrape, the result of the comparison between the two page versions, and the visibility of the current page/URL.
We're excited to release our official Firecrawl Editor Theme! Available now for most editors including Cursor, Windsurf, and more.
The Firecrawl Editor Theme provides a clean, focused coding experience for everyone. Our color palette emphasizes readability while maintaining the Firecrawl brand identity.
You can download the editor theme on the VS Code Marketplace here.
_async_monitor_job_status in AsyncFirecrawlApp by @jmbledsoe in https://github.com/mendableai/firecrawl/pull/1498Full Changelog: https://github.com/mendableai/firecrawl/compare/v1.7.0...v1.8.0
maxDiscoveryDepth option added.llmExtract.Full Changelog: https://github.com/mendableai/firecrawl/compare/v1.6.0...v1.7.0