All posts
Blog

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.

3 min read

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, and offset as 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 APIGKit SheetsAPI
Auth required to callYes — OAuth on every requestNo — public endpoint by default
Response shape2D array of cell valuesArray of row objects
Field namesYou map them manuallyFirst row becomes keys automatically
Filtering / sortingNot built in — you do it?search=, ?sort=, ?limit=
WritesFull CRUD on cells and rangesRow-level CRUD
Formula evaluationYesNo
Formatting / structure changesYesNo
Setup time20–60 minutesUnder 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.

Share