$npx -y skills add firecrawl/cli --skill firecrawl-scrapeExtract clean markdown from any URL, including JavaScript-rendered SPAs. Use this skill whenever the user provides a URL and wants its content, says "scrape", "grab", "fetch", "pull", "get the page", "extract from this URL", or "read this webpage". Handles JS-rendered pages, mult
| 1 | # firecrawl scrape |
| 2 | |
| 3 | Scrape one or more URLs. Returns clean, LLM-optimized markdown. Multiple URLs are scraped concurrently. |
| 4 | |
| 5 | ## When to use |
| 6 | |
| 7 | - You have a specific URL and want its content |
| 8 | - The page is static or JS-rendered (SPA) |
| 9 | - Step 2 in the [workflow escalation pattern](firecrawl-cli): search → **scrape** → map → crawl → interact |
| 10 | |
| 11 | ## Quick start |
| 12 | |
| 13 | ```bash |
| 14 | # Basic markdown extraction |
| 15 | firecrawl scrape "<url>" -o .firecrawl/page.md |
| 16 | |
| 17 | # Main content only, no nav/footer |
| 18 | firecrawl scrape "<url>" --only-main-content -o .firecrawl/page.md |
| 19 | |
| 20 | # Wait for JS to render, then scrape |
| 21 | firecrawl scrape "<url>" --wait-for 3000 -o .firecrawl/page.md |
| 22 | |
| 23 | # Multiple URLs (each saved to .firecrawl/) |
| 24 | firecrawl scrape https://example.com https://example.com/blog https://example.com/docs |
| 25 | |
| 26 | # Get markdown and links together |
| 27 | firecrawl scrape "<url>" --format markdown,links -o .firecrawl/page.json |
| 28 | |
| 29 | # Ask a question about the page |
| 30 | firecrawl scrape "https://example.com/pricing" --query "What is the enterprise plan price?" |
| 31 | ``` |
| 32 | |
| 33 | ## Options |
| 34 | |
| 35 | | Option | Description | |
| 36 | | ------------------------ | ---------------------------------------------------------------- | |
| 37 | | `-f, --format <formats>` | Output formats: markdown, html, rawHtml, links, screenshot, json | |
| 38 | | `-Q, --query <prompt>` | Ask a question about the page content (5 credits) | |
| 39 | | `-H` | Include HTTP headers in output | |
| 40 | | `--only-main-content` | Strip nav, footer, sidebar — main content only | |
| 41 | | `--wait-for <ms>` | Wait for JS rendering before scraping | |
| 42 | | `--include-tags <tags>` | Only include these HTML tags | |
| 43 | | `--exclude-tags <tags>` | Exclude these HTML tags | |
| 44 | | `--redact-pii` | Redact personally identifiable information from output | |
| 45 | | `-o, --output <path>` | Output file path | |
| 46 | |
| 47 | ## Tips |
| 48 | |
| 49 | - **Prefer plain scrape over `--query`.** Scrape to a file, then use `grep`, `head`, or read the markdown directly — you can search and reason over the full content yourself. Use `--query` only when you want a single targeted answer without saving the page (costs 5 extra credits). |
| 50 | - **Try scrape before interact.** Scrape handles static pages and JS-rendered SPAs. Only escalate to `interact` when you need interaction (clicks, form fills, pagination). |
| 51 | - Multiple URLs are scraped concurrently — check `firecrawl --status` for your concurrency limit. |
| 52 | - Single format outputs raw content. Multiple formats (e.g., `--format markdown,links`) output JSON. |
| 53 | - Always quote URLs — shell interprets `?` and `&` as special characters. |
| 54 | - Naming convention: `.firecrawl/{site}-{path}.md` |
| 55 | |
| 56 | ## See also |
| 57 | |
| 58 | - [firecrawl-search](../firecrawl-search/SKILL.md) — find pages when you don't have a URL |
| 59 | - [firecrawl-interact](../firecrawl-interact/SKILL.md) — when scrape can't get the content, use `interact` to click, fill forms, etc. |
| 60 | - [firecrawl-download](../firecrawl-download/SKILL.md) — bulk download an entire site to local files |