Drive a live dashboard from a Google Sheet
A live dashboard is only as fresh as its data source. PasteSheet turns any Google Sheet into a cached JSON API your charts and KPI widgets read directly — and with count, sum, avg, and group_by rollups computed server-side, the numbers arrive ready to plot. Edit a cell, and the dashboard follows.
Last updated
Key facts
-
The Google Sheets API allows 300 read requests per minute per project and 60 per minute per user. Past that it returns
429 RESOURCE_EXHAUSTED. 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.
-
Aggregation (
group_by,count,sum,avg) — the rollups that let a KPI tile fetch one number instead of ten thousand rows — is a Pro ($19/mo) feature. - A dashboard polling in many tabs still hits a rate limit: 60 requests a minute on Free, 300 on Starter, 1,000 on Pro and 5,000 on Agency.
A dashboard backed by a spreadsheet
A dashboard is a read view over numbers that already live somewhere — and for most teams that somewhere is a Google Sheet a human keeps current. Instead of piping that sheet into a warehouse just to draw a chart, PasteSheet serves it straight to your front end as fast, cached JSON. Recharts, Chart.js, a Livewire widget, or a plain <table> all just fetch() the endpoint.
The trick that keeps a dashboard snappy is not shipping every row to the browser. PasteSheet's aggregation parameters — group_by, count, sum, avg — roll the data up server-side, so a KPI tile pulls a single computed number and a bar chart pulls one row per group rather than ten thousand raw records.
What you can wire to the sheet
One endpoint, one query engine — every widget on the board reads the same source:
-
KPI tiles — total revenue, active users, average order value — from a single
sum,count, oravg. -
Bar and line charts grouped by month, region, or owner via
group_by. -
Status boards filtered live with
?status=openorcontains[owner]=jo. -
A leaderboard sorted by any metric with
sort=-score.
Roll the data up server-side
Ask the endpoint for the aggregate, not the rows. Here revenue and order count grouped by region come back ready to chart:
curl "https://pastesheet.com/your-endpoint/Sales?group_by=region&sum=revenue&count=orders"
{
"data": [
{ "region": "AMER", "revenue": 61550, "orders": 189 },
{ "region": "EMEA", "revenue": 48200, "orders": 214 },
{ "region": "APAC", "revenue": 33900, "orders": 121 }
]
}Safe to embed, nothing to wire up
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 rollups
- Custom cache TTL
- Private endpoints & keys
Start free and read raw rows into your charts on any plan. The count/sum/avg/group_by rollups that keep the payload small are a Pro ($19/mo) feature, and a custom cache TTL lets you match refresh rate to how live the dashboard needs to be.
Frequently asked questions
How fresh is the dashboard?
As fresh as your cache TTL. The Free plan refreshes every 5 minutes; paid plans let you set a 30-second to 1-hour window, and a manual refresh pulls the latest rows instantly without counting against your quota.
Can I compute totals without loading every row?
Yes. The aggregation parameters (group_by, count, sum, avg) roll the data up server-side, so a KPI tile fetches one computed value and a grouped chart fetches one row per group instead of the full dataset.
Will heavy dashboard traffic hit Google's rate limits?
No. PasteSheet reads Google once and serves every widget and visitor from an edge cache, so a dashboard refreshing across many tabs is still a single read from the sheet.
Can dashboard viewers change the underlying data?
No. The endpoint is read-only by design — charts can query and aggregate the sheet but there is no write path, so it is safe to embed on an internal or public page.
Sources
- Usage limits — Google Sheets API — Google
Related use cases
A Reporting API Backed by Google Sheets
Expose a Google Sheet of report data as a JSON API for BI tools, scripts, and embeds — with count/sum/avg summaries and no backend to build.
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.