crawl4ai

Crawl websites and extract structured data using the Crawl4AI Python library.

Updated Aug 11, 2026
One-click install
npx skills add https://github.com/t-jet/pal_found_cli --skill crawl4ai-t-jet
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: crawl4ai
Source: https://github.com/t-jet/pal_found_cli/tree/main/.ept/skills/crawl4ai
Command: npx skills add https://github.com/t-jet/pal_found_cli --skill crawl4ai-t-jet

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires crawl4ai, packaging, and includes scripts (resource) and references (resource) components.

What problem does it solve? Scraping modern websites requires handling JavaScript rendering, dynamic content, sessions, and anti-bot defenses, which is tedious to implement from scratch. This Skill provides ready-to-use Crawl4AI patterns and scripts for turning web pages into clean markdown or structured JSON data. ## Core Features & Use Cases - Markdown Extraction: Convert web pages and documentation sites into clean, LLM-ready markdown with optional content filtering (Pruning, BM25). - Structured Data Extraction: Generate a CSS/JSON schema once with an LLM, then reuse it for fast, LLM-free extraction across many similar pages. - Batch & Concurrent Crawling: Crawl multiple URLs concurrently with arun_many, session reuse, and rate limiting. - Use Case: Monitor an e-commerce site by generating a product schema once, then running scripts/extraction_pipeline.py against product URLs to extract names, prices, and availability without recurring LLM costs. ## Quick Start Use the crawl4ai skill to crawl https://example.com and save the page content as clean markdown.

Frequently Asked Questions about crawl4ai

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I extract structured data from a website with Crawl4AI?

Generate a CSS/JSON schema once using an LLM via scripts/extraction_pipeline.py --generate-schema, then reuse it with JsonCssExtractionStrategy for fast extraction without further LLM calls. This is 10-100x more efficient than per-request LLM extraction.

How do I crawl multiple URLs concurrently in Python?

Use AsyncWebCrawler's arun_many() method with a list of URLs and a max_concurrent parameter to control parallelism. The scripts/batch_crawler.py script wraps this pattern and saves results to JSON and individual markdown files.

Does Crawl4AI support JavaScript-heavy or dynamic pages?

Yes, Crawl4AI runs a real browser via Playwright, so it executes JavaScript by default. Use the wait_for parameter with a CSS selector or JS condition, the js_code parameter to run custom scripts, and increase page_timeout for slow-loading content.

How do I handle login or authenticated pages when scraping?

Use the session_id parameter in CrawlerRunConfig to persist a browser session across crawls. Perform the login once with js_code that fills and submits the form, then reuse the same session_id for subsequent requests to protected pages.

Why is my crawl getting blocked by bot detection?

Sites like those behind Cloudflare check TLS fingerprints, navigator properties, and request patterns. Reduce detection by running headed instead of headless, setting a realistic user agent, rotating residential proxies, adding delays between requests, and reusing session cookies.

When should I use LLM extraction instead of CSS schema extraction?

Use LLM extraction only for complex, irregular, or one-off content where no stable HTML structure exists. For repetitive page layouts like product listings or articles, schema-based JsonCssExtractionStrategy is faster and avoids per-request LLM costs.