SheetsAPI vs the Google Sheets API: What's the Difference?
The Google Sheets API and GKit SheetsAPI both read Google Sheets — but they solve different problems. Here's when to use each.
Two APIs, two jobs
Searching "Google Sheets API" returns two very different things. One is Google's own API for programmatically controlling spreadsheets. The other — GKit SheetsAPI — is designed to serve spreadsheet data to web apps. They are built for different problems, and conflating them leads to a lot of unnecessary complexity.
Here's an honest comparison.
Google Sheets API (sheets.googleapis.com)
Google's Sheets API gives you deep, structural access to a spreadsheet. It operates at the level of cells, ranges, and formatting — the same things a human does when they open a sheet in the browser.
What it can do:
- Read and write specific cell ranges using A1 notation (
Sheet1!A2:D50) - Evaluate formulas before returning values
- Update cell formatting, borders, and conditional rules
- Append, insert, delete, and move rows and columns
- Work with protected ranges, data validation, and named ranges
- Batch multiple operations in a single request
What it requires:
- A Google Cloud project with the Sheets API enabled
- OAuth 2.0 — either a service account (for server-to-server access) or a user OAuth flow (for acting on behalf of a user)
- Auth headers on every request:
Authorization: Bearer {token} - Token refresh logic, since access tokens expire after an hour
- A client library or manual HTTP calls with JSON request bodies
A minimal read looks like this:
// You need a valid access token first — that's the hard part
const res = await fetch(
"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/Sheet1!A1:D10",
{ headers: { Authorization: `Bearer ${accessToken}` } }
);
const data = await res.json();
// data.values → [["name", "role"], ["Ana", "Designer"], ...]
// Raw 2D array. You map it to objects yourself.The response is a raw 2D array. You write the logic to turn the first row into keys and the rest into objects.
GKit SheetsAPI (sheetsapi.gkit.mreshank.com)
GKit SheetsAPI is purpose-built for one job: serving spreadsheet data as a clean REST API to web and mobile apps. It sits in front of the Google Sheets API and handles auth, row-to-object mapping, filtering, sorting, and pagination — so you don't have to.
What it does:
- Treats the first row of each tab as field names automatically
- Returns row objects, not raw arrays
- Serves public endpoints by default — no OAuth on the calling side
- Supports
search,sort,limit, andoffsetas URL query params - Enables CORS so you can call it directly from a browser
What it requires from you:
- Sign in with Google once on GKit's dashboard
- Paste your sheet URL to get a
userKey - That's it — no Google Cloud project, no service account JSON, no token refresh
A read looks like this:
const res = await fetch(
"https://sheetsapi.gkit.mreshank.com/api/spreadsheets/{userKey}/Team"
);
const { rows } = await res.json();
// rows → [{ name: "Ana", role: "Designer" }, ...]
// Already mapped. Already pageable.Side-by-side
| Google Sheets API | GKit SheetsAPI | |
|---|---|---|
| Auth required to call | Yes — OAuth on every request | No — public endpoint by default |
| Response shape | 2D array of cell values | Array of row objects |
| Field names | You map them manually | First row becomes keys automatically |
| Filtering / sorting | Not built in — you do it | ?search=, ?sort=, ?limit= |
| Writes | Full CRUD on cells and ranges | Row-level CRUD |
| Formula evaluation | Yes | No |
| Formatting / structure changes | Yes | No |
| Setup time | 20–60 minutes | Under 2 minutes |
When to use each
Use the Google Sheets API when:
- You need to programmatically update cell formatting, merge cells, or set data validation rules
- Your app evaluates formulas and needs the computed result
- You're building a full spreadsheet editor or automation (think: a script that generates a report and formats it)
- You're working server-to-server with a service account and don't mind the setup
Use GKit SheetsAPI when:
- You want to serve sheet data to a website, mobile app, or no-code tool
- Non-technical teammates own the data in Sheets and you just want to read it in code
- You're prototyping and want a working JSON endpoint in two minutes
- You're calling from the browser and need CORS without writing a proxy
The two aren't mutually exclusive. A workflow that uses the Google Sheets API to generate and format a report, then uses GKit SheetsAPI to expose that report to a public-facing dashboard, is a reasonable combination.
The short version
The Google Sheets API manipulates spreadsheets. GKit SheetsAPI serves their data. If you're building something that reads from a sheet and shows it somewhere, GKit SheetsAPI will take you from zero to working in two minutes. If you're building something that controls a spreadsheet's structure, you need Google's API.
Get started with GKit SheetsAPI — or read the quickstart docs if you want to see what the endpoints look like before signing in.