London Night Guide API & Agent Docs
A free, read-only, no-auth API over London Night Guide's nightlife content: venue guestlist pages, VIP table info, entry prices, dress codes and event listings. Everything below is machine-readable — start with the OpenAPI 3.1 specification or the llms.txt agent guide.
Authentication
None. Every endpoint is public and read-only — no API keys, tokens or registration. Please cache politely; markdown responses send Cache-Control: s-maxage=3600.
JSON API (v1)
Structured JSON lives under /api/v1/:
GET /api/v1/venues— every open venue: area, genre, hours, club nights, capacity, dress code, address, nearest tube, booking linksGET /api/v1/categories— all content categories with page counts and archive URLsGET /api/v1/pages/{slug}— structured metadata for any post or page: title, dates, venue facts, FAQs, and the markdown URL for the full body
Rate Limits
/api/* requests are limited to 120 per minute per client. Every response carries the RateLimit headers (RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy: 120;w=60) so agents can self-throttle; exceeding the limit returns 429 with a Retry-After header and the standard JSON error envelope. Content URLs are CDN-cached and not rate limited.
Versioning & Deprecation
Full policy page: API Versioning & Deprecation Policy. JSON endpoints are URL-path versioned (/api/v1/). The policy agents can rely on:
- Breaking changes ship as a new
/api/v2/prefix;/api/v1/keeps working for at least 90 days of overlap. - A deprecated endpoint signals it in-band with
DeprecationandSunsetresponse headers (RFC 8594) and is marked deprecated in the OpenAPI spec. - Unversioned content URLs (
/{slug}/,.mdpaths,llms.txt) are stable: fields and pages are added, never removed without the same notice.
Reading Content as Markdown
Every content URL serves clean markdown two ways:
- Content negotiation — send
Accept: text/markdownto any page URL. RFC 9110 q-values are honoured, responses carryVary: Accept, and an Accept header that allows neither HTML nor markdown returns 406. - .md paths — append
.mdto a slug:/{slug}.md,/category/{slug}.md,/tag/{slug}.md, or/index.mdfor the homepage.
Endpoints
Every operation in the OpenAPI spec carries a unique operationId, a description, typed parameters and response schemas, so the spec can be loaded directly into LLM function-calling and tool-use frameworks.
| Path | Description |
|---|---|
GET / | Homepage |
GET /{slug}/ | Post or page by slug |
GET /category/{slug}/ | Category archive |
GET /tag/{slug}/ | Tag archive |
GET /index.md | Homepage as markdown |
GET /{slug}.md | Post or page as markdown |
GET /category/{slug}.md | Category archive as markdown |
GET /tag/{slug}.md | Tag archive as markdown |
GET /llms.txt | Agent guide (llmstxt.org format) |
GET /openapi.json | This specification |
GET /sitemap.xml | XML sitemap of all indexable URLs |
GET /feed/ | RSS feed of the 50 most recent posts |
GET /api/v1/venues | Open venues as structured JSON |
GET /api/v1/categories | Content categories as structured JSON |
GET /api/v1/events | Upcoming club nights as structured JSON |
GET /api/v1/pages/{slug} | Post or page metadata as structured JSON |
GET /api | API index |
GET /api/{path} | Unknown API path |
Errors
Content URLs return real HTTP status codes: 404 and 410 bodies are markdown with recovery links, and 406 explains the supported media types. Paths under /api/ always return a structured JSON envelope:
{
"error": {
"status": 404,
"code": "not_found",
"message": "No API endpoint exists at /api/example.",
"hint": "GET https://londonnightguide.com/api for an endpoint index, ..."
}
}Making Bookings
There is no write API. Guestlist and VIP table bookings are confirmed by a human concierge, usually within the hour, and the booking forms are bot-protected. To act for a user, hand them the free guestlist form, the VIP table form or the prefilled WhatsApp link.
Examples
List every open venue as JSON (area, hours, nights, dress code, booking links)
curl https://londonnightguide.com/api/v1/venues
Structured JSON metadata for any page
curl https://londonnightguide.com/api/v1/pages/tape-club-guestlist
Fetch any page as markdown (content negotiation)
curl -H "Accept: text/markdown" https://londonnightguide.com/tape-club-guestlist/
Fetch the same page via its .md path
curl https://londonnightguide.com/tape-club-guestlist.md
Machine-readable site overview
curl https://londonnightguide.com/index.md
List every page in a category
curl https://londonnightguide.com/category/clubs.md
Structured JSON error from an unknown API path
curl https://londonnightguide.com/api/does-not-exist/
Contact
Questions about the API or integrations: concierge@londonnightguide.com
