Crawler Setup and Configuration — Unique AI Documentation

Crawler Setup and Configuration

Crawlers fetch web page content and convert it to readable text. They are used when a search engine returns only URLs and snippets (i.e., the engine "requires scraping"), and also for READ_URL steps in V2 mode.


How Crawlers Are Activated

The active crawler list is computed at startup from two sources:

  1. Built-in crawlers from ACTIVE_INHOUSE_CRAWLERS (default: ["basic", "crawl4ai"]).

  2. API-key-based crawlers that are automatically added when their API key is provided:

The space-level configuration UI shows only the activated crawlers as options.


Basic Crawler

Category: Built-in (no external dependency)

How it works: Sends HTTP GET requests to each URL using httpx with randomized User-Agent headers to avoid bot detection. Converts the HTML response to Markdown using the markdownify library. All URLs are fetched concurrently (up to max_concurrent_requests).

Data flow:

Setup: No API keys or external services required. Included by default in ACTIVE_INHOUSE_CRAWLERS.

Limitations:


Crawl4AI Crawler

Category: Built-in (no external API key, but uses a local Chromium browser)

How it works: Uses the crawl4ai library to launch a headless Chromium browser. Each page is loaded with JavaScript rendering, full page scrolling, overlay removal, and user simulation. Content is filtered using a pruning algorithm that removes low-quality blocks, then converted to Markdown.

Data flow:

Setup: No API keys required. The Chromium browser is included in the Docker image. Included by default in ACTIVE_INHOUSE_CRAWLERS.

Advantages over Basic Crawler:


Firecrawl Crawler

Category: API-based (experimental)

How it works: Uses the Firecrawl API's batch scrape endpoint. Sends all URLs in a single batch request and receives Markdown content for each page.

Data flow:

Setup:

Environment Variable Value
FIRECRAWL_API_KEY Your Firecrawl API key

Providing this key automatically adds the Firecrawl crawler to the active list. No further configuration is needed.


Jina Reader Crawler

Category: API-based (experimental)

How it works: Sends POST requests to the Jina Reader API (<https://r.jina.ai/) with each URL. The API fetches and parses the page (using browser-mode rendering by default) and returns structured content including title, description, and Markdown text.

Data flow:

Setup:

Environment Variable Value
JINA_API_KEY Your Jina AI API key
JINA_READER_API_ENDPOINT Reader endpoint (default: <https://r.jina.ai/)

Providing the API key automatically adds the Jina crawler to the active list.


Tavily Crawler

Category: API-based (experimental)

How it works: Uses the Tavily Python client's extract API to retrieve page content in Markdown format. URLs are processed in batches of up to 20 (Tavily API limit). Supports basic and advanced extraction depth.

Data flow:

Setup:

Environment Variable Value
TAVILY_API_KEY Your Tavily API key

Providing this key automatically adds the Tavily crawler to the active list.


Crawler Comparison

Crawler Type JS Rendering API Key Auto-Enabled Best For
Basic Built-in No Not needed Default Simple HTML pages, fast crawling
Crawl4AI Built-in Yes Not needed Default JavaScript-heavy sites, SPAs
Firecrawl API Yes Required On key Reliable cloud-based scraping
Jina API Yes Required On key High-quality Markdown extraction
Tavily API Yes Required On key Batch URL extraction