Skip to main content

Reading Data (GET)

GET requests return rows from your sheet as JSON. The first row of the sheet provides the column names used in the response.

Read all rows

curl 'https://api.sheetbest.com/sheets/<api-id>'

Response:

[
{ "Id": "1", "Name": "John Doe", "Age": "23" },
{ "Id": "2", "Name": "Jane Doe", "Age": "34" }
]

Read a single row

Append the row index to the URL. Indexes are zero-based, so /2 returns the third data row.

curl 'https://api.sheetbest.com/sheets/<api-id>/2'

Read a range of rows

Use the <start>:<end> shorthand to read a contiguous range. It is equivalent to passing _limit and _offset:

# Rows 2 and 3
curl 'https://api.sheetbest.com/sheets/<api-id>/2:4'

# Same request, expanded
curl 'https://api.sheetbest.com/sheets/<api-id>?_limit=2&_offset=2'

See Pagination for more.

Parsed vs. raw values

By default, all values are returned as parsed strings. Add ?_raw=1 to receive native types (numbers, booleans, dates) as Google Sheets stores them:

curl 'https://api.sheetbest.com/sheets/<api-id>?_raw=1'

For other response shapes (records, dict, list, series, split, index) see Data Formats.

Reading from a specific tab

The first sheet tab is used by default. To read another tab, append /tabs/<TabName>:

curl 'https://api.sheetbest.com/sheets/<api-id>/tabs/Admin'

See Working with Tabs.

Filtering and querying

You can filter rows by column value (/<Column>/<Value>, with optional * wildcards) or use comparison operators with /query. These are documented separately:

Response headers

Every response includes headers describing your sheet and quota usage, including X-Sheet-Rows, X-Sheet-Columns, and the X-RateLimit-* series. See Response Headers.