Development — entry 034 of 100

Google Sheets

Verified Jul 2026

The Google Sheets API is a REST interface for reading and writing spreadsheet data, formatting cells, and managing Connected Sheets, addressing ranges with either A1 (`Sheet1!A1:B2`) or R1C1 notation. It authenticates via OAuth 2.0 (or a service account for server-to-server access) and is widely used to drive spreadsheets as a lightweight database or reporting backend from external apps and scripts. Standard use is free under per-project and per-user Google Cloud quotas.

google-workspacespreadsheetsoauth
AuthenticationOAuthRequires an OAuth flow; expect app registration.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score77out of 100
Authentication8/25OAuth flow required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 77 on greatapis.com
<a href="https://greatapis.com/api/google-sheets/"><img src="https://greatapis.com/badge/google-sheets.svg" alt="Scored 77 on greatapis.com"></a>

Auth quickstart

  1. Register an app / run the OAuth flow to obtain a bearer token.
  2. Send it as an Authorization headerAuthorization: Bearer <token>
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://sheets.googleapis.com/
Auth
Oauth2Oauth2c
spreadsheets17
POST/v4/spreadsheets
Request body

application/jsonSpreadsheet

Responses
StatusDescriptionSchema
200Successful responseSpreadsheet
GET/v4/spreadsheets/{spreadsheetId}
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
includeGridDataquerynoboolean
rangesquerynoarray
Responses
StatusDescriptionSchema
200Successful responseSpreadsheet
GET/v4/spreadsheets/{spreadsheetId}/developerMetadata/{metadataId}
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
metadataIdpathyesinteger
Responses
StatusDescriptionSchema
200Successful responseDeveloperMetadata
POST/v4/spreadsheets/{spreadsheetId}/developerMetadata:search
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
Request body

application/jsonSearchDeveloperMetadataRequest

Responses
StatusDescriptionSchema
200Successful responseSearchDeveloperMetadataResponse
POST/v4/spreadsheets/{spreadsheetId}/sheets/{sheetId}:copyTo
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
sheetIdpathyesinteger
Request body

application/jsonCopySheetToAnotherSpreadsheetRequest

Responses
StatusDescriptionSchema
200Successful responseSheetProperties
GET/v4/spreadsheets/{spreadsheetId}/values/{range}
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
rangepathyesstring
dateTimeRenderOptionquerynostring
majorDimensionquerynostring
valueRenderOptionquerynostring
Responses
StatusDescriptionSchema
200Successful responseValueRange
PUT/v4/spreadsheets/{spreadsheetId}/values/{range}
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
rangepathyesstring
includeValuesInResponsequerynoboolean
responseDateTimeRenderOptionquerynostring
responseValueRenderOptionquerynostring
valueInputOptionquerynostring
Request body

application/jsonValueRange

Responses
StatusDescriptionSchema
200Successful responseUpdateValuesResponse
POST/v4/spreadsheets/{spreadsheetId}/values/{range}:append
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
rangepathyesstring
includeValuesInResponsequerynoboolean
insertDataOptionquerynostring
responseDateTimeRenderOptionquerynostring
responseValueRenderOptionquerynostring
valueInputOptionquerynostring
Request body

application/jsonValueRange

Responses
StatusDescriptionSchema
200Successful responseAppendValuesResponse
POST/v4/spreadsheets/{spreadsheetId}/values/{range}:clear
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
rangepathyesstring
Request body

application/jsonClearValuesRequest

Responses
StatusDescriptionSchema
200Successful responseClearValuesResponse
POST/v4/spreadsheets/{spreadsheetId}/values:batchClear
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
Request body

application/jsonBatchClearValuesRequest

Responses
StatusDescriptionSchema
200Successful responseBatchClearValuesResponse
POST/v4/spreadsheets/{spreadsheetId}/values:batchClearByDataFilter
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
Request body

application/jsonBatchClearValuesByDataFilterRequest

Responses
StatusDescriptionSchema
200Successful responseBatchClearValuesByDataFilterResponse
GET/v4/spreadsheets/{spreadsheetId}/values:batchGet
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
dateTimeRenderOptionquerynostring
majorDimensionquerynostring
rangesquerynoarray
valueRenderOptionquerynostring
Responses
StatusDescriptionSchema
200Successful responseBatchGetValuesResponse
POST/v4/spreadsheets/{spreadsheetId}/values:batchGetByDataFilter
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
Request body

application/jsonBatchGetValuesByDataFilterRequest

Responses
StatusDescriptionSchema
200Successful responseBatchGetValuesByDataFilterResponse
POST/v4/spreadsheets/{spreadsheetId}/values:batchUpdate
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
Request body

application/jsonBatchUpdateValuesRequest

Responses
StatusDescriptionSchema
200Successful responseBatchUpdateValuesResponse
POST/v4/spreadsheets/{spreadsheetId}/values:batchUpdateByDataFilter
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
Request body

application/jsonBatchUpdateValuesByDataFilterRequest

Responses
StatusDescriptionSchema
200Successful responseBatchUpdateValuesByDataFilterResponse
POST/v4/spreadsheets/{spreadsheetId}:batchUpdate
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
Request body

application/jsonBatchUpdateSpreadsheetRequest

Responses
StatusDescriptionSchema
200Successful responseBatchUpdateSpreadsheetResponse
POST/v4/spreadsheets/{spreadsheetId}:getByDataFilter
Parameters
NameInRequiredType
spreadsheetIdpathyesstring
Request body

application/jsonGetSpreadsheetByDataFilterRequest

Responses
StatusDescriptionSchema
200Successful responseSpreadsheet

Try it

Developer reference

Base URLhttps://sheets.googleapis.com
Rate limit

Google's Sheets API limits docs (developers.google.com/workspace/sheets/api/limits) publish flat per-minute quotas rather than a quota-unit system: Read requests are capped at 300/minute/project and 60/minute/user/project, and Write requests at 300/minute/project and 60/minute/user/project. Exceeding a limit returns a 429 (Too many requests) HTTP status; Google recommends an exponential backoff before retrying. There's no daily cap as long as the per-minute quotas are respected, and standard use is free under these Google Cloud project quotas.

Key endpoints
  • POST/v4/spreadsheets
  • GET/v4/spreadsheets/{spreadsheetId}
  • GET/v4/spreadsheets/{spreadsheetId}/values/{range}
  • PUT/v4/spreadsheets/{spreadsheetId}/values/{range}
  • POST/v4/spreadsheets/{spreadsheetId}/values/{range}:append