Is the Google Sheets API free? Costs and quotas explained
Yes, and no billing account is required. Here are the exact rate limits, what authentication still costs you in setup time, and where real costs appear.
The short answer
Yes. The Google Sheets API is free.
There is no per-request charge, no monthly subscription, no minimum spend, and no billing account or credit card required. You can make millions of calls a month and Google will never invoice you for the Sheets API.
What you get instead of a bill is a rate limit. And the real costs, where they exist, are in setup time and in third-party tooling - not in anything Google charges. Here is the detail.
What "free" covers
Google Sheets API v4 is free for every operation:
- Reading values from any sheet you have access to
- Writing, appending and clearing values
- Creating and deleting spreadsheets and tabs
- Changing formatting, conditional rules, filters and charts
- Batch operations that combine many changes into one call
Personal Google accounts and Google Workspace accounts both get this. Workspace does not unlock a higher Sheets API tier - a free Gmail account and an Enterprise account hit the same quotas.
The actual quotas
This is what limits you instead of price:
| Quota | Limit |
|---|---|
| Read requests per minute per project | 300 |
| Read requests per minute per user per project | 60 |
| Write requests per minute per project | 300 |
| Write requests per minute per user per project | 60 |
| Daily request cap | None |
Two things worth pulling out.
There is no daily limit. Sustain 300 reads a minute all day and that is roughly 432,000 requests in 24 hours, at no cost. For the overwhelming majority of projects, the API being "free" is not qualified by a usage ceiling in any meaningful way.
The per-user limit is the one you will actually hit. 60 requests per minute per user is one request per second. If your backend reads a sheet using a single service account, every end user of your app funnels through that one identity - so your whole application shares those 60 requests per minute, not 60 each.
When you exceed a quota, the API returns HTTP 429 RESOURCE_EXHAUSTED. Nothing is charged and nothing is disabled; the request just fails and you retry. The correct handling is exponential backoff with jitter:
async function fetchWithBackoff(url, options, attempt = 0) {
const res = await fetch(url, options);
if (res.status !== 429 || attempt >= 5) return res;
// Exponential backoff with jitter, so retrying clients do not sync up.
const delay = 2 ** attempt * 1000 + Math.random() * 1000;
await new Promise((r) => setTimeout(r, delay));
return fetchWithBackoff(url, options, attempt + 1);
}The bigger win is usually not making the request at all. Batch endpoints let you read many ranges in one call, and caching responses for even 30 seconds collapses most read traffic. We covered both in Google Sheets API rate limits and caching Google Sheets API responses.
Free does not mean no authentication
This is where "free" gets misread. The API costs nothing, but you cannot just fetch() a URL and get data back.
Public sheets, read-only: a Google Cloud API key works. Share the sheet as "Anyone with the link", pass ?key=YOUR_API_KEY, and you can read it. Simplest path, but it only works for data you are comfortable making public.
Private sheets, or any write: you need OAuth 2.0 (for acting as a signed-in user) or a service account (for server-to-server). Both are free. Neither is quick. You will create a Cloud project, enable the API, configure a consent screen, generate credentials, manage token refresh, and - for service accounts - share the sheet with a generated ...gserviceaccount.com address, which is the step everyone forgets on their first attempt.
Budget an afternoon for a first-time OAuth setup. That is the real price of the free API.
What Google Sheets itself limits
Separate from the API, the spreadsheet has hard limits that apply no matter how you reach it:
- 10 million cells per spreadsheet, across all tabs combined
- 18,278 columns maximum (through column ZZZ)
- 200 tabs per spreadsheet
- 50,000 characters in a single cell
The cell cap sounds generous but arrives sooner than expected - 10 million cells is only about 200,000 rows at 50 columns each, and every empty cell in a used range still counts. More on that in what happens at 10 million cells.
Where costs actually appear
Nothing on this list is a Google Sheets API charge, but they are the things that end up costing you:
Engineering time. OAuth setup, token refresh, retry logic, pagination and error handling. For a simple read-only integration this is often the largest line item.
Hosting. The API needs credentials, and credentials cannot live in browser JavaScript. That means a backend, a serverless function or an edge worker - somewhere to keep the secret. Usually cheap, rarely zero.
Third-party wrappers. Tools that sit on top of the Sheets API to save you the setup commonly have a free tier and charge above it. You are paying for the convenience layer; the Google access underneath was always free.
Other Google Cloud services. If your integration also uses Cloud Functions, Cloud Run or BigQuery, those bill normally. The Sheets API being free does not extend to them.
When a wrapper is worth it anyway
If your use case is "read a sheet from a frontend and render it", the free Sheets API still requires a backend to hold credentials, plus CORS handling, plus your own caching and pagination. That is a meaningful amount of code for a small feature.
GKit SheetsAPI exists for exactly that gap. Connect a Google account once and any sheet becomes a REST endpoint:
GET /api/spreadsheets/{userKey}/{sheetName}
CORS is enabled so browsers can call it directly, filtering and sorting and pagination are query parameters, and responses come back as JSON, CSV or XML. It runs on Cloudflare Workers, is MIT-licensed, and can be self-hosted if you would rather run it yourself.
It is free while in beta, and because it is open source, "free" here is not a trial that expires into a paywall - you can always run your own copy. For a broader comparison of the options, see free Google Sheets API tools developers actually use.
Summary
| Question | Answer |
|---|---|
| Does the Sheets API cost money? | No, and it never asks for a card |
| Is a billing account required? | No |
| Daily request cap? | None |
| Per-minute limit | 300 per project, 60 per user |
| What happens past the limit | HTTP 429, retry with backoff |
| Authentication needed? | API key for public reads, OAuth or service account otherwise |
| Does Workspace raise the quotas? | No |
| Where the real cost is | Setup time, hosting for credentials, third-party tiers |
Frequently asked questions
Is the Google Sheets API free?
Yes. The Google Sheets API v4 is completely free. There is no per-request charge, no monthly fee, and no billing account or credit card required. You are limited by per-minute request quotas rather than by cost.
What are the Google Sheets API rate limits?
The Sheets API allows 300 read requests per minute per project and 60 read requests per minute per user per project, with the same limits applied separately to write requests. There is no daily cap. Exceeding a limit returns HTTP 429, which you handle with exponential backoff.
Do I need a Google Cloud billing account to use the Sheets API?
No. You create a Google Cloud project and enable the Sheets API on it, but the API stays in the free tier permanently and never asks for payment details. Billing only becomes relevant if you use other Google Cloud services alongside it.
Can I use the Google Sheets API without authentication?
Only partially. A sheet shared publicly can be read with a simple API key. Any private sheet, and every write operation, requires OAuth 2.0 or a service account. Both are free, but they add real setup work.
Is there a limit on how large a Google Sheet can be?
A single spreadsheet can hold up to 10 million cells across all its tabs, with a maximum of 18,278 columns. These are Google Sheets limits rather than API limits, and they apply however you access the file.
Are third-party Google Sheets API tools free too?
It varies. Many wrappers offer a limited free tier and charge once you exceed a request count. The underlying Google Sheets API they call is always free, so what you are paying for is the convenience layer, not Google access.