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:
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.
- 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
Build a Team Directory from a Sheet
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
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
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
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.
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.