Google Sheets API Documentation
REST endpoints for reading, writing, searching, and bulk-managing Google Sheets rows.
Base URL
/api/gs
Auth
Not implemented yet.
Rate limit
100 requests per 15 minutes per IP.
Quick Start
Each request targets a spreadsheet ID and a tab name.
GET /api/gs/:sheet_id/:tab_name
Example:
GET /api/gs/1abcDEF12345/Sheet1?page=1&limit=10
Endpoints
GET List records
/api/gs/:sheet_id/:tab_name
Supports page, limit, sort_by, sort_order, and JSON filter.
GET Get one record
/api/gs/:sheet_id/:tab_name/:record_id
GET Search records
/api/gs/:sheet_id/:tab_name/search?query=John&field=name&operator=contains
POST Create a record
{
"sheet_id": "1abcDEF12345",
"tab_name": "Sheet1",
"row": { "name": "Bob", "age": "35" }
}
PUT Update or upsert a record
{
"sheet_id": "1abcDEF12345",
"tab_name": "Sheet1",
"row": { "id": "1", "name": "John Updated" }
}
DELETE Delete a record
/api/gs/:sheet_id/:tab_name/:record_id
POST Bulk create
{
"rows": [
{ "name": "Bob", "age": "35" },
{ "name": "Alice", "age": "28" }
]
}
PUT Bulk update
{
"match_field": "id",
"rows": [
{ "id": "1", "name": "John Updated" },
{ "id": "2", "age": "26" }
]
}
DELETE Bulk delete
{
"record_ids": ["1", "2"]
}
Query Parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
page |
number | Page number. | 1 |
limit |
number | Records per page, max 100. | 10 |
sort_by |
string | Field name used for sorting. | - |
sort_order |
string | asc or desc. |
asc |
filter |
JSON string | Field comparisons such as $gt, $lt, $in, or $regex. |
- |