FlowiseAI/Flowise · error · Error

Firecrawl: Crawl job failed

Error message

Firecrawl: Crawl job failed

What it means

Thrown by FireCrawlLoader.load() in crawl mode when crawlUrl returns a CrawlStatusResponse with `status: 'failed'`. This is the loader-level surfacing of [124]; it means FireCrawl started the crawl but the job ended in failure.

Source

Thrown at packages/components/nodes/documentloaders/FireCrawl/FireCrawl.ts:613

                }
            }))
        } else if (this.mode === 'scrape') {
            if (!this.url) {
                throw new Error('Firecrawl: URL is required for scrape mode')
            }
            const response = await app.scrapeUrl(this.url, this.params)
            if (!response.success) {
                throw new Error(`Firecrawl: Failed to scrape URL. Error: ${response.error}`)
            }
            firecrawlDocs = [response.data as FirecrawlDocument]
        } else if (this.mode === 'crawl') {
            if (!this.url) {
                throw new Error('Firecrawl: URL is required for crawl mode')
            }
            const response = await app.crawlUrl(this.url, this.params)
            if ('status' in response) {
                if (response.status === 'failed') {
                    throw new Error('Firecrawl: Crawl job failed')
                }
                firecrawlDocs = response.data || []
            } else {
                if (!response.success) {
                    throw new Error(`Firecrawl: Failed to scrape URL. Error: ${response.error}`)
                }
                firecrawlDocs = [response.data as FirecrawlDocument]
            }
        } else if (this.mode === 'extract') {
            if (!this.url) {
                throw new Error('Firecrawl: URL is required for extract mode')
            }
            this.params!.urls = [this.url]
            const response = await app.extract(this.params as any as ExtractRequest)
            if (!response.success) {
                throw new Error(`Firecrawl: Failed to extract URL.`)
            }

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Retry once with a smaller limit/maxDepth.
  2. Switch the same URL to scrape mode to verify FireCrawl can fetch it.
  3. Check FireCrawl dashboard for the failed job's per-page errors.
  4. Confirm the URL is publicly reachable and not behind a login/WAF.

Example fix

// before
const response = await app.crawlUrl(this.url, this.params)

// after
const response = await app.crawlUrl(this.url, { ...this.params, limit: 10, maxDepth: 2 })
if ('status' in response && response.status === 'failed') {
  // fallback: scrape just the seed page
  const fallback = await app.scrapeUrl(this.url, this.params)
  firecrawlDocs = fallback.success ? [fallback.data as FirecrawlDocument] : []
}
Defensive patterns

Strategy: fallback

Validate before calling

try { new URL(url) } catch { throw new Error(`invalid url: ${url}`) }

Type guard

function isCrawlStatusResponse(r: any): r is CrawlStatusResponse {
  return r && typeof r === 'object' && 'status' in r
}

Try / catch

try { return await loader.load() }
catch (e) {
  if (/Crawl job failed/.test((e as Error).message)) {
    const fb = new FireCrawlLoader({ ...params, mode: 'scrape' })
    return await fb.load() // degrade to single-page scrape
  }
  throw e
}

Prevention

When it happens

Trigger: crawlUrl returns an object with a `status` field equal to 'failed'. The loader checks `'status' in response` to distinguish status responses from immediate responses. Triggers when the crawl job reports terminal failure.

Common situations: Target site blocks FireCrawl; all pages returned errors; robots.txt disallow; FireCrawl incident; crawl budget exhausted; target down.

Related errors


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