What a card CSV export costs
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.10 per 1,000 rows:
Read your exact rate before you fetch
Do not assume the floor rate. Every downloadable card in a Search or Answer response carries anexport_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:
export_pricing can.
export_pricing also carries a deprecated free_rows field, always 0. Ignore it; it will be removed.Quote without fetching
Sendquote_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.
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.
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.
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.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 2,000 billable rows, spent in card order, so a 20-card request atmax_rows: 2000 does not bill 40,000 rows. Once the budget is spent, later cards still return a small preview rather than nothing — they are not dropped, and they still carry their own export_pricing so you can fetch the rest 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:
Both charge the same per-export baseline and per-row rate, so the difference in cost is entirely the difference in rows.
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./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
ContentItemcarries acostin USD: what that one download cost. - Per request — when your account is billed pay-as-you-go, the response carries a
usageobject whosetotal_cost_usdis the request total. (usage.datais only the inline-data component, and is omitted when a request inlined none.) On accounts that are not metered per request theusagekey is absent; that is expected, and the per-itemcostfields are still populated.