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

  1. Read `searchResponse.warning` to get FireCrawl's stated reason and act on it.
  2. Retry with a simpler query (no tbs/location) to isolate the cause.
  3. Raise `limit` only after confirming the query returns results at all.
  4. If warning mentions quota, verify the FireCrawl plan includes the search product.
  5. 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

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


AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12). Data as JSON: /api/errors/ff5c2d572613d674. Report an issue: GitHub.