# Tavily Extract - Documentation

> For the complete documentation index, see [llms.txt](/llms.txt). Markdown is available with `Accept: text/markdown` and `.md` URL variants.

Source: /docs/api-reference/model-apis-tavily-extract

# Tavily Extract

POST

/

v3

/

tavily

/

extract

Try it

Tavily Extract

cURL

```
curl --request POST \
--url https://api.novita.ai/v3/tavily/extract \
--header 'Authorization: &#x3C;authorization>' \
--header 'Content-Type: &#x3C;content-type>' \
--data '
{
"urls": [
"&#x3C;string>"
],
"query": "&#x3C;string>",
"chunks_per_source": 123,
"extract_depth": "&#x3C;string>",
"include_images": true,
"include_favicon": true,
"format": "&#x3C;string>",
"timeout": 123
}
'
```

```
import requestsurl = "https://api.novita.ai/v3/tavily/extract"payload = { "urls": ["&#x3C;string>"], "query": "&#x3C;string>", "chunks_per_source": 123, "extract_depth": "&#x3C;string>", "include_images": True, "include_favicon": True, "format": "&#x3C;string>", "timeout": 123}headers = { "Content-Type": "&#x3C;content-type>", "Authorization": "&#x3C;authorization>"}response = requests.post(url, json=payload, headers=headers)print(response.text)
```

```
const options = { method: 'POST', headers: {'Content-Type': '&#x3C;content-type>', Authorization: '&#x3C;authorization>'}, body: JSON.stringify({ urls: ['&#x3C;string>'], query: '&#x3C;string>', chunks_per_source: 123, extract_depth: '&#x3C;string>', include_images: true, include_favicon: true, format: '&#x3C;string>', timeout: 123 })};fetch('https://api.novita.ai/v3/tavily/extract', options) .then(res => res.json()) .then(res => console.log(res)) .catch(err => console.error(err));
```

```
&#x3C;?php$curl = curl_init();curl_setopt_array($curl, [ CURLOPT_URL => "https://api.novita.ai/v3/tavily/extract", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => json_encode([ 'urls' => [ '&#x3C;string>' ], 'query' => '&#x3C;string>', 'chunks_per_source' => 123, 'extract_depth' => '&#x3C;string>', 'include_images' => true, 'include_favicon' => true, 'format' => '&#x3C;string>', 'timeout' => 123 ]), CURLOPT_HTTPHEADER => [ "Authorization: &#x3C;authorization>", "Content-Type: &#x3C;content-type>" ],]);$response = curl_exec($curl);$err = curl_error($curl);curl_close($curl);if ($err) { echo "cURL Error #:" . $err;} else { echo $response;}
```

```
package mainimport (	"fmt"	"strings"	"net/http"	"io")func main() {	url := "https://api.novita.ai/v3/tavily/extract"	payload := strings.NewReader("{\n \"urls\": [\n \"&#x3C;string>\"\n ],\n \"query\": \"&#x3C;string>\",\n \"chunks_per_source\": 123,\n \"extract_depth\": \"&#x3C;string>\",\n \"include_images\": true,\n \"include_favicon\": true,\n \"format\": \"&#x3C;string>\",\n \"timeout\": 123\n}")	req, _ := http.NewRequest("POST", url, payload)	req.Header.Add("Content-Type", "&#x3C;content-type>")	req.Header.Add("Authorization", "&#x3C;authorization>")	res, _ := http.DefaultClient.Do(req)	defer res.Body.Close()	body, _ := io.ReadAll(res.Body)	fmt.Println(string(body))}
```

```
HttpResponse&#x3C;String> response = Unirest.post("https://api.novita.ai/v3/tavily/extract") .header("Content-Type", "&#x3C;content-type>") .header("Authorization", "&#x3C;authorization>") .body("{\n \"urls\": [\n \"&#x3C;string>\"\n ],\n \"query\": \"&#x3C;string>\",\n \"chunks_per_source\": 123,\n \"extract_depth\": \"&#x3C;string>\",\n \"include_images\": true,\n \"include_favicon\": true,\n \"format\": \"&#x3C;string>\",\n \"timeout\": 123\n}") .asString();
```

```
require 'uri'require 'net/http'url = URI("https://api.novita.ai/v3/tavily/extract")http = Net::HTTP.new(url.host, url.port)http.use_ssl = truerequest = Net::HTTP::Post.new(url)request["Content-Type"] = '&#x3C;content-type>'request["Authorization"] = '&#x3C;authorization>'request.body = "{\n \"urls\": [\n \"&#x3C;string>\"\n ],\n \"query\": \"&#x3C;string>\",\n \"chunks_per_source\": 123,\n \"extract_depth\": \"&#x3C;string>\",\n \"include_images\": true,\n \"include_favicon\": true,\n \"format\": \"&#x3C;string>\",\n \"timeout\": 123\n}"response = http.request(request)puts response.read_body
```

