Google Sheets API logo

Google Sheets API

Google Sheets API

Google Sheets API lets apps read and write Google Sheets — commonly used as a lightweight database or as a bridge to external systems.

Visit site ↗Health checked 9h ago
Use it when

Generous per-user quota

Watch for

Up to 10M cells per spreadsheet

First check

Enable Sheets API and OAuth at console.cloud.google.com. Common scope: https://www.googleapis.com/auth/spreadsheets. Use spreadsheets.values.batchUpdate / batchGet via SDK.

Auth
oauth
CORS
No
HTTPS
Yes
Signup
Required
Latency
47 ms
Protocol
REST
Pricing
free

Uptime · 30-day window

Probes: 1Uptime: 100%Avg latency: 47ms
01

About this API

The Sheets API turns "Excel sheets" into a programmable data source. Three common patterns: (1) Sheets as backing database — non-engineers maintain data in Sheets and the app syncs via API; (2) report generation — programs write analytics output into Sheets for team consumption; (3) config hub — store feature flags, copy, and lookups in Sheets so non-engineers can change behavior without code deploys.

The API is built around batch operations: spreadsheets.values.batchUpdate modifies many ranges in one call; spreadsheets.batchUpdate executes many structural changes (insert rows, add sheets, format) in one call. Orders of magnitude faster than per-cell calls. Reads also batch via batchGet. Quotas are generous — about 60 writes and 300 reads per user per minute, plenty for normal apps. Watch the cell limit: 10M cells max per spreadsheet — large datasets need either multiple spreadsheets or a real database.

02

What you can build

  • 1Use Sheets as a no-code back office for non-technical users
  • 2Sync external CRM/analytics data into Sheets for reporting
  • 3Read configuration or lookup data from Sheets
  • 4Auto-generate weekly/monthly report sheets
03

Strengths & limitations

Strengths

  • Generous per-user quota
  • Batch update endpoints modify many cells in one call
  • Deep integration with Drive and Apps Script

Limitations

  • Up to 10M cells per spreadsheet
  • High-frequency writes can hit per-user quotas
  • Complex formulas and pivots are awkward to construct programmatically
04

Example request

Generic template — replace <endpoint> with the real path from the docs.
curl https://google.com/<endpoint> \
  -H "Authorization: Bearer $ACCESS_TOKEN"
05

Getting started

Enable Sheets API and OAuth at console.cloud.google.com. Common scope: https://www.googleapis.com/auth/spreadsheets. Use spreadsheets.values.batchUpdate / batchGet via SDK.

06

FAQ

Is the Sheets API free?+

Yes, free with per-user quotas that are very hard for normal apps to exhaust.

Can I read someone else's sheet without user OAuth?+

Share the sheet with a service account (as a collaborator); the service account can then access it. Workspace customers can also use domain-wide delegation.

Why are my writes slow?+

Per-cell writes are slow. Use batchUpdate to merge many cells into one request — typically 10–100x faster.

07

Technical details

CORS: NoHTTPS: YesSignup: YesOpen source: No
Auth type
oauth
Pricing
free
Protocols
REST
SDKs
python, javascript, java, go, ruby
Response time
47 ms
Last health check
5/12/2026, 7:37:36 AM
08

Endpoints

Parsed from the OpenAPI spec. Showing 12 of 17 non-deprecated endpoints.

POST
/v4/spreadsheetsspreadsheets
GET
/v4/spreadsheets/{spreadsheetId}spreadsheets
spreadsheetId:path*includeGridData:queryranges:query
POST
/v4/spreadsheets/{spreadsheetId}:batchUpdatespreadsheets
spreadsheetId:path*
POST
/v4/spreadsheets/{spreadsheetId}:getByDataFilterspreadsheets
spreadsheetId:path*
POST
/v4/spreadsheets/{spreadsheetId}/developerMetadata:searchspreadsheets
spreadsheetId:path*
GET
/v4/spreadsheets/{spreadsheetId}/developerMetadata/{metadataId}spreadsheets
spreadsheetId:path*metadataId:path*
POST
/v4/spreadsheets/{spreadsheetId}/sheets/{sheetId}:copyTospreadsheets
spreadsheetId:path*sheetId:path*
POST
/v4/spreadsheets/{spreadsheetId}/values:batchClearspreadsheets
spreadsheetId:path*
POST
/v4/spreadsheets/{spreadsheetId}/values:batchClearByDataFilterspreadsheets
spreadsheetId:path*
GET
/v4/spreadsheets/{spreadsheetId}/values:batchGetspreadsheets
spreadsheetId:path*dateTimeRenderOption:querymajorDimension:queryranges:queryvalueRenderOption:query
POST
/v4/spreadsheets/{spreadsheetId}/values:batchGetByDataFilterspreadsheets
spreadsheetId:path*
POST
/v4/spreadsheets/{spreadsheetId}/values:batchUpdatespreadsheets
spreadsheetId:path*

5 more endpoints not shown. See the OpenAPI spec for the full list.

09

Tags

10

More from Google