Docs
Search
curl "https://api.thingstodoapi.com/v1/search?q=jazz+this+weekend+in+oakland" \ -H "authorization: Bearer $EVENTS_API_KEY"
Time and place can be in the words. Or pass them:
q | Plain words |
from, to | ISO 8601. Default: the next 30 days |
place | A city or neighborhood |
lat, lng, km | A point and radius |
category | music, arts, social, festival, market, popup, supper_club, exhibition, class, sports |
limit, offset | Up to 50 per page |
Event
id, title, category | |
starts_at, ends_at | UTC |
local | Date, time and timezone. Time is null when unknown |
venue | Name, address, neighborhood, city, coordinates |
summary, tags, price | |
links | Tickets, and where it was announced |
match | Score and what matched |
GET /v1/events/{id} returns one event. OpenAPI.
MCP
claude mcp add --transport http thingstodo https://api.thingstodoapi.com/mcp/YOUR_KEY
Other clients:
{ "mcpServers": { "thingstodo": { "url": "https://api.thingstodoapi.com/mcp/YOUR_KEY" } } }
Tools: search_events, get_event, list_coverage.
Keys and limits
Make an account for a free key. The console shows your usage, makes and revokes keys, and changes your plan. Send the key as Authorization: Bearer.
| No key | 50 a day, 10 a minute |
| Free | 1,000 queries a month, 60 a minute |
| Builder | 50,000 queries a month, 300 a minute |
| Growth | 500,000 queries a month, 1,200 a minute |
| Enterprise | Any volume, Any rate |
Over a limit is a 429 with a Retry-After header. error says which: rate_limited (too many a minute) or quota_exceeded (none left this month, or today without a key). X-RateLimit-Remaining counts what is left this period.
Questions
What is the Things To Do API?
An API for what is on: shows, concerts, pop-ups, markets, parties and more, at a place and a time. Ask in plain words over REST or MCP and get events back as JSON.
Where does it cover?
The San Francisco Bay Area: San Francisco, Oakland, Berkeley, Alameda and nearby. New York City and Los Angeles are next.
How do I use it with Claude or another AI assistant?
Add it as an MCP server. In Claude Code: claude mcp add --transport http thingstodo https://api.thingstodoapi.com/mcp/YOUR_KEY. Any MCP client takes the same URL.
How much does it cost?
Free for 1,000 calls a month. Builder is $49 a month for 50,000 calls and Growth $299 a month for 500,000. Without a key you get 50 calls a day.
How fresh are the events?
Sources are read through the day and the search index updates every ten minutes. Every event links to where it was announced or sold.