Firecrawl
OpenClaw can use Firecrawl in three ways:
- as the
web_searchprovider - as explicit plugin tools:
firecrawl_searchandfirecrawl_scrape - as a fallback extractor for
web_fetch
It is a hosted extraction/search service that supports bot circumvention and caching, which helps with JS-heavy sites or pages that block plain HTTP fetches.
Get an API key
Section titled “Get an API key”- Create a Firecrawl account and generate an API key.
- Store it in config or set
FIRECRAWL_API_KEYin the gateway environment.
Configure Firecrawl search
Section titled “Configure Firecrawl search”{ tools: { web: { search: { provider: "firecrawl", }, }, }, plugins: { entries: { firecrawl: { enabled: true, config: { webSearch: { apiKey: "FIRECRAWL_API_KEY_HERE", baseUrl: "https://api.firecrawl.dev", }, }, }, }, },}Notes:
- Choosing Firecrawl in onboarding or
openclaw configure --section webenables the bundled Firecrawl plugin automatically. web_searchwith Firecrawl supportsqueryandcount.- For Firecrawl-specific controls like
sources,categories, or result scraping, usefirecrawl_search. baseUrldefaults to hosted Firecrawl athttps://api.firecrawl.dev. Self-hosted overrides are allowed only for private/internal endpoints; HTTP is accepted only for those private targets.FIRECRAWL_BASE_URLis the shared env fallback for Firecrawl search and scrape base URLs.
Configure Firecrawl scrape + web_fetch fallback
Section titled “Configure Firecrawl scrape + web_fetch fallback”{ plugins: { entries: { firecrawl: { enabled: true, config: { webFetch: { apiKey: "FIRECRAWL_API_KEY_HERE", baseUrl: "https://api.firecrawl.dev", onlyMainContent: true, maxAgeMs: 172800000, timeoutSeconds: 60, }, }, }, }, },}Notes:
- Firecrawl fallback attempts run only when an API key is available (
plugins.entries.firecrawl.config.webFetch.apiKeyorFIRECRAWL_API_KEY). maxAgeMscontrols how old cached results can be (ms). Default is 2 days.- Legacy
tools.web.fetch.firecrawl.*config is auto-migrated byopenclaw doctor --fix. - Firecrawl scrape/base URL overrides follow the same hosted/private rule as search: public hosted traffic uses
https://api.firecrawl.dev; self-hosted overrides must resolve to private/internal endpoints. firecrawl_scraperejects obvious private, loopback, metadata, and non-HTTP(S) target URLs before forwarding them to Firecrawl, matching theweb_fetchtarget-safety contract for explicit Firecrawl scrape calls.
firecrawl_scrape reuses the same plugins.entries.firecrawl.config.webFetch.* settings and env vars.
Self-hosted Firecrawl
Section titled “Self-hosted Firecrawl”Set plugins.entries.firecrawl.config.webSearch.baseUrl,
plugins.entries.firecrawl.config.webFetch.baseUrl, or FIRECRAWL_BASE_URL
when you run Firecrawl yourself. OpenClaw accepts http:// only for loopback,
private-network, .local, .internal, or .localhost targets. Public custom
hosts are rejected so Firecrawl API keys are not sent to arbitrary endpoints by
accident.
Firecrawl plugin tools
Section titled “Firecrawl plugin tools”firecrawl_search
Section titled “firecrawl_search”Use this when you want Firecrawl-specific search controls instead of generic web_search.
Core parameters:
querycountsourcescategoriesscrapeResultstimeoutSeconds
firecrawl_scrape
Section titled “firecrawl_scrape”Use this for JS-heavy or bot-protected pages where plain web_fetch is weak.
Core parameters:
urlextractModemaxCharsonlyMainContentmaxAgeMsproxystoreInCachetimeoutSeconds
Stealth / bot circumvention
Section titled “Stealth / bot circumvention”Firecrawl exposes a proxy mode parameter for bot circumvention (basic, stealth, or auto).
OpenClaw always uses proxy: "auto" plus storeInCache: true for Firecrawl requests.
If proxy is omitted, Firecrawl defaults to auto. auto retries with stealth proxies if a basic attempt fails, which may use more credits
than basic-only scraping.
How web_fetch uses Firecrawl
Section titled “How web_fetch uses Firecrawl”web_fetch extraction order:
- Readability (local)
- Firecrawl (if selected or auto-detected as the active web-fetch fallback)
- Basic HTML cleanup (last fallback)
The selection knob is tools.web.fetch.provider. If you omit it, OpenClaw
auto-detects the first ready web-fetch provider from available credentials.
Today the bundled provider is Firecrawl.
Related
Section titled “Related”- Web Search overview — all providers and auto-detection
- Web Fetch — web_fetch tool with Firecrawl fallback
- Tavily — search + extract tools