FlowiseAI/Flowise · warning · Error
Search request failed: ${searchResponse.warning || 'Unknown
Error message
Search request failed: ${searchResponse.warning || 'Unknown error'} What it means
Thrown by FirecrawlApp.search when POST /v1/search returns HTTP 200 but the body has `success: false`. FireCrawl signals partial/total search failure this way, attaching a `warning` field with the reason. The message embeds that warning or falls back to 'Unknown error'.
Source
Thrown at packages/components/nodes/documentloaders/FireCrawl/FireCrawl.ts:449
// Add optional parameters if they exist and are not empty
const validSearchParams = ['limit', 'tbs', 'lang', 'country', 'location', 'timeout', 'ignoreInvalidURLs'] as const
validSearchParams.forEach((param) => {
if (request[param] !== undefined && request[param] !== null) {
validParams[param] = request[param]
}
})
try {
const parameters = {
...validParams,
integration: 'flowise'
}
const response: AxiosResponse = await this.postRequest(this.apiUrl + '/v1/search', parameters, headers)
if (response.status === 200) {
const searchResponse = response.data as SearchResponse
if (!searchResponse.success) {
throw new Error(`Search request failed: ${searchResponse.warning || 'Unknown error'}`)
}
return searchResponse
} else {
this.handleError(response, 'perform search')
}
} catch (error: any) {
throw new Error(error.message)
}
return { success: false }
}
private prepareHeaders(idempotencyKey?: string): AxiosRequestHeaders {
return {
'Content-Type': 'application/json',
Authorization: `Bearer ${this.apiKey}`,
...(idempotencyKey ? { 'x-idempotency-key': idempotencyKey } : {})
} as AxiosRequestHeaders & { 'x-idempotency-key'?: string }
}View on GitHub (pinned to abe4a8601a)
Solutions
- Read `searchResponse.warning` to get FireCrawl's stated reason and act on it.
- Retry with a simpler query (no tbs/location) to isolate the cause.
- Raise `limit` only after confirming the query returns results at all.
- If warning mentions quota, verify the FireCrawl plan includes the search product.
- Cache successful results; search is metered and flaky.
Example fix
// before
const response = await app.search({ query: this.query, ...this.params })
// after
const response = await app.search({ query: this.query, limit: 10, ...this.params })
if (!response.success) {
throw new Error(`Search rejected by FireCrawl (${response.warning}); retry with a simpler query`)
} Defensive patterns
Strategy: try-catch
Validate before calling
const q = (request.query || '').trim()
if (!q) throw new Error('query must be a non-empty string') Type guard
function isSearchResponse(x: unknown): x is SearchResponse {
return typeof x === 'object' && x !== null && typeof (x as any).success === 'boolean'
} Try / catch
try {
const r = await app.search(req)
if (!r.success) console.warn('search soft-failed:', r.warning)
return r
} catch (e) { /* network or upstream */ throw e } Prevention
- Trim and non-empty-check the query.
- Cache successful search results to limit metered calls.
- Start with a minimal query before adding tbs/location filters.
When it happens
Trigger: Response status === 200 AND `searchResponse.success === false`. Happens when FireCrawl's search backend (Serper/Google) fails, returns no valid results, or rate-limits internally.
Common situations: Empty or nonsensical query string; aggressive `tbs`/`location` filters yielding zero results; Serper upstream outage; rate-limit on the search subproduct; country/lang combo unsupported.
Related errors
- Firecrawl: Failed to search. Warning: ${response.warning}
- Firecrawl: Query is required for search mode
- Firecrawl: Failed to scrape URL. Error: ${response.error}
- No API key provided
- Failed to scrape URL. Error: ${responseData.error}
AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12).
Data as JSON: /api/errors/ff5c2d572613d674.
Report an issue: GitHub.