Public Events API
Access events from 75+ cities in Europe — concerts, sports, museums, workshops & more. REST + MCP-compatible.
Try the API
Live demo — calls /api/events?city=... directly. No key needed for public search.
// Results will appear herePricing
Free
€0/mo- ✓ 100 requests/day
- ✓ JSON + GeoJSON formats
- ✓ All 75+ cities
- ✓ No credit card required
Business
€29/mo- ✓ 10,000 requests/day
- ✓ JSON + GeoJSON formats
- ✓ Real-time webhooks
- ✓ Priority support
- ✓ SLA guarantee
Quick Start
1. Create a free API key in your profile — no credit card needed.
2. Make your first request:
curl -H "X-API-Key: your_key" \
"https://explorioworld.com/api/public/events?city=Amsterdam&limit=10"You can also pass the key as a Bearer token or query param:
# Bearer header (recommended)
curl -H "Authorization: Bearer exp_live_..." \
"https://explorioworld.com/api/public/events?city=Amsterdam&limit=10"
# Query param
curl "https://explorioworld.com/api/public/events?key=exp_live_...&city=Amsterdam&limit=10"SDK Snippets
curl -H "X-API-Key: exp_live_..." \
"https://explorioworld.com/api/public/events?city=Amsterdam&category=workshop&limit=10"GET/api/public/events
Returns upcoming events matching your filters — concerts, sports, workshops, museums and more. Requires API key authentication.
Query parameters
| Param | Type | Default | Description |
|---|---|---|---|
| city | string | — | City name (e.g. Amsterdam, Brussels, Bucharest) |
| country | string | — | ISO 2-letter country code (NL, BE, RO, FR, DE, GB…) |
| category | string | — | Event category — see category list below |
| date_from | ISO date | today | Start date filter (e.g. 2026-05-01) |
| date_to | ISO date | — | End date filter (e.g. 2026-05-31) |
| limit | integer | 20 | Max results (1–100) |
| offset | integer | 0 | Pagination offset |
| lat | number | — | Latitude for geo-radius filtering |
| lng | number | — | Longitude for geo-radius filtering |
| radius | number | — | Radius in km (requires lat + lng) |
| format | string | json | "json" or "geojson" — for map-ready output |
Example response
{
"data": [
{
"id": 1042,
"title": "Kids Science Workshop",
"description": "Hands-on experiments for curious kids aged 6-12.",
"category": "workshop",
"startDate": "2026-05-10T10:00:00.000Z",
"endDate": "2026-05-10T12:00:00.000Z",
"city": "Amsterdam",
"country": "NL",
"venue": "NEMO Science Museum",
"address": "Oosterdok 2, 1011 VX Amsterdam",
"latitude": 52.3738,
"longitude": 4.9123,
"price": "€12",
"currency": "EUR",
"imageUrl": "https://...",
"sourceUrl": "https://nemo.nl/...",
"ageMin": 6,
"ageMax": 12,
"isFamily": true,
"tags": "["science","hands-on","indoor"]",
"timezone": "Europe/Amsterdam",
"url": "https://explorioworld.com/events/1042"
}
],
"meta": {
"limit": 10,
"offset": 0,
"count": 1,
"hasMore": false
}
}GeoJSON format
Add ?format=geojson for map-ready output (Mapbox, Leaflet, etc.):
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": { "type": "Point", "coordinates": [4.9123, 52.3738] },
"properties": {
"id": 1042,
"title": "Kids Science Workshop",
"category": "workshop",
"startDate": "2026-05-10T10:00:00.000Z",
"city": "Amsterdam",
"venue": "NEMO Science Museum",
"price": "€12",
"url": "https://explorioworld.com/events/1042"
}
}
]
}GET/api/public/events/:id
Get full details for a specific event by its numeric ID, including related events from the same city.
curl -H "X-API-Key: your_key" \
"https://explorioworld.com/api/public/events/1042"Example response
{
"event": {
"id": 1042,
"title": "Kids Science Workshop",
"description": "Hands-on experiments for curious kids aged 6-12.",
"category": "workshop",
"startDate": "2026-05-10T10:00:00.000Z",
"endDate": "2026-05-10T12:00:00.000Z",
"city": "Amsterdam",
"country": "NL",
"venue": "NEMO Science Museum",
"address": "Oosterdok 2, 1011 VX Amsterdam",
"latitude": 52.3738,
"longitude": 4.9123,
"price": "€12",
"url": "https://explorioworld.com/events/1042"
},
"related": [ ... ]
}MCP Server
The MCP (Model Context Protocol) endpoint at /api/mcp allows Claude and other AI agents to discover events, venues, and build itineraries via JSON-RPC 2.0.
| Tool | Description |
|---|---|
| search_events | Search by city, category, age, date, free_only |
| get_event | Full event details by ID |
| search_attractions | Permanent venues (museums, parks, playgrounds, pools, zoos) |
| get_attraction | Full venue details by ID |
| get_cities | List all cities with event counts |
| search_circuits | Multi-day curated travel itineraries |
| search_journals | User travel stories and diaries |
| create_plan | Build a shareable day plan from event IDs |
| ask_ai | Natural language queries (e.g. 'free outdoor events for toddlers') |
| list_categories | List all valid category values |
| list_tools | Discover available tools and their parameters |
Add to Claude Desktop
{
"mcpServers": {
"explorio": {
"url": "https://explorioworld.com/api/mcp",
"transport": "http"
}
}
}Or via CLI:
claude mcp add explorio --transport http https://explorioworld.com/api/mcpRaw JSON-RPC example
curl -X POST https://explorioworld.com/api/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "search_events",
"arguments": { "city": "Amsterdam", "category": "workshop", "limit": 5 }
},
"id": 1
}'Webhooks (B2B)
Register a webhook URL to receive real-time notifications when new events are ingested in your city/category. Requires a Business API key.
Register a webhook
curl -X POST https://explorioworld.com/api/keys/webhooks \
-H "Authorization: Bearer exp_live_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-server.com/webhooks/explorio",
"secret": "whsec_your_signing_secret",
"events": ["event.created"]
}'Webhook payload
{
"event": "event.created",
"timestamp": "2026-05-01T08:00:00.000Z",
"data": {
"id": 1099,
"title": "Summer Jazz Festival",
"city": "Brussels",
"country": "BE",
"category": "concert",
"startDate": "2026-07-15T19:00:00.000Z",
"venue": "Atomium Park",
"price": "Free",
"url": "https://explorioworld.com/events/1099"
}
}Verify the signature
Each request includes an X-Webhook-Signature header. Verify it using HMAC-SHA256:
const crypto = require("crypto");
function verifyWebhook(payload, signature, secret) {
const expected = crypto
.createHmac("sha256", secret)
.update(payload)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}Event Categories
workshopconcerttheatersportsmuseumfestivalclassshowpoolparknaturerestaurantfarmcircusoperacinemaplaygroundindoor-playRate Limits & Headers
| Tier | Requests/day | Formats | Webhooks |
|---|---|---|---|
| Free | 100 | JSON, GeoJSON | — |
| Business | 10,000 | JSON, GeoJSON | Yes |
Every response includes rate-limit headers:
| Header | Description |
|---|---|
| X-RateLimit-Limit | Your daily request limit |
| X-RateLimit-Remaining | Requests remaining today |
| X-RateLimit-Reset | ISO timestamp when the counter resets |
| X-API-Version | API version (currently 1) |
| Retry-After | Seconds to wait after a 429 response |
When rate limited, the response is 429. Upgrade to Business for 10,000 requests/day.
Error Codes
| HTTP | Code | Cause |
|---|---|---|
| 400 | INVALID_PARAM | Bad query parameter (invalid date, limit out of range, etc.) |
| 401 | UNAUTHORIZED | Missing, invalid, or expired API key |
| 404 | NOT_FOUND | Event or resource not found |
| 429 | RATE_LIMIT_EXCEEDED | Daily request quota reached — check Retry-After header |
| 500 | INTERNAL_SERVER_ERROR | Unexpected server error — please retry |
Other Endpoints (public, no key required)
| Endpoint | Description |
|---|---|
| GET /api/events | Search events (city, category, q, mood, age, date, sort) |
| GET /api/events/[id] | Event detail + related events |
| GET /api/attractions | Search permanent venues (city, category, q, age) |
| GET /api/attractions/[id] | Venue detail + related events |
| GET /api/cities | List all cities with event counts |
| GET /api/events/surprise | Random event (city, ageMin, ageMax) |
| GET /api/circuits | List travel circuits (city, limit) |
| GET /api/journals | List travel journals (city, limit) |
| GET /api/mcp | MCP server discovery + tool list |