Firecrawl Integration: Search, Scrape, and Web Fetch Fallback
This page explains how OpenClaw integrates with Firecrawl for web search, scraping, and fallback extraction. It is intended for developers needing to configure Firecrawl with or without an API key.
Read this when
- You want Firecrawl-backed web extraction
- You want keyless Firecrawl Search (Free) or keyless web_fetch
- You need a Firecrawl API key for search or higher limits
- You want Firecrawl as a web_search provider
- You want anti-bot extraction for web_fetch
OpenClaw integrates with Firecrawl through three distinct mechanisms:
- acting as the
web_searchprovider - offering explicit plugin tools:
firecrawl_searchandfirecrawl_scrape - serving as a fallback extractor for
web_fetch
This hosted extraction and search service bypasses bot detection and caches responses, making it useful for JavaScript-heavy sites or pages that reject basic HTTP requests.
Install plugin
After installing the official plugin, restart Gateway:
openclaw plugins install @openclaw/firecrawl-plugin
openclaw gateway restart
Keyless access and API keys
Firecrawl provides two web_search providers:
- Firecrawl Search (
firecrawl), accesses the hosted/v2/searchAPI using your key; automatically activated when a key exists. - Firecrawl Search (Free) (
firecrawl-free), uses the hosted starter tier without a key, requiring no API credentials. It must be manually chosen and never activates automatically, since selecting it forwards your search queries to Firecrawl's free service.
The explicitly configured Firecrawl web_fetch fallback also operates without a key. The
explicit firecrawl_search and firecrawl_scrape tools need an API key. Add
FIRECRAWL_API_KEY to the gateway environment or configure it to increase rate limits.
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:
- Selecting Firecrawl during onboarding or via
openclaw configure --section webautomatically activates the installed Firecrawl plugin. - To run without an API key, choose Firecrawl Search (Free) in onboarding or set
provider: "firecrawl-free". The keyed Firecrawl Search provider routesplugins.entries.firecrawl.config.webSearch.apiKeyorFIRECRAWL_API_KEY. web_searchwith Firecrawl supportsqueryandcount.- For Firecrawl-specific options such as
sources,categories, or result scraping, rely onfirecrawl_search. baseUrlpoints to the hosted Firecrawl instance athttps://api.firecrawl.devby default. Self-hosted overrides are permitted only for private or internal endpoints; HTTP is allowed exclusively for those private targets.FIRECRAWL_BASE_URLserves as the shared environment fallback for Firecrawl search and scrape base URLs.- Firecrawl search requests time out after 30 seconds by default;
firecrawl_search'stimeoutSecondsparameter adjusts this per request.
Configure Firecrawl web_fetch fallback
{
tools: {
web: {
fetch: {
provider: "firecrawl", // explicit selection enables keyless fallback
},
},
},
plugins: {
entries: {
firecrawl: {
enabled: true,
config: {
webFetch: {
baseUrl: "https://api.firecrawl.dev",
onlyMainContent: true,
maxAgeMs: 172800000,
timeoutSeconds: 60,
},
},
},
},
},
}
Notes:
- The explicitly selected Firecrawl
web_fetchfallback does not require an API key. When configured, OpenClaw sendsplugins.entries.firecrawl.config.webFetch.apiKeyorFIRECRAWL_API_KEYfor elevated limits. - Choosing Firecrawl during onboarding or through
openclaw configure --section webactivates the plugin and assigns Firecrawl forweb_fetchunless another fetch provider is already set. firecrawl_scrapemandates an API key.maxAgeMsdetermines the maximum age of cached results in milliseconds. Default is 172,800,000 ms (2 days).onlyMainContentdefaults totrue;timeoutSecondsdefaults to 60.- Legacy
tools.web.fetch.firecrawl.*andtools.web.search.firecrawl.*configuration is automatically migrated byopenclaw doctor --fix. - Firecrawl scrape and base URL overrides follow the same hosted/private rule as search: public hosted traffic uses
https://api.firecrawl.dev; self-hosted overrides must point to private or internal endpoints. firecrawl_scrapeblocks obviously 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 uses the same plugins.entries.firecrawl.config.webFetch.* settings and environment variables, including its required API key.
Self-hosted Firecrawl
Set plugins.entries.firecrawl.config.webSearch.baseUrl, plugins.entries.firecrawl.config.webFetch.baseUrl, or FIRECRAWL_BASE_URL when self-hosting Firecrawl. OpenClaw accepts http:// only for loopback, private-network, .local, .internal, or .localhost targets. Public custom hosts are rejected to prevent accidental exposure of Firecrawl API keys to arbitrary endpoints.
Firecrawl plugin tools
firecrawl_search
Choose this option when you need Firecrawl specific search settings rather than the generic web_search. An API key is mandatory.
Parameters:
querycount(range 1-100)sourcescategoriesincludeDomains/excludeDomains(hostnames only; cannot be used together)tbs(time constraint, e.g.qdr:d,qdr:w,sbd:1)locationtogether withcountry(geographic targeting)scrapeResultstimeoutSeconds
firecrawl_scrape
Pick this for pages with heavy JavaScript or bot protection where basic web_fetch performs poorly.
Parameters:
urlextractModemaxCharsonlyMainContentmaxAgeMsproxystoreInCachetimeoutSeconds
Stealth / bot circumvention
Unless the caller provides overrides, firecrawl_scrape and the web_fetch Firecrawl fallback are set to proxy: "auto" combined with storeInCache: true. No proxy or storeInCache controls exist for firecrawl_search or the web_search Firecrawl provider; stealth proxy mode is only active for scrape and fetch requests.
Firecrawl's proxy mode manages bot avoidance through basic, stealth, or auto. When a basic attempt fails, auto will retry using stealth proxies, which can consume more credits than scraping without stealth.
How web_fetch uses Firecrawl
The web_fetch extraction sequence is:
- Readability (local)
- Configured fetch provider, for instance Firecrawl (when explicitly chosen, or detected automatically from configured credentials)
- Basic HTML cleanup (final fallback)
The tools.web.fetch.provider parameter controls the selection. If you leave it out, OpenClaw automatically picks the first available web-fetch provider based on configured credentials. The official Firecrawl plugin supplies that fallback.
Related
- Web Search overview -- all providers plus auto-detection
- Web Fetch -- the web_fetch tool with a Firecrawl fallback
- Tavily -- search and extract tools