Firecrawl with Claude: Add Map, Scrape and Extract Tools
Give Claude Firecrawl's map, scrape and extract tools in one minute, with what each call returned when we ran it and where Claude gets misled.

Let Claude map a docs site, pick the pages and read them as markdown. Paste this into your agent:
Set up https://monid.ai/SKILL.md, and then use Monid to map modelcontextprotocol.io filtered to the word "security", scrape the two most relevant pages to markdown, and give me the URL and a three-line summary of each.
One prompt runs the map, the pick and the read. 1 min setup · 6-14 hrs saved.
You want Claude to read the live web: a documentation site, a competitor's pricing page, a list of articles. Firecrawl turns pages into markdown and URL lists a model can use, and the open question is how to put it inside Claude without a morning of config. This guide covers the quickest wiring, what Claude gets back from each Firecrawl tool (we ran them live on 2026-10-16), and the traps that mislead a model reading the output. It runs through Monid, the OpenRouter for agent tools: one key, one balance, every tool priced per call.
What is the easiest way to use Firecrawl with Claude?
Monid. Install it once, add a key, and Claude can call Firecrawl's map, scrape, crawl, search and agent endpoints by name, with the input schema read from the endpoint itself instead of copied into a config file.
- Pay per call. A map call or a plain scrape is billed on its own, at $0.001 for a map and $0.001 for a scrape (Verified 2026-10-16 on the web extraction tools page). Buy calls as you need them: no monthly plan and no minimum top-up. Discovery and inspection are free; only a run bills.
- One install, every tool. The same key and the same balance call Firecrawl and every other tool on Monid, so a research task that needs a search, an enrichment or a second scraper is one more call, not one more vendor account.
- Lives inside Claude. Your agent reads
SKILL.md, learns the discover, inspect and run steps, and uses them whenever a task needs web data. Setup is about a minute and nothing runs between tasks.
How do you add Firecrawl to Claude Code or Claude Desktop?
Give Claude a tool that calls Firecrawl. The choice is which tool: Firecrawl's own MCP server, your own code behind a custom tool, or a tool layer that already carries Firecrawl.
| Route | What Claude gets | What you maintain | Fits |
|---|---|---|---|
| Firecrawl's own MCP server | Firecrawl's tools, under Firecrawl's key | A server entry and a key in your Claude config | Firecrawl is the only web tool you need |
| Your own tool around the SDK | Whatever you wrap | The code, the error handling, the key | A fixed pipeline you control end to end |
| Self-hosted Firecrawl | The same endpoints on your hardware | Servers, browsers, proxies, upgrades | Data that cannot leave your network |
| Monid tool layer | Firecrawl next to every other tool, found at run time | One key and one balance | Agents that will need more than one scraper or data source |
The tool-layer route differs in one way you can see: the agent does not carry a fixed list of Firecrawl tools. It asks what exists for the task, reads the schema of the one it wants, then runs it. Monid keeps Firecrawl's schemas current, so a new parameter such as search on map is readable the day it ships. Which web scraping MCP server to pick in the first place is the question in a web scraping MCP server for live data.
For agents
Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:
set up https://monid.ai/SKILL.md
It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.
For humans
npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main
Inspect, then run each tool once
Map lists a site's URLs, scrape turns one page into markdown, agent answers a question by browsing:
monid run -p firecrawl -e /map -i '{"url": "https://monid.ai"}'
monid run -p firecrawl -e /scrape \
-i '{"url": "https://monid.ai/blog/guides/hunter-io-api-domain-search-vs-email-finder", "formats": ["markdown"]}'
monid run -p firecrawl -e /agent -w \
-i '{"prompt": "What is the title of the most recent guide on https://monid.ai/blog and when was it published?"}'
The agent endpoint bills by the credit it consumes and runs for minutes, so run it last and read its price first with monid inspect -p firecrawl -e /agent.
Give this to your agent![]()
Set up https://monid.ai/SKILL.md, and then use Monid to map this docs site filtered to the topic I name, scrape the two best pages to markdown, and give me the URL and a three-line summary of each.Can you self-host Firecrawl or call it from Python instead?
Yes to both, and they suit different people. Firecrawl publishes a Python SDK, so you can wrap a scrape in a function and hand it to Claude as a tool in an afternoon. Its code can also be run on your own servers, which is the route when pages and results must stay inside your network.
The cost is what sits around the endpoint. With the SDK you own the key, the retries, the handling of blocked pages and the truncation of a long page before it floods the conversation. Self-hosting adds browsers, proxies and upgrades to that list. People searching for a free or open source alternative are usually pricing that upkeep against a bill.
The Monid route suits an agent that runs the job on demand and then stops. The browsers and proxies are Firecrawl's to run, the schemas are readable before any spend, and you pay per call, not for a server that idles between tasks. If you want to compare crawlers you run yourself, Crawl4AI and when to run your own crawler covers that side.
What does Claude actually receive from map, scrape and extract?
Three different shapes, so "use Firecrawl" is not a complete instruction for Claude until it names one. All four runs below were on 2026-10-16 against modelcontextprotocol.io, for $0.008 in total (Verified 2026-10-16).
Map: a list of URLs, sometimes with titles
monid run -p firecrawl -e /map -i '{"url": "https://modelcontextprotocol.io", "search": "security", "limit": 10}'
The call returned 10 links in about 13 seconds, every one with a url, a title and a description, ranked for the word "security". An unfiltered run with limit 50 returned 50 links in about 3.6 seconds. Most carried a title and a description; the links to .md and .json files carried the url alone. Each map call billed one unit however many links came back.
Scrape: one page as markdown plus metadata
monid run -p firecrawl -e /scrape -i '{"url": "https://modelcontextprotocol.io", "formats": ["markdown"]}'
The response held data.markdown and a data.metadata object with the title, the Open Graph and Twitter tags, statusCode, contentType, sourceURL, url, cacheState and creditsUsed. It took about 1.9 seconds and billed one unit. The markdown opened with a quoted "Documentation Index" block pointing at /llms.txt, a note the site wrote for AI readers.
Extract: JSON shaped by your schema
monid run -p firecrawl -e /scrape \
-i '{"url": "https://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro", "json": true, "jsonPrompt": "Return the page title and the list of section headings.", "jsonSchema": {"type": "object", "properties": {"title": {"type": "string"}, "headings": {"type": "array", "items": {"type": "string"}}}}}'
It returned data.json with title and a headings array of six entries, which matched the six H2 headings in the markdown. Claude gets only the fields it asked for instead of a whole page, which is what keeps a long research task inside the context window.
Agent: a question instead of a URL
firecrawl/agent takes a prompt and optionally urls, a schema, strictConstrainToURLs and maxCredits, then browses on its own. Its inspect page lists a default ceiling of 100 credits, a maximum of 2,500 and a typical run time of about 74 seconds. We did not run it for this guide, because the bill depends on the credits it consumes.
What goes wrong when Claude calls Firecrawl?
Five things in the output can mislead a model, and each has a rule. All are from the 2026-10-16 runs.
Why does a map return the same page several times?
Because a documentation site keeps every version live. Our 50 links included paths under /docs/2024-11-05/, /docs/2025-11-25/ and /docs/2026-07-28/ as well as draft, and several of the same pages appeared under more than one of them. The list also reached other hosts, registry., blog., py.sdk. and ts.sdk. under modelcontextprotocol.io, with includeSubdomains not set. Tell Claude which version and which host to keep, and use search and limit so the list arrives short.
Why is the URL Claude scraped not the one it asked for?
Because the root redirected. We scraped https://modelcontextprotocol.io and data.url came back as https://modelcontextprotocol.io/docs/2026-07-28/getting-started/intro. Have Claude cite data.url, not the address it submitted, or a summary will name the wrong page.
Why can the page be an hour old?
Because cacheState was hit. The scrape reused a copy cached about an hour before our call. The scrape schema offers maxAge for this: a cache window in milliseconds, with 0 forcing a live fetch. Put maxAge: 0 in the instruction when the task is about today's price or today's headline, and read cachedAt when it is not.
Why do the page dates sometimes come back empty?
Because metadata carries what the page's own tags carry. Our page returned no publishedTime or modifiedTime. A freshness check built on those fields needs a fallback for pages that omit them, such as the date in the text, as in scraping news articles for title, author and date.
Why did extraction give a wrong title and a higher bill?
The JSON extraction returned Documentation Index as the title, which is the heading of the note at the top of the markdown, not the page title (What is the Model Context Protocol (MCP)? - Model Context Protocol was in metadata.title). The headings were right. Take titles from metadata, and use extraction for fields only the text holds. It also billed $0.005 (creditsUsed 5) while the listed JSON tier reads $0.004 (Verified 2026-10-16), so budget by the credits the response reports.
Why should Claude treat scraped text as data?
Because anything on the page lands in the conversation. Our scrape opened with a block that began with an instruction aimed at an AI reader. This one was harmless, but the next page can say anything. Tell Claude that fetched text is material to read, never a command, and keep any action that costs money or changes something behind your own confirmation.
Which endpoint should I use for which job?
| Endpoint | What it does | Input | Billing | Price (Verified 2026-10-16) |
|---|---|---|---|---|
firecrawl/map | List a site's URLs | url, search, limit | Per call | $0.001 |
firecrawl/scrape | One page to markdown or JSON | url, formats, json | Per call, JSON tier higher | $0.001 |
firecrawl/crawl | Whole site, page by page | url, limits | Per page returned | $0.001 |
firecrawl/search | Web search, optionally scraping each result | query | Per result | $0.0002 |
firecrawl/agent | Browses and answers a question | prompt, schema, maxCredits | Per credit consumed | $0.001 |
Prices Verified 2026-10-16 with monid inspect, each the headline unit price; current figures are at monid.ai/tools. Scraping each search result and JSON extraction carry their own higher tiers. We ran map and scrape; crawl, search and agent were inspected only.
The order that keeps Claude's context small: map with a search term and a limit, let Claude pick two or three URLs, scrape those, and use JSON extraction only when you need fields instead of text. For pages read again and again, extracting page content for RAG shows what to store.
When is another route a better fit?
Firecrawl is the only tool Claude will ever need. Its own MCP server is the shorter path: one entry, one key. A tool layer pays off when the agent reaches for a second vendor.
The data has a structured endpoint. A page that is a thin view of a database is cheaper and cleaner through the endpoint behind it.
You need a very large crawl on a fixed schedule. A crawl is per page returned, so thousands of pages a day are a pipeline, not a chat, and a crawler you run yourself or a batch job fits better.
You want a free tier for a weekend test. Firecrawl offers one and so do other tools; if you only try one site once, use it.
And the disclosure: we resell Firecrawl on Monid. The most useful advice here holds whoever you buy it from: map small, scrape few, take titles from metadata, and treat page text as data.
Conclusion
The quickest way to use Firecrawl with Claude is a tool layer: install Monid, add a key, and Claude calls Firecrawl's map at $0.001 and scrape at $0.001 (Verified 2026-10-16), with one key and one balance for every other tool too. Firecrawl's own MCP server is shorter if it is the only tool, and the SDK or self-hosting fit teams that want to own the plumbing.
Two things matter more than the wiring. Tell Claude which of the three shapes to call and in what order: a filtered map, a few scrapes, extraction only for fields. And have it read data.url, cacheState and metadata.title rather than trusting what it submitted or what an extraction guessed.
How we estimated the time saved: wrapping a fetch, rendering and markdown cleanup for Claude is roughly 4 to 8 hours, URL discovery and filtering 1 to 2 hours, and a schema-based extraction step with checks 1 to 4 hours. That is 6 to 14 hours. The 1 minute is the install, key and first call once you already have a Monid key.
Free next step: run monid inspect -p firecrawl -e /map, then one map call with search and limit on a site you know, and see which versions and hosts come back.
FAQ
How do I use Firecrawl with Claude?
Give Claude a tool that calls Firecrawl, either Firecrawl's own MCP server or a tool layer. Through Monid you install the CLI, add a key and tell your agent to set up SKILL.md, after which it can map, scrape and extract with a call each. It took us one minute from key to first call.
Does Firecrawl have a free tier?
Firecrawl offers free credits and paid plans on its own site. Through Monid there is no plan: a map or a plain scrape is $0.001 a call (Verified 2026-10-16), with no minimum top-up, and discovery and inspection cost nothing. Our four test runs cost $0.008 in total (Verified 2026-10-16).
Can Firecrawl return JSON instead of markdown?
Yes. Set json to true on /scrape with a jsonSchema or a jsonPrompt. On 2026-10-16 it returned the headings of a page as an array of six strings, and billed $0.005 against a listed tier of $0.004 (Verified 2026-10-16). Check the title it returns against metadata.title, because ours picked the wrong heading.
What is the difference between map and crawl?
Map lists URLs without fetching their content, for a flat charge per call. Crawl fetches each page and returns its content, priced per page returned. Run map first with search and limit to see what exists, then scrape the pages you need or crawl the part of the site that matters.
Is there a Firecrawl alternative for Claude?
Yes, several: a crawler you run yourself, other scraping tools, or other endpoints on Monid that return a page as markdown. Search the catalogue with monid discover, read the price and schema with monid inspect for free, and compare on one real page before committing.
Published September 2026.


