# Extract content from up to 20 URLs

Extract text or markdown from up to 20 URLs over HTTP. Needs urls. Served by Tavily.

Extract text or markdown from up to 20 URLs over HTTP. Check both results and failed_results, including HTTP 200 responses with no successful extraction. This is an HTTP alternative to tavily-mcp/extract with a larger batch limit. Basic costs 1 credit per 5 successful URLs; advanced costs 2. Billed from usage.credits, including zero when Tavily has not yet reached its credit-accounting threshold.

- Tool ID: `tavily/extract`
- Provider: [Tavily](/providers/tavily.md)
- Capability: [Structured data extraction](/tools/web-scraping/extract.md)
- Price: usage based, the maximum is shown before a run
- Authentication: an authorised Agentik workspace is required for execution, including zero-price tools.

## Pricing contract

Billed at the cost the provider reports for the call, never above $0.064. Your agent sees the maximum before running.


```json
{
  "model": "reported",
  "costPath": "",
  "costTerms": [
    {
      "path": "usage.credits",
      "usd": 0.008
    }
  ],
  "requireCost": true,
  "maxUsdDefault": 0.008,
  "maxUsdCap": 0.064,
  "headroom": 1,
  "multipliers": [
    {
      "addUsdPer": {
        "field": "urls",
        "usd": 0.008,
        "minus": 5,
        "per": 5
      }
    },
    {
      "when": {
        "field": "extract_depth",
        "equals": "advanced"
      },
      "totalFactor": 2
    }
  ]
}
```

Pricing source: [https://docs.tavily.com/documentation/api-credits](https://docs.tavily.com/documentation/api-credits). Pay as you go: $0.008 per credit. Extract 1 credit/5 successful URLs (advanced 2); Map 1 credit/10 pages (instructions 2); Crawl mapping + extraction. Research maximum 110 credits mini, 250 pro. Actual usage.credits required; documented URL/request limits bound reservations..

Price verification date: 2026-11-03.

## Complete input schema


```json
{
  "type": "object",
  "properties": {
    "urls": {
      "type": "array",
      "minItems": 1,
      "maxItems": 20,
      "uniqueItems": true,
      "items": {
        "type": "string",
        "format": "uri",
        "pattern": "^https?://",
        "maxLength": 4096
      }
    },
    "query": {
      "type": "string",
      "description": "User intent for reranking extracted content chunks. When provided, chunks are reranked based on relevance to this query."
    },
    "chunks_per_source": {
      "type": "integer",
      "description": "Chunks are short content snippets (about 800 characters each) pulled directly from the source. Use `chunks_per_source` to define the maximum number of relevant chunks returned per source and to control the `raw_content` length. Chunks will appear in the `raw_content` field as: `<chunk 1> [...] <chunk 2> [...] <chunk 3>`. If a page splits into no more chunks than `chunks_per_source`, its full content is returned. Available only when `query` is provided. Must be between 1 and 5.",
      "minimum": 1,
      "maximum": 5,
      "default": 3
    },
    "extract_depth": {
      "type": "string",
      "description": "The depth of the extraction process. `advanced` extraction retrieves more data, including tables and embedded content, with higher success but may increase latency.`basic` extraction costs 1 credit per 5 successful URL extractions, while `advanced` extraction costs 2 credits per 5 successful URL extractions.",
      "enum": [
        "basic",
        "advanced"
      ],
      "default": "basic"
    },
    "include_images": {
      "type": "boolean",
      "description": "Include a list of images extracted from the URLs in the response. Default is false.",
      "default": false
    },
    "include_favicon": {
      "type": "boolean",
      "description": "Whether to include the favicon URL for each result.",
      "default": false
    },
    "format": {
      "type": "string",
      "description": "The format of the extracted web page content. `markdown` returns content in markdown format. `text` returns plain text and may increase latency.",
      "enum": [
        "markdown",
        "text"
      ],
      "default": "markdown"
    },
    "timeout": {
      "type": "number",
      "format": "float",
      "description": "Maximum time in seconds to wait for the URL extraction before timing out. Must be between 1.0 and 60.0 seconds. If not specified, default timeouts are applied based on extract_depth: 10 seconds for basic extraction and 30 seconds for advanced extraction.",
      "minimum": 1,
      "maximum": 60,
      "default": 60
    },
    "include_usage": {
      "type": "boolean",
      "const": true,
      "default": true,
      "description": "Credit usage is always requested for actual-cost billing."
    }
  },
  "required": [
    "urls"
  ],
  "additionalProperties": false
}
```

## Published example

This is the provider tool’s published example. Replace example values with the user’s requested inputs, respecting the schema; do not execute an example merely to test a connection.


```json
{
  "tool_id": "tavily/extract",
  "input": {
    "urls": [
      "https://example.com"
    ],
    "extract_depth": "basic"
  }
}
```

## Execute and retrieve

Inspect again before execution, explain the price and obtain the required authority. Use MCP run_tool or POST /v1/run with this tool ID, valid input and an idempotency key. Save the returned run ID and follow the actual state. If Agentik answers that the tool is temporarily unavailable, do not retry it blindly; use discovery to propose an alternative.

A partial or uncertain result can still have consumed provider resources. Consult [billing](/docs/billing.md), [idempotency](/docs/idempotency.md) and [asynchronous results](/docs/async.md).

[Provider documentation](https://docs.tavily.com/documentation/api-reference/endpoint/extract)

[REST inspection](https://api.agentik.cc/v1/tools/tavily/extract) · [OpenAPI](/openapi.json) · [Connection guide](/connect.md)

---

[HTML page](/providers/tavily/extract) · [Agent index](/llms.txt)
