Contents

Schemas

Every object the API returns, and each of its fields. A field marked optional can be missing from a response; a field that can be null says so.

ChainEnum

The identifier of a cinema chain. GET /chains lists the chains in the countries that your key includes.

string, one of 324 values:

Show all 324

abbey_abingdon, aberystwyth_arts_centre, abbeygate_cinema, act_one_cinema, aldeburgh_cinema, alnwick_playhouse, apollo_leisure, arc_cinema, arthouse_crouch_end, ashford_cinema, baker_street_abergavenny, barbican, beam_hertford, bijou_southport, birks_cinema, bishop_auckland_town_hall, bfi, bonington_theatre, breweryarts, broadway, broadway_douglas, broadway_letchworth, brynamman_cinema, brunswick_movie_bowl, buncrana_cinema, buxton_opera_house, campbeltown_picture_house, campus_west, castle_cinema, castle_theatre, cellb, central_cinema_fakenham, century_cinemas, chalmers_group, chapter, chiswick_cinema, dorking_halls, chichester_cinema, chipping_norton_theatre, cine_lumiere, cinebowl, cinema_co, cinema_killarney, cinema_museum, cinemac, cinemax_bantry, clonakilty_park_cinema, close_up_film_centre, commodore_cinema, commodore_ryde, cork_film_festival, corn_exchange, corn_exchange_newbury, cineworld, coliseum_brecon, courtyard, cromarty_cinema, cross_hands_cinema, cultplex, cube_cinema, curzon, curzon_clevedon, customs_house, dartington, david_lean_cinema, derby_quad, dominion_cinema, dukeslancaster, dundee_contemporary_arts, east_coast_cinema, eastgate_theatre, eclipse_cinemas, eden_court, electric_cinema, elite_ashbourne, em_forster_theatre, electric_palace, electric_palace_cannock, electric_palace_hastings, exeter_phoenix, plymouth_arts_cinema, glasgow_science_centre_imax, empire_consett, empire_holyhead, empire_sandwich, empire_theatre, everyman, eye_cinema, farnham_maltings, festival_drayton_centre, filmhouse, firstsite, flower_bowl, fraser_centre, forum_bridlington, forum_hexham, futurist_cinema, gaiety_cinema, gala_durham, galeri_caernarfon, hebden_bridge, helensburgh_cinema, garden_cinema, genesis_cinema, glasgow_film_theatre, gloucester_guildhall, grove_theatre, gulbenkian_cinema, gwyn_hall, hailsham_pavilion, heart_of_hawick, hpph, highland_cinema, hippodrome_cinema, home_mcr, ica, irish_film_institute, jam_jar_cinema, junction_goole, jw3, kavanagh_cinema, imc_cinema, ilkley_cinema, keswick_alhambra, kiln_theatre, king_street, kings_cinema_newmarket, kings_lynn_corn_exchange, kirkgate_arts, kinema_in_the_woods, kino_cinema, kino_digital, kino_teatr, lanternhouse_cinema, las_portree, leatherhead_theatre, leigh_film_factory, leiston_film_theatre, lewes_depot, libanus_1877, lexi_cinema, mallard_cinema, malt_cinema, maltings_berwick, maona_cinema, market_pavilion, marina_theatre, market_hall_cinema, lonsdale_alhambra, lonsdale_annan, magic_lantern, lowther_pavilion, light_house_cinema, lighthousepoole, living_room_cinema, loewen_cinema, ludlow_assembly_rooms, lumiere, macrobert_arts_centre, malvern_theatres, lynton_cinema, malton_palace, mayo_movie_world, merlin, metro_cinema, midlands_arts_centre, mk_gallery, mockingbird, monmouth_savoy, montrose_playhouse, moray_playhouse, movie_starr, movie_house, movies_at, neo_cinema_woolacombe, new_picture_house, newcastle_community_cinema, newlyn_filmhouse, nickel_cinema, newton_stewart_cinema, northampton_filmhouse, northern_light, northern_morris, nova_cinema, number_30_huntly, number_8_pershore, odeon_gb, odeon_ie, old_market_hall, odyssey_cinema, totnes_cinema, omniplex, olympic_studios, orion, oxford_cinema, palace_broadstairs, palace_cinderford, palace_douglas, palace_haverfordwest, palace_cinemas, parade_cinema, parkway_cinemas, peckhamplex, pdj_cinemas, penarth_pier_pavilion, penistone_paramount, phoenix_cinema, phoenix_leicester, piccadilly_leicester, pickaquoy, picturedrome, picturehouse, plaza_cinema, pontardawe_arts_centre, pontio, regal_evesham, regal_fordingbridge, regal_melton, regal_stowmarket, regal_tenbury, regent_centre, regent_cinema, regent_newtown, regent_street_cinema, rex, rosehill_theatre, rex_wareham, rex_wilmslow, rheged, ritz, ritz_cookstown, ritz_thirsk, ritz_workington, the_riverside, theatr_gwaun, tower_cinema, towner_cinema, prince_charles, queens_film_theatre, rct_theatres, reading_biscuit_factory, rebel_cinema, red_carpet_cinema, reel, rich_mix, rio_burnham, rio_cinema, riverfront_newport, riverside_studios, robert_burns_centre, rooftop_cinema_club, roses_theatre, roxy_movies, royal_faversham, royal_spa_centre, royalty_bowness, saffron_screen, sandb, sandpit_theatre, savoy, scala_ilkeston, science_and_media_museum, science_museum_imax, savoy_heaton_moor, scott_cinema, scotsman_group, shaftesbury_arts_centre, sherborne_cinema, sheringham_little_theatre, shetlandarts, showcase, showroom_cinema, silver_screen_folkestone, south_holland_centre, southhill_park, sjt, st_georges_theatre, spey_valley_cinema, stag_theatre, stamford_arts_centre, star_and_shadow, station_cinema, stella_cinema, storyhouse, taliesin_arts_centre, tavistock_wharf, the_arzner, the_atrium, the_devlin, the_film_place, the_flavel, the_light, theatr_clwyd, theatr_colwyn, theatr_mwldan, the_poly, the_reel_picture, the_w_cinema, tipperary_excel, torch_theatre, triskel_christchurch, tyneside, uckfield_picture_house, upp, vault_cinema, vue, warwick_arts_centre, watermans, watershed, wellington_orbit, wells_film_centre, wem_town_hall, west_coast_cinemas, wetherby_cinema, weymouth_pavilion, windmill_cinema, winter_garden_bute, wtw_cinema, worthing_theatres, wotton_electric_picture_house, wyeside, wyllyotts_theatre, york_student_cinema, zeffirellis

