Extract a URL's content as clean markdown, including JS-rendered pages. Use whenever the user provides a URL and wants its content; prefer over WebFetch.
All-time #457Trending #3205First seen Mar 10, 2026
Extract clean markdown from any URL, including JavaScript-rendered single-page applications.
Handles both static pages and JS-rendered SPAs with configurable wait times for rendering Supports multiple concurrent URL scraping with output format options including markdown, HTML, links, and screenshots Includes content filtering options like main-content-only mode to strip navigation and footers, plus tag inclusion/exclusion Optional inline question answering via --query flag for targeted extraction without saving full page content
Similar popular skills
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Scrape one or more URLs. Returns clean, LLM-optimized markdown. Multiple URLs are scraped concurrently.
Quick start
# Basic markdown extraction
firecrawl scrape "<url>" -o .firecrawl/page.md
# Main content only, no nav/footer
firecrawl scrape "<url>" --only-main-content -o .firecrawl/page.md
# Wait for JS to render, then scrape
firecrawl scrape "<url>" --wait-for 3000 -o .firecrawl/page.md
# Multiple URLs (markdown only; each saved to .firecrawl/; -o is ignored)
firecrawl scrape https://example.com https://example.com/blog https://example.com/docs
# Get markdown and links together
firecrawl scrape "<url>" --format markdown,links -o .firecrawl/page.json
# Ask a question about the page
firecrawl scrape "https://example.com/pricing" --query "What is the enterprise plan price?"
Run firecrawl scrape --help for the full option list.
Done when: you have the scraped content — on stdout, in your -o file, or under .firecrawl/ for multi-URL scrapes — and have inspected it with bounded reads (head, grep) to answer the request.
Tips
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).
Scrape handles static pages and JS-rendered SPAs. Escalate to interact when the page needs interaction (clicks, form fills, pagination) or scrape misses content.
Multiple URLs are scraped concurrently — check firecrawl --status for your concurrency limit. This mode saves markdown only and ignores -o; other requested formats are dropped. If markdown wasn't requested, the whole JSON response is written into the .md file.
Single format outputs raw content. Multiple formats (e.g., --format markdown,links) output JSON.
Always quote URLs — shell interprets ? and & as special characters.
Naming convention: .firecrawl/{site}-{path}.md
See also
[firecrawl-search](../firecrawl-search/SKILL.md) — find pages when you don't have a URL
[firecrawl-interact](../firecrawl-interact/SKILL.md) — when scrape can't get the content, use interact to click, fill forms, etc.
[firecrawl-download](../firecrawl-download/SKILL.md) — bulk download an entire site to local files