Through a node that Firecrawl builds and n8n verifies, exposing scrape, crawl, map, search, extract, batch scrape and browser sandbox operations. It installs from the community node panel with an API key. The three things that catch people out are a two-day cache default, a crawl scope flag that silently under-collects, and a credit model with a five times multiplier on JSON mode.
What already exists
The node is built and maintained by Firecrawl and verified by n8n, which is a slightly unusual arrangement worth understanding. It is first-party in authorship but distributed as a community node rather than shipped in n8n core, which is why there is no Firecrawl page in n8n's own documentation and why the authoritative guide lives on Firecrawl's side. Operations cover scrape, search, crawl, map, extract, batch scrape, agent, and browser sandbox sessions, plus account operations for credit usage and queue status. Firecrawl also ships an official MCP server exposing eleven tools, with n8n listed as a supported client.
The detail
Scrape: a single URL to clean markdown, HTML, JSON, screenshot and other formats
Crawl: recursive discovery and scraping from a start URL, via sitemap and link traversal
Map: a list of site URLs, prioritising speed over completeness
Search: web search returning results plus optionally the scraped content in one call
Extract: URLs plus a prompt or JSON schema returning structured data. Beta.
Batch scrape, agent operations, and browser sandbox sessions for stateful interaction
Account operations: credit usage, token usage, queue status, crawl status and cancel
JavaScript rendering, dynamic content and PDFs are handled without extra configuration
In practice
The two day cache default returns stale pages, and bills you anyway
Scrape defaults to a maxAge freshness window of two days, so a repeat request inside that window returns a cached result instantly. For a research pipeline that is usually what you want. For anything monitoring change, such as watching a prospect's careers page or pricing page, it means you can poll daily and never see the change you are polling for. Set maxAge to zero when freshness matters. Note that cached results still cost a credit per page, so caching saves time rather than money.
Firecrawl docs: scrape, formats, caching and maxAge defaultCrawl ignores links that are not children of the start URL
By default a crawl will not follow sublinks outside the start URL's path, unless crawlEntireDomain is set. This is a silent under-collection: the job succeeds, returns pages, and simply never visited the sections you assumed were included. A crawl of a company's /blog will not reach /careers unless you tell it to. Nothing in the result indicates what was skipped.
Firecrawl docs: crawl, scope, non-determinism and retentionJSON mode is a five times multiplier and extract is token-metered
A plain scrape is one credit per page. JSON mode adds four, so structured extraction costs five credits per page rather than one. Extract is billed at one credit per fifteen tokens, which is unbounded in a way per-page pricing is not. Map, by contrast, is a flat one credit per call no matter how many URLs come back. A pipeline designed without knowing this asymmetry can cost several times what an equivalent one costs.
Firecrawl pricing: plans, credits and concurrencyCrawl results vary between runs
Firecrawl documents this directly: page results may vary between runs because of concurrent scraping, and pages at the depth boundary explore branches inconsistently at high concurrency. If a workflow compares this run against the last one, some of the difference is the crawler rather than the website. Anything doing change detection needs to account for that or it will generate false positives.
Firecrawl docs: crawl, scope, non-determinism and retentionMap is deliberately incomplete, and the vendor says so
Firecrawl's own documentation states that map prioritises speed and may not capture all website links, recommending crawl for comprehensive discovery. Teams reach for map because it is fast and flat-rate, then build on the assumption that it returned everything. It is the right tool for orientation and the wrong one for coverage.
Firecrawl docs: map, and its documented incompletenessWhether a failed scrape consumes a credit is not documented
We looked for this in the errors documentation, the scrape and crawl feature pages, and the GitHub issues, and found no statement either way. It is a reasonable question to ask before building a pipeline that retries aggressively, and we would rather tell you it is undocumented than guess. If retry cost matters to your budget, test it on a small volume before scaling.
When not to hire anyone
For most work the node is the whole answer and there is nothing to build. Scraping a list of prospect websites, pulling a careers page into an enrichment flow, or running a search and capturing the content all sit comfortably inside the node with an API key and a credential. Where it stops being enough is at the operational edges: pipelines that need change detection reliable enough to trigger outbound, jobs whose results must outlive the 24 hour retention window, workloads where the credit asymmetry between scrape, JSON mode and extract materially affects the budget, or self-hosted deployments that need the anti-bot behaviour Fire-engine provides and self-hosting does not.
How we build it
We start with the cost model, because it is the part that surprises people. Mapping a site is flat-rate, scraping is per page, JSON mode is five times a plain scrape, and extract is metered by token. Deciding which of those does the work is an architectural choice with a large cost consequence, and it is easier to make before the pipeline exists than after the first invoice.
For the agentic research pattern, which is what we most often build here, the shape is: map or crawl to establish what exists, scrape the pages that matter, then pass content to a model for structuring rather than paying for JSON mode on every page. That keeps the expensive step proportional to the pages that actually warrant it.
We handle caching and retention explicitly. Freshness-sensitive checks run with maxAge at zero, everything else takes the default, and results are persisted out of Firecrawl into storage we control before the 24 hour window closes, so a rerun is a database read rather than a repeat charge.
We make failure visible. Rate limits are per team so concurrent workflows contend with each other, 429 and 402 are distinct conditions needing different handling, and crawl non-determinism means change detection needs a tolerance rather than a strict diff. Failed URLs go to a review queue instead of disappearing into an empty result set.
An agentic research pipeline on Firecrawl and n8n is usually a two to four week build, with most of the time going into what happens to the content after it is scraped rather than into the scraping. See how we scope and price this work.
Sources
Related integrations
If you are weighing whether to build this in house or have it built, read what a build like this costs, or see worked examples from real engagements. The vocabulary behind all of this is in the B2B GTM and automation glossary.
Get in touch
Give us some context and we'll come to the conversation prepared. No generic pitch. No obligation.
We review every inquiry personally and respond within one business day.