{"id":28627,"date":"2025-07-22T08:17:38","date_gmt":"2025-07-22T08:17:38","guid":{"rendered":"https:\/\/www.visitvirginiabeach.com\/loonie-savers\/"},"modified":"2026-09-11T19:47:04","modified_gmt":"2026-09-11T19:47:04","slug":"loonie-savers","status":"publish","type":"page","link":"https:\/\/www.visitvirginiabeach.com\/fr\/loonie-savers\/","title":{"rendered":"Loonie Savers"},"content":{"rendered":"\n<section class=\"image-heading\" arialabelledby=\"Image Header\"><div class=\"fold-wrap xl video-wrap\"><div class=\"image-container\"><img decoding=\"async\" src=\"https:\/\/www.visitvirginiabeach.com\/wp-content\/uploads\/2025\/07\/PH_LSR22_First-Landing-State-Park-Family-compressed-10-scaled.jpg\" alt=\"A family walks hand-in-hand along a wooded trail in First Landing State park, with a woman in a flowing skirt, a man in a light shirt, and a girl in a white dress.\" width=\"1920\" height=\"1080\" fetchpriority=\"high\"\/><div class=\"overlay-content\"><h1 class=\"extra\">Promotion Loonie Savers \u00e0 Virginia Beach<\/h1><\/div><\/div><\/div><div class=\"after-overlay-content page-content-wrap fold-wrap md padded\"><p>\u00c0 seulement une journ\u00e9e de route du Qu\u00e9bec, Virginia Beach s\u2019est associ\u00e9e \u00e0 des h\u00f4tels, restaurants et pourvoyeurs locaux pour offrir aux Canadiens encore plus de plaisir pour moins de loonies. Avec des r\u00e9ductions sur l\u2019h\u00e9bergement, les activit\u00e9s et la restauration, profite de quatre saisons de fun sans d\u00e9passer ton budget. Pour profiter de ces offres sp\u00e9ciales, t\u00e9l\u00e9charge simplement les offres directement depuis notre site web ou consulte l\u2019offre en ligne et pr\u00e9sente la version num\u00e9rique sur place \u00e0 l\u2019\u00e9tablissement \u2014 ils s\u2019occupent du reste. Les dates de validit\u00e9 sont fix\u00e9es par chaque \u00e9tablissement ; merci de lire les d\u00e9tails de chaque offre.   <\/p><\/div><\/section>\n<link rel=\"stylesheet\" type=\"text\/css\" href=\"https:\/\/explore.visitvirginiabeach.com\/css\/checkout\/persistent-cart\/persistentCart.css?v=1.1\"><script>window.bwvars = {offerId: 3528, partnerId: 344, checkoutUrl: \"https:\/\/explore.visitvirginiabeach.com\"};<\/script><script src=\"https:\/\/explore.visitvirginiabeach.com\/js\/checkout\/persistent-cart\/persistentCart.js?v=1.1\" defer><\/script><br \/>\n<div class=\"bwmodule\" data-bwmoduleid=\"101098\"><\/div>\n<div class=\"bwmodule\" data-bwmoduleid=\"75610\"><\/div>\n<section class=\"listings bg-white\" data-wp-interactive=\"listingsGrid\"\n        data-wp-context='listingsGrid::{\"filters\":{\"amenity\":[],\"city\":[],\"category\":[],\"regions\":[]},\"activeSortingAZ\":\"random\",\"azChecked\":false,\"zaChecked\":false,\"randomChecked\":true,\"newestChecked\":false,\"activeViewList\":true,\"activeViewListDisplay\":\"\",\"activeViewMap\":false,\"activeViewMapDisplay\":\"none\",\"pills\":[],\"coords\":[],\"search_string\":\"\",\"pending_search\":\"\",\"page_changed\":false,\"default_city\":[],\"default_amenity\":[],\"default_single_amenity\":\"\",\"selectedCategories\":[\"514\"],\"default_region\":\"\",\"show_tripadvisor\":true,\"filterAdded\":0,\"isResetOpen\":\"none\",\"hasPills\":\"none\",\"categories\":{\"name\":\"\",\"items\":[{\"name\":\"Loonie Savers\",\"id\":\"514\",\"checked\":false}]},\"cities\":[],\"regions\":[]}'\n         data-nonce=\"8b5c8f3447\"\n         data-wp-init=\"callbacks.initGrid\"\n         id=\"listings-grid\">\n         \n    <div class=\"title-wrap padded fold-wrap xl mg-bottom-x2 mg-top-x2\">\n        <h2 class=\"color-cyan-900\" id=\"related-articles-heading\">Rechercher Loonie Savers dans H\u00e9bergement, Divertissement &#038; Restauration<\/h2>\n    <\/div>\n        <div class=\"fold-sm-up fold-wrap xl listing-whole-wrap padded gapped-x2 mg-bottom-x2\">\n        <div class=\"filters-wrap\" id=\"filters-panel\" aria-controls=\"filters-panel\">\n            <div class=\"filters-inner-wrap\">\n                <button class=\"close-filters-panel close-top button button--small button--circle has-icon has-icon--after has-icon--close\" aria-label=\"Close filters panel\">Close\n                <\/button>\n                <div class=\"filter-search mg-bottom-x2\">\n                    <p class=\"h4\">Filters<\/p>\n                    <div class=\"search-input-wrap\">\n                        <label for=\"listings-search\" class=\"visually-hidden\">Search <\/label>\n                        <input value=\"\" type=\"search\" placeholder=\"Search\" id=\"listings-search\" data-wp-on--input=\"actions.updateSearchString\"\n                               data-wp-bind--value=\"context.search_string\" aria-label=\"Search \" class=\"search-box\" autocomplete=\"off\">\n                        <button type=\"button\" class=\"clear-search\" data-wp-on--click=\"actions.clearSearch\" aria-label=\"Clear Search\" id=\"clear-search-button\">&#x2715;<\/button>\n                        <button type=\"button\" id=\"listings-search-btn\" data-wp-on--click=\"actions.search\" aria-label=\"Submit search\"\n                                class=\"button button--small button--circle has-icon--after has-icon--search\"><\/button>\n                    <\/div>\n                <\/div>\n                <div class=\"inputs-wrap size-14\">\n                    <!--todo: finish the rest with wp-init -->\n                    <fieldset style=\"display:block;\" class=\"input-wrap mg-bottom-x2\" id=\"categories\" data-wp-init=\"actions.checkCategoriesDisplay\"\n                              data-wp-style--display=\"context.categoriesOpen\" data-wp-context='{ \"categoriesOpen\" : \"block\"}'>\n                        <legend class=\"h5 color-cyan-900\">Type<\/legend>\n                        <template data-wp-each--category=\"context.categories.items\" data-wp-each-key=\"context.category.id\">\n                            <label>\n                                <input type=\"checkbox\"\n                                       data-wp-bind--data-value=\"context.category.id\"\n                                       data-wp-bind--checked=\"context.category.checked\"\n                                       data-wp-on--change=\"actions.addFilter\"\n                                       data-type=\"category\"\n                                       data-wp-init=\"callbacks.initialCategoryState\"\n                                       data-wp-bind--data-label=\"context.category.name\"\n                                >\n                                <span data-wp-text=\"context.category.name\"><\/span>\n                            <\/label>\n                        <\/template>\n                            <label data-wp-each-child=\"listingsGrid::context.categories.items\">\n                                <input data-label=\"Loonie Savers\" data-value=\"514\" type=\"checkbox\"\n                                       data-wp-bind--data-value=\"context.category.id\"\n                                       data-wp-bind--checked=\"context.category.checked\"\n                                       data-wp-on--change=\"actions.addFilter\"\n                                       data-type=\"category\"\n                                       data-wp-init=\"callbacks.initialCategoryState\"\n                                       data-wp-bind--data-label=\"context.category.name\"\n                                >\n                                <span data-wp-text=\"context.category.name\">Loonie Savers<\/span>\n                            <\/label>\n                        \n                        <button class=\"read-more color-fuchsia-900 has-icon has-icon--after has-icon--arrow-down has-icon--bg-fuchsia-900\" aria-expanded=\"false\"\n                                aria-controls=\"category-a\"> View More\n                        <\/button>\n                    <\/fieldset>\n                                        \n                                    <\/div>\n                <div class=\"bottom-buttons fold gapped justify-content-between\">\n                    <button data-wp-on--click=\"actions.resetFilters\"\n                            class=\"has-icon has-icon--before has-icon--refresh has-icon--bg-fuchsia-900 button-as-link size-14 color-fuchsia-900\" aria-label=\"Clear filters\">Clear\n                    <\/button>\n                    <!-- <button data-wp-on--click=\"actions.get_listings\" class=\"close-filters-panel button button--tight button--small has-icon has-icon--after has-icon--tailarrow-right\">Filter results<\/button> -->\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"results-wrap\">\n            <div class=\"results-settings fold-sm-up flex-nowrap align-items-center mg-bottom\">\n                <div class=\"col-sm-2 results-count\">\n                    <p class=\"size-12\" aria-live=\"polite\" id=\"results-count\"><\/p>\n                <\/div>\n                <div class=\"col-sm-4 sortings-wrap\">\n                    <div class=\"trigger-filters\">\n                        <button class=\"button button--tight button--small has-icon has-icon--after has-icon--filter\" id=\"filters-mobile\">Filter<\/button>\n                    <\/div>\n                    <div class=\"view-modes\" role=\"group\" aria-label=\"View modes\">\n                        <button id=\"list-view-btn\" class=\"button button--small button--transparent has-icon has-icon--before has-icon--sort active\" aria-pressed=\"true\"\n                                data-type=\"list\"\n                                data-wp-context='{ \"listPressed\" : \"true\"}'\n                                data-wp-on--click=\"actions.setActiveView\"\n                                data-wp-class--active=\"context.activeViewList\">List view\n                        <\/button>\n                        <button id=\"map-view-btn\" class=\"button button--small has-icon has-icon--before has-icon--map\" aria-pressed=\"false\"\n                                data-type=\"map\"\n                                data-wp-context='{ \"mapPressed\" : \"false\"}'\n                                data-wp-on--click=\"actions.setActiveView\"\n                                data-wp-class--active=\"context.activeViewMap\">Map view\n                        <\/button>\n                    <\/div>\n                    <div class=\"sort-by-wrap\">\n                        <div class=\"dd size-14\">\n                            <button class=\"ddbtn has-icon has-icon--after has-icon--arrow-down button-as-link has-icon--bg-fuchsia-900 color-fuchsia-900 font-weight-600\"\n                                    aria-haspopup=\"true\" aria-expanded=\"false\" id=\"sortButton\">\n                                Sort by\n                            <\/button>\n                            <ul class=\"dd-menu\" aria-labelledby=\"sortButton\">\n                                <li data-value=\"random\" tabindex=\"0\">\n                                    <label>\n                                        <input checked type=\"radio\" id=\"option-az\" value=\"Random\"\n                                               data-type=\"random\"\n                                               data-wp-bind--checked=\"context.randomChecked\"\n                                               data-wp-on--change=\"actions.sortList\"\n                                        \/> Random<\/label>\n                                <\/li>\n                                <li data-value=\"A-Z\" tabindex=\"1\">\n                                    <label>\n                                        <input type=\"radio\" id=\"option-az\" value=\"A-Z\"\n                                               data-type=\"az\"\n                                               data-wp-bind--checked=\"context.azChecked\"\n                                               data-wp-on--change=\"actions.sortList\"\n                                        \/> A-Z<\/label>\n                                <\/li>\n                                <li data-value=\"Z-A\" tabindex=\"2\">\n                                    <label>\n                                        <input type=\"radio\" id=\"option-za\" value=\"Z-A\"\n                                               data-wp-bind--checked=\"context.zaChecked\"\n                                               data-type=\"za\"\n                                               data-wp-on--change=\"actions.sortList\"\n                                        \/> Z-A<\/label>\n                                <\/li>\n                                <li data-value=\"newest\" tabindex=\"3\">\n                                    <label>\n                                        <input type=\"radio\" id=\"option-newest\" value=\"Newest\"\n                                               data-wp-bind--checked=\"context.newestChecked\"\n                                               data-type=\"newest\"\n                                               data-wp-on--change=\"actions.sortList\"\n                                        \/> Newest<\/label>\n                                <\/li>\n                            <\/ul>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"selected-list fold\">\n                <ul style=\"display:none;\" class=\"unformatted fold gapped-small\" aria-label=\"Selected filters\" data-wp-style--display=\"context.hasPills\">\n                    <template data-wp-each--pill=\"state.pills\">\n                        <li><a class=\"a-tag has-icon has-icon--after has-icon--close has-icon--bg-fuchsia-900 bg-fuchsia-100 size-12\"\n                               data-wp-bind--data-type=\"context.pill.type\"\n                               data-wp-bind--data-value=\"context.pill.data_value\"\n                               aria-label=\"context.pill.label\"\n                               data-wp-bind--data-label=\"context.pill.label\"\n                               data-wp-on--click=\"actions.removePill\"\n                               data-wp-text=\"context.pill.label\">\n                            <\/a>\n                        <\/li>\n                    <\/template>\n                <\/ul>\n                <button style=\"display:none;\" data-wp-style--display=\"context.isResetOpen\" data-wp-on--click=\"actions.resetFilters\"\n                        class=\"clear-filters has-icon has-icon--before has-icon--refresh has-icon--bg-fuchsia-900 button-as-link size-14 color-fuchsia-900\"\n                        aria-label=\"Clear Filters\">Clear\n                <\/button>\n            <\/div>\n            <div id=\"listings-list-grid\" data-wp-watch--page=\"actions.watchPageChange\" data-wp-style--display=\"context.activeViewListDisplay\"\n                 class=\"list-results grid-boxes mg-top-x2\"><\/div>\n            <div style=\"display:none;\" id=\"map\" data-wp-style--display=\"context.activeViewMapDisplay\"><\/div>\n        <\/div>\n    <\/div>\n<\/section>\n<script>(g => {\n        var h, a, k, p = \"The Google Maps JavaScript API\", c = \"google\", l = \"importLibrary\", q = \"__ib__\", m = document, b = window;\n        b = b[c] || (b[c] = {});\n        var d = b.maps || (b.maps = {}), r = new Set, e = new URLSearchParams, u = () => h || (h = new Promise(async (f, n) => {\n            await (a = m.createElement(\"script\"));\n            e.set(\"libraries\", [...r] + \"\");\n            for (k in g) e.set(k.replace(\/[A-Z]\/g, t => \"_\" + t[0].toLowerCase()), g[k]);\n            e.set(\"callback\", c + \".maps.\" + q);\n            a.src = `https:\/\/maps.${c}apis.com\/maps\/api\/js?` + e;\n            d[q] = f;\n            a.onerror = () => h = n(Error(p + \" could not load.\"));\n            a.nonce = m.querySelector(\"script[nonce]\")?.nonce || \"\";\n            m.head.append(a)\n        }));\n        d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n))\n    })\n    ({key: \"AIzaSyC2STiWhAEatXVCfc1eolQogzxltXwaq6M\", v: \"weekly\"});<\/script><script type=\"text\/javascript\">\n    async function initMap() {\n        \/\/ Request needed libraries.\n        const {Map} = await google.maps.importLibrary(\"maps\");\n        const {AdvancedMarkerElement} = await google.maps.importLibrary(\"marker\");\n\n        const infowindow = new google.maps.InfoWindow();\n        const bounds = new google.maps.LatLngBounds();\n\n        const map = new Map(document.getElementById(\"map\"), {\n            zoom: 14,\n            mapId: 'vvb listings id',\n        });\n\n        const markers = [];\n        const labels = [];\n\n        \/\/coordinates\n        let coords = document.querySelectorAll('.result-box');\n\n        [...coords].map(function(item){\n\n            let foundCoords = (item.getAttribute('data-listing-coords').split(\",\"));\n\n            const pinImg = document.createElement(\"img\");\n            pinImg.src = \"\/wp-content\/themes\/virginia-beach\/assets\/images\/point.svg?v=1\";\n\n            if(foundCoords[0] !== \"\") {\n                if(foundCoords[0].length !== 0)\n                {\n                    markers.push(new AdvancedMarkerElement({\n                        map,\n                        position: {lat: parseFloat(foundCoords[0]), lng: parseFloat(foundCoords[1])},\n                        title: item.getAttribute('data-listing-name'),\n                        content: pinImg\n                    }));\n                }\n            }\n\n            labels.push({\n                name: item.getAttribute('data-listing-name'),\n                link: item.getAttribute('data-listing-link'),\n                thumb: item.getAttribute('data-listing-thumb'),\n                region: item.getAttribute('data-deregion'),\n            });\n\n        });\n\n        for (let i = 0; i < markers.length; i++) {\n\n            markers[i].addListener(\"gmp-click\", () => {\n                infowindow.open({\n                    anchor: markers[i],\n                    map\n                });\n\n                let info = create_info(labels[i].thumb, labels[i].name, labels[i].region, labels[i].link);\n                infowindow.setContent(info);\n\n            });\n\n            bounds.extend(markers[i].position);\n\n        }\n\n        map.fitBounds(bounds);\n    }\n\n\n    function create_info(img, title, location, link) {\n        \/\/ Escape function to prevent XSS\n        const escapeHTML = (str) => {\n            if (!str) return '';\n            return String(str)\n                .replace(\/&\/g, '&amp;')\n                .replace(\/<\/g, '&lt;')\n                .replace(\/>\/g, '&gt;')\n                .replace(\/\"\/g, '&quot;')\n                .replace(\/'\/g, '&#39;');\n        };\n\n        \/\/ Escape the user inputs\n        const safeTitle = escapeHTML(title);\n        const safeLocation = escapeHTML(location);\n\n        \/\/ For URLs, we should use proper attributes\n        return `\n        <div class=\"popup-wrap\">\n           <!-- <button class=\"button button--circle has-icon--after has-icon--close\">close<\/button> -->\n            <div class=\"image-wrap mg-bottom\">\n                <img loading=\"lazy\" decoding=\"async\" src=\"${img}\" alt=\"\" width=\"300\" height=\"250\" \/>\n            <\/div>\n            <div class=\"content-wrap fold flex-column align-items-start\">\n                <p class=\"h5 no-mg-bottom\">${safeTitle}<\/p>\n                <p class=\"the-location size-12 color-black head-font-family has-icon has-icon--before has-icon--map mg-top-small\">${safeLocation}<\/p>\n                <a href=\"${link}\" class=\"read-more color-fuchsia-900 has-icon has-icon--after has-icon--tailarrow-right has-icon--bg-fuchsia-900 mg-top align-self-end\">Get info<\/a>\n            <\/div>\n        <\/div>\n    `;\n    }\n<\/script>\n<section class=\"text-block\"><div class=\"fold-wrap md padded\">\n<h4 class=\"wp-block-heading\">QUELQUES RESTRICTIONS \u00c0 GARDER \u00c0 L\u2019ESPRIT :<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Des r\u00e9servations sont requises pour l\u2019h\u00e9bergement et certaines attractions<\/li>\n\n\n\n<li>Ton passeport canadien ou une pi\u00e8ce d\u2019identit\u00e9 sera exig\u00e9(e) \u00e0 l\u2019arriv\u00e9e pour b\u00e9n\u00e9ficier de la promotion.<\/li>\n\n\n\n<li>Un d\u00e9part anticip\u00e9 annulera la promotion et le tarif sera ajust\u00e9 au tarif public en vigueur.<\/li>\n\n\n\n<li>Offre sous r\u00e9serve de disponibilit\u00e9.<\/li>\n\n\n\n<li>Un s\u00e9jour minimum de nuits peut \u00eatre requis pour certains h\u00f4tels participants<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Pour plus d\u2019informations, appelle le 1-800-VA-BEACH.<\/p>\n<\/div><\/section>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"enable_ai_generated_excerpts":true,"ai_model_name":"","ai_prompt_id":"","footnotes":""},"class_list":["post-28627","page","type-page","status-publish","hentry"],"acf":[],"publishpress_future_action":{"enabled":false,"date":"2026-09-19 00:34:05","action":"change-status","newStatus":"draft","terms":[],"taxonomy":"translation_priority","extraData":[]},"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/www.visitvirginiabeach.com\/fr\/wp-json\/wp\/v2\/pages\/28627","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.visitvirginiabeach.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.visitvirginiabeach.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.visitvirginiabeach.com\/fr\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.visitvirginiabeach.com\/fr\/wp-json\/wp\/v2\/comments?post=28627"}],"version-history":[{"count":1,"href":"https:\/\/www.visitvirginiabeach.com\/fr\/wp-json\/wp\/v2\/pages\/28627\/revisions"}],"predecessor-version":[{"id":28628,"href":"https:\/\/www.visitvirginiabeach.com\/fr\/wp-json\/wp\/v2\/pages\/28627\/revisions\/28628"}],"wp:attachment":[{"href":"https:\/\/www.visitvirginiabeach.com\/fr\/wp-json\/wp\/v2\/media?parent=28627"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}