Use a Google Sheet as a read backend for Bubble
Bubble's API Connector can call any JSON endpoint, so you do not need a Google Sheets plugin or a Cloud project to read spreadsheet data. Point it at a PasteSheet endpoint and a sheet becomes a live, queryable source you bind to repeating groups and pages.
Last updated
Key facts
- Google's API requires a Google Cloud project plus OAuth credentials or a service account before it will return a single row. source
- It needs no Google Cloud project, no OAuth consent screen and no service-account JSON. You paste a share URL, and MCP is included on the Free plan.
-
For a private feed, add an
Authorization: Bearerheader to the API Connector call. Private endpoints and keys start on Starter ($9/mo); public endpoints need no key at all. - A repeating group can bind up to 500 rows on Free and 5,000 on Starter; Pro ($19/mo) removes the row cap.
A sheet Bubble can read without a plugin
Plenty of Bubble apps only need to read some reference data — a catalog, a price list, a set of locations someone maintains in a spreadsheet. Modeling that in Bubble's database means an import step and a sync job to keep it current, and the Google Sheets plugins want OAuth and a Cloud project to boot.
PasteSheet skips all of it. It publishes your sheet as a plain JSON endpoint, and Bubble's built-in API Connector reads it like any other API — no plugin to install, no Google account to authorize. This is a read data layer, not a two-way sync, so the sheet stays the source of truth.
Wire it into the API Connector
Set it up once in the Bubble editor, then reuse the call anywhere:
-
1
Add the API Connector plugin, then create a new API named
PasteSheet. -
2
Add a GET call to
https://pastesheet.com/your-endpoint/Productsand hit Initialize call so Bubble learns each column and its type. -
3
Expose
sort,per_page, or a filter likestatusas query parameters so you can filter at runtime. -
4
Bind the call's
datalist to a repeating group — each row's columns are ready to drop into cells. For a private endpoint, add anAuthorization: Bearer YOUR_KEYheader.
The response the API Connector reads
The endpoint the connector calls returns typed rows under a data key — point the repeating group at that list:
curl "https://pastesheet.com/your-endpoint/Products?status=live&sort=name&per_page=25"
{
"data": [
{
"sku": "TS-001",
"name": "Field Notebook",
"price": 12.5,
"status": "live"
}
]
}Read-only, nothing to authorize
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
Free
For side projects and trying things out.
- Endpoints
- 3
- Requests / mo
- 2,000
- Row cap
- 500
- Private endpoints & keys
- Type-mapped columns
- Custom cache TTL
Start free. The Free plan runs 3 live endpoints with a 5-minute cache — enough to back a Bubble list or two. Upgrade for private endpoints and keys, a custom cache TTL, and full-text search as your app grows.
Frequently asked questions
Do I need a Bubble plugin for Google Sheets?
No. PasteSheet exposes the sheet as JSON, and Bubble's built-in API Connector reads any JSON endpoint. There is no Sheets plugin to install and no Google account to authorize.
Can Bubble write back to the sheet?
No. This is a read data layer — the endpoint only serves data and has no write path. Bubble pulls lists and records but cannot change the spreadsheet.
How do I keep my data private in Bubble?
The sheet itself must be link-shared for PasteSheet to read it, but the endpoint does not have to be: make the endpoint private and send an Authorization: Bearer YOUR_KEY header in the API Connector call. Public endpoints need no key at all.
How current is the data in my app?
Responses are cached for speed — 5 minutes on Free, a custom 30s–1hr TTL on paid plans. Edits appear after the cache refreshes, or immediately after a manual refresh in PasteSheet.
Sources
- Authorize requests — Google Sheets API — Google
- Service accounts overview — Google Cloud
Related use cases
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.
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.
Serve a Product Catalog from Google Sheets
Power a product catalog from a Google Sheet. PasteSheet serves products, prices, and stock as a live, read-only JSON API — no backend, no Google Cloud setup.
Use Google Sheets as a Free Headless CMS
Run your website's content from a Google Sheet. PasteSheet publishes it as a live, read-only JSON API — no database, no backend, no Google Cloud 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.