Hand this to your agent.
Paste the setup prompt into Claude Code, Cursor or Codex. It asks you for a key, then connects over MCP or calls the REST API from your server code.
MCP serverapp.openplacesapi.com/mcp
REST endpointapi.openplacesapi.com/v1/places
AuthOne server-side bearer key
Free plan10,000 searches a month, no card
ResultsYours to cache, store and keep
setup-prompt.md
Set up Open Places API in this project. It is place search
(businesses, landmarks, venues) near a point, on open
Overture data, over MCP or REST.
1. Ask me for an API key. I create one at
https://app.openplacesapi.com (Google or GitHub sign-in,
10,000 free searches a month). Don't sign up yourself.
2. Store it as OPA_KEY in server-side config only. Never put it
in browser code, a public repo, logs or a prompt.
3. If you support MCP, add the hosted server:
claude mcp add --transport http openplacesapi \
https://app.openplacesapi.com/mcp \
--header "Authorization: Bearer $OPA_KEY"
Tools: search_places, list_categories.
4. Otherwise call REST from server code:
GET https://api.openplacesapi.com/v1/places
?q=coffee&lat=40.7411&lon=-73.9897
Authorization: Bearer $OPA_KEY
Contract: https://openplacesapi.com/openapi.yaml
5. Find category slugs with list_categories (or
GET /v1/categories) instead of guessing. It's free.
6. You may cache and store results, subject to the open-data
licenses: https://openplacesapi.com/data-rights
7. On 402 quota_exhausted, stop and tell me. On 429 or 503,
wait Retry-After seconds, then retry.
Everything else: https://openplacesapi.com/llms.txt Every answer is a plain file.
Agents read these directly. They share the site's source data and documentation.
| File | What it answers |
|---|---|
| /coverage.md | Places per country and per city, with density and confidence. |
| /coverage.json | The same coverage facts and per-category counts, as structured data. |
| /llms.txt | What Open Places is, what it isn't, and where everything else lives. |
| /openapi.yaml | The REST contract: parameters, response fields, errors. |
| /pricing.md | Plans, limits and what happens at the cap, as a table. |
| /agents.md | This guide, including tool arguments and responses. |
| /setup-prompt.md | The setup prompt, ready to paste into a coding agent. |
| /docs.md | The quickstart. Add .md to any docs page URL, for example /docs/reference.md. |
| /.well-known/agent-skills/open-places-search/SKILL.md | A skill file coding agents can load to search places well. |
| /auth.md | How keys work, and why an agent can't sign up on its own. |
| /.well-known/mcp/server-card.json | The MCP server's address, transport and tools. |
Two tools. Plain arguments.
search_places
Places near a point, by text, category or both. One search against your quota.
lat, lonRequired. The search center.qFree text: "ramen", "Blue Bottle", "pharmacy". Required unless category is supplied. At least 3 searchable characters, or 2 contiguous CJK characters.categoryAn exact slug, like coffee_shop or food_and_drink. Use list_categories to find it.radius_miUp to 50. Default 25.limitUp to 20 for text, 50 with a category. Default 10.offsetCategory browse only. offset + limit ≤ 1000. Follow meta.next_offset.min_confidenceSource confidence from 0 to 1; no default threshold.sortrelevance (default) or distance.modeall (default), name or address. Address mode needs at least 4 searchable characters.list_categories
The right slug for "ev charging" or "hardware store". Free; no key, no quota.
qWords describing the kind of place. Omit to list every category.limitUp to 100 matches. Default 20. Ignored without q.Responses to handle
402quota_exhausted: stop and tell the user. Upgrade or buy a top-up; never retry in a loop.429rate_limited: 120 a minute, 8 in flight per account. Wait Retry-After.503coverage_not_ready: wait Retry-After, then retry.WarningsRead meta.warnings for unknown_category suggestions, relaxed or inferred queries, nearby matches outside the radius and pagination limits. See /docs/errors.Prices an agent can read.
So "which plan do I need for 50,000 searches a month?" gets a right answer without a screenshot.
# Open Places pricing Checked 2026-11-10 · Currency: USD · Billing: monthly or yearly | Plan | Searches/month | Monthly | Yearly | Layer entries | |---|---:|---:|---:|---:| | Free | 10,000 | $0 | — | 250 | | Indie | 30,000 | $19 | $190 | 1,000 | | Startup | 100,000 | $49 | $490 | 5,000 | | Business | 1,000,000 | $249 | $2,490 | 50,000 | | Scale | Over 1,000,000 | Custom | Custom | Custom | ## At the cap No overages. Requests past the quota return HTTP 402 quota_exhausted. Top-ups are one-time, current period only. Unused calls move with a mid-month upgrade. | Top-up | Calls | Price | Plans | |---|---:|---:|---| | 30k | 30,000 | $29 | Free, Indie | | 100k | 100,000 | $30 | Startup, Business | | 1M | 1,000,000 | $150 | Startup, Business | All plans include MCP and REST, global Overture coverage and results you may store under the source licenses. Free needs no card. Sign up with Google or GitHub at https://app.openplacesapi.com/signup. Full plan terms: https://openplacesapi.com/pricing Data rights: https://openplacesapi.com/data-rights