# Drive your website pricing table from a spreadsheet

Your pricing page changes more than the rest of your site combined — a new tier, a tweaked price, one more feature checkmark. PasteSheet turns the Sheet where you already model plans into a live JSON API, so marketing updates the pricing table by editing cells instead of filing a deploy ticket.

*Last updated: 2026-07-11 · Source: <https://pastesheet.com/use-cases/google-sheets-pricing-table>*

## 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](https://developers.google.com/workspace/sheets/api/limits))
- 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.
- Free serves a fixed **5-minute cache**; paid plans set a custom TTL from **30 seconds to 1 hour**, so a price change reaches the page in your chosen window.
- Schema-change alerts and schema lock start on **Starter ($9/mo)**: if someone renames the `price` column, you are told instead of finding out from a blank pricing table.

## Why the pricing table belongs in a Sheet

A pricing table is a grid: plans across the top, features down the side, prices and checkmarks in between. That is a spreadsheet — and it is exactly where finance and marketing already argue over tiers before anything ships. Hard-coding the same grid into your front end means every price experiment becomes an engineering task.

PasteSheet publishes the Sheet as clean, typed JSON, so your [marketing site](https://pastesheet.com/use-cases/google-sheets-cms) renders the pricing table from cells. Change a number or add a row, and the page updates after the cache refreshes — no deploy, no developer in the loop. Pair it with [feature flags](https://pastesheet.com/use-cases/google-sheets-feature-flags) to keep plan entitlements in the same place.

## What you can model in the grid

One tab drives the whole table. Common columns people ship:

- A row per plan with `name`, `price`, and `period` (monthly or yearly).
- Boolean columns for each feature so your front end renders checkmarks straight from typed cells.
- A `featured` flag to highlight the recommended tier — flip it in a cell for a campaign.
- Sort by price with `sort=price` so tiers always render low-to-high without reordering rows.

## Fetch your plans as JSON

Point your pricing page at the endpoint and read the plans in price order:

```bash
curl "https://pastesheet.com/your-endpoint/Plans?sort=price"

{
  "data": [
    {
      "plan": "Starter",
      "price": 9,
      "period": "mo",
      "seats": 3,
      "featured": false
    }
  ]
}
```

## Safe to publish, 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

**Free — $0/month.** For side projects and trying things out.

- Endpoints: 3
- Requests: 2,000 / month
- Rows per endpoint: 500
- Tabs per endpoint: 1
- Rate limit: 60 / minute

**Start free.** A single pricing table fits comfortably in the Free plan's 3 endpoints and 5-minute cache. Paid plans add type-mapped columns for clean numbers and booleans, a custom cache TTL, and schema alerts that warn you if someone renames a column your page depends on.

## Frequently asked questions

### Can marketing update prices without a developer?

Yes. That is the point — anyone you share the Google Sheet with can edit prices, features, and tiers, and the pricing page reflects it after the cache refreshes. No deploy and no PasteSheet account needed for editors.

### How do feature checkmarks work?

Map each feature column to a boolean in your column config. PasteSheet returns true/false per plan, and your front end renders a checkmark or dash — so the whole comparison grid is driven from typed cells.

### What if someone renames a column?

On paid plans, schema alerts warn you when a column your endpoint depends on is renamed or removed, so a stray edit does not silently break the pricing table. You can also lock the schema to prevent it.

### Can visitors change my prices through the API?

No. The endpoint is read-only by design — there is no write path — so it is safe to embed in a public marketing page without exposing any way to edit your Sheet.

## Sources

- [Usage limits — Google Sheets API](https://developers.google.com/workspace/sheets/api/limits) — Google

## Related use cases

- [Serve a Product Catalog from Google Sheets](https://pastesheet.com/use-cases/google-sheets-product-catalog) — 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](https://pastesheet.com/use-cases/google-sheets-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.
- [Google Sheets Feature Flags & Remote Config](https://pastesheet.com/use-cases/google-sheets-feature-flags) — Ship feature flags from a Google Sheet. Toggles are served as a live, read-only JSON API your app reads on launch — no deploy, no app-store review, no backend.
- [Drive a Marketing Site from Google Sheets](https://pastesheet.com/use-cases/google-sheets-content-website) — Run your marketing site's content blocks from a Google Sheet — hero copy, feature lists, section text. PasteSheet publishes it as a live, read-only JSON API.

---

[PasteSheet](https://pastesheet.com) turns any Google Sheet into a live REST API and MCP server for AI agents — no backend, no code. Canonical HTML version of this page: <https://pastesheet.com/use-cases/google-sheets-pricing-table>
