Search code examples
schema.orgjson-ld

What is the correct structure to represent a list of movie showtimes on the same page?


I am building a website to reference movie showtimes.

The site shows a now playing page with a list of movies, each movie has a page with the upcoming showtimes.

I added some structured data to enhance the way search engines sees the data on my website.

Here is what I have so far:

{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "numberOfItems": 2,
  "itemListElement": [
    {
      "@type": "ListItem",
      "name": "Screening Event 1",
      "position": 1,
      "item": {
        "@context": "https://schema.org",
        "@type": "ScreeningEvent",
        "startDate": "2021-09-18T15:15:00.000Z",
        "url": "http://localhost:3000/film/Boite-noire/663260#6144ab7a22b6d900165aa836",
        "inLanguage": "fr",
        "location": {
          "@context": "https://schema.org",
          "@type": "MovieTheater",
          "name": "Pathé Tunis City",
          "url": "http://localhost:3000/medium/pathe-tunis-city"
        },
        "workPresented": {
          "@context": "https://schema.org",
          "@type": "Movie",
          "name": "Boîte noire",
          "image": "https://image.tmdb.org/t/p/w300_and_h450_bestv2/jIfFFC4YwiI8TVaGtbl1eT9BRaI.jpg",
          "url": "http://localhost:3000/film/Boite-noire/663260",
          "sameAs": "https://imdb.com/title/tt10341034",
          "director": {
            "@type": "Person",
            "name": "Yann Gozlan"
          }
        }
      }
    },
    {
      "@type": "ListItem",
      "name": "Screening Event 2",
      "position": 2,
      "item": {
        "@context": "https://schema.org",
        "@type": "ScreeningEvent",
        "startDate": "2021-09-18T20:15:00.000Z",
        "url": "http://localhost:3000/film/Boite-noire/663260#6144ab8522b6d900165aa837",
        "inLanguage": "fr",
        "location": {
          "@context": "https://schema.org",
          "@type": "MovieTheater",
          "name": "Pathé Tunis City",
          "url": "http://localhost:3000/medium/pathe-tunis-city"
        },
        "workPresented": {
          "@context": "https://schema.org",
          "@type": "Movie",
          "name": "Boîte noire",
          "image": "https://image.tmdb.org/t/p/w300_and_h450_bestv2/jIfFFC4YwiI8TVaGtbl1eT9BRaI.jpg",
          "url": "http://localhost:3000/film/Boite-noire/663260",
          "sameAs": "https://imdb.com/title/tt10341034",
          "director": {
            "@type": "Person",
            "name": "Yann Gozlan"
          }
        }
      }
    }
  ]
}

Is there a better way to represent this kind of information without repeating data ?


Solution

  • My suggestion gave the google guide for Carousel --> Single, all-in-one-page list:

    {
    "@context": "https://schema.org",
    "@type": "Movie",
    ...
    "@id":"https://cinema.com/lordofrings.html",
    "name":"Lord of the rings",
    "subjectOf":{
    "@type": "ItemList",
    "itemListElement": [
    {
    "@type": "ListItem",
    "position": "1",
    "item": {
    "@type": "ScreeningEvent",
    "url": "https://cinema.com/lordofrings.html#15",
    "startDate": "2021-09-18T15:00:00+01:00"
    }
    },
    {
    "@type": "ListItem",
    "position": "2",
    "item": {
    "@type": "ScreeningEvent",
    "url": "https://cinema.com/lordofrings.html#18",
    "startDate": "2021-09-18T18:00:00+01:00"
    }
    }
    ]
    }
    }

    For ellipsis, set the required movie info and add all the required and recommended properties for the Google Rich Results Test.