Render live Google Sheet data in Framer
Framer ships real React under the hood, so a code component can fetch and render anything. Point one at a PasteSheet endpoint and your Google Sheet becomes a live data source — typed JSON, cached at the edge, refreshed the moment someone edits a cell.
Last updated
Key facts
- A Google Sheet is capped at 10 million cells (or 18,278 columns), which is the real ceiling on using one as a database. source
- A code component can render up to 500 rows on Free and 5,000 on Starter ($9/mo); Pro ($19/mo) removes the row cap.
- The published site is as fresh as the cache: a fixed 5 minutes on Free, or a custom 30 seconds to 1 hour on paid plans — no re-publish from the Framer editor either way.
- The endpoint is read-only by design, so the URL is safe to ship in a public Framer site: the component fetches rows and can never write one back.
Why a code component beats a static design
Framer is fast for layout, but the content you paste into a frame is frozen at design time. The moment your data changes — a new listing, an updated price, a fresh roster — you are back in the editor nudging text. That does not scale for anything that updates on its own schedule.
Because Framer code components are just React, they can fetch data at runtime and render it live. PasteSheet gives that component a clean, cached JSON endpoint over any Google Sheet, so a non-technical teammate edits a spreadsheet and your published site reflects it — no plugin, no backend to stand up.
Good fits for a live component
Anything a spreadsheet models cleanly and that changes after you ship:
- Listings, job boards, and directories.
- Pricing tables and product catalogs.
- Team grids, testimonials, and changelogs.
- A leaderboard or any feed that should stay current on its own.
Fetch the API in a code component
Add a code component and fetch your endpoint in an effect. The rows come back typed, so numbers and dates are ready to render — filter and sort in the URL:
import { useEffect, useState } from "react"
export function Listings() {
const [rows, setRows] = useState([])
useEffect(() => {
fetch("https://pastesheet.com/your-endpoint/Listings?sort=-date")
.then((r) => r.json())
.then(({ data }) => setRows(data))
}, [])
return (
<ul>
{rows.map((row) => (
<li key={row.slug}>{row.title}</li>
))}
</ul>
)
}Read-only, so it is safe to ship
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
- Type-mapped columns
- Custom cache TTL
- Private endpoints & keys
Start free. The Free plan runs 3 live endpoints with a 5-minute cache — plenty for a Framer component or two. Upgrade for private endpoints, a custom cache TTL, and full-text search when you grow.
Frequently asked questions
Do I need a Framer plugin?
No. A Framer code component is plain React, so it fetches the PasteSheet endpoint over HTTPS at runtime. There is nothing to install — you paste the component code and point it at your URL.
Does the data update after I publish?
Yes. The component fetches live JSON on load, so editing the Google Sheet updates the published site after the cache refreshes — no re-publish and no touching the Framer editor.
How fresh is the data?
Responses are cached for speed — 5 minutes on Free, a custom 30s–1hr TTL on paid plans. A manual refresh in PasteSheet pushes changes through immediately.
Can the component write back to my sheet?
No. PasteSheet is read-only by design — the endpoint only serves data, with no write path — so it is safe to expose in a public Framer site.
Sources
Related use cases
Power a Webflow Site With Google Sheets
Power a Webflow site from a Google Sheet. PasteSheet publishes it as a live, read-only JSON API you fetch client-side — no plugin, no Google Cloud 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.
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.
Build a Directory Website From a Sheet
Turn a Google Sheet into a searchable directory. PasteSheet serves your listings as a filterable, read-only JSON API — no database, no admin panel, no code.
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.