{"id":84840,"date":"2022-03-08T11:41:28","date_gmt":"2022-03-08T11:41:28","guid":{"rendered":"https:\/\/www.headout.com\/blog\/?p=84840"},"modified":"2025-09-25T10:09:00","modified_gmt":"2025-09-25T06:09:00","slug":"best-west-end-shows-may","status":"publish","type":"post","link":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/","title":{"rendered":"Best West End Shows in May | London Theatre Guide"},"content":{"rendered":"<p>Here&#8217;s a quick taster of which West End shows have raised the curtain this May. Choose your pick and grab tickets before they sell out! <\/p>\n<h2>Best West End Shows In May<\/h2>\n<p>[tcb-script]  const getTGIDListForMonth = (allTours, displayMonth) =&gt; {    const allToursArray = Object.values(allTours);    const startMonthDate = dayjs(      `${displayMonth}\/01\/${dayjs().year()}`,      &#8220;MMMM\/DD\/YYYY&#8221;    );    const endMonthDate = startMonthDate.add(      startMonthDate.daysInMonth() &#8211; 1,      &#8220;days&#8221;    );    const startMonthNextYearDate = startMonthDate.add(1, &#8220;years&#8221;);    const endMonthNextYearDate = endMonthDate.add(1, &#8220;years&#8221;);    return allToursArray.reduce((accumulator, element) =&gt; {      const endTourDate = dayjs(element[&#8220;Closing Date&#8221;], &#8220;YYYY-MM-DD&#8221;);      const startTourDate = dayjs(element[&#8220;Opening Date&#8221;], &#8220;YYYY-MM-DD&#8221;);      if (        compareDates(          startMonthDate,          endMonthDate,          startTourDate,          endTourDate        ) ||        compareDates(          startMonthNextYearDate,          endMonthNextYearDate,          startTourDate,          endTourDate        )      ) {        return [&#8230;accumulator, element[&#8220;id&#8221;]];      }      return accumulator;    }, []);  };[\/tcb-script][tcb-script]  document.addEventListener(&#8220;DOMContentLoaded&#8221;, function (event) {    \/\/ Listicle Entry Animation    let slideInShows = function (animEleClass, animationClass) {      jQuery(&#8220;.show-wrapper .accBody:visible&#8221;).slideToggle(&#8220;slow&#8221;);      jQuery(&#8220;.show-wrapper .invert&#8221;).removeClass(&#8220;invert&#8221;);      jQuery(&#8220;.show-wrapper&#8221;)        .removeClass(animationClass)        .fadeOut()        .finish()        .promise()        .done(function () {          jQuery(&#8220;.&#8221; + animEleClass).each(function (i) {            jQuery(this)              .addClass(animationClass)              .removeClass(animEleClass)              .delay((i + 1) * 100)              .fadeIn();          });        });    };    \/\/ Loads All Listed Products as in Months Tab    let showTab = function (tabId) {      showTgids = [];      jQuery(&#8220;.show-wrapper&#8221;).removeClass(&#8220;tabbed&#8221;);      jQuery(&#8220;[data-infotab]&#8221;).removeClass(&#8220;active&#8221;);      jQuery(&#8216;[data-infotab=&#8221;broadway musicals&#8221;]&#8217;).addClass(&#8220;active&#8221;);      if (tabId == 0) {        jQuery(&#8220;.show-wrapper&#8221;).addClass(&#8220;prepare tabbed&#8221;);      } else if (typeof tabId === &#8220;string&#8221;) showTgids = tabId?.split(&#8220;,&#8221;);      else showTgids.push(tabId);      for (let i = 0; i &lt; showTgids?.length; i++)        jQuery(          &#8220;.show-wrapper[data-tgid=&#8221; + parseInt(showTgids[i]) + &#8220;]&#8221;        ).addClass(&#8220;tabbed prepare&#8221;);      slideInShows(&#8220;prepare&#8221;, &#8220;active&#8221;);    };    const msToTime = (duration) =&gt; {      let milliseconds = parseInt((duration % 1000) \/ 100),        seconds = Math.floor((duration \/ 1000) % 60),        minutes = Math.floor((duration \/ (1000 * 60)) % 60),        hours = Math.floor((duration \/ (1000 * 60 * 60)) % 24);      return hours + &#8221; hrs &#8221; + minutes + &#8221; mins&#8221;;    };    \/\/ HTML Stars Generation    let getStars = function (rating) {      rating = rating &lt; 0 ? 0 : rating;      if (rating &lt; 0.25) return;      let round = Math.floor(rating);      let full = rating &gt; round + 0.5 ? true : false;      let half = rating &gt; round + 0.25 ? true : false;      let template = &#8220;&#8221;;      let i;      \/\/ Populate Complete Stars      for (i = 0; i &lt; round &amp;&amp; i &lt; 5; i++) {        template += &#8220;&lt;span class=&#8217;fas fa-star&#8217;&gt;&lt;\/span&gt;&#8221;;      }      \/\/ Add Partial Star (for floating ratings)      if (full &amp;&amp; i &lt; 5 &amp;&amp; ++i) template += &#8220;&lt;span class=&#8217;fas fa-star&#8217;&gt;&lt;\/span&gt;&#8221;;      else if (half &amp;&amp; i &lt; 5 &amp;&amp; ++i)        template += &#8220;&lt;span class=&#8217;fas fa-star-half-alt&#8217;&gt;&lt;\/span&gt;&#8221;;      \/\/ Populate Remaining With Empty Stars      while (i++ &lt; 5) template += &#8220;&lt;span class=&#8217;far fa-star&#8217;&gt;&lt;\/span&gt;&#8221;;      return template;    };    const getMicroBrandsHighlightsData = (microBrandsHighlight) =&gt; {      const result = {        &#8220;Opening Date&#8221;: &#8220;&#8221;,        &#8220;Closing Date&#8221;: &#8220;&#8221;,      };      let currentObject = &#8220;&#8221;;      microBrandsHighlight.forEach((element) =&gt; {        if (          element.type == &#8220;heading6&#8221; &amp;&amp;          element.content.text == &#8220;Opening Date&#8221;        ) {          currentObject = &#8220;Opening Date&#8221;;        } else if (          element.type == &#8220;heading6&#8221; &amp;&amp;          element.content.text == &#8220;Closing Date&#8221;        ) {          currentObject = &#8220;Closing Date&#8221;;        } else {          if (currentObject == &#8220;Opening Date&#8221;) {            result[&#8220;Opening Date&#8221;] = element.content.text;          } else if (currentObject == &#8220;Closing Date&#8221;) {            result[&#8220;Closing Date&#8221;] = element.content.text;          }          currentObject = &#8220;&#8221;;        }      });      return result;    };    const monthSubCategoryFilter = jQuery(&#8220;.month-sub-category-filter&#8221;);    const filterEnabled = monthSubCategoryFilter.data(&#8220;filter-enabled&#8221;) === 1;    const categoryNameMap = {};    const filterHeading = monthSubCategoryFilter?.[0].getAttribute(      &#8220;data-filter-heading&#8221;    );    const subCategoryIds = monthSubCategoryFilter?.[0]      .getAttribute(&#8220;data-sub-category-ids&#8221;)      ?.split(&#8220;,&#8221;);    const monthCSV = monthSubCategoryFilter?.[0]      ?.getAttribute(&#8220;data-months&#8221;)      ?.split(&#8220;,&#8221;)      ?.filter((d) =&gt; d !== &#8220;&#8221;);    const firstMonth = monthCSV?.[0];    let allTours = [];    const getRatingStar = (rating) =&gt; {      let starMarkup = &#8220;&#8221;;      const coloredStar = Math.floor(rating);      const isRatingDecimal = rating &#8211; coloredStar != 0;      const uncoloredStar = Math.floor(5 &#8211; rating);      for (let i = 1; i &lt;= coloredStar; i++) {        starMarkup += `&lt;i aria-hidden=&#8221;true&#8221;&gt;&lt;\/i&gt;`;      }      if (isRatingDecimal) {        starMarkup += `&lt;i aria-hidden=&#8221;true&#8221;&gt;&lt;\/i&gt;`;      }      for (let i = 1; i &lt;= uncoloredStar; i++) {        starMarkup += `&lt;i aria-hidden=&#8221;true&#8221;&gt;&lt;\/i&gt;`;      }      return starMarkup;    };    const functionsAfterDataUpdate = () =&gt; {      allTours.forEach((tour, index) =&gt; {        if (tour?.listingPrice) {          const opening = getMicroBrandsHighlightsData(            tour.microBrandsHighlight          )[&#8220;Opening Date&#8221;];          const tourImageUrl = `${tour.imageUrl}?auto=compress&amp;w=500&amp;h=250&amp;crop=faces&amp;fit=min`;          const mainCard = `&lt;div data-rating=&#8221;${            tour.averageRating          }&#8221; data-tgid=&#8221;${tour.id}&#8221; data-open=&#8221;${opening}&#8221;&gt;                  &lt;a href=&#8221;https:\/\/www.headout.com\/tour\/${                    tour.id                  }&#8221; target=&#8221;_blank&#8221; data-id=&#8221;${index}&#8221;&gt;&lt;span&gt;&lt;\/span&gt;&lt;\/a&gt;                                    &lt;div&gt;                  &lt;picture&gt;                      &lt;source type=&#8221;image\/webp&#8221; data-srcset=&#8221;${tourImageUrl}&#8221;&gt;                      &lt;img data-src=&#8221;${tourImageUrl}&#8221; data-sizes=&#8221;auto&#8221; alt=&#8221;${            tour.name          }&#8221; sizes=&#8221;275px&#8221; loading=&#8221;lazy&#8221; src=&#8221;${tourImageUrl}&#8221;&gt;                  &lt;\/picture&gt;                  &lt;\/div&gt;                  &lt;div&gt;                  &lt;div&gt;                      &lt;div&gt;                      &lt;div&gt;${                        tour.primaryCategory.displayName                      }&lt;\/div&gt;                      &lt;div&gt;${tour.name}&lt;\/div&gt;                      &lt;\/div&gt;                      ${                        tour.averageRating != 0                          ? `&lt;div&gt;                              &lt;div&gt;                                  &lt;div&gt;&lt;span&gt;${getRatingStar(                                    tour.averageRating                                  )} &lt;\/span&gt;&lt;\/div&gt;                              &lt;\/div&gt;                          &lt;\/div&gt;`                          : `&lt;div&gt;New Arrival&lt;\/div&gt;`                      }                  &lt;\/div&gt;                  &lt;div&gt;                    &lt;div&gt;                        ${                          tour.listingPrice.bestDiscount != 0                            ? `&lt;div&gt;                                &lt;div&gt;&lt;span&gt;upto ${tour.listingPrice.bestDiscount}% off&lt;\/span&gt;&lt;\/div&gt;                                &lt;\/div&gt;`                            : &#8220;&#8221;                        }                        &lt;\/div&gt;                    &lt;div&gt;                                                      ${tour.tags                                                        .map(                                                          (item) =&gt;                                                            `&lt;div data-cat=&#8221;${item}&#8221;&gt;${categoryNameMap[item]}&lt;\/div&gt;`                                                        )                                                        .join(&#8221; &#8220;)}                                                      &lt;\/div&gt;                                    &lt;div&gt;                      &lt;div&gt;&lt;span&gt;from&lt;\/span&gt;&lt;\/div&gt;                      &lt;div&gt;                        ${                          tour.listingPrice.originalPrice !=                            tour.listingPrice.finalPrice &amp;&amp;                          tour.listingPrice.originalPrice &gt;                            tour.listingPrice.finalPrice                            ? `&lt;span&gt;\u00a3${tour.listingPrice.originalPrice}&lt;\/span&gt;`                            : &#8220;&#8221;                        }                          &lt;span&gt;\u00a3${tour.listingPrice.finalPrice}&lt;\/span&gt;                      &lt;\/div&gt;                      &lt;\/div&gt;                  &lt;\/div&gt;                                    &lt;\/div&gt;              &lt;\/div&gt;                      `;          const htmlObject = `${mainCard}&lt;\/div&gt; `;          jQuery(&#8220;.page-card-wrapper&#8221;).append(htmlObject);          jQuery(`.show-wrapper[data-tgid=${tour.id}]`)            .find(&#8220;[data-show-ratings]&#8221;)            .html(getStars(tour.averageRating));        }      });      jQuery(&#8220;.accCtrl&#8221;).on(&#8220;click&#8221;, function (e) {        selEle = jQuery(e.target).closest(&#8220;.show-wrapper&#8221;);        jQuery(selEle).find(&#8220;.listicle-item-arrow&#8221;).toggleClass(&#8220;invert&#8221;);        target = jQuery(selEle).find(&#8220;.accBody&#8221;);        console.log(target);        jQuery(target).slideToggle(&#8220;slow&#8221;);      });      filterEnabled &amp;&amp;        monthCSV.forEach((month, index) =&gt; {          const monthName = month.trim();          const isSingleMonth = monthCSV?.length === 1;          console.log(isSingleMonth);          let htmlObject;          let ids = &#8220;0&#8221;;          if (monthName != &#8220;ALL SHOWS&#8221;) {            ids = getTGIDListForMonth(allTours, monthName).join();          }          if (index == 0) {            htmlObject = `&lt;divhide-tab&#8221; : &#8220;&#8221;            }&#8221; data-tab=&#8221;${              index + 1            }&#8221; data-ids=&#8221;${ids}&#8221; data-active=&#8221;1&#8243; &gt; ${monthName}&lt;\/div&gt; `;          } else {            htmlObject = `&lt;div data-tab=&#8221;${              index + 1            }&#8221; data-ids=&#8221;${ids}&#8221; data-active=&#8221;0&#8243;&gt;${monthName}&lt;\/div&gt;`;          }          jQuery(&#8220;.shows-filters .tab-wrapper .mobi-text .mobi-wrap&#8221;).append(            htmlObject          );        });      \/\/ Page Init Products List Generation      showTab(        jQuery(&#8220;.tab-item[data-active=&#8217;1&#8242;]&#8221;).addClass(&#8220;active&#8221;).data(&#8220;ids&#8221;)      );      \/\/ Months Tab Change Handler      jQuery(&#8220;.tab-item&#8221;).click(function () {        jQuery(&#8220;.tab-item&#8221;).data(&#8220;active&#8221;, 0).removeClass(&#8220;active&#8221;);        jQuery(this).data(&#8220;active&#8221;, 1).addClass(&#8220;active&#8221;);        jQuery(this)          .closest(&#8220;.mobi-text&#8221;)          .find(&#8220;.text&#8221;)          .text(jQuery(this).text());        showTab(jQuery(this).data(&#8220;ids&#8221;));        jQuery(jQuery(&#8220;input.filter-chckbox:checked&#8221;).prop(&#8220;checked&#8221;, false));        jQuery(&#8220;.cat-filter label:first-child&#8221;).delay(500).trigger(&#8220;click&#8221;);      });      \/\/ On Window Resize Hide Mobile Months Tab.      jQuery(window).resize(function (e) {        if (jQuery(window).width() &gt; 630)          jQuery(&#8220;.mobi-wrap&#8221;).attr(&#8220;style&#8221;, &#8220;&#8221;);      });      if (monthCSV?.length === 1) {        jQuery(&#8220;.mobi-text&#8221;).addClass(&#8220;hide-tab&#8221;);      }      \/\/ Mobile Months Tabs Change Handler      jQuery(&#8220;.mobi-text&#8221;).click(function (e) {        if (          jQuery(&#8220;.mobi-wrap&#8221;).is(&#8220;:hidden&#8221;) ||          jQuery(this).hasClass(&#8220;active&#8221;)        )          jQuery(this)            .closest(&#8220;.mobi-text&#8221;)            .toggleClass(&#8220;active&#8221;)            .find(&#8220;.mobi-wrap&#8221;)            .slideToggle(&#8220;slow&#8221;);      });      \/\/ Category Change Handler      jQuery(&#8220;[data-filter-cat]&#8221;).change(function (e) {        jQuery(&#8220;[data-cat]&#8221;).removeClass(&#8220;mobi-active-filter&#8221;);        jQuery(&#8220;[data-infotab].active&#8221;).removeClass(&#8220;active&#8221;);        let catName = jQuery(this).data(&#8220;filter-cat&#8221;);        jQuery(`[data-infotab=&#8217;${catName.toLowerCase()}&#8217;]`).addClass(&#8220;active&#8221;);        jQuery(&#8220;[data-filter-cat]&#8221;).each(function (ele) {          if (jQuery(this).find(&#8220;input&#8221;).is(&#8220;:checked&#8221;)) {            cat = jQuery(this).data(&#8220;filter-cat&#8221;).toLowerCase();            const activeMonth = jQuery(&#8220;.tab-item.active&#8221;).text();            if (              activeMonth != &#8220;All Shows&#8221; &amp;&amp;              (cat == &#8220;new arrivals&#8221; || cat == &#8220;shows reopening&#8221;)            ) {              const elements = jQuery(&#8220;.show-wrapper.tabbed&#8221;).has(                `[data-cat=&#8221;${cat}&#8221;]`              );              for (i = 0; i &lt; elements.length; i++) {                ele = elements[i];                const condition =                  dayjs(jQuery(ele).data(&#8220;open&#8221;), &#8220;MM\/DD\/YYYY&#8221;).format(                    &#8220;MMMM&#8221;                  ) === activeMonth;                if (condition) {                  jQuery(ele)                    .addClass(&#8220;prepare&#8221;)                    .find(`[data-cat=&#8221;${cat}&#8221;]`)                    .addClass(&#8220;mobi-active-filter&#8221;);                }              }            } else {              jQuery(&#8220;.show-wrapper.tabbed&#8221;)                .has(`[data-cat=&#8221;${cat}&#8221;]`)                .addClass(&#8220;prepare&#8221;)                .find(`[data-cat=&#8221;${cat}&#8221;]`)                .addClass(&#8220;mobi-active-filter&#8221;);            }          }        });        slideInShows(&#8220;prepare&#8221;, &#8220;active&#8221;);      });      \/\/ Page init default Category Handler &amp; Default Open Listicle\/\/       filterEnabled &amp;&amp;\/\/         setTimeout(function () {\/\/           jQuery(&#8220;[data-filter-cat]&#8221;).each(function (ele) {\/\/             if (jQuery(this).find(&#8220;input&#8221;).is(&#8220;:checked&#8221;)) {\/\/               cat = jQuery(this).data(&#8220;filter-cat&#8221;).toLowerCase();\/\/               jQuery(&#8220;.show-wrapper.tabbed&#8221;)\/\/                 .has(`[data-cat=&#8221;${cat}&#8221;]`)\/\/                 .addClass(&#8220;prepare&#8221;);\/\/             }\/\/           });\/\/           slideInShows(&#8220;prepare&#8221;, &#8220;active&#8221;);\/\/           jQuery(&#8220;.cat-filter label:first-child&#8221;).delay(500).trigger(&#8220;click&#8221;);\/\/           jQuery(&#8220;.show-wrapper:first-child .accCtrl&#8221;)\/\/             .eq(0)\/\/             .delay(1000)\/\/             .trigger(&#8220;click&#8221;);\/\/         }, 300);      \/\/ Lower Case All Data Attributes.      let lowerCaseAll = function (ele) {        jQuery(ele).each(function () {          var $this = jQuery(this),            data = $this.data();          for (var k in data)            $this.attr(&#8220;data-&#8221; + k, data[k].toLowerCase().trim());        });      };      lowerCaseAll(jQuery(&#8220;[data-filter-cat], [data-cat], [data-infotab]&#8221;));\/\/       if (!filterEnabled) {\/\/         jQuery(&#8220;.show-wrapper&#8221;).each(function (i) {\/\/           jQuery(this).addClass(&#8220;active&#8221;).css(&#8220;display&#8221;, &#8220;block&#8221;);\/\/         });\/\/       }      jQuery(&#8220;.page-card-wrapper&#8221;).append(        `&lt;a href=&#8221;https:\/\/www.headout.com\/broadway-tickets-c-24\/&#8221; target=&#8221;_blank&#8221; rel=&#8221;noopener&#8221;&gt;&lt;p&gt;Show More&lt;\/p&gt;&lt;\/a&gt;`      );    };\/\/     filterEnabled &amp;&amp;\/\/       monthSubCategoryFilter.append(`&lt;div&gt;\/\/                 &lt;div&gt;\/\/                   &lt;h3&gt;${filterHeading}&lt;\/h3&gt;\/\/                   &lt;div&gt;\/\/                   &lt;\/div&gt;\/\/                 &lt;\/div&gt;\/\/               &lt;\/div&gt;`);    filterEnabled &amp;&amp;      monthSubCategoryFilter.prepend(`&lt;div&gt;                &lt;div&gt;                  &lt;div&gt;                    &lt;div&gt; &lt;span&gt;${firstMonth}&lt;\/span&gt;&lt;span&gt;&lt;\/span&gt;&lt;\/div&gt;                    &lt;div&gt;                    &lt;\/div&gt;                  &lt;\/div&gt;                &lt;\/div&gt;              &lt;\/div&gt;`);    async function getData() {      await jQuery.get(                    {                        url: &#8216;https:\/\/vivillion.netlify.app\/api\/parsed-collection?collectionId=167&amp;limit=100&amp;city=London&#8217;,                    },                    function (res) {                        const displayName = &#8221;;                        const subCategoryId = &#8221;;                        const subCategoryDiscription = &#8221;                        const subCategoryName = &#8221;                        res.pageData.items.forEach((item) =&gt; {                            item.tags = [item?.primarySubCategory?.displayName || &#8221;];                            if (allTours.filter((x) =&gt; x.id === item.id).length === 0) {                                allTours.push(item);                            } else {                                allTours                                    .filter((x) =&gt; x.id === item.id)[0]                                    .tags.push(item?.primarySubCategory?.displayName || &#8221;);                            }                        });                        if (allTours?.length &gt; 1) {                            allTours = allTours.map((tour) =&gt; {                                const result = getMicroBrandsHighlightsData(                                    tour.microBrandsHighlight                                );                                return {                                    &#8230;result,                                    &#8230;tour,                                };                            });                            functionsAfterDataUpdate();                        }                    }                );    }    getData();  });[\/tcb-script]<\/p>\n<h2><\/h2>\n<h2>Frequently Asked Questions About Best West End Shows in May<\/h2>\n<h2>More West End Guides<\/h2>\n<p>Check out the <a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-london\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">best West End shows<\/a> and use our handy guides to plan your visit to London theatre!  <\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/cheap-west-end-tickets\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/cdn-imgix-open.headout.com\/blog\/media\/images\/London\/Westend+District+Theatre+London.jpg?auto=compress&amp;fm=pjpg&amp;w=500&amp;h=1000&amp;q=30\" alt=\"Cheap West End Tickets\" data-pagespeed-url-hash=\"1377021273\" onload=\"pagespeed.CriticalImages.checkImageForCriticality(this);\">Buying Cheap West End Tickets<\/a><a href=\"https:\/\/www.headout.com\/blog\/tkts-london-tickets\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\"><img decoding=\"async\" src=\"\/\/cdn-imgix.headout.com\/tour\/4746\/TOUR-IMAGE\/1d6bafa2-31e3-4e29-b160-2f0cc14d9e0a-3037-london-wicked-01.jpg?auto=compress&amp;fm=pjpg&amp;w=500&amp;h=1000&amp;q=30\" alt=\"Best West End Shows London\" data-pagespeed-url-hash=\"517640946\" onload=\"pagespeed.CriticalImages.checkImageForCriticality(this);\">All about TKTS London Tickets <\/a><a href=\"https:\/\/www.headout.com\/blog\/london-theatres\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/www.headout.com\/blog\/wp-content\/uploads\/2018\/01\/kilyan-sockalingum-nW1n9eNHOsc-unsplash-scaled.jpg?auto=compress&amp;fm=pjpg&amp;w=500&amp;h=1000&amp;q=30\" alt=\"West End Seating Plans\" data-pagespeed-url-hash=\"146626299\" onload=\"pagespeed.CriticalImages.checkImageForCriticality(this);\">London Theatre Seating Plans<\/a><a href=\"https:\/\/www.headout.com\/blog\/west-end-shows\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/cdn-imgix.headout.com\/tour\/4384\/TOUR-IMAGE\/3f77cc19-bae2-4e37-bce8-f7326f46e9f8-2832-london-aladdin-01.jpg?auto=compress&amp;fm=pjpg&amp;w=500&amp;h=1000&amp;q=30\" alt=\"West End London Guide\" data-pagespeed-url-hash=\"1322199381\" onload=\"pagespeed.CriticalImages.checkImageForCriticality(this);\">Complete West End Guide<\/a><\/p>\n<h2>Best West End Shows &#8211; Month On Month Guide <\/h2>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-january\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in January<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-february\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in February<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-march\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in March<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-april\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in April<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in May<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-june\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in June<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-july\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in July<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-august\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in August<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-september\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in September<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-october\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in October<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-november\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in November<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-december\/\" target=\"_blank\" data-wpel-link=\"internal\" rel=\"noopener\">Best West End Shows in December<\/a><\/p>\n<p>[tcb-script]document.addEventListener(&#8220;DOMContentLoaded&#8221;, function (event) {    \/\/device = (\/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini\/i.test(navigator.userAgent.toLowerCase()));    \/\/ HTML Stars Generation    let getStars = function (rating) {      \/\/console.log(rating)      rating = rating &lt; 0 ? 0 : rating;      if (rating &lt; .25)        return;      let round = Math.floor(rating);      let full = (rating &gt; (round + .5)) ? true : false;      let half = (rating &gt; (round + .25)) ? true : false;      let template = &#8221;;      let i;      \/\/ Populate Complete Stars      for (i = 0; i &lt; round &amp;&amp; i &lt; 5; i++) {        template += &#8220;&lt;span class=&#8217;fas fa-star&#8217;&gt;&lt;\/span&gt;&#8221;;      }      \/\/ Add Partial Star (for floating ratings)      if (full &amp;&amp; i &lt; 5 &amp;&amp; ++i)        template += &#8220;&lt;span class=&#8217;fas fa-star&#8217;&gt;&lt;\/span&gt;&#8221;      else if (half &amp;&amp; i &lt; 5 &amp;&amp; ++i)        template += &#8220;&lt;span class=&#8217;fas fa-star-half-alt&#8217;&gt;&lt;\/span&gt;&#8221;      \/\/ Populate Remaining With Empty Stars      while (i++ &lt; 5)        template += &#8220;&lt;span class=&#8217;far fa-star&#8217;&gt;&lt;\/span&gt;&#8221;      return template;    }    \/\/ On Window Resize Hide Mobile Months Tab.    jQuery(window).resize(function (e) {      \/\/console.log(e);      if (jQuery(window).width() &gt; 630)        jQuery(&#8216;.mobi-wrap&#8217;).attr(&#8220;style&#8221;, &#8221;)    });    let thisEle = [];    let i = 0;    \/\/ Populating API Data    jQuery(&#8220;.show-wrapper[data-tgid]&#8221;).each(function () {      let pgid = jQuery(this).data(&#8220;tgid&#8221;);      thisEle.push(this);      if (parseInt(pgid) &amp;&amp; pgid != &#8221;) {        jQuery.get(&#8220;https:\/\/api.headout.com\/api\/v5\/tour-group\/get\/&#8221; + pgid, function (res) {          \/\/ console.log(res);          if (res.currency)            symb = res.currency.localSymbol;          uEle = `.show-wrapper[data-tgid=${res.id}]`;          jQuery(uEle).find(&#8220;[data-show-ratings]&#8221;).html(getStars(jQuery(uEle).data(&#8216;rating&#8217;)));          jQuery(uEle).find(&#8220;.review-count&#8221;).text(res.reviewCount);          \/\/jQuery(uEle).find(&#8220;.himage&#8221;).attr(&#8216;src&#8217;, &#8220;https:&#8221; + res.imageUploads[0].url + &#8220;?auto=compress&amp;crop=faces&amp;fm=pjpg&amp;w=720&amp;h=500&amp;q=30&#8221;);          jQuery(uEle).find(&#8220;.himage&#8221;).attr(&#8216;alt&#8217;, res.imageUploads[0].alt);          jQuery(uEle).find(&#8220;.himage&#8221;).attr(&#8216;title&#8217;, res.imageUploads[0].title);          \/\/jQuery(uEle).find(&#8220;.listicle-item-name&#8221;).text(res.name);          if (res.listingPrice) {            console.log(&#8220;here&#8221;)            jQuery(uEle).find(&#8220;.price sup&#8221;).text(symb + res.listingPrice.originalPrice);            jQuery(uEle).find(&#8220;.price .current&#8221;).text(symb + res.listingPrice.finalPrice);          }          jQuery(uEle).find(&#8220;.listicle-item-product-image img&#8221;).attr(&#8216;src&#8217;, res.imageUploads[Math.ceil(Math.random() * res.imageUploads.length &#8211; 1)].url);        })      }    });    \/\/ Generating Stars    jQuery(&#8220;[data-show-ratings]&#8221;).each(function (n, ele) {      jQuery(this).append(getStars(jQuery(jQuery(ele).closest(&#8220;.show-wrapper&#8221;)).data(&#8220;rating&#8221;)))    })    \/\/ Loads All Listed Products as in Months Tab    let showTab = function (tabId) {      \/\/ console.log(tabId)      showTgids = [];      jQuery(&#8220;.show-wrapper&#8221;).removeClass(&#8220;tabbed&#8221;)      jQuery(&#8216;[data-infotab]&#8217;).removeClass(&#8220;active&#8221;);      jQuery(&#8216;[data-infotab=&#8221;broadway musicals&#8221;]&#8217;).addClass(&#8220;active&#8221;);      if (tabId == 0) {        jQuery(&#8220;.show-wrapper&#8221;).addClass(&#8220;prepare tabbed&#8221;)      } else if (typeof tabId === &#8220;string&#8221;)        showTgids = tabId.split(&#8220;,&#8221;);      else        showTgids.push(tabId)      for (let i = 0; i &lt; showTgids.length; i++)        jQuery(&#8220;.show-wrapper[data-tgid=&#8221; + parseInt(showTgids[i]) + &#8220;]&#8221;).addClass(&#8220;tabbed prepare&#8221;)      slideInShows(&#8220;prepare&#8221;, &#8220;active&#8221;);    }    \/\/ Open Tab On Click Handler.    jQuery(&#8220;.accCtrl&#8221;).on(&#8220;click&#8221;, function (e) {      selEle = jQuery(e.target).closest(&#8220;.show-wrapper&#8221;);      jQuery(selEle).find(&#8220;.listicle-item-arrow&#8221;).toggleClass(&#8220;invert&#8221;)      target = jQuery(selEle).find(&#8220;.accBody&#8221;)      jQuery(target).slideToggle(&#8220;slow&#8221;);    })    \/\/ Listicle Entry Animation    let slideInShows = function (animEleClass, animationClass) {      jQuery(&#8220;.show-wrapper .accBody:visible&#8221;).slideToggle(&#8220;slow&#8221;)      jQuery(&#8220;.show-wrapper .invert&#8221;).removeClass(&#8220;invert&#8221;)      jQuery(&#8220;.show-wrapper&#8221;).removeClass(animationClass)        .fadeOut().finish().promise().done(function () {          jQuery(&#8220;.&#8221; + animEleClass).each(function (i) {            jQuery(this).addClass(animationClass).removeClass(animEleClass).delay((i + 1) * 100).fadeIn();          })        });    }    \/\/ Page Init Products List Generation    showTab(jQuery(&#8220;.tab-item[data-active=&#8217;1&#8242;]&#8221;).addClass(&#8220;active&#8221;).data(&#8220;ids&#8221;))    \/\/ Months Tab Change Handler    jQuery(&#8220;.tab-item&#8221;).click(function () {      jQuery(&#8220;.tab-item&#8221;).data(&#8220;active&#8221;, 0).removeClass(&#8220;active&#8221;)      jQuery(this).data(&#8220;active&#8221;, 1).addClass(&#8220;active&#8221;)      jQuery(this).closest(&#8220;.mobi-text&#8221;).find(&#8220;.text&#8221;).text(jQuery(this).text())      showTab(jQuery(this).data(&#8220;ids&#8221;))      jQuery(jQuery(&#8220;input.filter-chckbox:checked&#8221;).prop(&#8220;checked&#8221;, false))      jQuery(&#8220;.cat-filter label:first-child&#8221;).delay(500).trigger(&#8220;click&#8221;);    })    \/\/ Mobile Months Tabs Change Handler    jQuery(&#8220;.mobi-text&#8221;).click(function (e) {      if (jQuery(&#8220;.mobi-wrap&#8221;).is(&#8220;:hidden&#8221;) || jQuery(this).hasClass(&#8220;active&#8221;))        jQuery(this).closest(&#8220;.mobi-text&#8221;).toggleClass(&#8220;active&#8221;).find(&#8220;.mobi-wrap&#8221;).slideToggle(&#8220;slow&#8221;);    })    \/\/ Category Change Handler    jQuery(&#8220;[data-filter-cat]&#8221;).change(function (e) {      jQuery(&#8216;[data-cat]&#8217;).removeClass(&#8216;mobi-active-filter&#8217;);      jQuery(&#8216;[data-infotab].active&#8217;).removeClass(&#8216;active&#8217;);      var catName = jQuery(this).data(&#8216;filter-cat&#8217;);      jQuery(`[data-infotab=&#8217;${catName.toLowerCase()}&#8217;]`).addClass(&#8216;active&#8217;);      jQuery(&#8220;[data-filter-cat]&#8221;).each(function (ele) {        if (jQuery(this).find(&#8220;input&#8221;).is(&#8220;:checked&#8221;)) {          cat = jQuery(this).data(&#8220;filter-cat&#8221;).toLowerCase();          jQuery(&#8220;.show-wrapper.tabbed&#8221;).has(`[data-cat=&#8221;${cat}&#8221;]`).addClass(&#8220;prepare&#8221;).find(`[data-cat=&#8221;${cat}&#8221;]`).addClass(&#8216;mobi-active-filter&#8217;);        }      })      slideInShows(&#8220;prepare&#8221;, &#8220;active&#8221;);    });    \/\/ Page init default Category Handler &amp; Default Open Listicle    setTimeout(function () {      jQuery(&#8220;[data-filter-cat]&#8221;).each(function (ele) {        if (jQuery(this).find(&#8220;input&#8221;).is(&#8220;:checked&#8221;)) {          cat = jQuery(this).data(&#8220;filter-cat&#8221;).toLowerCase();          jQuery(&#8220;.show-wrapper.tabbed&#8221;).has(`[data-cat=&#8221;${cat}&#8221;]`).addClass(&#8220;prepare&#8221;);        }      });      slideInShows(&#8220;prepare&#8221;, &#8220;active&#8221;);      jQuery(&#8220;.cat-filter label:first-child&#8221;).delay(500).trigger(&#8220;click&#8221;);      jQuery(&#8220;.show-wrapper:first-child .accCtrl&#8221;).eq(0).delay(1000).trigger(&#8220;click&#8221;);    }, 300);    \/\/ Lower Case All Data Attributes.    let lowerCaseAll = function (ele) {      jQuery(ele).each(function () {        var $this = jQuery(this),          data = $this.data();        for (var k in data)          $this.attr(&#8220;data-&#8221; + k, data[k].toLowerCase().trim());      });    }    lowerCaseAll(jQuery(&#8220;[data-filter-cat], [data-cat], [data-infotab]&#8221;));  });[\/tcb-script]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s a quick taster of which West End shows have raised the curtain this May. Choose your pick and grab tickets before they sell out! Best West End Shows In May [tcb-script] const getTGIDListForMonth = (allTours, displayMonth) =&gt; { const allToursArray = Object.values(allTours); const startMonthDate = dayjs( `${displayMonth}\/01\/${dayjs().year()}`, &#8220;MMMM\/DD\/YYYY&#8221; ); const endMonthDate = startMonthDate.add( startMonthDate.daysInMonth() [&hellip;]<\/p>\n","protected":false},"author":30,"featured_media":85101,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[781,779,547],"tags":[6745,6994,6990,6284,6294,7120],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Best West End Shows in May | London Theatre Guide | Headout<\/title>\n<meta name=\"description\" content=\"Browse our London Theatre 2026 calendar and book your tickets for West End shows, musicals &amp; plays running in May 2026.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Best West End Shows in May | London Theatre Guide | Headout\" \/>\n<meta property=\"og:description\" content=\"Browse our London Theatre 2026 calendar and book your tickets for West End shows, musicals &amp; plays running in May 2026.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/\" \/>\n<meta property=\"og:site_name\" content=\"Headout Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-08T11:41:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-25T06:09:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn-imgix.headout.com\/tour\/25833\/TOUR-IMAGE\/1129c94c-fa1c-4baf-bdab-a294bac3bc86-Anna-Phylactic-Matt-Crockett-1-1.jpg\" \/>\n<meta name=\"author\" content=\"Lakshmi Menon\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/cdn-imgix.headout.com\/tour\/25833\/TOUR-IMAGE\/1129c94c-fa1c-4baf-bdab-a294bac3bc86-Anna-Phylactic-Matt-Crockett-1-1.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lakshmi Menon\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Best West End Shows in May | London Theatre Guide | Headout","description":"Browse our London Theatre 2026 calendar and book your tickets for West End shows, musicals & plays running in May 2026.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/","og_locale":"en_US","og_type":"article","og_title":"Best West End Shows in May | London Theatre Guide | Headout","og_description":"Browse our London Theatre 2026 calendar and book your tickets for West End shows, musicals & plays running in May 2026.","og_url":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/","og_site_name":"Headout Blog","article_published_time":"2022-03-08T11:41:28+00:00","article_modified_time":"2025-09-25T06:09:00+00:00","og_image":[{"url":"https:\/\/cdn-imgix.headout.com\/tour\/25833\/TOUR-IMAGE\/1129c94c-fa1c-4baf-bdab-a294bac3bc86-Anna-Phylactic-Matt-Crockett-1-1.jpg"}],"author":"Lakshmi Menon","twitter_card":"summary_large_image","twitter_image":"https:\/\/cdn-imgix.headout.com\/tour\/25833\/TOUR-IMAGE\/1129c94c-fa1c-4baf-bdab-a294bac3bc86-Anna-Phylactic-Matt-Crockett-1-1.jpg","twitter_misc":{"Written by":"Lakshmi Menon","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/#article","isPartOf":{"@id":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/"},"author":{"name":"Lakshmi Menon","@id":"https:\/\/www.headout.com\/blog\/#\/schema\/person\/fe80bf96115b325c05ea56f8a6e0a2f7"},"headline":"Best West End Shows in May | London Theatre Guide","datePublished":"2022-03-08T11:41:28+00:00","dateModified":"2025-09-25T06:09:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/"},"wordCount":2403,"commentCount":0,"publisher":{"@id":"https:\/\/www.headout.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn-imgix.headout.com\/tour\/25833\/TOUR-IMAGE\/1129c94c-fa1c-4baf-bdab-a294bac3bc86-Anna-Phylactic-Matt-Crockett-1-1.jpg","keywords":["c-167","Entertainment","Listicle","London","Spring Blogs","United Kingdom"],"articleSection":["Best West End Shows","London Theatre Tickets","Things to do in London"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/","url":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/","name":"Best West End Shows in May | London Theatre Guide | Headout","isPartOf":{"@id":"https:\/\/www.headout.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/#primaryimage"},"image":{"@id":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn-imgix.headout.com\/tour\/25833\/TOUR-IMAGE\/1129c94c-fa1c-4baf-bdab-a294bac3bc86-Anna-Phylactic-Matt-Crockett-1-1.jpg","datePublished":"2022-03-08T11:41:28+00:00","dateModified":"2025-09-25T06:09:00+00:00","description":"Browse our London Theatre 2026 calendar and book your tickets for West End shows, musicals & plays running in May 2026.","breadcrumb":{"@id":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/#primaryimage","url":"https:\/\/cdn-imgix.headout.com\/tour\/25833\/TOUR-IMAGE\/1129c94c-fa1c-4baf-bdab-a294bac3bc86-Anna-Phylactic-Matt-Crockett-1-1.jpg","contentUrl":"https:\/\/cdn-imgix.headout.com\/tour\/25833\/TOUR-IMAGE\/1129c94c-fa1c-4baf-bdab-a294bac3bc86-Anna-Phylactic-Matt-Crockett-1-1.jpg","width":"800","height":"500","caption":"Best West End Shows in May | London Theatre Guide"},{"@type":"BreadcrumbList","@id":"https:\/\/www.headout.com\/blog\/best-west-end-shows-may\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Things to do in London","item":"https:\/\/www.headout.com\/things-to-do-city-london\/"},{"@type":"ListItem","position":2,"name":"London Theatre Tickets","item":"https:\/\/www.headout.com\/london-theatre-tickets-c-167\/"},{"@type":"ListItem","position":3,"name":"Best West End Shows","item":"https:\/\/www.headout.com\/blog\/best-west-end-shows-london\/"},{"@type":"ListItem","position":4,"name":"Shows in May"}]},{"@type":"WebSite","@id":"https:\/\/www.headout.com\/blog\/#website","url":"https:\/\/www.headout.com\/blog\/","name":"Headout Blog","description":"Where will you go next?","publisher":{"@id":"https:\/\/www.headout.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.headout.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.headout.com\/blog\/#organization","name":"Headout","url":"https:\/\/www.headout.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.headout.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.headout.com\/blog\/wp-content\/uploads\/2016\/07\/headout-logo.png","contentUrl":"https:\/\/www.headout.com\/blog\/wp-content\/uploads\/2016\/07\/headout-logo.png","width":550,"height":84,"caption":"Headout"},"image":{"@id":"https:\/\/www.headout.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.headout.com\/blog\/#\/schema\/person\/fe80bf96115b325c05ea56f8a6e0a2f7","name":"Lakshmi Menon","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.headout.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/47293d4b1b985cc456d8d147bb654bc4?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/47293d4b1b985cc456d8d147bb654bc4?s=96&r=g","caption":"Lakshmi Menon"},"description":"Born to parents bit by the wander bug, Lakshmi calls her love for travel \"hereditary and habitual\". Perpetually ensconced with a book in her hand and a mug of coffee in the other, she has been to over 15 countries in her 23 years of existence and is currently saving miles and money for her solo trip to Iceland. Always hustling towards the least trodden path, she has encountered some wonderful people during her escapades and if you ever meet her, she won't stop gushing about them.","url":"https:\/\/www.headout.com\/blog\/author\/lakshmi-menon\/"}]}},"_links":{"self":[{"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/posts\/84840"}],"collection":[{"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/comments?post=84840"}],"version-history":[{"count":41,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/posts\/84840\/revisions"}],"predecessor-version":[{"id":201806,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/posts\/84840\/revisions\/201806"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/media\/85101"}],"wp:attachment":[{"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/media?parent=84840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/categories?post=84840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/tags?post=84840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}