CountryEnum

ISO 3166-1 alpha-2. GB is the whole United Kingdom, Northern Ireland included; IE is the Republic of Ireland.

string, one of 2 values:

GB, IE

CurrencyCode

ISO 4217: GBP in the United Kingdom, EUR in the Republic of Ireland.

string

MetaInfo

Information about a list: the total count, and the page or the cursor.

page integer optional

Current page number

per_page integer optional

The number of items on each page (see the items parameter).

total_count integer

Total number of items across all pages

next_cursor string or null optional

Opaque cursor for the next page, or null on the last page. Present only when the request used cursor pagination. Pass it back as cursor to fetch the next page.

Example
{
  "page": 1,
  "per_page": 20,
  "total_count": 562
}

Cinema

One cinema venue.

id integer · int32

Our identifier for the cinema.

chain ChainEnum

The identifier of a cinema chain. GET /chains lists the chains in the countries that your key includes.

name string

The name of the cinema. At a chain, it is often only the location, for example "London West End".

address string

The postal address of the cinema, on one line.

latitude number · float

The latitude of the cinema, in decimal degrees.

longitude number · float

The longitude of the cinema, in decimal degrees.

google_place_id string or null

The Google Maps place ID of the cinema. Null if we do not know it.

closed boolean

Whether the cinema is permanently closed.

country CountryEnum

ISO 3166-1 alpha-2. GB is the whole United Kingdom, Northern Ireland included; IE is the Republic of Ireland.

currency CurrencyCode

ISO 4217: GBP in the United Kingdom, EUR in the Republic of Ireland.

