{"id":49922,"date":"2020-10-15T08:03:06","date_gmt":"2020-10-15T08:03:06","guid":{"rendered":"https:\/\/blog.headout.com\/?p=49922"},"modified":"2022-02-07T18:56:50","modified_gmt":"2022-02-07T18:56:50","slug":"countries-open-for-tourism","status":"publish","type":"post","link":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/","title":{"rendered":"Countries open for tourism, the complete list"},"content":{"rendered":"<p>As the coronavirus started to spread, countries across the world quickly shut down in order to contain it. Attractions, restaurants, beaches, malls, and other places were closed as well. But a question that on every traveller\u2019s mind remained, \u201cWhen will travel restrictions be lifted?\u201d.<\/p>\n<p>Several countries have started to ease their lockdowns and are open for internal travel, while some are still absolutely shut. A few countries, however, have deemed it safe to travel right now, and have thus <a href=\"https:\/\/www.headout.com\/global-travel-reopening-tracker\/\" target=\"_blank\" rel=\"noopener\">opened up international travel<\/a>, even creating travel bubbles.<\/p>\n<p>So, you can now go ahead and start <a href=\"https:\/\/www.headout.com\/blog\/traveling-after-coronavirus-pandemic-complete-guide\/\" target=\"_blank\" rel=\"noopener\">planning your long-awaited vacation<\/a>! While your dream destination may or may not be open yet, here is a list of countries open for travel now.<\/p>\n<p>Note: Our list of countries open for travel now is based on each country\u2019s government instructions, and may change. Ensure you check with your national authorities before travelling, and avoid travelling if any restrictions are in place.  <\/p>\n<h2>Countries Open for Travel<\/h2>\n<p>You can find countries open for travel now, along with information on quarantine period, attractions open, number of COVID cases in the last week, along with other important information below.Use the dropdown on the right side to see countries with partial restrictions, no restrictions, or both. <\/p>\n<p>            All      No Restrictions      Partial Restrictions                  Asia      Europe      Africa      North America      South America      Oceania                    View More                                                                                                                             View More                                                                                                                             View More                                                                                                                             View More                                                                                                                             View More                                                                                                                             View More                                                                                                               [tcb-script src=&#8221;https:\/\/cdn.jsdelivr.net\/npm\/markedjs@10.0.0\/marked.min.js&#8221; integrity=&#8221;sha256-L5R7HpR5ankOAI75aZBmBcQI558i+sIi6MtlUJcYcIE=&#8221; crossorigin=&#8221;anonymous&#8221;][\/tcb-script][tcb-script]  \/\/ Tab  click listeners  document.querySelectorAll(&#8220;.tablink&#8221;).forEach((el) =&gt; {    el.addEventListener(&#8220;click&#8221;, (e) =&gt; {      const id = e.target.getAttribute(&#8220;data-id&#8221;);      const parEle = e.target.closest(&#8220;.tab-wrapper.covid-restrictions-wrapper&#8221;);      \/\/ remove active class from tab button      const tabLinks = parEle.querySelectorAll(&#8220;.tablink&#8221;);      tabLinks.forEach((el) =&gt; {        if (el.classList.contains(&#8220;active&#8221;)) el.classList.remove(&#8220;active&#8221;);      });      \/\/ remove SHOW class from tabcontent      const tabContent = parEle.querySelectorAll(&#8220;.tab-content&#8221;);      tabContent.forEach((el) =&gt; {        if (el.classList.contains(&#8220;show&#8221;)) el.classList.remove(&#8220;show&#8221;);      });      e.target.classList.add(&#8220;active&#8221;);      const target = parEle.querySelector(`.tab-content[data-tab=&#8221;${id}&#8221;]`);      target.classList.add(&#8220;show&#8221;);    });  });[\/tcb-script][tcb-script]  function getUpdatedDate() {    const current = new Date();    const yesterday = new Date(current.getTime() &#8211; 86400000);    const options = { year: &#8220;numeric&#8221;, month: &#8220;long&#8221;, day: &#8220;numeric&#8221; };    return yesterday.toLocaleDateString(&#8220;en-US&#8221;, options);  }  const covidContinentsRestrictionsWrapper = document.querySelector(    &#8220;.tab-wrapper.covid-restrictions-wrapper&#8221;  );  const airtableRestrictionsUrl =    &#8220;https:\/\/api.airtable.com\/v0\/appCiV6q7KyN8meXg\/Travel%20Restrictions?filterByFormula=NOT(%7BTravel+Restrictions%7D+%3D+&#8217;Complete+Restrictions&#8217;)&amp;view=Blog+-+Restrictions+(partial+%26+no+restrictions)&#8221;;  async function getFirstHundredResults() {    const config = {      airtableURL: airtableRestrictionsUrl,    };    try {      const response = await fetch(&#8220;https:\/\/vivillion.netlify.app\/api\/airtable&#8221;, {        method: &#8220;POST&#8221;,        body: JSON.stringify(config),      });      return await response.json();    } catch (error) {      console.log(error);    }  }  async function getNextHundredResults(offsetValue) {    const config = {      airtableURL: `${airtableRestrictionsUrl}&amp;offset=${offsetValue}`,    };    try {      const response = await fetch(&#8220;https:\/\/vivillion.netlify.app\/api\/airtable&#8221;, {        method: &#8220;POST&#8221;,        body: JSON.stringify(config),      });      return await response.json();    } catch (error) {      console.log(error);    }  }  async function getAllCountries() {    const firstDataset = await getFirstHundredResults();    let secondDataset, finalDataset;    if (firstDataset.data.offset) {      secondDataset = await getNextHundredResults(firstDataset.data.offset);      finalDataset = firstDataset.data.records.concat(secondDataset.data.records);      return finalDataset;    } else {      return firstDataset;    }  }  function addListMarkup(arr) {    let markup = &#8220;&#8221;;    for (let i = 0; i &lt; arr.length; i++) {      markup += `&lt;li&gt;${marked(arr[i])}&lt;\/li&gt;`;    }    return markup;  }  function generateFinalMarkup(dataArr, continentID, startIndex, stopIndex) {    let markup = &#8220;&#8221;;    if (dataArr.length &gt; 0) {      for (let i = startIndex; i &lt; stopIndex; i++) {        const data = dataArr[i];        const image =          data[&#8220;Country Image&#8221;] != undefined ? data[&#8220;Country Image&#8221;] : &#8220;&#8221;;        const quarantine = data[&#8220;Quarantine Restrictions&#8221;]          ? data[&#8220;Quarantine Restrictions&#8221;]          : &#8220;&#8221;;        const travelRestrictions = data[&#8220;Travel Restrictions&#8221;]          ? data[&#8220;Travel Restrictions&#8221;]          : &#8220;&#8221;;        const re = \/https?:\/\/[^()]+\/;        const officialLinks = data[&#8220;Official links&#8221;]          ? data[&#8220;Official links&#8221;].match(re)[0].trim()          : &#8220;&#8221;;        const countrySlug = data.Country          ? data.Country.split(&#8221; &#8220;).join(&#8220;-&#8220;).toLowerCase()          : &#8220;&#8221;;        const countryRank = data[&#8220;Rank (from countryTable)&#8221;];        const quarantineDetails = data[&#8220;Quarantine Rule Details&#8221;]          ? data[&#8220;Quarantine Rule Details&#8221;]          : &#8220;&#8221;;        const healthCheckup = data[&#8220;Health Check Up on Arrival&#8221;]          ? data[&#8220;Health Check Up on Arrival&#8221;]          : &#8220;&#8221;;        const freeTextContent = data[&#8220;Free Text Content&#8221;]          ? data[&#8220;Free Text Content&#8221;]          : &#8220;&#8221;;        const negativeCertificate = data[&#8220;Covid 19 negative certificate&#8221;]          ? data[&#8220;Covid 19 negative certificate&#8221;]          : &#8220;&#8221;;        const formRequirements = data[&#8220;New Forms\/Documents Required&#8221;]          ? data[&#8220;New Forms\/Documents Required&#8221;]          : &#8220;&#8221;;        const travelHealthInsurance = data[&#8220;Travel Health Insurance&#8221;]          ? data[&#8220;Travel Health Insurance&#8221;]          : &#8220;&#8221;;        const downloadApps = data[&#8220;Download Apps&#8221;] ? data[&#8220;Download Apps&#8221;] : &#8220;&#8221;;        const covidCases = data.covid          ? data.covid.lastWeekCases.toLocaleString()          : &#8220;n\/a&#8221;;        const travelRestrictionsClass = travelRestrictions          .split(&#8221; &#8220;)          .join(&#8220;-&#8220;)          .toLowerCase();        const listItems = [          quarantineDetails,          healthCheckup,          freeTextContent,          negativeCertificate,          formRequirements,          travelHealthInsurance,          downloadApps,        ].filter((str) =&gt; {          if (str &amp;&amp; str.length != 1) {            return str;          }        });        const listItemMarkup = addListMarkup(listItems);        const countryMarkup = `&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;picture&gt;&lt;source type=&#8221;image\/webp&#8221; data-srcset=&#8221;${image}?fm=webp&amp;auto=compress&amp;w=400&amp;crop=faces&amp;fit=min&#8221;&gt;&lt;img data-src=&#8221;${image}?fm=pjpg&amp;auto=compress&amp;w=400&amp;crop=faces&amp;fit=min&#8221; data-sizes=&#8221;auto&#8221; alt=&#8221;${data.Country          }&#8221;&gt;&lt;\/picture&gt;&lt;\/div&gt;&lt;div&gt;&lt;div&gt;${data.Country}&lt;\/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;\/span&gt;&lt;span&gt;${travelRestrictions}&lt;\/span&gt;&lt;\/div&gt;&lt;div&gt;${quarantine}&lt;\/div&gt;&lt;\/div&gt;&lt;div&gt;  &lt;svg width=&#8221;6&#8243; height=&#8221;12&#8243; viewBox=&#8221;0 0 6 12&#8243; fill=&#8221;none&#8221;xmlns=&#8221;http:\/\/www.w3.org\/2000\/svg&#8221; style=&#8221;margin-left: 12px;&#8221;invert&#8221; : &#8220;&#8221;          }&#8221;&gt;&lt;path d=&#8221;M0.5 11L5.5 6L0.5 1&#8243; stroke=&#8221;#444&#8243; stroke-linecap=&#8221;round&#8221; stroke-linejoin=&#8221;round&#8221;&gt;&lt;\/path&gt;&lt;\/svg&gt;&lt;\/div&gt;&lt;\/div&gt;&lt;\/div&gt;&lt;divrestrictions-info show&#8221; : &#8220;restrictions-info&#8221;}&#8221;&gt;&lt;div&gt;&lt;h3&gt;Rules for travelers&lt;\/h3&gt;&lt;ol&gt;${listItemMarkup}&lt;\/ol&gt;&lt;\/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;\ud83c\udfe1&lt;\/div&gt;&lt;div&gt;Quarantine&lt;\/div&gt;&lt;div&gt;${quarantine}&lt;\/div&gt;&lt;\/div&gt;&lt;div&gt;&lt;div&gt;\ud83c\udff0&lt;\/div&gt;&lt;div&gt;Tourist Attractions&lt;\/div&gt;&lt;div&gt;${data[&#8220;Tourist Attractions&#8221;]}&lt;\/div&gt;&lt;\/div&gt;&lt;div&gt;&lt;div&gt;\ud83d\ude8c&lt;\/div&gt;&lt;div&gt;Public Transport&lt;\/div&gt;&lt;div&gt;${data[&#8220;Public Transport&#8221;]}&lt;\/div&gt;&lt;\/div&gt;&lt;div&gt;&lt;div&gt;\ud83c\udf7b&lt;\/div&gt;&lt;div&gt;Dining &amp; Bars&lt;\/div&gt;&lt;div&gt;${data[&#8220;Dining and Bars&#8221;]}&lt;\/div&gt;&lt;\/div&gt;&lt;div&gt;&lt;div&gt;\ud83d\ude97&lt;\/div&gt;&lt;div&gt;Land Borders&lt;\/div&gt;&lt;div&gt;${data[&#8220;Land Borders&#8221;] ? data[&#8220;Land Borders&#8221;] : &#8220;&#8221;}&lt;\/div&gt;&lt;\/div&gt;&lt;div&gt;&lt;div&gt;\ud83d\ude37&lt;\/div&gt;&lt;div&gt;Covid-19 Cases (last 7 days)&lt;\/div&gt;&lt;div&gt;${covidCases}&lt;\/div&gt;&lt;\/div&gt;&lt;\/div&gt;&lt;div&gt;${countryRank            ? `&lt;a href=&#8221;https:\/\/www.headout.com\/post-covid19-travelling-to-${countrySlug}&#8221;target=&#8221;_blank&#8221; role=&#8221;button&#8221;&gt;Know More&lt;svg width=&#8221;6&#8243;height=&#8221;12&#8243; viewBox=&#8221;0 0 6 12&#8243; fill=&#8221;none&#8221; xmlns=&#8221;http:\/\/www.w3.org\/2000\/svg&#8221;&gt;&lt;path d=&#8221;M0.5 11L5.5 6L0.5 1&#8243; stroke=&#8221;#8000FF&#8221; stroke-linecap=&#8221;round&#8221; stroke-linejoin=&#8221;round&#8221;&gt;&lt;\/path&gt;&lt;\/svg&gt;&lt;\/a&gt;`            : &#8220;&#8221;          }&lt;div&gt;Exceptions may apply, check full details &lt;ahref=&#8221;${officialLinks}&#8221;target=&#8221;_blank&#8221;&gt;here.&lt;\/a&gt;&lt;\/div&gt;&lt;div&gt;Last verified on: ${getUpdatedDate()}&lt;\/div&gt;&lt;\/div&gt;&lt;\/div&gt;&lt;\/div&gt;`;        markup += countryMarkup;      }    } else {      markup = `&lt;div&gt;There are currently no countries in &lt;span&gt;${continentID        .split(&#8220;-&#8220;)        .join(&#8221; &#8220;)}&lt;\/span&gt; with partial or no travel restrictions.&lt;\/div&gt;`;    }    const continent = document.querySelector(`#${continentID}`);    const covidContinentsRestrictionsWrapper = continent.querySelector(      &#8220;.country-restrictions-wrapper&#8221;    );    const viewBtn = covidContinentsRestrictionsWrapper.parentElement.querySelector(      &#8220;.view-btn&#8221;    );    covidContinentsRestrictionsWrapper.innerHTML = &#8220;&#8221;;    covidContinentsRestrictionsWrapper.insertAdjacentHTML(&#8220;beforeend&#8221;, markup);    covidContinentsRestrictionsWrapper.setAttribute(&#8220;data-stop&#8221;, stopIndex);    const currentStopIndex = covidContinentsRestrictionsWrapper.getAttribute(      &#8220;data-stop&#8221;    );    dataArr.length &#8211; currentStopIndex &lt;= 0 ? viewBtn.classList.add(&#8220;hide&#8221;) : null;  }  const calcCovidCases = (originalArray) =&gt; {    const lastDay = originalArray[originalArray.length &#8211; 1];    const firstDay = originalArray[0];    return lastDay &#8211; firstDay;  };  async function getCovidCasesForAllCountries(countries) {    const response = await fetch(      `https:\/\/disease.sh\/v3\/covid-19\/historical\/${countries}?lastdays=8`    );    const data = await response.json();    const cases = data.map((el) =&gt; {      if (el &amp;&amp; el.timeline) {        const cases = Object.values(el.timeline.cases);        const finalcases = calcCovidCases(cases);        return {          country: el.country,          lastWeekCases: finalcases,        };      }    });    return cases;  }  async function getCovidCasesForPuertoRico() {    const response = await fetch(      &#8220;https:\/\/disease.sh\/v3\/covid-19\/nyt\/states\/puerto rico?lastdays=8&#8221;    );    const data = await response.json();    const cases = data.map((day) =&gt; day.cases);    const finalCases = calcCovidCases(cases);    return {      country: data[0].state,      lastWeekCases: finalCases,    };  }  async function getCovidCasesForHongKong() {    const response = await fetch(      &#8220;https:\/\/disease.sh\/v3\/covid-19\/historical\/chn\/hong kong?lastdays=8&#8221;    );    const data = await response.json();    const cases = Object.values(data.timeline.cases);    const finalCases = calcCovidCases(cases);    const finalData = {      country: data.province,      lastWeekCases: finalCases,    };    return finalData;  }  async function covidRestrictionsFinalData() {    const allCountries = await getAllCountries();    const data = allCountries.data.records;    const filteredCountries = data      .filter((country) =&gt; {        const currentCountryISO = country.fields.ISO3;        if (currentCountryISO) {          if (            currentCountryISO.includes(&#8220;PRI&#8221;) ||            currentCountryISO.includes(&#8220;HKG&#8221;) ||            currentCountryISO.includes(&#8220;GRL&#8221;) ||            currentCountryISO.includes(&#8220;MMR&#8221;) ||            currentCountryISO.includes(&#8220;TKM&#8221;) ||            currentCountryISO.includes(&#8220;XKX&#8221;)          ) {            return &#8220;&#8221;;          } else {            return country;          }        }      })      .map((country) =&gt; country.fields.ISO3)      .join(&#8220;,&#8221;);    const covidCasesAllCountries = await getCovidCasesForAllCountries(      filteredCountries    );    const covidCasesPuertoRico = await getCovidCasesForPuertoRico();    const covidCasesHongKong = await getCovidCasesForHongKong();    const finalData = [];    data.forEach((data) =&gt; {      const index = covidCasesAllCountries.findIndex((x) =&gt; {        let country = &#8220;&#8221;;        if (x != undefined) {          switch (x.country) {            case &#8220;UK&#8221;:              country = &#8220;United Kingdom&#8221;;              break;            case &#8220;USA&#8221;:              country = &#8220;United States of America&#8221;;              break;            case &#8220;UAE&#8221;:              country = &#8220;United Arab Emirates&#8221;;              break;            case &#8220;LAO&#8221;:              country = &#8220;Lao People&#8217;s Democratic Republic&#8221;;              break;            case &#8220;DRC&#8221;:              country = &#8220;Democratic Republic of Congo&#8221;;              break;            case &#8220;Bosnia&#8221;:              country = &#8220;Bosnia and Herzegovina&#8221;;              break;            case &#8220;Kyrgyzstan&#8221;:              country = &#8220;Kyrgyz Republic&#8221;;              break;            case &#8220;S. Korea&#8221;:              country = &#8220;South Korea&#8221;;              break;            default:              country = x.country;          }        }        return country === data.fields.Country.trim();      });      let covidData;      if (data.fields.Country === &#8220;Puerto Rico&#8221;) {        covidData = covidCasesPuertoRico;      } else if (data.fields.Country === &#8220;Hong Kong&#8221;) {        covidData = covidCasesHongKong;      } else {        covidData = covidCasesAllCountries[index];      }      const obj = {        &#8230;data.fields,        covid: covidData,      };      finalData.push(obj);    });    return finalData;  }  const filterDataByValue = (dataArr, filterByProp, filterByValue) =&gt;    dataArr.filter((data) =&gt; data[filterByProp] === filterByValue);  const continents = [    &#8220;Asia&#8221;,    &#8220;Africa&#8221;,    &#8220;Europe&#8221;,    &#8220;North America&#8221;,    &#8220;South America&#8221;,    &#8220;Oceania&#8221;,  ];  const clearCountryMarkup = () =&gt; {    const countryRestrictionsWrappers = covidContinentsRestrictionsWrapper.querySelectorAll(      &#8220;.country-restrictions-wrapper&#8221;    );    countryRestrictionsWrappers.forEach((wrapper) =&gt; (wrapper.innerHTML = &#8220;&#8221;));  };  const filterByContinent = (dataArr) =&gt; {    let asia, africa, europe, northAmerica, southAmerica, oceania;    continents.forEach((continent) =&gt; {      switch (continent) {        case &#8220;Asia&#8221;:          asia = filterDataByValue(dataArr, &#8220;Continent&#8221;, continent);          break;        case &#8220;Africa&#8221;:          africa = filterDataByValue(dataArr, &#8220;Continent&#8221;, continent);          break;        case &#8220;Europe&#8221;:          europe = filterDataByValue(dataArr, &#8220;Continent&#8221;, continent);          break;        case &#8220;North America&#8221;:          northAmerica = filterDataByValue(dataArr, &#8220;Continent&#8221;, continent);          break;        case &#8220;South America&#8221;:          southAmerica = filterDataByValue(dataArr, &#8220;Continent&#8221;, continent);          break;        case &#8220;Oceania&#8221;:          oceania = filterDataByValue(dataArr, &#8220;Continent&#8221;, continent);          break;        default:          null;      }    });    return {      asianCountries: asia,      africanCountries: africa,      europeanCountries: europe,      northAmericanCountries: northAmerica,      southAmericanCountries: southAmerica,      oceanianCountries: oceania,    };  };  window.addEventListener(&#8220;DOMContentLoaded&#8221;, () =&gt; {    if (!document.body.classList.contains(&#8220;tve_editor_page&#8221;)) {      covidRestrictionsFinalData().then((data) =&gt; {        const mainWrapper = document.querySelector(          &#8220;.covid-restrictions-tab-wrapper&#8221;        );        const initStopIndex = 4;        const selectFilter = mainWrapper.querySelector(&#8220;.filter select&#8221;);        const allCountries = [&#8230;data];        const noRestrictions = filterDataByValue(          allCountries,          &#8220;Travel Restrictions&#8221;,          &#8220;No Restrictions&#8221;        );        const partialRestrictions = filterDataByValue(          allCountries,          &#8220;Travel Restrictions&#8221;,          &#8220;Partial Restrictions&#8221;        );        const countriesWithAllRestrictions = filterByContinent(allCountries);        const countriesWithPartialRestrictions = filterByContinent(          partialRestrictions        );        countriesWithAllRestrictions;        const countriesWithNoRestrictions = filterByContinent(noRestrictions);        Object.entries(countriesWithAllRestrictions).forEach(([key, value]) =&gt; {          const stopIndex =            value.length &#8211; initStopIndex &gt; 0 ? initStopIndex : value.length;          switch (key) {            case &#8220;asianCountries&#8221;:              generateFinalMarkup(value, &#8220;asia&#8221;, 0, stopIndex);              break;            case &#8220;europeanCountries&#8221;:              generateFinalMarkup(value, &#8220;europe&#8221;, 0, stopIndex);              break;            case &#8220;africanCountries&#8221;:              generateFinalMarkup(value, &#8220;africa&#8221;, 0, stopIndex);              break;            case &#8220;northAmericanCountries&#8221;:              generateFinalMarkup(value, &#8220;north-america&#8221;, 0, stopIndex);              break;            case &#8220;southAmericanCountries&#8221;:              generateFinalMarkup(value, &#8220;south-america&#8221;, 0, stopIndex);              break;            case &#8220;oceanianCountries&#8221;:              generateFinalMarkup(value, &#8220;oceania&#8221;, 0, stopIndex);              break;            default:              return null;          }        });        selectFilter.addEventListener(&#8220;change&#8221;, (event) =&gt; {          let countriesData;          const eventValue = event.target.value;          switch (eventValue) {            case &#8220;all&#8221;:              countriesData = countriesWithAllRestrictions;              break;            case &#8220;no-restrictions&#8221;:              countriesData = countriesWithNoRestrictions;              break;            case &#8220;partial-restrictions&#8221;:              countriesData = countriesWithPartialRestrictions;              break;            default:              countriesData = null;          }          if (countriesData) {            Object.entries(countriesData).forEach(([key, value]) =&gt; {              const viewBtns = document.querySelectorAll(&#8220;.view-btn&#8221;);              if (eventValue == &#8220;all&#8221;) {                viewBtns.forEach((btn) =&gt; btn.classList.remove(&#8220;hide&#8221;));              }              const stopIndex =                value.length &#8211; initStopIndex &gt; 0 ? initStopIndex : value.length;              switch (key) {                case &#8220;asianCountries&#8221;:                  generateFinalMarkup(value, &#8220;asia&#8221;, 0, stopIndex);                  break;                case &#8220;europeanCountries&#8221;:                  generateFinalMarkup(value, &#8220;europe&#8221;, 0, stopIndex);                  break;                case &#8220;africanCountries&#8221;:                  generateFinalMarkup(value, &#8220;africa&#8221;, 0, stopIndex);                  break;                case &#8220;northAmericanCountries&#8221;:                  generateFinalMarkup(value, &#8220;north-america&#8221;, 0, stopIndex);                  break;                case &#8220;southAmericanCountries&#8221;:                  generateFinalMarkup(value, &#8220;south-america&#8221;, 0, stopIndex);                  break;                case &#8220;oceanianCountries&#8221;:                  generateFinalMarkup(value, &#8220;oceania&#8221;, 0, stopIndex);                  break;                default:                  return null;              }            });          }        });        const viewButtons = document.querySelectorAll(&#8220;.view-btn&#8221;);        viewButtons.forEach((btn) =&gt; {          btn.addEventListener(&#8220;click&#8221;, function (e) {            const targetElement = e.target;            const tabContentWrapper = targetElement.closest(&#8220;.tab-content&#8221;);            const countryRestrictionsWrapper = tabContentWrapper.querySelector(              &#8220;.country-restrictions-wrapper&#8221;            );            const parentElement = tabContentWrapper.parentElement.parentElement;            const selectFilter = parentElement.querySelector(&#8220;.filter select&#8221;);            const continent = tabContentWrapper.getAttribute(&#8220;id&#8221;);            let continentsData;            const currentSelectValue = selectFilter.value;            switch (currentSelectValue) {              case &#8220;all&#8221;:                continentsData = countriesWithAllRestrictions;                break;              case &#8220;no-restrictions&#8221;:                continentsData = countriesWithNoRestrictions;                break;              case &#8220;partial-restrictions&#8221;:                continentsData = countriesWithPartialRestrictions;                break;              default:                continentsData = null;            }            const continentData = continentsData;            const currentStopIndex = parseInt(              countryRestrictionsWrapper.getAttribute(&#8220;data-stop&#8221;)            );            switch (continent) {              case &#8220;asia&#8221;:                generateFinalMarkup(                  continentData.asianCountries,                  &#8220;asia&#8221;,                  0,                  continentData.asianCountries.length &#8211;                    currentStopIndex &#8211;                    initStopIndex &gt;                    0                    ? currentStopIndex + initStopIndex                    : continentData.asianCountries.length                );                continentData.asianCountries.length &#8211;                  currentStopIndex &#8211;                  initStopIndex &lt;=                  0                  ? targetElement.classList.add(&#8220;hide&#8221;)                  : null;                break;              case &#8220;europe&#8221;:                generateFinalMarkup(                  continentData.europeanCountries,                  &#8220;europe&#8221;,                  0,                  continentData.europeanCountries.length &#8211;                    currentStopIndex &#8211;                    initStopIndex &gt;                    0                    ? currentStopIndex + initStopIndex                    : continentData.europeanCountries.length                );                continentData.europeanCountries.length &#8211;                  currentStopIndex &#8211;                  initStopIndex &lt;=                  0                  ? targetElement.classList.add(&#8220;hide&#8221;)                  : null;                break;              case &#8220;africa&#8221;:                generateFinalMarkup(                  continentData.africanCountries,                  &#8220;africa&#8221;,                  0,                  continentData.africanCountries.length &#8211;                    currentStopIndex &#8211;                    initStopIndex &gt;                    0                    ? currentStopIndex + initStopIndex                    : continentData.africanCountries.length                );                continentData.africanCountries.length &#8211;                  currentStopIndex &#8211;                  initStopIndex &lt;=                  0                  ? targetElement.classList.add(&#8220;hide&#8221;)                  : null;                break;              case &#8220;north-america&#8221;:                generateFinalMarkup(                  continentData.northAmericanCountries,                  &#8220;north-america&#8221;,                  0,                  continentData.northAmericanCountries.length &#8211;                    currentStopIndex &#8211;                    initStopIndex &gt;                    0                    ? currentStopIndex + initStopIndex                    : continentData.northAmericanCountries.length                );                continentData.northAmericanCountries.length &#8211;                  currentStopIndex &#8211;                  initStopIndex &lt;=                  0                  ? targetElement.classList.add(&#8220;hide&#8221;)                  : null;                break;              case &#8220;south-america&#8221;:                generateFinalMarkup(                  continentData.southAmericanCountries,                  &#8220;south-america&#8221;,                  0,                  continentData.southAmericanCountries.length &#8211;                    currentStopIndex &#8211;                    initStopIndex &gt;                    0                    ? currentStopIndex + initStopIndex                    : continentData.southAmericanCountries.length                );                continentData.southAmericanCountries.length &#8211;                  currentStopIndex &#8211;                  initStopIndex &lt;=                  0                  ? targetElement.classList.add(&#8220;hide&#8221;)                  : null;                break;              case &#8220;oceania&#8221;:                generateFinalMarkup(                  continentData.oceanianCountries,                  &#8220;oceania&#8221;,                  0,                  continentData.oceanianCountries.length &#8211;                    currentStopIndex &#8211;                    initStopIndex &gt;                    0                    ? currentStopIndex + initStopIndex                    : continentData.oceanianCountries.length                );                continentData.oceanianCountries.length &#8211;                  currentStopIndex &#8211;                  initStopIndex &lt;=                  0                  ? targetElement.classList.add(&#8220;hide&#8221;)                  : null;                break;              default:                return null;            }          });        });      });      const defaultTab = document.querySelector(&#8220;.tablink.defaultOpen&#8221;);      defaultTab.click();    }  });[\/tcb-script][tcb-script]  covidContinentsRestrictionsWrapper.addEventListener(&#8220;click&#8221;, function (e) {    if (e.target.matches(&#8220;.country-info *&#8221;)) {      const countryCard = e.target.closest(&#8220;.country-restrictions&#8221;);      const restrictionsInfo = countryCard.querySelector(&#8220;.restrictions-info&#8221;);      const arrowSvg = countryCard.querySelector(&#8220;.arrow svg&#8221;);      restrictionsInfo.classList.toggle(&#8220;show&#8221;);      arrowSvg.classList.toggle(&#8220;invert&#8221;);    }  });[\/tcb-script]<\/p>\n<h2>World&#8217;s Most Popular Attractions Open for Tourists Again<\/h2>\n<p>Sign up for our monthly newsletter<\/p>\n<p>Your dose of travel fix &#8211; from hacks and deals to travel tips and everything in between,      delivered monthly to your inbox<\/p>\n<p>                    Get Inspired      Please enter a valid email      Unsubscribe anytime      <\/p>\n<h2 id=\"travel4\">The Rise Of Travel Bubbles &#8211; Future of Travel<\/h2>\n<p> <!--                        <img decoding=\"async\" data-src=\"https:\/\/cdn-imgix-open.headout.com\/blog\/Travel+Reopens\/Travel+Bubble.jpg?fm=pjpg&amp;auto=compress&amp;w=1000&amp;h=550&amp;crop=faces&amp;fit=min\" data-sizes=\"auto\" alt=\"countries open for travel\" src=\"https:\/\/cdn-imgix-open.headout.com\/blog\/Travel+Reopens\/Travel+Bubble.jpg?fm=pjpg&amp;auto=compress&amp;w=1000&amp;h=550&amp;crop=faces&amp;fit=min\" data-pagespeed-url-hash=\"1859759222\" onload=\"pagespeed.CriticalImages.checkImageForCriticality(this);\" draggable=\"false\">        !--><\/p>\n<p>With countries slowly recovering from the aftermath of COVID-19, the future of travel depends on a new phenomenon called a \u201ctravel bubble\u201d. A feasible travel bubble involves connecting countries or states that have shown a great level of success in containing the novel coronavirus pandemic domestically. This bubble for countries\/cities will allow members of the bubble to <a href=\"https:\/\/www.headout.com\/global-travel-reopening-tracker\/#travel-recommendations\">restart travel and tourism<\/a> and trade ties with each other. <\/p>\n<p>Reinvented by the Estonia-Latvia-Lithuania bubble, a travel bubble allows residents of the countries to travel freely by rail, air, and sea without (or with minimal) quarantine measures. While members of the bubble can travel immediately, new visitors joining the bubble will have to undergo a 14-day quarantine period before starting their voyage.<\/p>\n<p>The rules and regulations are pretty straightforward; to freely travel in the bubble, a person should not have traveled outside the member countries in the past 14 days, should not be infected with coronavirus, and should not have come in contact with anyone who has been coronavirus infected. These conditions have to be met with relevant documents as well. <\/p>\n<h3>Top Emerging Travel Bubbles<\/h3>\n<p>                                                 European Union                <\/p>\n<p> Most EU member countries allow international visitors from other members. As the number of rising cases across Europe threaten this bubble, the EU will now adopt and implement common travel criteria across the region for clarity and safety. Passengers from certain countries like Australia and South Korea are allowed to enter the territory. <a href=\"https:\/\/reopen.europa.eu\/en\" target=\"_blank\" rel=\"noopener\">Find the list of countries here.<\/a><\/p>\n<p>                                                                                     United Kingdom                <\/p>\n<p> The UK has no travel restrictions for those visiting from a number of countries including Australia, Cyprus, Dominica, Estonia, Finland, Germany, Hong Kong, Ireland, the Isle of Man, Japan, Latvia, Malaysia, New Zealand, Norway, Seychelles, Singapore, Sweden, Taiwan, Thailand, and Vietnam. <a href=\"https:\/\/www.gov.uk\/guidance\/coronavirus-covid-19-travel-corridors\" target=\"_blank\" rel=\"noopener\">Find the full list of countries in the UK travel corridor here.<\/a><\/p>\n<p>                                                                                     Australia &#8211; New Zealand                                    <\/p>\n<p> The Australia-New Zealand travel bubble start mid-October. It is currently a one-way air corridor, with New Zealand yet to mention when Australian passengers can enter the country. New Zealanders will be able to visit the NSW and the Northern Territory of Australia quarantine-free if they meet certain criteria.<\/p>\n<p>                                                                                     Asia                                    <\/p>\n<p> The China-Hong Kong travel bubble was the first of its kind in Asia. India has about 13 travel bubbles in place with countries such as the US, UK, and Canada. Currently, Singapore is in talks with Hong Kong and Indonesia to create a travel bubble. Japan has created a travel bubble with Cambodia, Laos, Malaysia, Myanmar, and Taiwan, open to residents only. <\/p>\n<h2>Countries Open For Travel Now: FAQs<\/h2>\n<p><!--\n\n<h2>Like it? Pin it! <\/h2>\n\n<img decoding=\"async\" src=\"https:\/\/cdn-imgix-open.headout.com\/blog\/Pinterest\/94.png?auto=compress&amp;fm=webp&amp;w=700&amp;h=800&amp;q=80\" alt=\"traveling post covid\" style=\"margin: auto; display: block;\" data-pagespeed-url-hash=\"3805180784\" onload=\"pagespeed.CriticalImages.checkImageForCriticality(this);\" draggable=\"false\">!--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As the coronavirus started to spread, countries across the world quickly shut down in order to contain it. Attractions, restaurants, beaches, malls, and other places were closed as well. But a question that on every traveller\u2019s mind remained, \u201cWhen will travel restrictions be lifted?\u201d. Several countries have started to ease their lockdowns and are open [&hellip;]<\/p>\n","protected":false},"author":25,"featured_media":10000,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45],"tags":[6559,6311,6310],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Countries Open For Travel - Plan Your Next Holiday<\/title>\n<meta name=\"description\" content=\"Planning your next trip but unsure about where to go? Our guide to countries open for travel and tourism will give you all the information you need.\" \/>\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\/countries-open-for-tourism\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Countries Open For Travel - Plan Your Next Holiday\" \/>\n<meta property=\"og:description\" content=\"Planning your next trip but unsure about where to go? Our guide to countries open for travel and tourism will give you all the information you need.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/\" \/>\n<meta property=\"og:site_name\" content=\"Headout Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-15T08:03:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-07T18:56:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.headout.com\/blog\/wp-content\/uploads\/2019\/04\/dozen-58882-unsplash-e1555245896788.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1333\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Manisha Choudhari\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Manisha Choudhari\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Countries Open For Travel - Plan Your Next Holiday","description":"Planning your next trip but unsure about where to go? Our guide to countries open for travel and tourism will give you all the information you need.","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\/countries-open-for-tourism\/","og_locale":"en_US","og_type":"article","og_title":"Countries Open For Travel - Plan Your Next Holiday","og_description":"Planning your next trip but unsure about where to go? Our guide to countries open for travel and tourism will give you all the information you need.","og_url":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/","og_site_name":"Headout Blog","article_published_time":"2020-10-15T08:03:06+00:00","article_modified_time":"2022-02-07T18:56:50+00:00","og_image":[{"width":2000,"height":1333,"url":"https:\/\/www.headout.com\/blog\/wp-content\/uploads\/2019\/04\/dozen-58882-unsplash-e1555245896788.jpg","type":"image\/jpeg"}],"author":"Manisha Choudhari","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Manisha Choudhari","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/#article","isPartOf":{"@id":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/"},"author":{"name":"Manisha Choudhari","@id":"https:\/\/www.headout.com\/blog\/#\/schema\/person\/415b4926de23c1dfad7576985cacc339"},"headline":"Countries open for tourism, the complete list","datePublished":"2020-10-15T08:03:06+00:00","dateModified":"2022-02-07T18:56:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/"},"wordCount":2777,"commentCount":0,"publisher":{"@id":"https:\/\/www.headout.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/#primaryimage"},"thumbnailUrl":"https:\/\/www.headout.com\/blog\/wp-content\/uploads\/2019\/04\/dozen-58882-unsplash-e1555245896788.jpg","keywords":["COVID","Global","Travel"],"articleSection":["Travel"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/","url":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/","name":"Countries Open For Travel - Plan Your Next Holiday","isPartOf":{"@id":"https:\/\/www.headout.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/#primaryimage"},"image":{"@id":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/#primaryimage"},"thumbnailUrl":"https:\/\/www.headout.com\/blog\/wp-content\/uploads\/2019\/04\/dozen-58882-unsplash-e1555245896788.jpg","datePublished":"2020-10-15T08:03:06+00:00","dateModified":"2022-02-07T18:56:50+00:00","description":"Planning your next trip but unsure about where to go? Our guide to countries open for travel and tourism will give you all the information you need.","breadcrumb":{"@id":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/#primaryimage","url":"https:\/\/www.headout.com\/blog\/wp-content\/uploads\/2019\/04\/dozen-58882-unsplash-e1555245896788.jpg","contentUrl":"https:\/\/www.headout.com\/blog\/wp-content\/uploads\/2019\/04\/dozen-58882-unsplash-e1555245896788.jpg","width":2000,"height":1333,"caption":"Barcelona in July"},{"@type":"BreadcrumbList","@id":"https:\/\/www.headout.com\/blog\/countries-open-for-tourism\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Travel","item":"https:\/\/www.headout.com\/blog\/category\/wcp-travel\/"},{"@type":"ListItem","position":2,"name":"Countries Open For Tourism"}]},{"@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\/415b4926de23c1dfad7576985cacc339","name":"Manisha Choudhari","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.headout.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/857f7d75c51032097426b804b3c0cc4a?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/857f7d75c51032097426b804b3c0cc4a?s=96&r=g","caption":"Manisha Choudhari"},"description":"If there's one thing Manisha loves more than cake, it's travelling. While studying in London, she fell in love with the city, and decided that she wanted to combine her two interests - writing and travelling. Having made London her home, she now travels through Europe during summers, spends winters under ten blankets, and writes about her adventures in between.","url":"https:\/\/www.headout.com\/blog\/author\/manisha\/"}]}},"_links":{"self":[{"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/posts\/49922"}],"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\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/comments?post=49922"}],"version-history":[{"count":1,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/posts\/49922\/revisions"}],"predecessor-version":[{"id":82485,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/posts\/49922\/revisions\/82485"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/media\/10000"}],"wp:attachment":[{"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/media?parent=49922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/categories?post=49922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/tags?post=49922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}