5 min read
Also: Sheets API, Sheets API v4, Google Sheets REST API, spreadsheets.values, Google Sheets API Python
Google Sheets API
Quick answer
The Google Sheets API is Google's REST API (v4) for reading and writing spreadsheets from your own code, limited to 300 requests per minute per project and 60 per user, separately for reads and writes. With a service account, share the sheet with its client_email before calling values.append; if you get 429s, see Google Sheets limits.
The Google Sheets API is Google's REST API for reading and writing Google Sheets from your own code. Version 4 exposes cell values, formatting, charts and sheet structure, and is limited by per-minute quotas of 300 requests per project and 60 per user, separately for reads and writes.
Last verified
What people do with Google Sheets API
- Check Google Sheets API quotas and limits
Per-minute quotas, cell limits and what happens when you exceed them.
- Fix 429 Too Many Requests
Backoff and batching for rate-limited APIs.
- Fix 403 / permission denied
Usually a sheet not shared with the service account.
- Decide between the Sheets API and Apps Script
Code inside Google vs your own server calling the API.
- Scrape a website into Google Sheets
Get web data into a sheet without writing API code.
- Automate Google Sheets reports
Scheduled scraping, transforms and reports into Sheets.
- Connect Google Sheets without code
Autonoly's native Google Sheets integration.
Key facts
| Made by | |
|---|---|
| Current version | v4 (REST, JSON); v3 was turned down in 2021 |
| Read and write quotas | 300 requests/minute per project and 60 requests/minute per user per project, each for reads and for writes |
| Over quota | HTTP 429 Too Many Requests; quotas refill every minute and Google recommends exponential backoff |
| Per-request limits | Timeout after 180 seconds of processing; 2 MB maximum payload recommended |
| Auth | OAuth 2.0 user credentials, service accounts, or API keys for public read-only data |
What is the Google Sheets API?
The Google Sheets API is a REST API made by Google that lets any program read, write and format Google Sheets over HTTPS. Where Google Apps Script runs inside Google's servers, the Sheets API is what you call from your own server, a Python script, a mobile app or an automation platform. Nearly every "connect to Google Sheets" feature in third-party tools, Autonoly's included, is built on it.
The current version is v4. Google turned down the older v3 API (the XML "feeds" API) in 2021 after several postponed deadlines, so any tutorial that uses spreadsheets.google.com/feeds URLs is obsolete.
How it works
The API is organized around two resources:
values.get and values.batchGet read ranges written in A1 notation such as Sheet1!A1:D100; values.update, values.append and values.batchUpdate write them. A valueInputOption of RAW stores input as-is, while USER_ENTERED parses it as if typed into the UI, so =SUM(A1:A3) becomes a formula and 2026-11-12 becomes a date.spreadsheets.get returns metadata such as sheet names and IDs, and spreadsheets.batchUpdate applies requests that add sheets, format cells, set data validation, create charts or sort ranges.Every spreadsheet is identified by the long ID in its URL, between /d/ and /edit.
Authentication depends on the data. Public, read-only sheets can be read with an API key. Private sheets need OAuth 2.0, either on behalf of a signed-in user (see OAuth 2.0) or with a service account, which is a robot identity with its own email address. A service account can only open sheets that have been shared with that email address, which is the single most common reason for a 403 error.
Quotas and limits
Google's usage limits page sets the quotas per minute, not per day:
429 Too Many Requests response. Quotas refill every minute, and Google recommends retrying with exponential backoff.Service-account calls count as a single user, so a busy integration that funnels everything through one service account hits the 60-per-minute user quota first. Higher quotas can be requested in the Google Cloud console, but approval is not guaranteed. Standard use has no additional cost; Google's limits page says charges for exceeding quota are planned, so check it before relying on quota increases. The spreadsheet itself is still bound by Google Sheets' own size limits, including 10 million cells per spreadsheet.
Common problems
append or batchUpdate and add backoff; see rate limiting and retry logic.'Q4 Sales'!A1).RAW; use USER_ENTERED.values.append looks for the last row of the table it detects in the range, so blank rows or stray cells can shift where data goes.The Sheets API and automation
The Sheets API is the plumbing behind most "save to Google Sheets" steps. When you build your own integration you handle OAuth, token refresh, batching, retries and quotas. A platform with a native integration does that for you, at the cost of exposing fewer of the API's options.
Autonoly's native Google Sheets integration uses your Google account through OAuth, with tokens encrypted at rest, and gives workflows and the AI agent steps to read rows and write results. That is how data extracted in a real browser, for example from pages IMPORTXML cannot read, ends up in a sheet. For anything the built-in steps do not cover, the HTTP Request step can call the Sheets API directly with OAuth 2.0. More patterns are in the Google Sheets automation guide.
Why It Matters
Almost every tool that reads or writes Google Sheets uses this API, so its per-minute quotas, batching rules and sharing model explain most failures of sheet-based automations, from 429 errors to service accounts that cannot see a sheet.
How Autonoly Solves It
Autonoly's native Google Sheets integration connects through OAuth, stores tokens encrypted, and lets workflows and the agent read and write rows without handling the API directly. Data extracted from websites in a real browser can be written straight to a sheet, and the HTTP Request step can call the Sheets API with OAuth 2.0 for anything the built-in steps do not cover.
Learn moreExamples
A Python job that collects 2,000 rows and writes them with one values.append call instead of 2,000, staying far under the 60-writes-per-minute user quota
A service account that reads a shared configuration sheet each hour to decide which products a scraper should track
Writing a date column with valueInputOption USER_ENTERED so Sheets stores real dates that sort and filter correctly
Frequently Asked Questions
What are the Google Sheets API rate limits?
Google's usage limits page lists 300 read requests per minute per project and 60 per minute per user per project, with the same figures for writes. Exceeding them returns HTTP 429. Quotas refill every minute and there is no daily cap if you stay within them.
How do I fix 429 Too Many Requests from the Sheets API?
Batch your work: write many rows in one values.append or batchUpdate call, since a batch counts as one request. Add exponential backoff on 429 responses. If one service account does everything, remember it counts as a single user with a 60-per-minute quota.
Is the Google Sheets API free?
Standard use is available at no additional cost within the quotas. Google's limits page notes that charges for exceeding quota limits are planned for a Google Cloud billing account, so check the current page before requesting higher quotas.
Why does my service account get 'The caller does not have permission'?
A service account is a separate identity with its own email address. It can only open spreadsheets that have been shared with that address. Share the sheet with the service account's email, or use OAuth on behalf of a user who has access.
What is the difference between RAW and USER_ENTERED?
RAW stores values exactly as sent, so '=A1+1' stays text and '2026-11-12' is a string. USER_ENTERED parses input as if a person typed it, creating formulas, numbers and dates. Use USER_ENTERED unless you need literal text.
Should I use the Sheets API or Apps Script?
Use Apps Script for logic that lives inside Google Workspace, like custom menus or onEdit triggers. Use the Sheets API when your code runs elsewhere, in any language, or when an external system needs to read or write sheets.
Further reading
Related terms, automations and guides
Where this concept shows up in practice.
Stop reading about automation.
Start automating.
Describe what you need in plain English. Autonoly's AI agent builds and runs the automation for you — no code required.