Example
{
  "id": 495,
  "chain": "odeon_gb",
  "name": "London West End",
  "address": "38 Leicester Square, London, WC2H 7DX",
  "latitude": 51.5104,
  "longitude": -0.1293,
  "link": "https://www.odeon.co.uk/cinemas/london-west-end",
  "google_place_id": "ChIJc2nSALkEdkgRkuoJJBfzkUI",
  "closed": false,
  "country": "GB",
  "currency": "GBP"
}

CinemasResponse

A page of cinemas.

meta MetaInfo

Information about a list: the total count, and the page or the cursor.

data array of Cinema

The cinemas on this page.

Example
{
  "meta": {
    "page": 1,
    "per_page": 20,
    "total_count": 562
  },
  "data": [
    {
      "id": 495,
      "chain": "odeon_gb",
      "name": "London West End",
      "address": "38 Leicester Square, London, WC2H 7DX",
      "latitude": 51.5104,
      "longitude": -0.1293,
      "link": "https://www.odeon.co.uk/cinemas/london-west-end",
      "google_place_id": "ChIJc2nSALkEdkgRkuoJJBfzkUI",
      "closed": false,
      "country": "GB",
      "currency": "GBP"
    }
  ]
}
Show all 22 lines

Chain

A cinema chain. A chain has one or more cinemas.

id ChainEnum

The identifier of a cinema chain. GET /chains lists the chains in the countries that your key includes.

name string

The name of the chain, for example "Picturehouses".

cinemas_count integer · int32

Number of cinemas belonging to this chain in the countries the request reads.

Example
{
  "id": "arc_cinema",
  "name": "Arc Cinema",
  "cinemas_count": 8
}

ChainsResponse

All the chains in the countries that the request reads.

meta MetaInfo

Information about a list: the total count, and the page or the cursor.

data array of Chain

The chains.

Example
{
  "meta": {
    "total_count": 51
  },
  "data": [
    {
      "id": "arc_cinema",
      "name": "Arc Cinema",
      "cinemas_count": 8
    }
  ]
}

Film

A film. A showtime names its films by id (see Showtime).

id integer · int32

Our identifier for the film.

title string

The title of the film.

original_title string

The title of the film in its original language.

events_count integer · int32

Approved showtimes in the countries the request reads. In a country where your key has lite, only the showtimes at the cinemas that you chose.

imdb_id string or null

The IMDb identifier of the film, for example "tt0133093". Null if we do not know it.

tmdb_id integer or null

The TMDB identifier of the film. Null if we do not know it.

release_year integer or null

The year of the first release of the film. Null if we do not know it.

runtime integer or null

The length of the film, in minutes. Null if we do not know it.

original_language string or null

The language that the film is spoken in, as an ISO 639-3 code, for example eng or deu. Compare it with the screening_language of a showtime to see if the showtime is in the original language. Null if we do not know the language, and for a film that has no dialogue.

Example
{
  "id": 296557755,
  "title": "Scream 7",
  "original_title": "Scream 7",
  "events_count": 17308,
  "imdb_id": "tt27047903",
  "tmdb_id": 1159559,
  "release_year": 2026,
  "runtime": 114,
  "original_language": "eng"
}

FilmsResponse

A page of films.

meta MetaInfo

Information about a list: the total count, and the page or the cursor.

data array of Film

The films on this page.

Example
{
  "meta": {
    "page": 1,
    "per_page": 20,
    "total_count": 1116
  },
  "data": [
    {
      "id": 296557755,
      "title": "Scream 7",
      "original_title": "Scream 7",
      "events_count": 17308,
      "imdb_id": "tt27047903",
      "tmdb_id": 1159559,
      "release_year": 2026,
      "runtime": 114,
      "original_language": "eng"
    }
  ]
}

Showtime

price_from_amount, prices_observed_at, ticket_prices and fee_basis are Ultra only. If your key has Pro in the country of the showtime, these keys are not in the response. A missing key means that prices are not in your plan. A null or empty value means that we do not know the price. One response can have both. Some cinemas show the price only after you select a seat. We cannot get these prices, so price_from_amount is null for those showtimes.

id integer · int32

Our identifier for the showtime. The API stops serving a showtime when it starts, or earlier if the cinema stops listing it.

cinema_id integer · int32

The id of the cinema that shows the showtime (see Cinema).

