Get showtimes
GET/showtimes
Get a paginated list of showtimes.
Parameters
-
pageintegerin query -
Page offset to fetch.
Default:
1. -
itemsintegerin query -
Number of items to return per page.
Default:
20. -
cursorstringin query -
Use cursor pagination. Send an empty
cursorfor the first page. Then sendmeta.next_cursorfrom each response ascursor. Whennext_cursorisnull, you have all the results.Showtimes that are added or removed do not affect the cursor. But if the
showing_atof a showtime changes, you can get that showtime two times or not at all.With a cursor,
metahasnext_cursorand notpage, and the API ignores thepageparameter. -
countrystringin query -
Get results only for these countries: comma-separated ISO 3166-1 alpha-2 codes, for example
IEorGB,IE. Without it, you get all the countries that your key includes. A country that your key does not include gives 403. A country that the API does not serve gives 400.GET /countrieslists both. -
cinema_idintegerin query -
Filter by a specific cinema.
-
film_idintegerin query -
Filter by a specific film: returns the showtimes whose
film_idsinclude it. -
tmdb_idintegerin query -
Filter by a film's TMDB ID: returns the showtimes whose
film_idsinclude it. -
imdb_idstringin query -
Filter by a film's IMDB ID: returns the showtimes whose
film_idsinclude it. -
fromstringin query -
Get only the showtimes that start at or after this time. Use ISO 8601, for example
2027-11-10T18:00:00+00:00. If the value has no offset, the time is in the time zone of the cinema, as in showing_at. A date with no time is midnight. -
tostringin query -
Get only the showtimes that start before this time (see from).
tomust be later thanfrom. -
latitudenumberin query -
Latitude of the center of the search, in decimal degrees. Send it with
longitudeandradius_km. If you send one of these three parameters, you must send all three. -
longitudenumberin query -
Longitude of the center of the search, in decimal degrees (see latitude).
-
radius_kmnumberin query -
Get results only for cinemas in this distance from
latitudeandlongitude, in kilometres. The distance is the great-circle distance to the cinema. The value must be more than 0 and not more than 100 (see latitude). -
attributesstringin query -
Get only the showtimes that have all of these attributes: comma-separated IDs from
GET /attributes, for exampleimaxorimax,dolby-atmos. An unknown ID gives 400. A request that reads a country where your key has lite gives 403, because attribute codes are not included on that plan.
Response
200 Returns showtimes with pagination metadata. (ShowtimesResponse)
Errors: 400, 401, 403, 429, 500
400Bad request – e.g. an invalid cursor, a country the API does not serve, a filter that is not valid, or a query parameter that the endpoint does not have. The message names the parameter.401Unauthorized – the request requires valid authentication.403Forbidden – authentication succeeded but access is denied (e.g., expired subscription, or a country your key does not include).429Too Many Requests – the limit is 5 requests per second for a Pro key. A key with Ultra in one or more countries has 20. A key with Lite in all its countries has 1, and 1000 requests each day. The day starts at 00:00 UTC. The limit is for the key, not for each country. The error message gives the limit that applied.500Internal Server Error – something went wrong on our end.
curl -H "Authorization: Bearer YOUR_API_TOKEN" "https://uk-cinema-api.co.uk/api/v4/showtimes"
const response = await fetch("https://uk-cinema-api.co.uk/api/v4/showtimes", {
headers: { Authorization: "Bearer YOUR_API_TOKEN" },
})
const body = await response.json()
import requests
response = requests.get(
"https://uk-cinema-api.co.uk/api/v4/showtimes",
headers={"Authorization": "Bearer YOUR_API_TOKEN"},
)
body = response.json()
require "json"
require "net/http"
response = Net::HTTP.get_response(
URI("https://uk-cinema-api.co.uk/api/v4/showtimes"),
{"Authorization" => "Bearer YOUR_API_TOKEN"}
)
body = JSON.parse(response.body)
{
"meta": {
"page": 1,
"per_page": 20,
"total_count": 156310
},
"data": [
{
"id": 24768133,
"cinema_id": 495,
"film_ids": [
496804583
],
"showing_at": "2026-03-08T20:40:00+00:00",
"booking_link": "https://www.odeon.co.uk/ticketing/seat-picker/?showtimeId=155-12801",
"film_page_link": null,
"sold_out": false,
"last_seen_at": "2026-03-08T06:05:00+00:00",
"chain": "odeon_gb",
"latitude": 51.5104,
"longitude": -0.1293,
"on_sale_from": "2025-12-11T02:04:41+00:00",
"on_sale_from_verified": false,
"auditorium": "2",
"attribute_codes": [
"imax"
],
"screening_language": "eng",
"subtitle_language": null,
"country": "GB",
"currency": "GBP"
},
{
"id": 28324938,
"cinema_id": 1231,
"film_ids": [
579248882
],
"showing_at": "2026-08-20T20:00:00+01:00",
"booking_link": null,
"film_page_link": "https://lyntoncinema.co.uk/movie/details/69a99274a0b75565827e2f43",
"sold_out": false,
"last_seen_at": "2026-08-20T07:42:00+01:00",
"chain": "lynton_cinema",
"latitude": 51.230407,
"longitude": -3.83687,
"on_sale_from": "2026-08-19T22:07:26+01:00",
"on_sale_from_verified": false,
"auditorium": null,
"attribute_codes": [],
"screening_language": "eng",
"subtitle_language": null,
"country": "GB",
"currency": "GBP"
}
]
}