Firecrawl alternative · technical teardown
Firecrawl alternative for search: $1.00 per 1,000 searches, Markdown included
ContextFetch is a web search API for AI agents that returns each result's page as Markdown in the same call, for $1.00 per 1,000 searches. Firecrawl bills search and scraping separately in credits: 2 per search of up to 10 results and 1 per page scraped, so a search with the Markdown of 10 results costs $7.19 per 1,000 at its lowest (yearly Scale) credit price and $45.60 on Hobby (checked 2026-10-26). Firecrawl is the stronger scraper and crawler; for search with page text, ContextFetch is 86% cheaper. firecrawl-py and firecrawl-js keep working: point api_url at https://api.contextfetch.dev.
100,000 searches, Markdown for 10 pages each (Scale rate)
Firecrawl$718.80
ContextFetch$100.00
List prices as of 2026-10-26. 25 searches a day free with no key.
Compare
How the list prices compare
Search APIs for AI agents by list price per 1,000 searches, with what each one includes.
| Provider | Per 1k searches | Page Markdown | Pruned context | Keyless MCP |
|---|---|---|---|---|
| $1.00$0.83 with $500+ top-ups | Yesincluded | Yesincluded | Yes25/day | |
| $7.00$4.00 instant | Yes10 results | Yeshighlights | Yesrate-limited | |
| $8.00$16.00 advanced | Yesincluded | snippets | Yeskeyless header | |
| DeepSeek | $0.755 QPS cap | Not published | Nono budget | CN routing |
| $7.60Hobby plan | +1 credit/page | +4 credits/page | Yesdaily limits | |
| $1.00fast; $5 standard | Nosnippets | Yestoken budgets | Nokey or OAuth | |
| $1.00turbo; $5 basic | +$1/1k pages | Yesexcerpts | Yesrate-limited | |
| $5.00standard depth | +$1/1k pages | Not published | Nokey | |
| You.com | $5.00 | +$1/1k pages | Not published | Yes100/day |
| $5.00$5/mo free credit | Noextracts | YesLLM Context | Nokey | |
| $15.00$1.50/1k results | +$1/1k pages | Not published | Nokey | |
| $1.00$0.30 at volume | No | No | Not published | |
| $25.00Starter plan | No | No | Nokey | |
| $1.50SERP API | No | No | Notoken | |
| —billed in tokens | Yesincluded | Not published | Yesrate-limited |
Compatibility
Firecrawl API compatibility
What ContextFetch supports when your code was written for Firecrawl.
| Firecrawl feature | ContextFetch |
|---|---|
| POST /v2/search: query, limit | Supported, limit up to 100 (the first 25 in the search price). data.web items carry url, title, description and position. |
| scrapeOptions.formats: markdown | Supported: each result comes back as a document with its page Markdown and metadata, in the search price. |
| includeDomains, excludeDomains, country | Supported; country ranks that country's pages first. |
| tbs: qdr:h, qdr:d, qdr:w, qdr:m, qdr:y | Supported as a published-date window (an hour rounds up to a day). Custom cdr: ranges are ignored with a warning. |
| POST /v2/scrape: url, formats markdown | Supported at $1.00 per 1,000 pages that load (refunded when a page fails). For many URLs, POST /v1/contents takes up to 100. |
| formats: html, rawHtml, links, screenshot, summary, json | Not supported: only markdown is returned, and the response's warnings name the formats it ignored. |
| sources: news, images; location; categories | Web results only; ignored fields are named in warnings. |
| crawl, map, extract, batch scrape | Not on the Firecrawl routes. ContextFetch's own POST /v1/crawl, /v1/map and outputSchema on /v1/search cover them in a different request shape. |
| actions, browser sessions, change tracking, Agent | Not supported. |
| firecrawl-py, @mendable/firecrawl-js | Supported for search and scrape: set api_url (apiUrl in JavaScript) to https://api.contextfetch.dev. Tested with firecrawl-py 4.54 and firecrawl-js 4.51. |
| Auth: Authorization: Bearer | Supported; x-api-key too. No key at all gives 25 searches a day. |
Trade-offs
Honest trade-offs
Where Firecrawl is stronger
- A full scraping platform: page actions (click, scroll, type), screenshots, browser sessions and change tracking.
- Scraping alone is cheaper at volume: one credit per page is $0.60 per 1,000 at the yearly Scale rate, against ContextFetch's $1.00.
- LLM extraction to JSON, an Agent product, and an open-source core you can self-host.
Where ContextFetch is different
- Search and page Markdown are one price: $1.00 per 1,000 searches ($0.83 with the 20% bonus on $500+ top-ups), not search credits plus a credit per page.
- A query-pruned context per search: the passages that answer the query, in page order, so the agent reads fewer tokens.
- Exa- and Tavily-compatible endpoints: exa_py, exa-js, tavily-python and @tavily/core work with a base-URL change.
- A prepaid dollar balance that never expires instead of monthly credits; 25 keyless searches a day and a keyless MCP server.
Cost
Cost at 100,000 searches a month
List price per 1,000 searches
| Group | Firecrawl | ContextFetch |
|---|---|---|
| Search, results only | $1.20 | $1.00 |
| Search + Markdown of 10 pages | $7.19 | $1.00 |
Monthly cost as volume grows
| searches per month | Firecrawl Scale rate, Markdown for 10 pages | ContextFetch |
|---|---|---|
| 0 | $0 | $0 |
| 20,000 | $144 | $20 |
| 40,000 | $288 | $40 |
| 60,000 | $431 | $60 |
| 80,000 | $575 | $80 |
| 100,000 | $719 | $100 |
| Workload | Firecrawl list price | ContextFetch |
|---|---|---|
| 100,000 searches, results only (Scale rate) | $119.80 | $100.00 |
| 100,000 searches, Markdown for 10 pages each (Scale rate) | $718.80 | $100.00 |
Firecrawl: 2 credits per search (up to 10 results) and 1 per page scraped, at the yearly Scale plan's $599 a month for 1,000,000 credits, its lowest per-credit price; Hobby ($19 for 5,000 credits) is $45.60 per 1,000 searches with 10 pages. ContextFetch: $1.00 per 1,000 default searches, Markdown included for the pages it returns. Prices as of 2026-10-26; sources under the comparison table.
Calculator
Your volume, your bill
Set your monthly searches and pages per search to see Firecrawl, ContextFetch and the others at list price.
| Provider | Per month | Basis |
|---|---|---|
| ContextFetch, list price | $100.00 | Default search, page Markdown included |
| ContextFetch, $500+ top-ups | $83.33 | Same, with the 20% top-up bonus |
| Exa auto/fast | $700.00 | Search plus page text for 10 pages per search |
| Tavily basic | $800.00 | Pay-as-you-go credits |
| Firecrawl Hobby | $4,560.00 | Search plus a Markdown scrape of 10 pages, $19/mo plan rate |
| Firecrawl Scale | $718.80 | Same, at its lowest per-credit rate (yearly plan) |
List prices as of 2026-10-26; excludes free tiers, plans and volume deals. Sources are under the comparison table.
Migrate
Migrate in one line
search() and scrape() return Firecrawl's shapes: data.web documents with markdown and metadata (url, sourceURL, title, statusCode). Formats other than markdown, crawl, map and extract are not on these routes.
from firecrawl import Firecrawl fc = Firecrawl(api_key="fc-...")from firecrawl import Firecrawl fc = Firecrawl(api_key="YOUR_API_KEY", api_url="https://api.contextfetch.dev")# pip install firecrawl-pyfrom firecrawl import Firecrawl, ScrapeOptions fc = Firecrawl( api_key="YOUR_API_KEY", # or leave it out for the free keyless tier api_url="https://api.contextfetch.dev",) # Search with each result's page as Markdown: one search price, no scrape creditsres = fc.search("vector database benchmarks 2026", limit=5, scrape_options=ScrapeOptions(formats=["markdown"]))for doc in res.web: print(doc.metadata.url, len(doc.markdown)) page = fc.scrape("https://docs.python.org/3/library/asyncio-task.html", formats=["markdown"])print(page.markdown[:200])// npm i @mendable/firecrawl-jsimport Firecrawl from "@mendable/firecrawl-js"; const fc = new Firecrawl({ apiKey: "YOUR_API_KEY", apiUrl: "https://api.contextfetch.dev" }); const res = await fc.search("vector database benchmarks 2026", { limit: 5, scrapeOptions: { formats: ["markdown"] } });for (const doc of res.web ?? []) console.log(doc.metadata?.url, doc.markdown?.length); const page = await fc.scrape("https://docs.python.org/3/library/asyncio-task.html", { formats: ["markdown"] });# Exa-shaped search with Markdown and pruned contextcurl -s https://api.contextfetch.dev/v1/search \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"query":"vector database benchmarks 2026","numResults":5,"contents":{"text":true,"pruned_context":true}}' # Any URL as Markdown, pruned to a questioncurl -si "https://api.contextfetch.dev/r/https://docs.python.org/3/library/asyncio-task.html?q=task+groups"Questions
Is ContextFetch a drop-in replacement for Firecrawl?
For search and scrape, yes: ContextFetch implements Firecrawl's /v2/search and /v2/scrape, so firecrawl-py and firecrawl-js keep working after you set api_url to https://api.contextfetch.dev. Only Markdown is returned; crawl, map, extract, page actions and screenshots are not on these routes.
How much cheaper is ContextFetch than Firecrawl for search?
A search that returns the Markdown of 10 results costs $1.00 per 1,000 on ContextFetch. On Firecrawl the same work is 12 credits: $7.19 per 1,000 at the yearly Scale rate and $45.60 at the Hobby rate (list prices checked 2026-10-26).
Is it cheaper for scraping single URLs?
Not at volume. Firecrawl's one credit per page is $0.60 per 1,000 pages at the yearly Scale rate; ContextFetch charges $1.00 per 1,000 pages. ContextFetch wins when you search and need the pages' text, because that comes with the search.
Can I try ContextFetch without an API key?
Yes. Send no key for 25 free searches per day per IP. For agents, run: claude mcp add contextfetch -- npx -y @contextfetch/mcp
Is ContextFetch affiliated with Firecrawl?
No. ContextFetch is an independent product. Firecrawl is a trademark of its owner.
Is ContextFetch a drop-in replacement for Firecrawl?
For search and scrape, yes: ContextFetch implements Firecrawl's /v2/search and /v2/scrape, so firecrawl-py and firecrawl-js keep working after you set api_url to https://api.contextfetch.dev. Only Markdown is returned; crawl, map, extract, page actions and screenshots are not on these routes.
How much cheaper is ContextFetch than Firecrawl for search?
A search that returns the Markdown of 10 results costs $1.00 per 1,000 on ContextFetch. On Firecrawl the same work is 12 credits: $7.19 per 1,000 at the yearly Scale rate and $45.60 at the Hobby rate (list prices checked 2026-10-26).
Is it cheaper for scraping single URLs?
Not at volume. Firecrawl's one credit per page is $0.60 per 1,000 pages at the yearly Scale rate; ContextFetch charges $1.00 per 1,000 pages. ContextFetch wins when you search and need the pages' text, because that comes with the search.
Can I try ContextFetch without an API key?
Yes. Send no key for 25 free searches per day per IP. For agents, run: claude mcp add contextfetch -- npx -y @contextfetch/mcp
Is ContextFetch affiliated with Firecrawl?
No. ContextFetch is an independent product. Firecrawl is a trademark of its owner.
Exa, Tavily, DeepSeek, Firecrawl, Serper, Perplexity, Parallel, Linkup, You.com, Brave, Valyu, SerpApi, Bright Data, Jina and Google are trademarks of their respective owners. ContextFetch is an independent product and is not affiliated with, endorsed by or sponsored by any of them.
Switch from Firecrawl with one argument
Start with no key: 25 free searches a day. Your balance never expires.