film_ids array of integer · int32

The films this showtime screens, in the order the cinema bills them. A single film has one id; a double bill or other programme lists each of its films. Each id can be looked up with GET /films/{id}.

showing_at string · date-time

Local time at the cinema, as ISO 8601 with the UTC offset of the cinema on that date. In the UK and Ireland, the offset is +00:00 in winter and +01:00 in summer.

sold_out boolean

True if the cinema shows the showtime as sold out.

last_seen_at string · date-time

The time our last crawl saw this showtime at the cinema, as ISO 8601 with its UTC offset (see showing_at). If we do not see a showtime for 48 hours, it is not in the API. If our crawl sees no showtimes at a cinema, we keep the showtimes of that cinema for 2 more days.

chain ChainEnum

The identifier of a cinema chain. GET /chains lists the chains in the countries that your key includes.

latitude number · float

The latitude of the cinema, in decimal degrees (see cinema_id).

longitude number · float

The longitude of the cinema, in decimal degrees (see cinema_id).

on_sale_from string · date-time

The venue's on-sale time when known, otherwise the time the film was first observed.

on_sale_from_verified boolean

Whether on_sale_from was provided by the venue.

auditorium string or null

The screen or auditorium name/number where the film is showing.

attribute_codes array of string or null

Array of attribute codes describing format, accessibility, and event type (e.g., 'imax', '3d', 'audio-described'). Null on a showtime in a country where your key has lite: attribute codes are not included on that plan. An empty array means the showtime has no attributes.

screening_language string or null

The audio language of this showtime, as an ISO 639-3 code, for example eng or nld. If the cinema does not give it, the value is eng when the film is in English and the showtime is not dubbed. Otherwise the value is null. The value is also null in a country where your key has lite.

subtitle_language string or null

The language of the subtitles of this showtime, as an ISO 639-3 code. Use it with the subtitled attribute code: Dutch subtitles on an English film are nld. Null if the showtime has no subtitles, if the cinema does not give their language, and in a country where your key has lite.

country CountryEnum

ISO 3166-1 alpha-2. GB is the whole United Kingdom, Northern Ireland included; IE is the Republic of Ireland.

currency CurrencyCode

ISO 4217: GBP in the United Kingdom, EUR in the Republic of Ireland.

price_from_amount integer · int32 or null optional

Ultra only (see Showtime). The lowest price of an adult ticket for this showtime, in minor units: 1150 is £11.50 in GBP and €11.50 in EUR. Where the showtime has no adult ticket, the lowest price of a child, teen, senior, student or concession ticket. Member, family and other tickets do not count. Before you compare it between cinemas, read fee_basis. Null if we do not know a price.

prices_observed_at string · date-time or null optional

Ultra only (see Showtime). When we last read the prices of this showtime from the cinema. Null if we have not read them.

ticket_prices array of TicketPrice optional

Ultra only (see Showtime). Each ticket type that the cinema sells online for this showtime, in the order of the cinema. Empty if we do not know the tickets. If the cinema gives only a "from" price, that price is in price_from_amount.

fee_basis string optional

Ultra only (see Showtime). How the booking fee relates to amount and price_from_amount. itemised: booking_fee gives the fee for each ticket, and amount does not include it. If a ticket has a null booking_fee, the cinema shows no fee for it. included: amount includes the fee. added_at_checkout: the checkout adds a fee for each ticket. per_order: the cinema charges a fee one time for each order. none: the cinema charges no booking fee. unknown: we do not know if amount includes a fee. For included, added_at_checkout, per_order and none, booking_fee is null. To compare prices between cinemas, add booking_fee to an itemised amount.

One of itemised, included, added_at_checkout, per_order, none, unknown.

Example
{
  "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",
  "price_from_amount": 1049,
  "prices_observed_at": "2026-03-08T04:12:31+00:00",
  "ticket_prices": [
    {
      "name": "Adult",
      "category": "adult",
      "amount": 1349,
      "booking_fee": 95,
      "seat_area": null
    },
    {
      "name": "Child",
      "category": "child",
      "amount": 1049,
      "booking_fee": 95,
      "seat_area": null
    }
  ],
  "fee_basis": "itemised"
}
Show all 44 lines

ShowtimesResponse

