# Tavily Extract > Extract clean, LLM-ready content (markdown or text) from up to 20 web pages in one call, optionally reranked to a query. Billed per successfully extracted URL - about 4 credits per URL (basic), failed URLs are refunded. - **Provider**: tavily-extract - **Model ID**: tavily/extract - **Category**: web_search - **Credits**: from 4 for the default configuration — varies by input, see Pricing - **Pricing Type**: formula ## API Endpoint Base URL: https://api.core.today/v1 ### Create Prediction POST /predictions ### Get Status GET /predictions/{job_id} ### Cancel DELETE /predictions/{job_id} ## Authentication Header: `X-API-Key: YOUR_API_KEY` ## Input Parameters - `urls` (array, **required**): Web page URLs to extract (1-20). - `include_favicon` (boolean, optional): Add each page's favicon URL. (Default: `false`) - `query` (string, optional): Optional intent to rerank the extracted chunks by relevance. With a query, raw_content holds the top chunks joined by [...]. - `chunks_per_source` (integer, optional): Chunks per URL when query is set (1-5, default 3). (Range: min: 1, max: 5) - `format` (string, optional): Format of raw_content. (Default: `markdown`; Options: `markdown`, `text`) - `extract_depth` (string, optional): advanced also extracts tables and embedded content and succeeds on more pages, at 2x price and higher latency. (Default: `basic`; Options: `basic`, `advanced`) - `timeout` (number, optional): Per-request timeout in seconds (1-60). Default 10s for basic, 30s for advanced. (Range: min: 1, max: 60) - `include_images` (boolean, optional): Add the image URLs found on each page. (Default: `false`) ## Example Request ```json { "model": "tavily/extract", "input": { "format": "markdown", "urls": [ "https://docs.tavily.com/documentation/api-credits" ], "extract_depth": "basic" } } ``` ## Response Format ```json { "job_id": "abc123", "status": "pending", "provider": "tavily-extract", "model": "tavily/extract", "created_at": "2026-01-01T00:00:00Z", "result": null, "error": null, "credits_used": null } ``` Status values: `pending`, `processing`, `completed`, `failed`, `cancelled` When the job is `completed`, `result` holds the output URL(s) or data and `credits_used` the net credits charged. When it is `failed`, `error` and `error_code` say why and the charge is refunded. ## Usage Flow 1. POST /predictions with model and input → receive job_id 2. Poll GET /predictions/{job_id} until status is `completed` or `failed` 3. Result contains output URL(s) or data ## Pricing - Formula: `3.72 * depth * max(1, min(min(20, urls), ok))` credits - `ok`: 99 - `urls`: the `urls` input (default 1) - `depth`: the `extract_depth` input (default 1) Default configuration: 4 credits. These are list prices. The amount charged is rounded, and large charges are discounted progressively. `POST /predictions/estimate` with the same `model` and `input` returns the charge for that input without creating a job (an estimate when the price depends on the output). ## Output Type json ## Tags tavily, extract, web-scraping, rag, agent ## Documentation https://docs.tavily.com/documentation/api-reference/endpoint/extract