PasteSheet icon PasteSheet logo mark — a spreadsheet grid with a curly brace on a green rounded square PasteSheet

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 department column, 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, and department for the card and filtering.
  • photo holding a headshot URL your front end renders.
  • bio for a short blurb and email or links for contact.
  • order to 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:

terminal
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.

$0 /mo
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

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.