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
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 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 —
countcourses per category oravga 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 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=priceor?sort=-rating— order by price or popularity. -
A
Lessonstab filtered by?course=intro-to-sqlfor 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:
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
For side projects and trying things out.
- Endpoints
- 3
- Requests / mo
- 2,000
- Row cap
- 500
- Type-mapped columns
- Counts & averages
- MCP for AI agents
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
Related use cases
Build an Event Schedule from Google Sheets
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
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
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
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.
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.