{"name":"nfbio proxy API","description":"Read-only, cached copy of Nordisk Film Biografer (nfbio.dk) cinemas, screenings (showtimes) and movies in Denmark. Refreshed from nfbio.dk every 5 minutes. Open, no authentication; rate limited to 60 requests per minute per IP.","documentation":{"openapi":"https://screenings.nfbio.dev/openapi.json","llms":"https://screenings.nfbio.dev/llms.txt"},"endpoints":[{"path":"/v1/cinemas","summary":"All cinemas (id, name, address) with the path to each cinema's screenings.","useFor":"Finding a cinema id, or listing cinemas by city.","url":"https://screenings.nfbio.dev/v1/cinemas"},{"path":"/v1/cinemas/{cinemaId}/screenings","summary":"One cinema and its upcoming screenings, sorted by start time.","useFor":"What's on at one cinema, on a given day, with seats left and a ticket link.","url":"https://screenings.nfbio.dev/v1/cinemas/{cinemaId}/screenings"},{"path":"/v1/screenings","summary":"Every screening from every cinema plus the cinema list in one large response.","useFor":"Bulk import of the full schedule. Prefer the per-cinema endpoint for single lookups.","url":"https://screenings.nfbio.dev/v1/screenings"},{"path":"/v1/movies","summary":"Every movie with at least one screening: title, IMDb id, poster, runtime, description, age rating, trailers.","useFor":"Resolving a screening's movieId to movie details.","url":"https://screenings.nfbio.dev/v1/movies"},{"path":"/v1/health","summary":"Status of the last refresh from nfbio.dk. Not cached.","useFor":"Monitoring. Returns 503 if data is more than 15 minutes old.","url":"https://screenings.nfbio.dev/v1/health"}],"notes":["Screenings reference movies by movieId; look them up in /v1/movies.","Dates and times are Danish local time (Europe/Copenhagen); startTime/endTime are ISO 8601 with offset.","capacity, audience and seatsLeft exclude wheelchair seats. seatsLeft = capacity - audience, never below 0.","Responses are cached until the next refresh. ETags are supported (If-None-Match returns 304).","Over the rate limit the API returns 429 with Retry-After: 60."],"refreshIntervalMinutes":5}