Tavily Extract compatible
Change the address, $0.80 per 1,000 pages.
On Tavily every 5 successful URL extractions cost 1 credit, $0.008 on pay as you go, so 1,000 pages cost $1.60. SpecStream answers the same POST /extract in Tavily's JSON for $0.80 per 1,000 pages.
The switch is one line: TavilyClient(api_key=KEY, api_base_url="https://api.specstream.ai/tavily"). The same address answers Tavily's search, so one setting moves both.
The Extract API behind this route scores 0.908 F1 on WCXB. A page that gives no text is not charged, and credit you buy never expires.
New accounts get $10 of credit, no card. It covers 2,000 searches.
Tavily Extract to SpecStream, parameter by parameter and field by field
| SpecStream | Tavily Extract | |
|---|---|---|
| Address | POST https://api.specstream.ai/tavily/extract | POST https://api.tavily.com/extract |
| The key | A SpecStream key as Authorization: Bearer, or api_key in the body | A Tavily key in a Bearer authentication header |
| `urls` | One URL or a list of 1 to 20. 21 URLs or an empty list get 400 | One URL or a batch of up to 20 in one request |
| `format` | markdown, the default, or text for plain text | markdown, the default, or text |
| The reply | results[] with url and raw_content, failed_results[] with url and error, response_time and request_id. Not returned: usage, and a result's images and favicon | results and failed_results: a 200 can carry failures for single URLs |
| Errors | Tavily's {"detail": {"error": ...}}: 401 for a wrong key, 432 when the balance is empty. A busy call gets 429 with Retry-After and is not charged | A failed URL extraction is never charged |
| Price per 1,000 pages | $0.80. A page that gives no text is not charged | $1.60 basic and $3.20 advanced at $0.008 a credit pay as you go: 1 or 2 credits for every 5 successful URLs |
| Free to start | $10 of credit, no card, which covers 12,500 pages. Credit never expires | 1,000 free credits a month, which reset on the first day of each month |
The Tavily Extract reference, on SpecStream
The call, before and after
# Before
from tavily import TavilyClient
client = TavilyClient(api_key="tvly-...")
# After
client = TavilyClient(api_key=SPECSTREAM_KEY, api_base_url="https://api.specstream.ai/tavily")
reply = client.extract(urls=["https://en.wikipedia.org/wiki/Web_scraping"])
for page in reply["results"]:
print(page["url"], page["raw_content"][:300])tavily-python 0.8.5 joins api_base_url to /extract, so extract and search both reach SpecStream. A call with an empty balance answers 432, which the client raises as ForbiddenError, as it does on Tavily.
Apps and SDKs that take the address as a setting
Each line was run on production on November 10, 2026 through that client's own request and reply code. Put your SpecStream key wherever the client takes its key.
LangChain, langchain-tavily 0.2.18: pass api_base_url="https://api.specstream.ai/tavily" to TavilyExtract.
Open WebUI: set WEB_LOADER_ENGINE=tavily and TAVILY_API_BASE_URL=https://api.specstream.ai/tavily in the environment. This one has no field in the admin screen.
LibreChat: set TAVILY_EXTRACT_URL (config key tavilyExtractUrl) to the whole address, https://api.specstream.ai/tavily/extract.
OpenClaw: set plugins.entries.tavily.config.webSearch.baseUrl, or TAVILY_BASE_URL, to https://api.specstream.ai/tavily.
What the route reads, and what it refuses
Read and applied: urls as one string or a list of up to 20, with a host that does not resolve listed in failed_results, and format as markdown or text. The key is read from the Bearer header or from api_key in the body.
Refused with 400: 21 URLs or more, and an empty list. A wrong key gets 401. Every parameter was measured on production on Nov 10, 2026 with tavily-python 0.8.5, and the full pass table lists each one and its result.
Every field that comes back
The reply has results[], each with url and raw_content, failed_results[], each with url and error, response_time in seconds and request_id. The route does not return usage, or a result's images and favicon.
One field is added: specstream, with the call's price_usd. A parser that reads Tavily's fields never sees it.
$0.80 per 1,000 pages, with no credits
Tavily counts 1 credit for every 5 successful URLs on basic and 2 on advanced, at $0.008 a credit on pay as you go. On SpecStream every page that gives text costs $0.0008, and a page with no text is not charged. A busy call gets 429 with Retry-After and charges nothing.
0.908 F1 on WCXB, and the search scores on the same key
The Extract API that answers this route scores 0.908 F1 on WCXB. The Search API on the same key 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. Every score and its method is on the benchmarks page.
You decide what is kept, on each key
Create the key with zero_retention and a page read made with it keeps no request text and no answer after the reply. spend_cap_cents is the most the key can spend.
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
The same key searches the live web with the Search API at $5 per 1,000 searches of up to 10 results. Deep Search returns every match for a request in plain words as structured rows, at 5¢, 15¢ or $1 a row, with a source URL on every value. The most a run can cost is approved before it starts. The full comparison is on the Tavily alternative page.
What else Tavily Extract users price
Exa Contents
Page text from Exa at $1 per 1,000 pages for each content type you ask for, in Exa's own request and reply. SpecStream reads 1,000 pages for $0.80 and answers the Tavily call your code already sends.
Firecrawl
A scrape API at 1 credit per page, with the Hobby plan at $19 a month and 1,000 free credits a month. SpecStream needs no plan and keeps Tavily's reply shape.
Jina Reader
Page reads billed in tokens by content length, with 10M free tokens on a new key and no dollar rate on its Reader page. SpecStream charges $0.0008 a page, whatever its length.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to migrate, step by step
1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card.
2. With tavily-python, add api_base_url="https://api.specstream.ai/tavily" and the SpecStream key. Without the client, in Python:
import requests
reply = requests.post(
"https://api.specstream.ai/tavily/extract", # was https://api.tavily.com/extract
headers={"Authorization": f"Bearer {SPECSTREAM_KEY}"},
json={"urls": ["https://en.wikipedia.org/wiki/Web_scraping"], "format": "markdown"},
timeout=60,
)
reply.raise_for_status()
data = reply.json()
for page in data["results"]:
print(page["url"], len(page["raw_content"]))
for failed in data["failed_results"]:
print(failed["url"], failed["error"])3. In JavaScript:
const res = await fetch("https://api.specstream.ai/tavily/extract", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SPECSTREAM_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ urls: ["https://en.wikipedia.org/wiki/Web_scraping"] }),
});
const data = await res.json();
for (const page of data.results) console.log(page.url, page.raw_content.slice(0, 300));4. Read 432 as an empty balance and 429 as a call to send again after Retry-After. Neither is charged.
Frequently asked questions
Something we didn't answer? Talk to a human
Is there a Tavily Extract compatible API?
POST /extract at https://api.specstream.ai/tavily in Tavily's JSON, as measured on production on Nov 10, 2026 with tavily-python 0.8.5. It costs $0.80 per 1,000 pages.How do I migrate from Tavily Extract?
TavilyClient(api_key=KEY, api_base_url="https://api.specstream.ai/tavily"). Without the client, post the same body to https://api.specstream.ai/tavily/extract with a SpecStream key as the Bearer token.How much does Tavily Extract cost?
Which apps and SDKs take the SpecStream address for Tavily Extract?
langchain-tavily 0.2.18: pass api_base_url="https://api.specstream.ai/tavily" to TavilyExtract. Open WebUI: set WEB_LOADER_ENGINE=tavily and TAVILY_API_BASE_URL=https://api.specstream.ai/tavily in the environment. This one has no field in the admin screen. LibreChat: set TAVILY_EXTRACT_URL (config key tavilyExtractUrl) to the whole address, https://api.specstream.ai/tavily/extract. OpenClaw: set plugins.entries.tavily.config.webSearch.baseUrl, or TAVILY_BASE_URL, to https://api.specstream.ai/tavily.Can I change the address in the Tavily Python client?
api_base_url, tested with tavily-python 0.8.5 on Nov 10, 2026. The client joins it to /extract and /search, so both calls move together.How many URLs can one call extract?
400 in Tavily's error form, and a URL that cannot be read is listed in failed_results and not charged.Which Tavily Extract fields does SpecStream not return?
usage, and a result's images and favicon. Each result has url and raw_content, and each failure url and error.Sources
SpecStream wrote this page. Each Tavily figure comes from Tavily's own pages, and each other provider's figure from that company's own page. The route's behavior comes from its code and the pass table measured on production.
- Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 10, 2026
- Tavily Extract referencedocs.tavily.com/documentation/api-reference/endpoint/extract.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
- SpecStream Tavily Extract pass tablespecstream.ai/specstream/dialects/tavily_extract.md, read Nov 10, 2026
- Exa pricingexa.ai/docs/admin/pricing.md, read Nov 10, 2026
- Firecrawl pricingfirecrawl.dev/pricing, read Nov 10, 2026
- Jina Readerjina.ai/reader, 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




