> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tako.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Contents pricing

> What a Contents download costs — the per-export baseline, the per-row rate, how max_rows drives the bill, and where to read your exact rate before you fetch.

A Contents download is priced by what it returns. A **card CSV export** carries a flat per-export baseline plus a per-row rate. A **web page extraction** is a flat per-page rate. Every price below is also readable from the API before you fetch, so you never have to infer a bill from this page.

## What a card CSV export costs

```
cost = baseline_usd + row_cpm_usd × rows / 1000
```

| Component | Rate |
| - | - |
| Per-export baseline | `$0.001`, charged once per export regardless of size |
| Per-row rate | From `$0.01` per 1,000 rows, and higher for some premium sources |
| Row ceiling | 100,000 rows per export. A larger `max_rows` is clamped to it |

`rows` is the number of rows the export actually returns, which is the smaller of `max_rows` and the rows the card holds. Every returned row is billed, from the first, and a card with fewer rows than your cap bills only the rows it returns.

### A worked example

A 2,000-row card at the base rate, exported in full:

```
$0.001 + $0.01 × 2000 / 1000  =  $0.021
```

The same card from a premium source that bills `$0.10` per 1,000 rows:

```
$0.001 + $0.10 × 2000 / 1000  =  $0.201
```

## Read your exact rate before you fetch

Do not assume the floor rate. Every downloadable card in a Search or Answer response carries an `export_pricing` object, and its `row_cpm_usd` is **that card's rate for your account** — already adjusted for the card's source and for any negotiated terms on your account:

```json theme={null}
"export_pricing": {
  "baseline_usd": 0.001,
  "row_cpm_usd": 0.01,
  "max_rows_ceiling": 100000
}
```

Put those numbers into the formula above and you get the charge exactly. That is the reliable way to price an export — a rate table on a docs page cannot account for per-source rates or per-account terms, and `export_pricing` can.

<Note>
  `export_pricing` also carries a deprecated `free_rows` field, always `0`. Ignore it; it will be removed.
</Note>

### Quote without fetching

Send `quote_only: true` on a Contents request to price an export without retrieving it or being charged. You get the `cost` back with no content and no charge. Search and Answer have no equivalent — see [Search inline contents vs. the Contents API](#search-inline-contents-vs-the-contents-api).

## How `max_rows` drives the bill

`max_rows` is the single field that decides the size of a card export, so it is the field that decides the bill.

| `max_rows` | Rows returned | Billed |
| - | - | - |
| omitted | The whole card, up to 100,000, in `url` mode; 2,000 in `inline` mode (20 per card on Search and Answer) | Every row returned |
| a number | That many, up to 100,000 | Every row returned |
| above 100,000 | 100,000 | 100,000 |

Set `max_rows` when you need a slice. A 50-row preview of a premium card costs `$0.006` where the full 2,000 rows cost `$0.201`.

<Note>
  On Search and Answer, `max_rows` is a **per-card** cap. A response holding five cards bills each one separately, each with its own baseline.
</Note>

### What bounds a multi-card search response

One search response cannot bill without limit, however many cards it holds. All cards share a budget of 20,000 inline rows, spent in card order, so a 20-card request at `max_rows: 100000` returns and bills at most 20,000 rows. A card that arrives after the budget runs out comes back without inline rows. It isn't dropped, and it still carries its own `export_pricing`, so you can fetch its rows through Contents.

`truncated` and `total_rows` tell you when this happened: a card can come back with fewer rows than you asked for because the budget ran out, not because the card was small.

## Search inline contents vs. the Contents API

Card data reaches you two ways, priced identically per row but shaped very differently:

| | Search / Answer inline | Contents API |
| - | - | - |
| How you ask | `sources.data.include_contents: true` | `POST /api/v1/contents` with the card's `webpage_url` |
| Rows when you omit `max_rows` | 20 per card | The whole card, up to 100,000, in `url` mode; 2,000 in `inline` mode |
| Scope of `max_rows` | Per card — a five-card response bills five times | The one card in the request |
| Delivery | Always inline in the response body | `mode: url` for a presigned link, or `mode: inline` |
| Price a call first | Not available | `quote_only: true` |
| Serialization | CSV | `csv`, `json_records`, `json_compact`, or `card_json` |

Both charge the same per-export baseline and per-row rate, so the difference in cost is entirely the difference in rows.

<Note>
  **`quote_only` is Contents-only.** There is no way to price a Search or Answer response before running it. If you need a quote, read `export_pricing` off the card and compute it, or call Contents with `quote_only: true`.
</Note>

The small inline default is deliberate: a search response can hold many cards, and each one bills separately, so a `/contents`-sized default would multiply the bill by the number of cards in the response. Reach for inline contents when you want a usable preview alongside the results, and for the Contents API when you want the card's full data.

## What a web page extraction costs

Text extraction from a web page is a flat `$0.001` per page. `max_rows` does not apply — it has no rows.

## Where to find what you were charged

* **Per item** — every `ContentItem` carries a `cost` in USD: what that one download cost.
* **Per request** — when your account is billed pay-as-you-go, the response carries a `usage` object whose **`total_cost_usd`** is the request total. (`usage.data` is only the inline-data component, and is omitted when a request inlined none.) On accounts that are not metered per request the `usage` key is **absent**; that is expected, and the per-item `cost` fields are still populated.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.