Retrieve data from a sheet#

Description#

Retrieve data from a range in a sheet. Includes the value & formatting of cells, visibility of columns and cells, merged ranges, etc. Limit the results to particular fields by providing a comma-separated list of paths, rooted at the data object. Example: $fields=cells.calculatedValue,cells.formats.valueFormat

Note: This endpoint is rate-limited. You may experience rates as low as 600 requests per minute. This rate is shared across your workspace. When you encounter a 429, examine the Retry-After header and retry after that many seconds.

GET /spreadsheets/{spreadsheetId}/sheets/{sheetId}/sheetdata

Required OAuth Scopes

file:read

Parameters#

Parameter

In

Type

Required

Description

X-Version

header

string

true

Version of the API (2026-01-01)

spreadsheetId

path

string

true

The unique identifier of the spreadsheet

sheetId

path

string

true

The unique identifier of the sheet

$cellrange

query

string

false

The range to query. If not provided, the entire sheet will be queried.

$maxcellsperpage

query

integer(int32)

false

The maximum number of cells to retrieve. The default is 50000. The maximum allowed value is 50000.

$next

query

string

false

Pagination cursor for next set of results.

$fields

query

string

false

A restricted set of fields for a given resource.

Detailed descriptions#

$cellrange: The range to query. If not provided, the entire sheet will be queried. A1 style representation of a cell or range. A range my be unbounded in any/all directions by leaving off the corresponding column or row.

Code Samples#

curl -X GET https://api.app.wdesk.com/spreadsheets/{spreadsheetId}/sheets/{sheetId}/sheetdata \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer {access-token}' \
    -H 'X-Version: 2026-01-01'
http GET https://api.app.wdesk.com/spreadsheets/{spreadsheetId}/sheets/{sheetId}/sheetdata \
    X-Version:2026-01-01 \
    Accept:application/json \
    Authorization:"Bearer {access-token}"
wget --method=GET "https://api.app.wdesk.com/spreadsheets/{spreadsheetId}/sheets/{sheetId}/sheetdata" \
    --output-document -  \ 
    --header 'Accept: application/json' \ 
    --header 'Authorization: Bearer {access-token}' \
    --header 'X-Version: 2026-01-01'
import requests

headers = {
  'X-Version': '2026-01-01',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api.app.wdesk.com/spreadsheets/{spreadsheetId}/sheets/{sheetId}/sheetdata', headers = headers)

print(r.json())

Returns#

200 - OK#

Returns a JSON object with data and @nextLink properties. data contains a SheetData object, and @nextLink provides the URL to the next set of results. If there are no additional results, @nextLink doesn’t appear.

400 - Bad Request#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

401 - Unauthorized#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

403 - Forbidden#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

404 - Not Found#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

409 - Conflict#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

429 - Too Many Requests#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

500 - Internal Server Error#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

503 - Service Unavailable#

Error response that indicates that the service is not able to process the incoming request. The reason is provided in the error message.

Example Responses#

{
  "data": {
    "cells": [
      [
        {
          "calculatedValue": 42,
          "formats": {
            "cellFormat": {
              "backgroundColor": "#ffffff",
              "horizontalAlign": "RIGHT",
              "verticalAlign": "BOTTOM"
            },
            "textFormat": {
              "bold": false,
              "fontColor": "#000000",
              "fontFamily": "Arial",
              "fontSize": 10,
              "italic": false,
              "strikethrough": false,
              "underline": false
            }
          }
        }
      ]
    ]
  }
}
{
  "code": "400BadRequest",
  "message": "The request was unacceptable, often due to a missing or invalid parameter"
}
{
  "code": "401Unauthorized",
  "message": "No valid API token provided"
}
{
  "code": "403Forbidden",
  "message": "The API token does not have permissions to perform the request"
}
{
  "code": "404NotFound",
  "message": "The requested resource could not be found"
}
{
  "code": "409Conflict",
  "message": "The request conflicts with another request"
}
{
  "code": "429TooManyRequests",
  "message": "Too many requests have been made against the API in too short a time"
}
{
  "code": "500InternalServerError",
  "message": "The server encountered an unexpected condition that prevented it from fulfilling the request"
}
{
  "code": "503ServiceUnavailable",
  "message": "The server cannot handle the request due to a temporary overload or scheduled maintenance"
}