{"record":{"id":"5910aae31146f476","repo":"FlowiseAI/Flowise","slug":"firecrawl-crawl-job-failed","errorCode":null,"errorMessage":"Firecrawl: Crawl job failed","messagePattern":"Firecrawl: Crawl job failed","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/components/nodes/documentloaders/FireCrawl/FireCrawl.ts","lineNumber":613,"sourceCode":"                }\n            }))\n        } else if (this.mode === 'scrape') {\n            if (!this.url) {\n                throw new Error('Firecrawl: URL is required for scrape mode')\n            }\n            const response = await app.scrapeUrl(this.url, this.params)\n            if (!response.success) {\n                throw new Error(`Firecrawl: Failed to scrape URL. Error: ${response.error}`)\n            }\n            firecrawlDocs = [response.data as FirecrawlDocument]\n        } else if (this.mode === 'crawl') {\n            if (!this.url) {\n                throw new Error('Firecrawl: URL is required for crawl mode')\n            }\n            const response = await app.crawlUrl(this.url, this.params)\n            if ('status' in response) {\n                if (response.status === 'failed') {\n                    throw new Error('Firecrawl: Crawl job failed')\n                }\n                firecrawlDocs = response.data || []\n            } else {\n                if (!response.success) {\n                    throw new Error(`Firecrawl: Failed to scrape URL. Error: ${response.error}`)\n                }\n                firecrawlDocs = [response.data as FirecrawlDocument]\n            }\n        } else if (this.mode === 'extract') {\n            if (!this.url) {\n                throw new Error('Firecrawl: URL is required for extract mode')\n            }\n            this.params!.urls = [this.url]\n            const response = await app.extract(this.params as any as ExtractRequest)\n            if (!response.success) {\n                throw new Error(`Firecrawl: Failed to extract URL.`)\n            }\n","sourceCodeStart":595,"sourceCodeEnd":631,"githubUrl":"https://github.com/FlowiseAI/Flowise/blob/abe4a8601a058047b350c260676826e21dd14101/packages/components/nodes/documentloaders/FireCrawl/FireCrawl.ts#L595-L631","documentation":"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.","triggerScenarios":"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.","commonSituations":"Target site blocks FireCrawl; all pages returned errors; robots.txt disallow; FireCrawl incident; crawl budget exhausted; target down.","solutions":["Retry once with a smaller limit/maxDepth.","Switch the same URL to scrape mode to verify FireCrawl can fetch it.","Check FireCrawl dashboard for the failed job's per-page errors.","Confirm the URL is publicly reachable and not behind a login/WAF."],"exampleFix":"// before\nconst response = await app.crawlUrl(this.url, this.params)\n\n// after\nconst response = await app.crawlUrl(this.url, { ...this.params, limit: 10, maxDepth: 2 })\nif ('status' in response && response.status === 'failed') {\n  // fallback: scrape just the seed page\n  const fallback = await app.scrapeUrl(this.url, this.params)\n  firecrawlDocs = fallback.success ? [fallback.data as FirecrawlDocument] : []\n}","handlingStrategy":"fallback","validationCode":"try { new URL(url) } catch { throw new Error(`invalid url: ${url}`) }","typeGuard":"function isCrawlStatusResponse(r: any): r is CrawlStatusResponse {\n  return r && typeof r === 'object' && 'status' in r\n}","tryCatchPattern":"try { return await loader.load() }\ncatch (e) {\n  if (/Crawl job failed/.test((e as Error).message)) {\n    const fb = new FireCrawlLoader({ ...params, mode: 'scrape' })\n    return await fb.load() // degrade to single-page scrape\n  }\n  throw e\n}","preventionTips":["Start with a small limit/maxDepth to validate reachability.","Keep a scrape-mode fallback for crawl failures.","Check FireCrawl dashboard for per-page errors on the failed job."],"tags":["firecrawl","crawl","loader","job-failed"],"backgroundTag":null,"analyzedSha":"abe4a8601a058047b350c260676826e21dd14101","analyzedAt":"2026-08-12T16:04:40.823Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}