# Gotobeat — the full agent orientation file > Gotobeat (https://gotobeat.com) is a live-music ticketing platform and promoter. It lists concerts across the UK and Europe and sells the tickets itself: no resale, no markup. This file holds everything an agent needs to find a gig and buy a ticket, in one fetch. The short form is https://gotobeat.com/llms.txt. ## Entry points - Human listing: https://gotobeat.com/gig/ (upcoming), https://gotobeat.com/gig/in/ (by city), https://gotobeat.com/gig/archive/ (past) - Sitemap index: https://gotobeat.com/sitemap.xml (sections: events-upcoming, events-archive, artists, venues, content) - Agent manual: https://gotobeat.com/docs/agents/ - OpenAPI 3.1: https://gotobeat.com/openapi/agents.json - MCP server: https://mcp.gotobeat.com (OAuth 2.1). Anonymous read-only tier: POST https://mcp.gotobeat.com/public - robots.txt allows exactly these API paths: /api/events, /api/search/, /api/artists/search, /api/venues/search, /api/checkout_sessions. Every other /api/ path is internal. - Every page URL carries a trailing slash. A URL without one answers a 301. ## The public event shape Every event object that the JSON API returns is an allowlist. It carries: - eventId, slug, url (the canonical gig page), title, description (visible text, markup deleted), status (always PUBLISHED on the public surface) - date (YYYY-MM-DD), untilDate for a multi-day event, startTime, endTime, doorTime (HH:MM, venue local time); an event that hides its date omits them - hideDateTime, hideVenue (booleans) - genres[], image, ageLimit - artists[]: name, slug, image, genres[], spotifyUrl - venue: name, address, city, postcode, country, googleMapsUrl; an event that hides its venue omits it - tickets[]: sku, ticketTypeId, name, price (decimal string), currency (ISO 4217), availability (InStock | SoldOut | PreSale), releaseDate, minQuantity, maxQuantity - externalTickets[]: name, url — sellers outside Gotobeat, when the event sells through one Sales counts, revenue, coupons and operational fields never appear. Only an upcoming PUBLISHED event is visible. An unlisted event and an unknown slug answer the same 404, so the response discloses no existence signal. ## Read endpoints (no authentication) GET https://gotobeat.com/api/events?search=&cursor=&limit= Returns { events, cursor, hasMore, search?, fallbackType? }. Without search: upcoming events in date order. With search: keyword matches; when there are none the response widens to the matched artists' events, then genre matches, then top sellers, and names the widening in fallbackType (artist_events | artist_no_events | top_events). A fallback response is never paginated. GET https://gotobeat.com/api/events/ Returns { event, how_to_buy }. how_to_buy is the next step in prose. GET https://gotobeat.com/api/search/event/ Returns a bare array of public event objects. Empty keyword or failed lookup → [] with status 200. GET https://gotobeat.com/api/artists/search?keyword= Returns { success, data: [{ id, label }] }. A keyword under two characters returns an empty array. GET https://gotobeat.com/api/venues/search?keyword= Returns { success, data: [{ id, label, venueId, venueName, city, country, hiringOptionsCount }] }. ## Structured data on a gig page Each https://gotobeat.com/gig// embeds a schema.org MusicEvent in a