MCP Tools
Web Scraping
Scrape JavaScript-rendered pages into clean markdown, list a site's URLs, or crawl a whole docs site. Powered by a headless browser.
Read web pages that a plain fetch can't handle. All tools return clean markdown — no HTML parsing in your Skill.
What you can do
- Scrape one page — JavaScript-rendered SPAs, anti-bot protected pages, main-content extraction.
- Map a site — list every indexed URL on a domain, optionally filtered by keyword.
- Crawl a section — recursively scrape a docs site or site section, page by page.
Boundaries (read these first)
- Prefer the built-in web fetch for simple pages. Static pages, articles, and public docs work fine with the agent's free built-in fetch. Reach for these tools only when the page is JavaScript-rendered, blocks plain fetches, or you need bulk crawling.
limiton a crawl is the billing upper bound. A crawl is metered by its page limit at submission — set it to what the task needs (default 10, max 50), don't max it out by habit.- Long pages are truncated inline. A scrape returns up to ~50k characters; a completed crawl inlines the first 3 pages (~10k characters each) and lists the rest by URL. To read a listed page in full, scrape it individually — it's served from cache, fast, and still one page's cost.
Tools
| Tool | Input | Returns |
|---|---|---|
firecrawl_scrape | url, only_main_content? | Page title, source URL, status code, markdown body |
firecrawl_map | url, search?, limit? | Bullet list of the site's URLs (default 100, max 500) |
firecrawl_start_crawl | url, limit?, include_paths?, exclude_paths? | A crawl_id immediately — the crawl runs in the background |
firecrawl_get_crawl_status | crawl_id | Progress while scraping; page index + first pages inline when completed |
firecrawl_start_crawl: limit is 1–50 (default 10) and doubles as the billing cap; include_paths / exclude_paths take patterns like ["/guide/*"].
Crawling is asynchronous, in two steps
Like video generation: submit the job (get a crawl_id), then poll firecrawl_get_crawl_status every few seconds until completed. A 10-page crawl typically finishes within a minute.
Using it in a Skill
- Research a docs site:
firecrawl_mapwith asearchkeyword to find the relevant pages →firecrawl_scrapethe two or three that matter. - Bulk-read a section:
firecrawl_start_crawlwithinclude_paths: ["/guide/*"]and a right-sizedlimit→ poll status → read the page index and inlined content → scrape individual pages for anything you need in full. - A page the built-in fetch can't read:
firecrawl_scrapewith the URL — the headless browser renders JavaScript and extracts the main content.
