PasteSheet icon PasteSheet logo mark — a spreadsheet grid with a curly brace on a green rounded square PasteSheet

An alternative to an Apps Script Web App

Publishing a sheet as JSON via Apps Script is the classic free hack. It works — right up until it is quietly load-bearing and nobody remembers how it was deployed.

Last updated

Key facts

  • Apps Script caps a script at 6 minutes per execution (30 seconds for a custom function) and 30 simultaneous executions per user. source
  • Apps Script allows 20,000 UrlFetch calls per day on a consumer account (100,000 on Workspace), and trigger runtime is capped at 90 minutes a day. source
  • Those Apps Script limits sit on top of the Sheets API's own per-minute quotas — and a doGet() web app has no caching layer, so every caller is a cold execution. source
  • A cached endpoint reads the sheet once per TTL, not once per request — so 10,000 visitors become one upstream read, and Google's quota stops being your problem.

Why replace an Apps Script Web App?

Because it becomes infrastructure without ever being treated like it. A doGet() that returns ContentService JSON is fifteen lines and free, and for a weekend project that is exactly right.

The trouble starts when it matters. Apps Script has its own execution quotas, cold starts that show up as multi-second latency, no real caching layer, no typed output, and a deployment model — versioned web-app URLs, "execute as", "who has access" — that is remarkably easy to get subtly wrong.

What tends to break

  • Latency. Cold starts are unpredictable and slow, and you cannot cache in front of them without building that yourself.
  • Quotas. Apps Script enforces its own daily execution limits, separate from the Sheets API quota.
  • Types. You get whatever the script serialises — usually strings — so every consumer re-parses numbers and dates.
  • Deployment. A new version means a new deployment, and it is easy to leave callers pointed at an old URL.
  • Silent schema drift. Someone renames a column, the script keeps returning 200, and downstream code breaks quietly.

The hosted alternative

PasteSheet replaces the script with a connected endpoint: cached responses with a TTL you choose, AI-inferred column types, filtering and sorting as query parameters, and an MCP server for AI agents on the same URL. It also watches the sheet's schema and alerts you when a column changes — the failure Apps Script never tells you about.

If your script is doing something genuinely custom — bespoke transforms, writes, calling other Google services — keep it. This is for the very common case where the script exists solely to hand out rows as JSON — which is what using Google Sheets as a REST API covers end to end.

What it costs

MCP is included on the Free plan. Connect any public endpoint over MCP with no Google Cloud project and no credit card. Private endpoints and the account-wide workspace server need a paid plan (from Starter ($9/mo)) for the keys and OAuth they authenticate with.

Pro adds full-text search and aggregation (count, sum, avg, group_by) that your AI agent can call through query_rows.

Starter

For indie makers shipping a real app.

$9 /mo
Endpoints
10
Requests / mo
50,000
Row cap
5,000
  • Custom cache TTL
  • Schema-drift alerts
  • MCP for AI agents

Frequently asked questions

Is Apps Script bad for serving a JSON API?

Not bad, but not built for it. It works well for small internal jobs. It struggles once the endpoint is load-bearing: cold-start latency, its own execution quotas, no caching layer, and untyped output.

Can I keep my Apps Script for writes?

Yes, and that is often the right split. Keep the script for anything that writes or does custom work, and move the read path to a cached endpoint that your app and your AI agents can hit hard.

What about Apps Script quotas?

Apps Script enforces its own daily execution limits, on top of the Sheets API's per-minute quotas. A cached endpoint sidesteps both, because the sheet is read once per cache window regardless of traffic.

Do I still need a Google Cloud project?

No. PasteSheet reads a shared sheet through its link, so there is no Cloud project, OAuth consent screen, or service account — and nothing to redeploy when the data changes.

Sources

Related guides

Turn your sheet into an API in minutes

Paste a Google Sheet URL and get a live REST API and MCP server — no backend, no code, free to start.