What counts as a row
- Mention / appearance rows returned in a list: one row each. The first 5 rows of each distinct pull are free, and repeating the exact same request within 7 days is not re-billed.
- Related-entity rows on aggregated views: one row each, same 5-row allowance.
- Commercial rows (
/v1/recommendations,/v1/channels/{id}/sponsors,details=fullenrichment items): 10 rows each, because the commercial pipeline is more expensive to run and curate. No free allowance. - Transcripts: 75 rows per 15-minute block of video, minimum one block, unlock permanent per account. See Transcripts.
- Free:
/v1/me,/v1/health,/v1/openapi.json, search, lookup, discovery search (including itsrecommendations_summary),recommendations_summaryaggregate blocks, teasers, and all Community Review submissions and corrections.
details=full charges the mention row plus 10 rows per attached commercial item, so omit it when you don’t need the overlay; searches are free but the rows you then fetch are not.
Checking usage
current_spend_cents reflects on-demand spend in the current period; it stays 0 until you exceed the allotment with on-demand enabled. /v1/me is free: check it before large pulls.
Exceeding your monthly allotment
| Condition | Outcome |
|---|---|
| Allotment exhausted, on-demand enabled | Requests keep serving; each row over the allotment bills on demand, up to your spend cap |
| Allotment exhausted, on-demand disabled | 402 quota_exceeded until the next billing cycle |
Rate limits
Separate from rows: every key is throttled per minute over a fixed 60-second window (the counter resets on the minute boundary).| Plan tier | Requests per minute |
|---|---|
| Free | 60 |
| Paid (Pro, Pro+, Ultra) | 240 |
| Teams / Enterprise | 600 |
| Header | Description |
|---|---|
RateLimit-Limit | Requests allowed per minute for this key |
RateLimit-Remaining | Requests left in the current window |
RateLimit-Reset | Unix epoch (seconds) when the window resets |
Retry-After | On 429 only: seconds to wait. Always honor it |
429 rate_limit_exceeded; quota exhaustion is 402 quota_exceeded. They are different problems with different fixes.
Backoff pattern
Per-key tracking
Each key tracks lifetimetotal_requests, total_rows_used, and total_cost_cents, visible in Dashboard → API Keys. Separate keys per integration make usage, rate limits, and Community Review reputation easy to attribute.
Reducing costs
- Cache resolved
ent_*IDs; don’t re-run lookups. - Pass
entity_idinstead ofentity_nameso no resolution rides inside metered requests. - Scope pulls with
date_from/date_to. - Pull larger pages (up to
limit=100) when iterating: rows cost the same, the request count drops. - Quote transcripts before unlocking (
meta.quoteis free) and checkusage.rows_remainingfirst.