Showtimes with pagination metadata. In cursor mode meta carries next_cursor and omits page.

meta MetaInfo

Information about a list: the total count, and the page or the cursor.

data array of Showtime

The showtimes on this page.

Example
{
  "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"
    }
  ]
}
Show all 57 lines

Attribute

A feature of a showtime, for example IMAX or subtitles. A showtime gives its attributes by id in attribute_codes.

id string

Unique identifier for the attribute (e.g., 'imax', '3d', 'audio-described').

title string

Human-readable title (e.g., 'IMAX', '3D', 'Audio Described').

description string

Description of what the attribute means.

category string

Category of the attribute.

One of accessibility, event, format.

Example
{
  "id": "imax",
  "title": "IMAX",
  "description": "Large-format IMAX presentation",
  "category": "format"
}

AttributesResponse

All the attributes that a showtime can have.

meta MetaInfo

Information about a list: the total count, and the page or the cursor.

data array of Attribute

The attributes.

Example
{
  "meta": {
    "total_count": 43
  },
  "data": [
    {
      "id": "imax",
      "title": "IMAX",
      "description": "Large-format IMAX presentation",
      "category": "format"
    }
  ]
}

APIError

The body of an error response.

status integer · int32 optional

The HTTP status code of the response.

message string optional

What went wrong, in English.

Example
{
  "status": 404,
  "message": "Not found"
}

Country

A country that the API serves, and the access that your key has to it.

iso_code CountryEnum

ISO 3166-1 alpha-2. GB is the whole United Kingdom, Northern Ireland included; IE is the Republic of Ireland.

name string

The name of the country, in English.

is_access_granted boolean

Whether your key includes this country.

tier string or null

Your key's plan in this country. On lite, the API serves only the cinemas that you chose, with their showtimes and films, and its showtimes carry no prices and a null attribute_codes. On ultra, its showtimes carry price_from_amount, prices_observed_at, ticket_prices and fee_basis. On pro, they leave those keys out. Null where is_access_granted is false.

One of lite, pro, ultra, .

Example
{
  "iso_code": "IE",
  "name": "Ireland",
  "is_access_granted": true,
  "tier": "ultra"
}

CountriesResponse

All the countries that the API serves.

meta MetaInfo

Information about a list: the total count, and the page or the cursor.

data array of Country

The countries.

Example
{
  "meta": {
    "total_count": 2
  },
  "data": [
    {
      "iso_code": "GB",
      "name": "United Kingdom",
      "is_access_granted": true,
      "tier": "ultra"
    },
    {
      "iso_code": "IE",
      "name": "Ireland",
      "is_access_granted": false,
      "tier": null
    }
  ]
}

TicketPrice

One ticket type at a showtime, and its price. Ultra only (see Showtime).

name string

The ticket type as the cinema names it, verbatim: "Adult", "Snr Citizen", "Over 60s".

category string

Our category for this ticket type, the same at all cinemas: for example, "Snr Citizen" and "Over 60s" are both senior. name is the cinema's own label. A later release can change the category of a ticket type. member, family and other tickets do not count towards price_from_amount.

One of adult, child, teen, senior, student, concession, member, family, other.

amount integer · int32

The price that the cinema shows for this ticket type, in minor units of the showtime's currency. If booking_fee has a value, amount does not include it. If booking_fee is null, fee_basis tells you if amount includes a fee. A family or package ticket usually gives the price for all its seats, but some cinemas give the price for one seat. The ticket does not say how many seats it covers.

booking_fee integer · int32 or null

The booking fee that the cinema shows for this ticket type, in minor units of the showtime's currency. It is for the same unit as amount: for example, the whole family ticket, or one seat. Null if the cinema shows no fee for this ticket. Null does not mean that there is no fee (see fee_basis).

seat_area string or null

The cinema's name for the seating area of this price, for example "Recliner" or "Premier". Null if the cinema gives no area. Also null if all tickets at the showtime have the same price-band code, such as "Band A" or "All". That code does not tell you where you sit. We keep two or more band codes, because they tell the prices apart.

Example
{
  "name": "Adult",
  "category": "adult",
  "amount": 1349,
  "booking_fee": 95,
  "seat_area": null
}