Skip to main content
Beta - free, no credit card

Turn any Google Sheet into a REST API

SheetsAPI reads, filters, and serves your Sheets data as JSON, CSV, TSV, XML, or JSONP - no backend required. Connect in 30 seconds.

GET /api/spreadsheets/{userKey}/{sheetName}

Request

GET /api/spreadsheets/
  {userKey}/{sheetName}
  ?limit=3
  &sort=-date
?format=csv?fields=name,role?search=role:Engineer?offset=10

Response - 200 OK

{
  "data": [
    { "name": "Alice", "role": "Engineer",
      "date": "2026-06-20" },
    { "name": "Bob", "role": "Designer",
      "date": "2026-06-18" }
  ],
  "meta": { "total": 42, "limit": 3, "offset": 0 }
}

Everything a REST API should do

No backend to provision, no schema to define. Your first row is the field map - everything else is an HTTP call.

Full CRUD

Read, append, update, and delete rows with GET, POST, PUT, and DELETE. Your sheet is the database - no schema migration needed.

5 output formats

JSON, CSV, TSV, XML, and JSONP. Add ?format=csv to any endpoint and the response changes. Same data, every format.

Powerful filtering

search=field:value, search_exact for strict matches, sort with - prefix for descending, and fields to pick only the columns you need.

Pagination

Every list endpoint accepts limit (max 1000) and offset. Page through large sheets without loading everything at once.

API keys

Sheets are public by default. Create Bearer tokens to lock a sheet to authenticated callers only. One dashboard, all your keys.

Open source

MIT licensed. Self-host on Cloudflare Workers in minutes if you'd rather not use the hosted version. Fork it, extend it.

What people build with it

Free while in beta - no plan limits, no credit card.

Pricing details →

Ready to connect your first Sheet?

Paste your Sheet URL, get an endpoint. No deploy, no config file, no backend.