# Power your event schedule page from a Google Sheet

A conference agenda is really a table: one session per row, each with a time, room, track, and speaker. PasteSheet turns that Google Sheet into a live JSON API, so your schedule page can filter by day or track — and every last-minute room swap goes live the moment an organizer edits a cell.

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

## 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.
- On event day, freshness is the whole game: Free serves a fixed **5-minute cache**, while paid plans set a custom TTL as low as **30 seconds** so a moved session propagates almost immediately.
- The agenda holds up to **500 sessions on Free** and **5,000 on Starter ($9/mo)** — more than a multi-track conference needs.

## Why run your agenda from a spreadsheet

Event schedules change up to the last minute — a talk gets moved, a speaker drops, a room changes. The one tool your organizers already share and edit in real time is a spreadsheet, not a CMS. Keep the agenda there, one row per session, and let the website read from it.

PasteSheet sits in front of the sheet and serves it as clean, typed JSON. Your schedule page — Next.js, Astro, a [no-code builder](https://pastesheet.com/use-cases/google-sheets-webflow), or plain HTML — fetches the rows and renders the grid. Edit a start time in the sheet and the page reflects it after the cache refreshes.

## What each row becomes

Give every session a row and a few columns, then slice it however the page needs:

- `?day=Thursday` — build a per-day tab from an exact-match filter.
- `?track=Frontend` — split the agenda into parallel tracks or stages.
- `?sort=start_time` — order sessions chronologically without touching code.
- `?search=livewire` — let attendees find a talk by keyword across every column.

## Fetch the agenda as JSON

Point your schedule page at one tab and pull the sessions you want. Filters, sorting, and paging are plain URL parameters:

```bash
curl "https://pastesheet.com/your-endpoint/Sessions?day=Thursday&track=Frontend&sort=start_time"

{
  "data": [
    {
      "title": "Scaling Livewire to a Million Users",
      "day": "Thursday",
      "track": "Frontend",
      "room": "Hall B",
      "start_time": "14:30",
      "speaker": "Amara Okafor"
    }
  ]
}
```

## 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.** Three live endpoints and a 5-minute cache are enough to power a full agenda site. On event day, upgrade for a custom cache TTL so a schedule change appears in seconds rather than minutes.

## Frequently asked questions

### How fast do schedule changes show up?

Responses are cached for speed. The Free plan refreshes every 5 minutes; on event day a paid plan lets you set a custom TTL down to 30 seconds — or trigger a manual refresh so a moved session appears immediately.

### Can I build separate pages per day and track?

Yes. Use exact-match filters like ?day=Friday and ?track=Design in the URL, and combine them. Each page just fetches the same endpoint with different parameters — no duplicate data to maintain.

### Do my organizers need a PasteSheet account?

No. Only you connect the sheet once. Organizers keep editing the Google Sheet as normal, and the API reflects their changes after the cache refreshes.

### Can attendees change the agenda through the API?

No. PasteSheet is read-only by design — the endpoint only serves data, so it is safe to expose on a public schedule page.

## Sources

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

## Related use cases

- [Build a Course Catalog from Google Sheets](https://pastesheet.com/use-cases/google-sheets-course-catalog) — Turn a course catalog into a live JSON API straight from a Google Sheet. Courses, modules, lessons, and prices — filtered and sorted, with no backend to build.
- [Build a Directory Website From a Sheet](https://pastesheet.com/use-cases/google-sheets-directory-website) — 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.
- [Build a Team Directory from a Sheet](https://pastesheet.com/use-cases/google-sheets-team-directory) — Publish a team or staff directory from a Google Sheet — names, roles, photos, bios. Filter by department through a live, read-only JSON API. No backend.
- [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.

---

[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-event-schedule>