200

```
{
"400": {},
"401": {},
"403": {},
"404": {},
"429": {},
"500": {},
"502": {},
"503": {},
"results": [
{}
],
"failed_results": [
{}
],
"response_time": 123,
"request_id": "&#x3C;string>",
"url": "&#x3C;string>",
"raw_content": "&#x3C;string>",
"images": [
"&#x3C;string>"
],
"favicon": "&#x3C;string>",
"error": "&#x3C;string>"
}
```

Tavily is a web data retrieval API designed for developers and AI applications. This document describes the Tavily passthrough endpoints exposed by the platform gateway. It is based on Tavily’s Extract API with platform route prefixes applied.
Base URL example: `https://api.novita.ai`
Extract web page content from one or more specified URLs.

##

[​](#request-headers)

Request Headers

All endpoints require platform API authentication.

[​](#param-content-type)

Content-Type

string

required

Use `application/json`.

[​](#param-authorization)

Authorization

string

required

Platform API key, formatted as `Bearer <api_key>`.

##

[​](#request-body)

Request Body

[​](#param-urls)

urls

string | string[]

required

URL(s) to extract.

[​](#param-query)

query

string

Query for snippet reranking.

[​](#param-chunks-per-source)

chunks_per_source

integer

Max number of content snippets per source to return. Default is `3`; range is `1` to `5`. Available only when `query` is provided.

[​](#param-extract-depth)

extract_depth

string

Extraction mode. Common values include `basic` and `advanced`. `basic` is set as the default value.

[​](#param-include-images)

include_images

boolean

Returns a list of images from the response URLs.

[​](#param-include-favicon)

include_favicon

boolean

Include favicon URL from result.

[​](#param-format)

format

string

Extracted Content Format. Common values include `markdown` and `text`.

[​](#param-timeout)

timeout

float

URL extraction time limit in seconds. Range is `1.0` to `60.0`. `10` for `basic`, `30` for `advanced`.

##

[​](#request-example)

Request Example

```
curl -s -X POST 'https://api.novita.ai/v3/tavily/extract' \
-H 'Authorization: Bearer sk-123' \
-H 'Content-Type: application/json' \
-d '{
"urls": ["https://en.wikipedia.org/wiki/Lionel_Messi"],
"query": "career highlights and achievements",
"chunks_per_source": 3,
"extract_depth": "basic",
"include_images": false,
"format": "markdown",
"timeout": 15
}'
```

##

[​](#response)

Response

[​](#param-results)

results

object[]

Extracted results from URL(s). See [Result Object](#result-object).

[​](#param-failed-results)

failed_results

object[]

Unprocessable URL(s). See [Failed Result Object](#failed-result-object).

[​](#param-response-time)

response_time

float

Request duration in seconds.

[​](#param-request-id)

request_id

string

Unique request identifier.

###

[​](#result-object)

Result Object

[​](#param-url)

url

string

Response content URL.

[​](#param-raw-content)

raw_content

string

Full page content.

[​](#param-images)

images

string[]

Image URLs from page URL. Returned if `include_images` is `true`.

[​](#param-favicon)

favicon

string

Site favicon URL. Returned if `include_favicon` is `true`.

###

[​](#failed-result-object)

Failed Result Object

[​](#param-url-1)

url

string

Unprocessed URL(s)

[​](#param-error)

error

string

URL processing error message.

##

[​](#errors)

Errors

The platform may return standard HTTP errors before forwarding the request, and Tavily may return upstream errors after forwarding.

[​](#param-400)

400

status

Invalid request body or unsupported parameter value. May occur if over 20 URLs are provided.

[​](#param-401)

401

status

Missing or invalid API key.

[​](#param-403)

403

status

Access denied by platform or upstream provider.

[​](#param-404)

404

status

Route or requested resource not found.

[​](#param-429)

429

status

Rate limit exceeded.

[​](#param-500)

500

status

Internal server error.

[​](#param-502)

502

status

Upstream provider error.

[​](#param-503)

503

status

Service unavailable.

##

[​](#notes)

Notes

- All request bodies are JSON.

- Extra Tavily parameters not listed here may be passed through.

- Response shapes can vary depending on request options.

- This document intentionally omits billing-related fields.

##

[​](#references)

References

For more details, see the [Tavily Extract API reference](https://docs.tavily.com/documentation/api-reference/endpoint/extract).

Last modified on June 23, 2026
