Run a job board with listings in a Google Sheet
A job board is a list of openings people filter by role, location, and remote. PasteSheet turns a Google Sheet of listings into a live, cached JSON API with filtering, search, and pagination built in — so you launch a board and post a job by adding a row.
Last updated
Key facts
-
The Google Sheets API allows 300 read requests per minute per project and 60 per minute per user. Past that it returns
429 RESOURCE_EXHAUSTED. source - 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.
- The board holds up to 500 openings on Free and 5,000 on Starter ($9/mo); Pro ($19/mo) lifts the row cap.
- The endpoint is read-only: a candidate can filter and read openings but cannot apply through it. Point each apply link at your ATS or a form tool that owns the writes.
A job board is a spreadsheet with a search bar
Every job board is the same table underneath: a row per opening with a title, company, location, a remote flag, and a link to apply. Keeping that in a Google Sheet means anyone on your team can post a role — no CMS, no admin dashboard, no engineer in the loop.
PasteSheet serves the sheet as JSON and hands you the querying a board needs: filter by role or location, match a remote flag, full-text search the titles, sort by date, and paginate. Your front end — a static site, a Next.js app, or a Framer site — renders the openings.
Launch your board
From a sheet to a live, filterable board in four steps:
- 1 List one job per row: title, company, location, remote, salary, and an apply link.
- 2 Paste the sheet's share URL into PasteSheet to get a live endpoint — no Google Cloud project.
- 3 Fetch the endpoint from your site and wire the filters to URL parameters.
- 4 Post a new job by adding a row; close one by deleting it or flipping a status cell.
Filter openings over the API
The role, location, and remote filters your board offers are just URL parameters — combine them with search, sort, and pagination:
curl "https://pastesheet.com/your-endpoint/Jobs?remote=true&contains[role]=engineer&sort=-posted"
{
"data": [
{
"role": "Senior Backend Engineer",
"company": "Acme",
"location": "Remote (US)",
"remote": true,
"posted": "2026-07-10",
"apply_url": "https://acme.com/jobs/be-eng"
}
]
}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
Starter
For indie makers shipping a real app.
- Endpoints
- 10
- Requests / mo
- 50,000
- Row cap
- 5,000
- Full-text search
- Private endpoints & keys
- Schema-change alerts
MCP is included on the Free plan. Connect any public endpoint over MCP with no Google Cloud project and no credit card. Private endpoints and the account-wide workspace server need a paid plan (from Starter ($9/mo)) for the keys and OAuth they authenticate with.
Pro adds full-text search and aggregation (count, sum, avg, group_by) that your AI agent can call through query_rows.
Frequently asked questions
How do candidates filter jobs?
Your front end maps each filter to a URL parameter: ?remote=true for the remote toggle, ?location=Berlin or contains[role]=design for role and location, and search= for a keyword box across the listing. Sort and pagination are parameters too.
How do employers or I post a new job?
Add a row to the Google Sheet. The new opening appears on the board after the cache refreshes. To close a role, delete the row or flip a status cell — no publishing flow and no deploy.
Can applicants submit through the board?
Not through PasteSheet — it is read-only, so it serves and filters the listings but takes no writes. Point each apply link at your ATS, an email, or a form tool that owns the application submissions.
How current are the listings?
Responses are cached for speed. The Free plan refreshes every 5 minutes; paid plans let you set a custom TTL, so a fresh row goes live within your chosen window rather than on a manual rebuild.
Sources
- Usage limits — Google Sheets API — Google
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.
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.
A No-Code Backend From a Google Sheet
Skip the server. PasteSheet turns a Google Sheet into a live, read-only JSON API your web or mobile app reads from — no database, no backend, no Google setup.
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.
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.