# Run your course catalog and LMS content from a Sheet

A course catalog is a list of courses, each with a level, a module count, a price, and an instructor. PasteSheet turns that Google Sheet into a live JSON API, so your site renders the catalog and filters by level or topic — no LMS to stand up, no admin panel, and no code for your team to touch.

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

## 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](https://support.google.com/drive/answer/37603))
- A courses tab plus a lessons tab is **two tabs** — and a Free endpoint exposes only **one**. The two-level catalog starts on **Starter ($9/mo)** (5 tabs); **Pro ($19/mo)** is unlimited.
- The catalog holds up to **500 rows on Free** and **5,000 on Starter**; **Pro** removes the row cap for a large lessons tab.
- Aggregation — `count` courses per category or `avg` a track's price — is a **Pro ($19/mo)** feature.

## A catalog your instructors can edit

Building a lightweight LMS or course marketplace usually starts with the wrong step: standing up a database and an admin UI just to hold a list of courses. But a catalog is a spreadsheet — one row per course, columns for level, price, module count, and instructor. Your content team already knows how to edit that.

PasteSheet serves the sheet as typed JSON, so your catalog page fetches the rows and renders the cards. A related tab can hold modules or lessons keyed by course slug, giving you a simple two-level structure without a real backend. See the broader [headless CMS pattern](https://pastesheet.com/use-cases/google-sheets-cms) for how the pieces fit.

## What you can drive from the sheet

Common columns and the queries they unlock:

- `?level=Beginner` — filter the catalog by difficulty or audience.
- `?category=Data` — group courses into tracks or subjects.
- `?sort=price` or `?sort=-rating` — order by price or popularity.
- A `Lessons` tab filtered by `?course=intro-to-sql` for a course detail page.

## Fetch the catalog as JSON

Point your catalog page at the endpoint and read the courses. Filter and sort with URL parameters — no query language to learn:

```bash
curl "https://pastesheet.com/your-endpoint/Courses?level=Beginner&sort=price"

{
  "data": [
    {
      "title": "Intro to SQL",
      "slug": "intro-to-sql",
      "level": "Beginner",
      "modules": 6,
      "price": 49,
      "instructor": "Dev Sharma"
    }
  ]
}
```

## Read-only, so it is safe to publish

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.** The Free plan runs 3 live endpoints — enough for a courses tab and a lessons tab. Pro adds aggregation, so you can `count` courses per category or `avg` the price of a track for catalog stats.

## Frequently asked questions

### Can I model modules and lessons, not just courses?

Yes. Put courses in one tab and lessons in another, linked by a shared course slug column. Each tab is its own endpoint, so a course page fetches the course row plus its lessons filtered by that slug.

### Can I show prices and totals?

Store the price in a numeric column and it comes back typed, not as a string. On Pro, aggregation lets you count courses per category or average a track's price for catalog-level stats.

### How do students see updates?

Edit the sheet and the catalog reflects it after the cache TTL — 5 minutes on Free, tunable on paid plans, or immediately after a manual refresh.

### Can learners edit the catalog through the API?

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

## Sources

- [Files you can store in Google Drive (size limits)](https://support.google.com/drive/answer/37603) — Google

## Related use cases

- [Build an Event Schedule from Google Sheets](https://pastesheet.com/use-cases/google-sheets-event-schedule) — Run your conference agenda from a Google Sheet — sessions, times, tracks, and speakers as live JSON. Filter by day or track, no backend, no Google Cloud setup.
- [Drive a Pricing Table from Google Sheets](https://pastesheet.com/use-cases/google-sheets-pricing-table) — Drive a website pricing table from a Google Sheet so non-devs update prices and features without a deploy — served as a live, read-only JSON API.
- [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.
- [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-course-catalog>
