Serve report data from a Google Sheet as an API
Reporting data usually starts life in a spreadsheet. PasteSheet keeps it there and puts a real API in front — typed JSON, filters, sorting, and count/sum/avg summaries — so BI tools, dashboards, cron scripts, and embeds can pull metrics on demand without a warehouse, an ETL job, or a line of backend code.
Last updated
Key facts
-
Google's Sheets API is cell-oriented: it reads ranges like
A1:D50, not records. Reassembling those into row objects is work you do yourself. source -
Aggregation summaries (
count,sum,avg,group_by) and full-textsearch=are Pro ($19/mo) features; filters, sorting and pagination over typed rows work on every plan. -
Private endpoints and API keys start on Starter ($9/mo): the reporting URL then requires an
Authorization: Bearerkey, so only your BI tools and cron scripts can read it. - Report volume is capped by plan: 500 rows on Free, 5,000 on Starter, and no row cap on Pro.
A metrics endpoint without a warehouse
Plenty of reporting never justifies a data warehouse. Weekly numbers, campaign results, NPS by month, signups by plan — someone keeps them in a Google Sheet, and everyone else copies figures out by hand. PasteSheet turns that sheet into a versionable reporting API instead: a stable URL that returns typed JSON, so the report has one source and every consumer reads it the same way.
Because the same query engine powers filtering, sorting, and aggregation, a report consumer can ask for exactly the slice it needs — a date range, one campaign, a rolled-up monthly average — rather than pulling the whole sheet and reducing it client-side.
Who reads the reporting API
One read-only endpoint feeds every downstream consumer of the numbers:
- BI and no-code tools that ingest a JSON URL — Looker Studio connectors, Retool, Airtable sync.
- Scheduled scripts and cron jobs that snapshot metrics or post them to Slack.
- Embedded report widgets on a status page, client portal, or live dashboard.
-
Notebooks and analyses that
fetch()the rows for ad-hoc exploration.
Ask for the summary you need
Aggregate at the edge so BI tools receive report-ready figures. Here average NPS and total signups per month:
curl "https://pastesheet.com/your-endpoint/Reports?group_by=month&avg=nps&sum=signups"
{
"data": [
{ "month": "2026-05", "nps": 41.2, "signups": 1830 },
{ "month": "2026-06", "nps": 44.8, "signups": 2104 }
]
}Read-only, so it is safe to distribute
Because the endpoint is read-only by design, it is safe to expose publicly or hand to a teammate: consumers can read and query the data but can never change the sheet. And there is no Google Cloud project, OAuth screen, or service account to set up — you paste a share URL and get a live API.
What it costs
Starter
For indie makers shipping a real app.
- Endpoints
- 10
- Requests / mo
- 50,000
- Row cap
- 5,000
- Aggregation summaries
- Full-text search
- Private endpoints & keys
Start on Free to expose report rows as JSON. Aggregation summaries (count, sum, avg, group_by) and full-text search arrive on Pro ($19/mo); private endpoints and keys lock the API to your own tools from Starter ($9/mo).
Frequently asked questions
Can BI tools connect to a Google Sheet through this?
Yes. Any tool that reads a JSON URL — Looker Studio, Retool, a custom connector — can pull the endpoint. It returns typed JSON with filtering and sorting, so the tool gets clean records instead of raw cells.
Does it compute summaries or just return rows?
Both. Return raw rows for detail, or add group_by with count/sum/avg to get rolled-up figures computed server-side, so scripts and embeds receive report-ready numbers.
How do I keep report data private?
Make the endpoint private on a paid plan and it requires a bearer key. Your scripts and BI tools send the key; the raw sheet is never exposed publicly.
Can a consumer of the API change my report?
No. The API is read-only — it only serves data. Downstream tools and scripts can query and summarize the report but can never write back to the sheet.
Sources
- Usage limits — Google Sheets API — Google
Related use cases
Feed a Live Dashboard From Google Sheets
Power a live dashboard from a Google Sheet: PasteSheet serves rows and count/sum/avg rollups as cached JSON your charts read — no backend, no database.
Google Sheets Leaderboard & Rankings API
Power a game leaderboard from a Google Sheet. PasteSheet serves scores as a live, read-only JSON API — sort descending and page the top N.
Use a Google Sheet as a Next.js Data Source
Fetch a Google Sheet as typed JSON in Next.js or React — from a Server Component, getStaticProps, or ISR. Cached, read-only, set up by pasting a share URL.
A No-Code Backend From a Google Sheet
Skip the server. PasteSheet turns a Google Sheet into a live, read-only JSON API your web or mobile app reads from — no database, no backend, no Google setup.
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.