Perplexity Search API vs Tavily in 2026
One key answers both calls.
On Nov 10, 2026, the Perplexity Search API costs $5.00 per 1,000 successful requests and bills a reply with no results. Tavily charges 1 credit for a basic search and 2 for an advanced one, at $0.008 a credit pay as you go.
SpecStream answers both calls with one key. Perplexity code points at https://api.specstream.ai/perplexity, Tavily code at https://api.specstream.ai/tavily, and each gets its own JSON back. Every search of up to 10 results costs $0.005, page text included.
SpecStream is the live web data engine. Its Search API scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks, shown on the benchmarks page.
New accounts get $10 of credit, no card. It covers 2,000 searches.
SpecStream, Perplexity Search API and Tavily side by side
| SpecStream | Perplexity Search API | Tavily | |
|---|---|---|---|
| Your code | Runs as written. Perplexity calls go to POST https://api.specstream.ai/perplexity/search and Tavily calls to POST https://api.specstream.ai/tavily/search, each with the key as the Bearer token. One key answers both | POST https://api.perplexity.ai/search with a Perplexity key as the Bearer token | POST https://api.tavily.com/search with a Tavily key as the Bearer token |
| What comes back | Each API's own JSON. Perplexity: id and results[] with title, url, snippet and date when the page has one. Tavily: query, answer with include_answer, and results[] with title, url, content, score and raw_content when asked | Ranked results as JSON with no generated answer | results[] with a title, URL, content and relevance score for each result, plus an optional answer and the page's raw content |
| Price per 1,000 searches | $5 for up to 10 results on either route, with page text, search_depth advanced or include_answer | $5.00 per 1,000 successful requests, and Fast Search $1.00 per 1,000 | $8 basic and $16 advanced at $0.008 a credit pay as you go, or $0.0075 to $0.005 a credit on monthly plans |
| Page text | In the search price on both routes: max_tokens_per_page fills Perplexity's snippet, and include_raw_content fills Tavily's raw_content. The Extract API reads any page at $0.80 per 1,000 pages | max_tokens and max_tokens_per_page leave the price as it is | include_raw_content returns each result's page as markdown or text. Extract costs 1 credit for every 5 successful URLs on basic |
| Results and queries per call | 1 to 20 results on the Perplexity route and 0 to 20 on the Tavily route. One query per call | max_results from 1 to 20, default 10. Up to 5 queries a request | max_results from 0 to 20, default 10 |
| What answers the call | The whole live web, read at the moment of the call. 97.9 F-score on all 1,000 SimpleQA Verified questions (978 correct) | Perplexity's search, through one endpoint, POST /search | Tavily's search, which serves cached copies and fetches pages live as needed. max_age_hours sets the copy's age, from 1 to 720 hours |
| What is not charged | A busy call, which gets 429 with Retry-After | Invalid, rate limited and upstream failed requests. A reply with no results is billed | A failed URL extraction or map |
| Rate and balance | No limit per key and no daily limit. Credit you buy never expires | 50 query units per second on every usage tier. Prepaid credits with auto top-up, and an empty balance can return 402 | Requests stop when the monthly credits run out, until they reset on the first day of the month or you upgrade |
| Free to start | $10 of credit, no card: 2,000 searches | Prepaid credits, with auto top-up when the balance runs low | 1,000 free credits a month, no credit card |
| Every match as rows | Deep Search: a request in plain words returns every match on the live web as rows that meet each condition you wrote, at 5¢, 15¢ or $1 a row, plus 5¢ for an email and 15¢ for a phone. The most a run can cost is quoted before it starts, and a saved request reruns hourly to yearly with each row labeled changed, unchanged or no longer matching | The Agent API has people_search and finance_search tools at $5 per 1,000 invocations each, plus the model's tokens | Research returns a cited report or one object in your schema, for 4 to 110 credits a request on mini or 15 to 250 on pro |
| MCP and API | MCP server at https://api.specstream.ai/mcp, REST API, Python and TypeScript SDKs, a CLI and A2A. An agent can buy one request with no account, by card or in USDC | The Search API at POST /search, and the Agent API | Remote and local MCP server, API, Python and JavaScript SDKs, and the tvly CLI |
Why Perplexity and Tavily users move to SpecStream
Both calls answered on one key
You do not have to pick one API and rewrite the other. Each call keeps its path, its body and its parser. The address changes, and the key.
# Perplexity: before
curl -X POST https://api.perplexity.ai/search -H "Authorization: Bearer $PERPLEXITY_KEY" -H "Content-Type: application/json" -d '{"query": "open source vector databases", "max_results": 10}'
# Perplexity: after
curl -X POST https://api.specstream.ai/perplexity/search -H "Authorization: Bearer $SPECSTREAM_KEY" -H "Content-Type: application/json" -d '{"query": "open source vector databases", "max_results": 10}'
# Tavily: before
curl -X POST https://api.tavily.com/search -H "Authorization: Bearer $TAVILY_KEY" -H "Content-Type: application/json" -d '{"query": "open source vector databases", "max_results": 10}'
# Tavily: after
curl -X POST https://api.specstream.ai/tavily/search -H "Authorization: Bearer $SPECSTREAM_KEY" -H "Content-Type: application/json" -d '{"query": "open source vector databases", "max_results": 10}'The parameter and field tables are in the Perplexity Search API guide and the Tavily guide.
What stays the same
On the Perplexity route, query, max_results, search_domain_filter, search_recency_filter, search_after_date_filter, search_before_date_filter, max_tokens and max_tokens_per_page work as on Perplexity, and errors come back in Perplexity's 422 body. On the Tavily route, query, max_results, include_domains, exclude_domains, time_range, start_date, end_date, include_raw_content and include_answer work as on Tavily, and search_depth does not change the price.
Not returned: Perplexity's last_updated, which is always null, and a query list of two or more gets a 422 that asks for one query per call. On Tavily, images is always empty, follow_up_questions is null and results carry no favicon.
One price per search, page text included
Tavily doubles the credits for an advanced search, and Perplexity bills a reply with no results. SpecStream charges $0.005 for a search of up to 10 results on both routes, with the page text, the answer and the advanced depth in that price. There is no monthly reset, credit you buy never expires, and a call stopped by a 429 charges nothing.
The most accurate web search API in the world
The SpecStream Search API scores 97.9 F-score on all 1,000 official SimpleQA Verified questions, 978 of them correct, and 64.0 item F1 and 43.4 row F1 on all 200 official WideSearch tasks. The Extract API scores 0.908 F1 on WCXB. Every score and its method is on the benchmarks page.
About one second a search, with no limit per key
Every drop-in route runs the fast search unless the call asks for page text or results past the first ten. On November 9, 2026 production took 1 to 20 fast searches a second and answered 718 of 720: the median was 0.82 s at 1 search a second and 1.07 s at 20 a second, and the 95th percentile stayed between 1.09 and 1.73 s. There is no limit per key and no daily limit; a busy call gets a 429 with Retry-After and is not charged.
Zero retention on any key
Set zero_retention when you create a key, or later. A search made with that key keeps no request text and no answer after the reply: it is not in the history, its answer is not reused for another call, and its log lines carry neither.
curl -X POST https://api.specstream.ai/v1/account/keys \
-H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
-d '{"name": "production", "scopes": ["account:read", "finds:spend"], "spend_cap_cents": 500000, "zero_retention": true}'Search, pages and rows on one key
A search API returns links and snippets, and your product still has to read the pages and build its records. On SpecStream the same key reads up to 20 pages or documents a call with the Extract API at $0.80 per 1,000 pages, maps and crawls a site at the page price, and runs Deep Search, which returns every match on the live web as structured rows at 5¢, 15¢ or $1 a row. The most a run can cost is approved before it starts. Saved requests rerun hourly to yearly, with each row labeled changed, unchanged or no longer matching, and new rows arrive in Slack, a sheet, a CRM or a signed webhook.
Other Perplexity Search API and Tavily alternatives
Exa
Search on Exa's own index, at $7 per 1,000 requests on auto and $4 on lite. SpecStream answers Exa's POST /search at https://api.specstream.ai/exa for $5 per 1,000, whatever type you send.
Brave Search API
Search on Brave's own index at $5 per 1,000 requests, with $5 in free credits every month and 50 queries per second. SpecStream answers Brave's call at https://api.specstream.ai/res/v1/web/search with no limit per key.
Serper
Google results sold as prepaid packs, from $1.00 per 1,000 on the 50k pack, with credits valid for 6 months. SpecStream answers Serper's call at https://api.specstream.ai/serper, and its credit never expires.
Parallel
Search, Extract and Task APIs priced by their own units. Web search starts at $1 per 1,000 requests, and the Developer plan allows 600 Search requests a minute. SpecStream answers Parallel's search call at https://api.specstream.ai/parallel with no limit per key.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to move Perplexity and Tavily code to SpecStream
1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 2,000 searches.
2. Point Perplexity code at https://api.specstream.ai/perplexity and send the SpecStream key as the Bearer token. In the perplexityai Python SDK 0.46.1, pass base_url="https://api.specstream.ai/perplexity". Send one query per call.
import requests
reply = requests.post(
"https://api.specstream.ai/perplexity/search", # was https://api.perplexity.ai/search
headers={"Authorization": f"Bearer {SPECSTREAM_KEY}"},
json={"query": "Who founded Mistral AI and when?", "max_results": 10},
timeout=30,
).json()
for result in reply["results"]:
print(result["title"], result["url"], result["date"])3. Point Tavily code at https://api.specstream.ai/tavily and send the SpecStream key as the Bearer token. In the Tavily Python SDK, pass api_base_url="https://api.specstream.ai/tavily" to TavilyClient.
const res = await fetch("https://api.specstream.ai/tavily/search", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.SPECSTREAM_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ query: "Who founded Mistral AI and when?", max_results: 10, include_answer: true }),
});
const data = await res.json();
console.log(data.answer);
for (const result of data.results) console.log(result.title, result.url, result.score);4. On a 429, wait the seconds in Retry-After and send the call again; nothing was charged. Both routes spend from one balance, inside the spending limit you set on the key.
Frequently asked questions
Something we didn't answer? Talk to a human
Is Perplexity Search API better than Tavily?
Perplexity Search API vs Tavily pricing: what does each cost?
Can I use both Perplexity and Tavily code?
https://api.specstream.ai/perplexity/search and Tavily calls to https://api.specstream.ai/tavily/search, each answered in its own JSON and billed from one balance at $0.005 a search.Do the Perplexity and Tavily SDKs work with SpecStream?
perplexityai Python SDK 0.46.1 works with base_url="https://api.specstream.ai/perplexity", as measured on production on November 10, 2026, and TavilyClient works with api_base_url="https://api.specstream.ai/tavily".Which fields does SpecStream not return?
last_updated is always null, and a call takes one query. On the Tavily route, images is always empty, follow_up_questions is null and results carry no favicon.Does Tavily cache results?
max_age_hours from 1 to 720. SpecStream reads every search from the live web at the moment of the call; max_age_hours is accepted and not needed.How many searches a second can I send?
Sources
SpecStream wrote this page. Each rival figure comes from that company's own page.
- Perplexity Search API overviewdocs.perplexity.ai/docs/search/overview.md, read Nov 10, 2026
- Perplexity Search API quickstartdocs.perplexity.ai/docs/search/quickstart.md, read Nov 10, 2026
- Perplexity pricingdocs.perplexity.ai/docs/getting-started/pricing.md, read Nov 10, 2026
- Perplexity FAQdocs.perplexity.ai/docs/resources/faq.md, read Nov 10, 2026
- Perplexity rate limits and usage tiersdocs.perplexity.ai/docs/admin/rate-limits-usage-tiers.md, read Nov 10, 2026
- Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 10, 2026
- Tavily pricingtavily.com/pricing, read Nov 10, 2026
- Tavily search referencedocs.tavily.com/documentation/api-reference/endpoint/search.md, read Nov 10, 2026
- Tavily MCPdocs.tavily.com/documentation/mcp.md, read Nov 10, 2026
- Exa pricingexa.ai/docs/admin/pricing.md, read Nov 10, 2026
- Brave Search APIbrave.com/search/api/, read Nov 10, 2026
- Serperserper.dev/, read Nov 10, 2026
- Parallel pricingparallel.ai/pricing, read Nov 10, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
- SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026




