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

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

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 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, or a no-code builder — 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 searchable by name or role.
  • Curated resource lists, link hubs, and community rosters.
  • Local listings like a property directory 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:

terminal
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

For side projects and trying things out.

$0 /mo
Endpoints
3
Requests / mo
2,000
Row cap
500
  • Full-text search
  • Type-mapped columns
  • Private endpoints & keys

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

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.