How much does a GraphQL API cost when a field scans a table?
Scenario · workers
One resolver scans 1,000 rows per request. At 500,000 requests that is 500 million row reads, still inside the 25 billion allowance, plus 8 ms of CPU.
On the Paid plan this model comes to $5.00. The other plan, with the same inputs, comes to $0.00. The 30-day month is the same length R2 uses in its storage example. Daily free caps are not monthly pools.
D1 bills the rows it scans
A query that returns one row can still read every row in the table if the filter is not indexed. The pricing page's own example is a SELECT * over 5,000 rows counting as 5,000 rows read. Indexes cut the read and add one extra written row when the indexed column changes.
Read this before you trust the total
Free plan lines at $0 can still be an outage: error 1027, error 1102, or a D1 quota error. R2 above its monthly free tier is billed on both plans. Durable Object requests round up to the next million, as in Cloudflare's own Example 1, which bills 500,000 requests as 1 million.
This model
$5.00 · Paid
The $5 is an account minimum for Workers Paid, not a per-product fee. Included usage sits inside it.
Assumptions
- A 30-day month and steady traffic across it.
- Rates as published on 2026-10-25; taxes excluded.
- The Workers Paid plan has a $5 monthly minimum. It is charged even if you use nothing, and it covers the included allowances.
- Everything you entered fits inside the included allowances, so you pay only the minimum.
Sources
- Workers pricingOfficial
- D1 pricingOfficial