Build a team directory page from a Google Sheet
People join, leave, and change roles constantly, and a hard-coded team page is out of date the week it ships. Keep names, roles, photos, bios, and departments in a Google Sheet, and PasteSheet serves it as a live JSON API — filter by department and render an always-current directory.
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
- The roster is capped by plan: 500 people on Free, 5,000 on Starter ($9/mo), uncapped on Pro ($19/mo).
-
Schema-change alerts and schema lock start on Starter ($9/mo): if HR renames the
departmentcolumn, you hear about it before the directory page breaks. - 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.
A team page that stays current
A staff directory is the page most likely to be wrong. Someone joins, someone changes title, someone leaves — and updating a grid of hard-coded cards is a developer chore that slips. HR knows the roster; they just have no way to edit the page.
Give them a Google Sheet instead. One row per person — name, role, department, photo URL, and a short bio — and PasteSheet publishes it as JSON. Your directory page fetches the rows, filters by department, and renders the cards. HR edits a cell; the page catches up on the next cache refresh, no deploy in the loop.
What a directory row holds
A single tab with a column per field powers the whole page:
-
name,role, anddepartmentfor the card and filtering. -
photoholding a headshot URL your front end renders. -
biofor a short blurb andemailorlinksfor contact. -
orderto control how people rank within a team.
Filter the directory by department
Pass a department to filter and a column to sort — build a tabbed directory without any query language:
curl "https://pastesheet.com/your-endpoint/Team?department=Engineering&sort=name"
{
"data": [
{
"name": "Marco Silva",
"role": "Staff Engineer",
"department": "Engineering",
"photo": "https://cdn.example.com/marco.jpg",
"bio": "Works on the query layer and caching.",
"email": "[email protected]"
}
]
}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
- Schema-change alerts
- Custom cache TTL
Start free. The Free plan runs 3 live endpoints with a 5-minute cache — enough for a team page. Paid plans add a custom cache TTL and schema alerts that warn you if someone renames or deletes a column HR relies on.
Frequently asked questions
Can HR update the directory without a developer?
Yes. You connect the sheet once; anyone you share it with edits names, roles, and photos in Google Sheets, and the page reflects their changes after the cache refreshes — no code and no deploy.
How do I split the page by department?
Add a department column and filter the endpoint to department=Engineering, or read every row and group client-side. Sort by name or an order column to control the layout within each team.
Where do the headshots live?
Store an image URL in a photo cell and return it like any other field. Host the images on a CDN, Drive, or your own bucket, and your front end renders the link.
What if someone breaks a column?
Paid plans include schema alerts that notify you when a column HR relies on is renamed or removed, so a stray edit does not silently break the directory.
Sources
Related use cases
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.
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.
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 Testimonials Wall from a Sheet
Run a testimonials or reviews wall from a Google Sheet — names, quotes, ratings, avatars. Feature-flag which ones show over 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.