# Build a directory or listing site from a Google Sheet

A directory is just a table people want to search and filter. PasteSheet turns a Google Sheet full of listings into a live, cached JSON API with built-in filtering, search, and pagination — so you build a tools directory, member list, or resource hub without a database or a backend.

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

## 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 directory is capped by plan, not by the sheet: **500 listings on Free**, **5,000 on Starter ($9/mo)**, and no row cap on **Pro ($19/mo)**.
- Full-text `search=` is a **Pro ($19/mo)** feature. Exact-match filters, `contains`, sorting and pagination — enough for a category-filtered directory — work on every plan, including Free.
- 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.

## Why a spreadsheet is the right shape for a directory

A directory site is a list of things — tools, members, agencies, resources — each with a handful of fields and a category. That is a spreadsheet, exactly. Your contributors already know how to add a row, and you avoid building an admin panel just to manage entries.

PasteSheet serves that sheet as clean JSON and gives you the querying a directory needs out of the box: exact-match filters for categories, partial matching and full-text search for the search bar, sorting, and pagination. Your front end — plain HTML, a [Next.js app](https://pastesheet.com/use-cases/google-sheets-nextjs-data), or a [no-code builder](https://pastesheet.com/use-cases/google-sheets-webflow) — renders the results.

## Directories people build this way

One tab is one directory; add columns for the fields and filters you want to expose:

- Tool and software directories with category and pricing filters.
- [Member and team directories](https://pastesheet.com/use-cases/google-sheets-team-directory) searchable by name or role.
- Curated resource lists, link hubs, and community rosters.
- Local listings like a [property directory](https://pastesheet.com/use-cases/google-sheets-real-estate-listings) or vendor list.

## Filter and search listings over the API

Everything a directory UI needs is a URL parameter — filter by column, partial-match, full-text `search`, sort, and paginate:

```bash
curl "https://pastesheet.com/your-endpoint/Listings?category=Design&search=free&per_page=20"

{
  "data": [
    {
      "name": "Figma",
      "category": "Design",
      "pricing": "Freemium",
      "url": "https://figma.com",
      "tags": "ui, prototyping, free"
    }
  ]
}
```

## 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.** The Free plan runs 3 live endpoints with a 5-minute cache — plenty for a launch directory. As it grows, Pro adds full-text search for a proper search bar, and paid plans add private endpoints and type-mapped columns.

## Frequently asked questions

### How do visitors search and filter the directory?

Your front end passes URL parameters to the API: ?category=Design for an exact filter, contains[name]=fig for partial matches, and search= for full-text search across the row. Sorting and pagination are parameters too.

### How do I add or update a listing?

Edit the Google Sheet. Add a row for a new listing or change a cell to update one, and the directory reflects it after the cache refreshes — no deploy and no CMS login for your contributors.

### Can contributors edit without a PasteSheet account?

Yes. Only you connect the sheet once. Anyone you share the Google Sheet with can add or edit listings as normal, and the API serves their changes after the next cache refresh.

### Will the API scale to a large directory?

Yes. Responses are cached, and query_rows-style filtering, search, and pagination let your front end pull just the page of listings it needs rather than the whole sheet on every request.

## Sources

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

## Related use cases

- [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.
- [Run a Job Board From a Google Sheet](https://pastesheet.com/use-cases/google-sheets-job-board) — Post jobs from a spreadsheet. PasteSheet publishes your listings as a live, read-only JSON API, filterable by role, location, and remote — no backend needed.
- [Real Estate Listings from Google Sheets](https://pastesheet.com/use-cases/google-sheets-real-estate-listings) — Publish real-estate listings from a Google Sheet and filter by price, beds, or location over a live, read-only JSON API — no backend to build.
- [Serve a Product Catalog from Google Sheets](https://pastesheet.com/use-cases/google-sheets-product-catalog) — Power a product catalog from a Google Sheet. PasteSheet serves products, prices, and stock as a live, read-only JSON API — 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-directory-website>
