/scraping-api/ — Tavily API
Choose direct HTTP Search when the source URL is unknown or Extract when it is known. Compare keyless and account access, JSON-wrapped Markdown, partial failures and billing units.
Choose the HTTP operation
documented decisionSwipe or scroll the table to compare response checks and billing.
| Starting point | Request | Check the response | Billing basis |
|---|---|---|---|
| Source URL unknown | POST /search with a query, basic depth and a small max_results. | Read results[].url and content snippets; choose a source URL, then inspect its page content. A snippet is not the full page. | Keyless is free and rate-limited. With an account key, basic Search is 1 credit per request.[1][3][4] |
| Source URL known | POST /extract with urls and format: markdown or text; skip source discovery. | Match results[].url and raw_content to failed_results[].url and error, even after HTTP 200. | Keyless is free and rate-limited. With an account key, basic Extract is 1 credit per 5 successful URL extractions; usage can show 0 before five.[2][3][4] |
documented capabilities
HTTP API- Unknown source URL
- POST /search with a query. Set search_depth: basic and max_results deliberately; results include source URLs and content snippets. A result snippet is a lead to inspect, not the complete source page.[1]
- Known source URL
- POST /extract directly with urls (one URL or up to 20). Request format: markdown or text. The JSON response wraps each successful page in results with raw_content. Search is unnecessary when the URL is already known.[2]
- Content choice
- Search returns results[].content snippets; request include_raw_content for cleaned and parsed page content when available, without a guarantee of complete target coverage. Extract format: markdown returns Markdown inside results[].raw_content; format: text selects plain text.[1][2]
- Partial result check
- An Extract HTTP 200 can include both results and failed_results, or an empty results array if every valid URL fails. Match each returned item to its URL; output order is not guaranteed.[2]
- Search credit unit
- Basic Search costs 1 account credit per request and advanced costs 2. auto_parameters may select advanced; set search_depth: basic explicitly when the lower unit matters.[3][1]
- Extract credit unit
- With an account key, basic Extract costs 1 credit per 5 successful URL extractions and advanced costs 2 per 5. Failed URL extractions are not charged. With include_usage: true, usage may show 0 before the total reaches five successful extractions.[3][2]
- Direct HTTP access
- POST /search and /extract can use X-Tavily-Access-Mode: keyless without an account or API key, subject to rate limits. Alternatively send Authorization: Bearer YOUR_TAVILY_API_KEY for account limits; if both headers are sent, the key takes precedence. The MCP connection has its own client setup.[4][3]
Billing: Search and Extract offer free, rate-limited keyless direct HTTP access with X-Tavily-Access-Mode: keyless. With an account key, basic Search costs 1 credit/request and advanced costs 2; basic Extract costs 1 credit per 5 successful URL extractions and advanced costs 2 per 5. Failed URL extractions are not charged. Extract usage can report 0 before five successful URL extractions.
Outputs: json, markdown, text
Documented for: HTTP API
MCP client setup
This record covers direct HTTP API use. For client configuration and available tools, use the Tavily MCP guide.
getting started
documentation reviewed- If you know the source URL, call Extract directly. If you need to discover a URL, call Search and inspect a selected result before extracting its page.
- Send a JSON POST to https://api.tavily.com/search or https://api.tavily.com/extract with Content-Type: application/json. For free, rate-limited direct HTTP access send X-Tavily-Access-Mode: keyless. For account limits and credits, send Authorization: Bearer YOUR_TAVILY_API_KEY instead.
- Start with basic depth and a small result count or known-URL batch. The examples are JSON request bodies for those paths. Set include_usage: true when you need a returned account-usage field.
- On Extract, inspect results and failed_results by URL even after HTTP 200. Read failed_results[].error, and treat usage of 0 before five successful extractions as a reporting detail, not proof of unlimited free account use.
Requirements & limitations
- This page covers direct HTTP Search and Extract. The paired MCP page covers client connection and available tools; the same keyless access mode can be used with either interface.
- Keyless HTTP requests need the X-Tavily-Access-Mode: keyless header and are rate-limited. Map, Crawl and Research require an account API key.
- Search results are Tavily web discovery results, not a positional Google SERP snapshot. This record does not claim that Tavily is a dedicated SERP API.
- Extract Markdown is page content in results[].raw_content within a JSON response, not schema-guided field extraction. Protected targets and source accuracy were not tested.
- Examples were parsed against the current documented request schema locally. No Tavily account request, target fetch, performance test or observed supplier bill is claimed.
We reviewed the linked documentation. No live service connection, checkout or performance test is claimed for this listing.
request examples
adapt to your targetDiscover a source — POST /search JSON body
{
"query": "official API documentation for a library",
"search_depth": "basic",
"max_results": 3,
"include_raw_content": false,
"auto_parameters": false,
"include_usage": true
}[1] Tavily Search endpoint, request parameters and response[3] Tavily account credits and per-operation cost[4] Tavily keyless direct HTTP access and account upgrade
Read a known page — POST /extract JSON body
{
"urls": [
"https://example.com/docs"
],
"extract_depth": "basic",
"format": "markdown",
"include_usage": true
}[2] Tavily Extract endpoint, Markdown and partial failures[3] Tavily account credits and per-operation cost[4] Tavily keyless direct HTTP access and account upgrade
response checks
documented exampleDocumented mixed-success Extract response (example shape, not a live result)
{
"results": [
{
"url": "https://example.com/article",
"raw_content": "Example extracted article content.",
"images": []
}
],
"failed_results": [
{
"url": "https://example.com/unavailable",
"error": "Failed to retrieve content"
}
],
"response_time": 0.5,
"request_id": "123e4567-e89b-12d3-a456-426614174111"
}Treat results[].raw_content as content only for successful URLs. Match failed_results[].url and error to the input before accepting a batch; HTTP 200 alone does not mean every URL succeeded. The optional usage field appears when requested and can show 0 before five successful extractions.[2] Tavily Extract endpoint, Markdown and partial failures[3] Tavily account credits and per-operation cost
primary sources
4 references- Tavily Search endpoint, request parameters and responseChecked 2026-09-29
- Tavily Extract endpoint, Markdown and partial failuresChecked 2026-09-29
- Tavily account credits and per-operation costChecked 2026-09-29
- Tavily keyless direct HTTP access and account upgradeChecked 2026-09-29