Table of Contents
Firecrawl vs Tavily vs Exa: we ran the same 50 searches through all three
We sent the same 50 questions to the Exa, Tavily and Firecrawl search APIs on October 19, 2026, from one server, on each service's free plan, and checked what came back. Three results stood out.
- Exa put the official source in its top 3 most often: 106 of 150 top results came from the vendor's own site or docs, against 79 for Firecrawl and 44 for Tavily. On the 20 queries we graded by hand, Exa scored 40 out of 40.
- Firecrawl was the fastest: a 0.98 second median, against 1.37 seconds for Exa and 1.77 for Tavily.
- Firecrawl's free plan has a wall: 10 searches a minute. Our first pass sent 50 back to back and 40 were refused.
If your agent needs the right page, start with Exa. If it needs speed on a budget, Firecrawl. Tavily was the most likely to hand back a secondary or outdated source. The rest of this page shows how we ran the test, every request we sent, and the raw results, so you can run it yourself.
| Test setup | |
|---|---|
| Date | October 19, 2026, 13:29 to 13:40 UTC |
| Where | One server in Falkenstein, Germany |
| Plans | Free plan on all three |
| Endpoints | Exa /search, Tavily /search, Firecrawl /v2/search |
| Settings | Each API's recommended default request, 10 results per query |
| Queries | 50, ten each for pricing, setup, docs, news and comparisons |
| Searches | 150 (plus a throttled Firecrawl rerun) |
| Code and data | run.py, results.csv |
Watch it run
One query through all three APIs, then 12 Firecrawl searches back to back until the free plan refuses them. Output captured live on October 19, 2026 with demo.py and replayed; the raw capture with timings is in demo-capture.json.
The results
| Exa | Firecrawl | Tavily | |
|---|---|---|---|
| Top-3 results from the official source (of 150) | 106 | 79 | 44 |
| Answer quality, 20 graded queries (max 40) | 40 | 34 | 32 |
| Median response time | 1.37 s | 0.98 s | 1.77 s |
| Slowest 1 in 20 searches | 2.0 s | 1.9 s | 2.6 s |
| Cost of our 50 searches | $0.35 | 100 credits | 50 credits |
| Free plan | $10 credits a month + $10 bonus | 1,000 credits a month (500 searches) | 1,000 credits a month |
| Free-plan limit we hit | none | 10 searches a minute | none |
On 12 of the 20 graded queries all three APIs scored full marks. The difference lives in the other 8.
Where Tavily and Firecrawl slipped
"OpenAI API price per million tokens for the newest GPT model." Exa's top two results were OpenAI's own pricing and models pages. Tavily's top three were articles from May 2026 calling GPT-5.5 the newest flagship, five months and two model generations out of date. This is the top Tavily result, as returned:
1. OpenAI API Pricing May 2026: GPT-5.5, o4-mini & All Models (metacto.com)
"GPT-5.5 ($5/$30 per 1M tokens) is OpenAI's newest flagship
general-purpose model released April 2026, with a 1M context window..."
"Latest Claude model release announcement." Exa returned Anthropic's announcements page with Claude Haiku 5.5 (October 7) on top. Tavily returned third-party pages naming Opus 5 and Fable 5. Firecrawl found a current third-party timeline, but not the announcement itself.
"How to add an MCP server to Claude Code." Exa and Tavily both returned Anthropic's Claude Code docs. Firecrawl's top three were a Reddit thread, an MCP page written for Claude Desktop, and a YouTube video. Firecrawl's results looked the most like a general web search, forums and video included.
"Anthropic Messages API max_tokens parameter documentation." Only Exa returned Anthropic's API reference. Tavily led with a LangChain GitHub issue; Firecrawl with NVIDIA's and AWS Bedrock's docs for the same API.
Pricing questions. For "Cursor Teams plan price per seat", Tavily's top three were all third-party pricing blogs. Exa and Firecrawl both returned cursor.com.
The pattern held across all 50 queries: Tavily favoured write-ups about a product, Firecrawl mixed official pages with forums and video, and Exa leaned hardest toward the source itself.
Explore all 50 queries
Pick a category or type a word to see what each API returned for every query in the test: the top 3 results, the response time, which results came from the official source, and the grade where we graded it.
Firecrawl's 10-searches-a-minute wall
Our first pass fired the 50 queries back to back. Firecrawl answered the first 10, then refused the rest:
{
"success": false,
"error": "Rate limit exceeded. Consumed (req/min): 11, Remaining (req/min): 0. Upgrade your plan at https://firecrawl.dev/pricing for increased rate limits or please retry after 49s",
"retry_after_seconds": 49
}
We reran Firecrawl with a 6.5 second pause between calls and all 50 went through. The refused calls cost nothing: Firecrawl's activity log, exported from the dashboard, lists only the 61 searches that completed (2 credits each), and none of the 40 that hit the limit.
Our Firecrawl usage after the test, from the dashboard, October 19, 2026.
Free-plan balance after the run: 123 of 1,000 credits used.
If your agent fans out several searches per step, plan for this limit on the free plan, or add a queue that waits on retry_after_seconds. The dashboard also shows a browser concurrency limit of 2 on the free plan.
What it costs
Exa billed $0.007 per search in our run, $0.35 for all 50, reported back in each response's costDollars field. Its free plan gives $10 of credits a month plus a $10 bonus, roughly 1,400 searches a month at that rate.
Source: exa.ai, captured October 19, 2026.
Tavily's basic search costs 1 credit. The free Researcher plan includes 1,000 credits a month, pay-as-you-go is $0.008 per credit, and the Project plan is $30 a month for 4,000 credits, per Tavily's pricing page.
Source: tavily.com, captured October 19, 2026.
Firecrawl charged 2 credits per 10-result search, so its 1,000 free credits cover 500 searches a month. Our server is in Germany and Firecrawl's pricing page showed euro prices there, so we left that screenshot out; check firecrawl.dev/pricing for prices in your currency.
What would your volume cost?
Drag the slider to your monthly search volume.
How we ran it
The questions. 50 queries, 10 each in five categories a developer or an agent would actually run: pricing ("Claude Max plan price and usage limits"), setup ("how to self-host n8n with Docker Compose"), docs lookups ("Firecrawl scrape endpoint formats markdown json"), news ("GitHub Copilot changelog this week") and comparisons ("n8n vs Make pricing at 10000 executions per month"). The full list is in queries.txt.
The requests. Each API got its plain, recommended search call, asking for 10 results. Nothing tuned per query.
# Exa: the request Exa's own docs recommend (10 results by default)
curl -s https://api.exa.ai/search -H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "Cursor Teams plan price per seat", "type": "auto", "contents": {"highlights": true}}'
# Tavily (defaults to 5 results, so we asked for 10)
curl -s https://api.tavily.com/search -H "Authorization: Bearer $TAVILY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "Cursor Teams plan price per seat", "max_results": 10}'
# Firecrawl (defaults to 5 results, so we asked for 10)
curl -s https://api.firecrawl.dev/v2/search -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "Cursor Teams plan price per seat", "limit": 10}'
What we measured. For every call: response time, HTTP status, the results returned, and the cost or credits the API reported. All 150 searches ran on October 19, 2026, between 13:29 and 13:40 UTC, from a server in Falkenstein, Germany.
Official-source count. We counted a top-3 result as official when its domain belongs to the vendor the query is about (for example cursor.com, docs.github.com, code.claude.com). The domain list is published in official-domains.json.
Grading. Before looking at results, we wrote a three-point rubric: 2 when a top-3 result answers the query from an official or authoritative current source, 1 when the answer is only on a secondary or outdated page, 0 when nothing in the top 3 answers it. Comparison queries have no single official source, so for them a current comparison that addresses the specific question also scores 2. We graded the first 4 queries in each category, 20 in all, from each result's title, URL and snippet, opening the page when the snippet was unclear. The rubric and every grade with its reason are in rubric.md and grades.csv.
Run it yourself
- Create free accounts at exa.ai, tavily.com and firecrawl.dev, and copy an API key from each dashboard.
- Download run.py and queries.txt. The script needs only Python 3.
- Export the keys and run it. On Firecrawl's free plan, keep the pause:
export EXA_API_KEY=... TAVILY_API_KEY=... FIRECRAWL_API_KEY=...
python3 run.py queries.txt --providers exa,tavily
python3 run.py queries.txt --providers firecrawl --sleep 6.5
- Results land in
results/<timestamp>/as one JSON line per search. Swap in your own queries; the ones your agent really sends are the test that matters.
Expect the speed and cost figures to land close to ours. The rankings will shift with time, region and topic.
What this test does not show
- One day, one region. All searches ran on October 19 from Germany. Search results change daily, and "latest" queries most of all: Tavily's two zero scores were both on "newest model" questions.
- 20 graded queries. The official-source count covers all 50; the hand grading covers 20, and grades rest partly on snippets.
- Default settings only. Exa's faster modes, Tavily's advanced search depth and Firecrawl's scrape-on-search options were not tested. Exa's own instant mode is built for lower latency than the auto mode we used.
- Search only. Scraping full pages, crawling sites and each API's research mode are a separate test.
Which one to pick
Your agent answers questions about products, prices or docs: Exa. It returned the source of truth more often than the other two, which is what keeps an agent from repeating a stale blog post.
Your agent searches often and speed matters more than the source: Firecrawl. It was the fastest of the three, and its results include forums and video, which some research tasks want. Budget for the free plan's 10-a-minute limit, or upgrade. You can start free with Firecrawl and check the result shape your pipeline expects.
You want a simple per-credit bill and LangChain-ready defaults: Tavily, with a check step for anything time-sensitive. Its results leaned on secondary sources in our test.
For the single-tool deep dive, see our Firecrawl pricing breakdown.
Download the data
- results.csv: every result from all 150 searches (API, query, rank, URL, title, latency)
- grades.csv and rubric.md: the 20 graded queries
- firecrawl-activity-log.csv: Firecrawl's own log of the run
- demo.py and demo-capture.json: the recorded run
- run.py, charts.py, queries.txt, official-domains.json
What changed
- October 19, 2026: Rebuilt as a Pondero Labs test. We ran 50 identical queries through all three APIs and replaced vendor-reported benchmarks with our own measurements, screenshots and raw data.
- July 30, 2026: First published as a comparison of vendor-reported benchmarks and pricing.
