ErrLookup › apify/crawlee
apify/crawlee
Crawlee—A web scraping and browser automation library for Node.js to build reliable crawlers. In JavaScript and TypeScript. Extract data for AI, LLMs, RAG, or GPTs. Download HTML, PDF, JPG, PNG, and other files from websites. Works with Puppeteer, Playwright, Cheerio, JSDOM, and raw HTTP. Both headful and headless mode. With proxy rotation. · TypeScript · 843 source files
Analyzed at dbe57fb09c on 2026-08-30. 184 documented errors.
| Code / Message | Type | Severity | Tags |
|---|---|---|---|
| The `minConcurrency`/`maxConcurrency`/`initialConcurrency`/` | validation | error | configuration, concurrency, invalid-options |
| The `requestManager` option cannot be used in conjunction wi | validation | error | configuration, request-queue, invalid-options |
| Request provider is not initialized! | exception | error | initialization, request-provider, internal-state |
| Giving up: ${state.reason} | exception | error | rate-limit, stalled, keep-alive |
| Skipping request ${request.url} as disallowed by robots.txt | exception | warning | robots-txt, skipped-request, crawling-policy |
| The current SessionPool instance couldn't find a valid sessi | exception | error | session, session-pool, timeout |
| Skipping request ${request.id} (starting url: ${request.url} | exception | warning | redirect, enqueue-strategy, skipped-request |
| This crawler instance is already running, you can add more r | validation | error | concurrency, lifecycle, crawler-run |
| Cannot decide what to purge before running again: `sameDomai | validation | error | configuration, purge, request-manager, rerun |
| Expected an iterable or async iterable, got ${getObjectType( | validation | error | type-error, arguments, add-requests |
| Failed to infer format from the path: '${path}'. Supported f | validation | error | configuration, dataset-export, validation |
| Unsupported format: '${format}'. Use one of ${supportedForma | validation | error | configuration, dataset-export, validation |
| Request blocked - received ${statusCode} status code. | exception | error | network, anti-bot, session |
| fetchNextRequest called on an uninitialized crawler | exception | error | internal-state, lifecycle, crawler |
| ${crawlerName}: ${names.map((name) => `\`${name}\``).join(', | validation | error | configuration, browser-pool, mutually-exclusive-options |
| Navigation timed out after ${this.#navigationTimeoutMillis / | exception | error | timeout, navigation, browser |
| The `response` property is not available. This might mean th | exception | error | lifecycle, browser, navigation |
| The `gotoOptions` property is not available until `prepareNa | exception | error | lifecycle, browser, navigation |
| The `request.loadedUrl` property is not available - `skipNav | exception | error | skip-navigation, lifecycle, browser |
| The `response` property is not available - `skipNavigation` | exception | error | skip-navigation, lifecycle, browser |
| ${error} (possible values: 'Cloudflare challenge failed, fou | exception | warning | anti-bot, session, cloudflare, blocked-request |
| ${this.getMessageFromError(error)} | exception | error | proxy, session, network, browser-crawler |
| ${status} - Error status code was set by user. | http | error | http-status, error-status-code, retry, configuration |
| An extracted URL: ${href} is relative and options.baseUrl is | validation | error | enqueue-links, url, relative-url, configuration |
| Invalid "proxyUrl". Unsupported protocol: ${proxyUrl}. | validation | error | proxy, validation, configuration, browser-launcher |
| Invalid "proxyUrl" option: authentication is only supported | validation | error | proxy, validation, authentication, socks |
| Cannot activate BrowserController without an assigned browse | exception | error | lifecycle, browser-controller, api-misuse |
| BrowserController already has a browser instance assigned. | exception | error | lifecycle, browser-controller, api-misuse |
| Failed to resolve the remote browser endpoint. | exception | critical | network, remote-browser, launch |
| Failed to connect to remote browser at "${sanitizeEndpointFo | exception | critical | network, websocket, remote-browser, launch |
| ${errorMessage.join(' ')} | exception | error | launch, browser-installation, diagnostics |
| Browser plugin at index ${i} (${providedPluginName}) is not | validation | error | configuration, plugins, constructor |
| Page with ID: ${id} already exists. | exception | error | duplicate-id, api-misuse, browser-pool |
| Provided browserPlugin is not one of the plugins used by Bro | validation | error | configuration, plugins, browser-pool |
| browserController.newPage() failed: ${browserController.id} | exception | error | page-creation, browser-crash, retry |
| Cannot extend LaunchContext with key: ${key}, because it's r | validation | error | browser-pool, launch-context, reserved-key, api-misuse |
| Function `newContext()` is not available in incognito mode | exception | error | browser-pool, playwright, incognito, unsupported-api |
| Function `newBrowserCDPSession()` is not available in incogn | exception | error | browser-pool, playwright, incognito, cdp |
| Function `startTracing()` is not available in incognito mode | exception | error | browser-pool, playwright, incognito, tracing |
| Function `stopTracing()` is not available in incognito mode | exception | error | browser-pool, playwright, incognito, tracing |
| A new page can be created with provided context only when us | validation | error | browser-pool, playwright, incognito, context-options |
| A new page can be created with provided context only when us | validation | error | browser-pool, puppeteer, incognito, proxy |
| Experimental containers are only available with Playwright | validation | error | browser-pool, puppeteer, playwright, unsupported-feature |
| Remote browser endpoint resolved to an empty string. | validation | error | browser-pool, remote-browser, configuration, empty-endpoint |
| Remote browser endpoint() must return a URL string or an obj | validation | error | browser-pool, remote-browser, configuration, shape-validation |
| The `body` property is not available - `skipNavigation` was | exception | error | cheerio-crawler, skip-navigation, api-misuse |
| The `$` property is not available - `skipNavigation` was use | exception | error | cheerio-crawler, skip-navigation, api-misuse |
| Cannot extract links because the DOM is not available. | exception | error | cheerio-crawler, enqueue-links, dom-unavailable |
| Selector '${selector}' not found. | exception | error | cheerio-crawler, selector, api-differences |
| The project name cannot be empty string. | validation | error | cli, validation, input-validation |
| ${colors.red(`[${label}]`)}: All ${retries} attempts failed, | exception | error | cli, network, retries-exhausted, template-download |
| The ConcurrencySystem this AutoscaledPool borrows has not be | exception | critical | autoscaling, autoscaled-pool, lifecycle, core |
| availableMemoryRatio is not set in configuration. | validation | error | autoscaling, memory, configuration, core |
| Duplicate load signal name ${JSON.stringify(name)}: ${hint} | validation | error | autoscaling, system-status, configuration, core |
| Configuration is immutable. Pass options via the constructor | exception | error | configuration, immutability, core, typescript |
| Could not parse cookie header string: ${cookieHeaderString} | exception | error | cookies, http, parsing |
| The custom statistics field `${String(key)}` collides with a | validation | error | statistics, configuration, naming-collision |
| Could not derive the default values of the custom statistics | exception | error | statistics, configuration, deserialization |
| Statistics.startCapturing() was already called - this instan | exception | error | statistics, lifecycle, double-initialization |
| Cannot parse Glob pattern '${globTrimmed}': it must be an no | validation | error | validation, enqueue-links, glob |
| Chunk size must be a positive number (${inspect(chunkSize)}) | validation | error | validation, iterables, batching |
| exclusiveStartKey "${exclusiveStartKey}" was not found in th | exception | warning | key-value-store, pagination, memory-storage |
| Request ID does not match its uniqueKey. | exception | error | request-queue, data-integrity, storage |
| "${segment}" is not allowed because it would resolve outside | validation | error | path-traversal, security, memory-storage, validation |
| OwnedOrInjected value is not initialized yet | exception | error | initialization, lifecycle, typescript |
| Cannot set() a borrowed OwnedOrInjected value | exception | error | lifecycle, dependency-injection, initialization |
| OwnedOrInjected value is already initialized | exception | error | lifecycle, initialization, double-initialization |
| The `tieredProxyUrls` option has been removed in Crawlee v4. | exception | error | proxy, breaking-change, migration, configuration |
| The provided newUrlFunction did not return a valid URL. Caus | validation | error | proxy, url-validation, configuration |
| Cannot combine custom proxies "options.proxyUrls" with custo | validation | error | proxy, configuration, conflicting-options |
| One of "options.proxyUrls" or "options.newUrlFunction" needs | validation | error | proxy, configuration, missing-argument |
| The state conversion for '${persistStateKey}' validated asyn | exception | error | validation, async, schema, recoverable-state |
| StateValidationError(persistStateKey, result.issues) | validation | error | validation, state, schema |
| StateValidationError(this.#persistStateKey, result.issues) | validation | error | validation, constructor, schema |
| Recoverable state has not yet been loaded - call initialize( | exception | error | lifecycle, state, initialization |
| Cannot clear the state persisted under key '${this.#persistS | exception | error | state, persistence, lifecycle |
| `Request` options must be an object, got the string '${optio | exception | error | typescript, api-misuse, request |
| Request with GET method cannot have a payload. | exception | error | http, request, validation |
| `alwaysEnqueue` cannot be used together with a custom `uniqu | exception | error | request, configuration, validation |
| RequestValidationError(label, result.issues) | validation | error | validation, schema, request |
| Route not found for label '${String(label)}'. You must set u | exception | error | routing, configuration, request |
| Default route is already defined! / Route for label '${Strin | exception | error | routing, configuration, duplicate |
| ServiceConflictError('Configuration', configuration, this.#c | exception | error | configuration, dependency-injection, lifecycle |
| ServiceConflictError('EventManager', eventManager, this.#eve | exception | error | event-manager, dependency-injection, lifecycle |
| ServiceConflictError('StorageBackend', storageBackend, this. | exception | error | storage, dependency-injection, lifecycle |
| ServiceConflictError('Logger', logger, this.#logger) | exception | error | logging, dependency-injection, lifecycle |
| Cannot set property '${String(prop)}' on serviceLocator dire | exception | error | proxy, immutability, dependency-injection |
| Cannot add session with id '${id}' as it already exists in t | exception | error | session, duplicate, session-pool |
| Data item${s}is not an object. You can push only objects int | validation | error | dataset, validation, json |
| Data item${s}is not serializable to JSON. Cause: ${err.messa | validation | error | dataset, json, serialization |
| dataset.getData(): The response is too large for parsing. Yo | exception | error | dataset, memory, pagination |
| Unsupported content type: ${contentType} | exception | error | dataset, export, content-type |
| Dataset.forEach/map/reduce() support only a "json" format. | exception | error | validation, dataset, api-misuse |
| The "value" parameter must be a String, Buffer, ArrayBuffer, | validation | error | validation, key-value-store, content-type |
| The "value" parameter cannot be stringified to JSON: ${error | validation | error | serialization, json, key-value-store |
| The "value" parameter was stringified to JSON and returned u | validation | error | serialization, json, undefined |
| At least one of "sources" or "sourcesFunction" must be provi | exception | error | validation, request-list, configuration |
| RequestList sources are already loading or were loaded. | exception | error | request-list, lifecycle, double-initialization |
| Loading requests with sourcesFunction failed. Cause: ${err.m | exception | error | request-list, network, sources-function |
| Cannot persist state. options.persistStateKey is not set. | exception | error | request-list, persistence, configuration |
| The state object is invalid: nextIndex must be a non-negativ | exception | error | request-list, state, validation, corrupted-state |
| The state object is not consistent with RequestList, too few | exception | error | request-list, state, consistency, corrupted-state |
| The state object is not consistent with RequestList the orde | exception | error | state, persistence, request-list |
| The state object is not consistent with RequestList. Unknown | exception | error | state, persistence, request-list |
| Cannot fetch a request list from ${requestsFromUrl}: ${err} | exception | error | network, http, request-list |
| Cannot create Request from type: ${type} | exception | error | validation, request-list, type-error |
| Request object's uniqueKey must be a non-empty string | validation | error | validation, unique-key, request-list |
| The request is not being processed (uniqueKey: ${uniqueKey}) | exception | error | state, request-list, lifecycle |
| RequestList is not initialized; you must call "await request | exception | error | lifecycle, initialization, request-list |
| Request options are not valid, the 'url' property is not a s | validation | error | validation, request-queue, type-error |
| Request options are not valid, the 'id' property must not be | validation | error | validation, request-queue, api-misuse |
| Request options are not valid, the 'requestsFromUrl' propert | validation | error | validation, request-queue, type-error |
| Cannot fetch a request list from ${requestsFromUrl}: ${err} | exception | error | network, http, request-queue |
| The request is not being processed (url: ${url}) | exception | error | state, internal-invariant, sitemap |
| Cannot open storage with alias "${alias}" because a named st | exception | error | storage, naming-conflict, configuration |
| Cannot open storage with name "${name}" because an alias sto | exception | error | storage, naming-conflict, configuration |
| "${domain}" is not a valid hostname. The `domains` option ta | validation | error | validation, configuration, throttling |
| Cannot honour a crawl-delay floor covering every domain: thi | exception | error | throttling, configuration, crawl-delay |
| Cannot honour a pacing signal scoped to "${scope}": this man | exception | error | throttling, configuration, scope |
| Cannot record a journal entry on a transaction in the '${thi | exception | error | transaction, state, storage |
| The HTTP method CONNECT is not supported by the GotScrapingH | exception | error | http, unsupported-method, got-scraping |
| Too many redirects (${maxRedirects}) while requesting ${curr | http | error | http, redirect, network |
| Navigation timed out after ${this.#navigationTimeoutMillis / | exception | error | timeout, navigation, http-crawler |
| The `request.loadedUrl` property is not available - `skipNav | exception | error | skip-navigation, loaded-url, http-crawler |
| The `response` property is not available - `skipNavigation` | exception | error | skip-navigation, response, http-crawler |
| The `contentType` property is not available - `skipNavigatio | exception | error | skip-navigation, content-type, http-crawler |
| The `body` property is not available - `skipNavigation` was | exception | error | skip-navigation, body, http-crawler |
| The `json` property is not available - `skipNavigation` was | exception | error | skip-navigation, json, http-crawler |
| The `waitForSelector` method is not available - `skipNavigat | exception | error | skip-navigation, wait-for-selector, http-crawler |
| The `parseWithCheerio` method is not available - `skipNaviga | exception | error | skip-navigation, cheerio, http-crawler |
| Selector '${selector}' not found. | exception | error | http, cheerio, selector, static-html |
| <dynamic: blocked-request message returned by isRequestBlock | exception | warning | session, blocked, anti-scraping, retry |
| <dynamic: message extracted from proxied error via getMessag | exception | warning | proxy, network, session, retry |
| ${status} - ${message} | http | error | http, status-code, json, server-error |
| ${status} - Error status code was set by user. | http | error | http, status-code, configuration, crawlee |
| ${status} - Internal Server Error: ${body.slice(0, 100)} | http | error | http, status-code, server-error, plain-text |
| Resource ${request.url} served with unsupported charset/enco | exception | error | encoding, charset, http, internationalization |
| Can not parse mime type ${mimeType} from "options.additional | validation | critical | configuration, mime-type, validation, crawler-setup |
| Request timed out after ${this.#navigationTimeoutMillis / 10 | exception | warning | timeout, network, http, performance |
| Resource ${request.url} served Content-Type ${type}, but onl | exception | warning | mime-type, content-type, http, configuration |
| At most one of `body`, `form` and `json` may be specified in | validation | error | http, request-options, validation, api-misuse |
| The `window` property is not available - `skipNavigation` wa | exception | error | jsdom, skip-navigation, dom, api-misuse |
| The `body` property is not available - `skipNavigation` was | exception | error | jsdom, skip-navigation, dom, api-misuse |
| The `document` property is not available - `skipNavigation` | exception | error | jsdom, skip-navigation, dom, api-misuse |
| Cannot extract links because the JSDOM is not available. | exception | error | jsdom, skip-navigation, enqueue-links, dom |
| Selector '${selector}' not found. | exception | error | jsdom, selector, cheerio, timeout |
| The `window` property is not available - `skipNavigation` wa | exception | error | linkedom, skip-navigation, dom, api-misuse |
| The `body` property is not available - `skipNavigation` was | exception | error | linkedom, skip-navigation, dom, api-misuse |
| The `document` property is not available - `skipNavigation` | exception | error | linkedom, skip-navigation, dom, api-misuse |
| Cannot extract links because the DOM is not available. | exception | error | dom, link-extraction, crawler, html-parsing |
| Selector '${selector}' not found. | exception | error | selector, dom, timeout, crawler |
| AdaptivePlaywrightCrawler requires transactional storage - i | exception | error | configuration, storage, adaptive-playwright-crawler |
| The `${prop}` property is not available on the outer context | exception | error | adaptive-playwright-crawler, context, pipeline, response |
| Page object was used in HTTP-only request handler | exception | error | adaptive-crawler, playwright, http-only, crawlee |
| PlaywrightCrawlerOptions.launchContext.proxyUrl is not allow | validation | error | configuration, proxy, playwright, crawlee |
| Compilation result is not a function! | exception | error | vm-compilation, request-interception, scripting, crawlee |
| saveSnapshot with key ${key} failed. Cause:${(err as Error). | exception | error | snapshot, key-value-store, playwright, crawlee |
| Blocked by Cloudflare when processing ${url} | exception | error | cloudflare, session-rotation, proxy, anti-bot, crawlee |
| PuppeteerCrawlerOptions.launchContext.proxyUrl is not allowe | validation | error | configuration, proxy, puppeteer, crawlee |
| Intercept request handler must call one of request.continue| | exception | error | request-interception, puppeteer, handler-contract, crawlee |
| Cannot detect CDP client for Puppeteer ${parsed.version}. Yo | exception | error | cdp, puppeteer, version-incompatibility, crawlee |
| Compilation result is not a function! | exception | error | puppeteer, javascript, vm, configuration |
| saveSnapshot with key ${key} failed. Cause:${(err as Error). | exception | error | puppeteer, snapshot, key-value-store, error-wrapping |
| Stagehand instance not found for browser | exception | error | stagehand, browser-pool, configuration |
| No browser context available | exception | error | stagehand, playwright, browser-context, cdp |
| Failed to create new page: ${error instanceof Error ? error. | exception | error | stagehand, playwright, page-creation, error-wrapping |
| Stagehand did not register the page within ${timeoutMs}ms | exception | error | stagehand, cdp, timeout, registration |
| Could not resolve StagehandController for page — is the brow | exception | error | stagehand, browser-pool, configuration |
| Failed to get CDP URL from Stagehand | exception | error | stagehand, cdp, browser-launch, compatibility |
| Stagehand act() failed: ${improveErrorMessage(error)} | exception | error | stagehand, ai, act, llm |
| Stagehand extract() failed: ${improveErrorMessage(error)} | exception | error | stagehand, ai, extract, llm |
| Stagehand observe() failed: ${improveErrorMessage(error)} | exception | error | stagehand, llm, browser-automation |
| Stagehand agent() failed: ${improveErrorMessage(error)} | exception | error | stagehand, llm, agent |
| An extracted URL: ${href} is relative and baseUrl is not set | exception | error | cheerio, url, scraping |
| Failed to load robots.txt from ${url}: HTTP ${response.statu | http | error | network, robots-txt, http |
| Unsupported sitemap content type (contentType = ${contentTyp | exception | error | sitemap, content-type, parsing |
| The "urls" parameter must be an array | exception | error | validation, argument-type, email-extraction |
| Unknown enqueue strategy '${strategy satisfies never}'. | exception | error | typescript, exhaustiveness, enqueue-strategy |
| ${result.error} (ArgumentValidationError for value: ${value} | validation | error | validation, zod, configuration |
| Request without proxy ${localAddress} ${request.headers.host | console | warning | proxy, networking, browser-pool |
| ${colors.yellow(`[${label}]`)}: Attempt ${attempt + 1} of ${ | console | warning | retry, network, cli, transient-failure |
| Installing Playwright browsers in an environment where brows | console | info | playwright, browsers, cli, idempotency |
| ${operation} cannot be used inside a storage transaction: ${ | exception | error | storage, transaction, key-value-store, stream |
| ${operation} cannot be used inside a storage transaction: ${ | exception | error | storage, transaction, request-queue, rollback |