{"id":51247,"date":"2020-05-03T11:10:52","date_gmt":"2020-05-03T10:10:52","guid":{"rendered":"https:\/\/lockandbefree.com\/guarda-tu-equipaje-en-barcelona"},"modified":"2026-01-28T12:37:31","modified_gmt":"2026-01-28T11:37:31","slug":"book-at-barcelona","status":"publish","type":"page","link":"https:\/\/lockandbefree.com\/en\/book-at-barcelona","title":{"rendered":"Book at Barcelona"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; module_id=&#8221;eligelocal&#8221; background_enable_color=&#8221;off&#8221; custom_padding=&#8221;0px||||false|false&#8221;][et_pb_row _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; width_tablet=&#8221;&#8221; width_phone=&#8221;100%&#8221; width_last_edited=&#8221;on|phone&#8221; max_width=&#8221;1400px&#8221; custom_padding=&#8221;10px||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221; width=&#8221;90%&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.4&#8243; text_font=&#8221;||||||||&#8221; text_line_height=&#8221;1.8em&#8221; header_font=&#8221;||||||||&#8221; header_font_size=&#8221;39px&#8221; header_2_font=&#8221;|700|||||||&#8221; header_2_font_size=&#8221;35px&#8221; header_2_line_height=&#8221;1.2em&#8221; text_orientation=&#8221;center&#8221; module_alignment=&#8221;center&#8221; header_font_size_tablet=&#8221;44px&#8221; header_font_size_phone=&#8221;19px&#8221; header_font_size_last_edited=&#8221;on|phone&#8221; header_2_font_size_tablet=&#8221;60px&#8221; header_2_font_size_phone=&#8221;16px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; max_width=&#8221;90%&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||true|false&#8221;]<\/p>\n<h1>Locker and luggage storage shop in Barcelona<\/h1>\n<p>[\/et_pb_text][et_pb_code _builder_version=&#8221;4.27.5&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243;]    \n    <div class=\"locker-app-wrapper\">\n        <div class=\"locker-sidebar\">\n            <div class=\"locker-header\">\n                <h3 id=\"locker-count-title-en\">Searching for lockers...<\/h3>\n            <\/div>\n            <div id=\"locker-list-en\" class=\"locker-list-container\">\n                <div class=\"loading-spinner\">Loading map...<\/div>\n            <\/div>\n        <\/div>\n\n        <div id=\"locker-map-wrapper-en\" class=\"locker-map-wrapper\">\n            <div id=\"locker-map-en\" class=\"locker-map-canvas\"><\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n    document.addEventListener('DOMContentLoaded', function() {\n        const initMapEn = () => {\n            if (typeof mapboxgl === 'undefined' || typeof MapboxGeocoder === 'undefined') {\n                setTimeout(initMapEn, 100);\n                return;\n            }\n\n            mapboxgl.accessToken = 'pk.eyJ1IjoibG9ja2FuZGJlZnJlZSIsImEiOiJjbWp4NzY0ZWEwMWU3M2VzY3ZoeHBzemYyIn0.FGfEJafXqiblJmJ8WAGmUw'; \n            \n            const filtroCiudad = \"barcelona\"; \n            const centerLat = 40.416775;\n            const centerLng = -3.70379;\n            const zoomLevel = 12;\n\n            const map = new mapboxgl.Map({\n                container: 'locker-map-en',\n                style: 'mapbox:\/\/styles\/mapbox\/streets-v12',\n                center: [centerLng, centerLat],\n                zoom: zoomLevel\n            });\n\n            const geocoder = new MapboxGeocoder({\n                accessToken: mapboxgl.accessToken,\n                mapboxgl: mapboxgl,\n                placeholder: 'Search area...',\n                countries: 'es',\n                marker: false,\n                collapsed: false\n            });\n\n            map.addControl(geocoder, 'top-left');\n            map.addControl(new mapboxgl.GeolocateControl({\n                positionOptions: { enableHighAccuracy: true },\n                trackUserLocation: true,\n                showUserHeading: true\n            }), 'top-right');\n            map.addControl(new mapboxgl.NavigationControl(), 'top-right');\n\n            map.on('load', function() {\n                map.resize();\n            });\n\n            setTimeout(() => {\n                map.resize();\n            }, 1000);\n\n            window.addEventListener('resize', () => {\n                map.resize();\n            });\n\n            const listContainer = document.getElementById('locker-list-en');\n            const countTitle = document.getElementById('locker-count-title-en');\n            let markers = {};\n\n            fetch('\/wp-json\/wp\/v2\/taquillas?per_page=100&lang=en')\n                .then(response => response.json())\n                .then(data => {\n                    let lockers = data;\n\n                    if (filtroCiudad !== \"\") {\n                        lockers = data.filter(item => {\n                            const ciudadItem = item.datos_mapa?.ciudad || \"\";\n                            return ciudadItem.toLowerCase().includes(filtroCiudad);\n                        });\n                    }\n\n                    listContainer.innerHTML = '';\n\n                    if (lockers.length === 0) {\n                        countTitle.innerText = \"No lockers available\";\n                        listContainer.innerHTML = `<p style=\"padding:20px; text-align:center\">No results found<\/p>`;\n                        return;\n                    } else {\n                        countTitle.innerText = `${lockers.length} Lockers Available`;\n                    }\n\n                    const bounds = new mapboxgl.LngLatBounds();\n\n                    lockers.forEach((item) => {\n                        const meta = item.datos_mapa;\n                        if (!meta || !meta.latitud || !meta.longitud) return;\n\n                        const props = {\n                            id: item.id,\n                            title: item.title.rendered,\n                            lat: parseFloat(meta.latitud),\n                            lng: parseFloat(meta.longitud),\n                            address: meta.direccion || 'Center',\n                            url: meta.url_reserva || '#',\n                            prox: meta.texto_proximidad || '',\n                            rating: meta.google_rating || '',\n                            img: meta.imagen_taquilla || '',\n                            horario: meta.horario_texto || '',\n                            gmaps: meta.google_maps_link || '',\n                            precio: meta.precio || ''\n                        };\n\n                        const listItem = document.createElement('div');\n                        listItem.className = 'locker-item';\n                        listItem.id = `locker-item-${props.id}`;\n\n                        let imgHTML = props.img\n                            ? `<div class=\"locker-img-container\"><img decoding=\"async\" src=\"${props.img}\" class=\"locker-img\" alt=\"${props.title}\"><\/div>`\n                            : '';\n\n                        let horarioHTML = props.horario\n                            ? `<div class=\"locker-schedule\">\ud83d\udd52 ${props.horario}<\/div>`\n                            : '';\n\n                        let proxHTML = props.prox\n                            ? `<div class=\"locker-prox\">\ud83c\udfc3 ${props.prox}<\/div>`\n                            : '';\n\n                        let ratingHTML = props.rating\n                            ? `<div class=\"locker-rating\">${props.rating} on Google<\/div>`\n                            : '';\n\n                        let gmapsBtn = (props.gmaps && props.gmaps.length > 5)\n                            ? `<div class=\"google_maps_btn_maps\"><a href=\"${props.gmaps}\" target=\"_blank\" style=\"display:inline-block; font-size:0.75rem; border-bottom:1px solid #ccc; background:transparent; color:#333; padding:0; border-radius:0; text-decoration:none; margin-bottom:8px;\">View on Google Maps<\/a><\/div>`\n                            : '';\n\n                        listItem.innerHTML = `\n                            ${imgHTML}\n                            <div class=\"locker-content-pad\">\n                                <div class=\"locker-top-row\">\n                                    <div class=\"locker-title\">${props.title}<\/div>\n                                    ${horarioHTML}\n                                <\/div>\n                                <div class=\"locker-address\">\ud83d\udccd ${props.address}<\/div>\n                                ${proxHTML}\n                                ${gmapsBtn}\n                                <div class=\"locker-footer\">\n                                    ${ratingHTML}\n                                    <a href=\"${props.url}\" class=\"locker-btn\">BOOK NOW<\/a>\n                                <\/div>\n                            <\/div>\n                        `;\n\n                        listItem.addEventListener('click', () => {\n                            flyToLocation(props);\n                            highlightItem(props.id);\n                            openPopup(props.id);\n                        });\n\n                        listContainer.appendChild(listItem);\n\n                        \/\/ MARKER CON PRECIO\n                        const el = document.createElement('div');\n                        el.className = 'custom-marker';\n\n                        if (props.precio) {\n                            const priceBadge = document.createElement('div');\n                            priceBadge.className = 'marker-price-badge';\n                            priceBadge.innerText = `${props.precio} \u20ac`;\n                            el.appendChild(priceBadge);\n                        }\n\n                        const marker = new mapboxgl.Marker({\n                            element: el,\n                            anchor: 'bottom'\n                        })\n                        .setLngLat([props.lng, props.lat])\n                        .addTo(map);\n\n                        markers[props.id] = marker;\n\n                        marker.getElement().addEventListener('click', () => {\n                            highlightItem(props.id);\n                            scrollToItem(props.id);\n                            flyToLocation(props);\n                        });\n\n                        bounds.extend([props.lng, props.lat]);\n                    });\n\n                    if (!bounds.isEmpty()) {\n                        const isMobile = window.innerWidth <= 768;\n                        const paddingOptions = isMobile\n                            ? { top: 140, bottom: 320, left: 50, right: 50 }\n                            : 80;\n\n                        map.fitBounds(bounds, {\n                            padding: paddingOptions,\n                            maxZoom: 15\n                        });\n                    }\n                })\n                .catch(err => {\n                    console.error(\"Error Mapbox:\", err);\n                });\n\n            function flyToLocation(props) {\n                map.flyTo({\n                    center: [props.lng, props.lat],\n                    zoom: 16,\n                    speed: 1.5\n                });\n            }\n\n            function highlightItem(id) {\n                document.querySelectorAll('.locker-item').forEach(el => el.classList.remove('active'));\n                const activeItem = document.getElementById(`locker-item-${id}`);\n                if (activeItem) activeItem.classList.add('active');\n            }\n\n            function scrollToItem(id) {\n                const item = document.getElementById(`locker-item-${id}`);\n                const container = document.getElementById('locker-list-en');\n\n                if (item && container) {\n                    if (window.innerWidth <= 768) {\n                        const scrollLeft = item.offsetLeft - (container.clientWidth \/ 2) + (item.clientWidth \/ 2);\n                        container.scrollTo({ left: scrollLeft, behavior: 'smooth' });\n                    } else {\n                        container.scrollTo({ top: item.offsetTop, behavior: 'smooth' });\n                    }\n                }\n            }\n\n            function openPopup(id) {}\n        };\n\n        initMapEn();\n    });\n    <\/script>\n    [\/et_pb_code][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;0px||17px|||&#8221; global_colors_info=&#8221;{}&#8221; width=&#8221;90%&#8221; width_tablet=&#8221;90%&#8221; width_phone=&#8221;100%&#8221; width_last_edited=&#8221;on|phone&#8221; max_width=&#8221;1500px&#8221; custom_margin=&#8221;||||false|false&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.4&#8243; text_font_size=&#8221;15px&#8221; header_font=&#8221;||||||||&#8221; header_2_font=&#8221;Netto|700|||||||&#8221; header_2_text_align=&#8221;center&#8221; header_2_font_size=&#8221;31px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;||-4px|||&#8221; custom_padding=&#8221;31px||0px|||&#8221; animation_direction=&#8221;top&#8221; header_2_font_size_tablet=&#8221;&#8221; header_2_font_size_phone=&#8221;24px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>50% discount from the second consecutive day<\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.4&#8243; text_font_size=&#8221;15px&#8221; header_font=&#8221;||||||||&#8221; header_2_font=&#8221;Netto|700|||||||&#8221; header_2_text_align=&#8221;center&#8221; header_2_font_size=&#8221;31px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;-10px||-4px||false|false&#8221; custom_padding=&#8221;0px||22px||false|false&#8221; animation_direction=&#8221;top&#8221; header_2_font_size_tablet=&#8221;&#8221; header_2_font_size_phone=&#8221;24px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>(Not cumulative with other discounts)<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.27.5&#8243; header_font=&#8221;||||||||&#8221; header_2_font=&#8221;Netto|700|||||||&#8221; header_2_text_align=&#8221;center&#8221; header_2_font_size=&#8221;31px&#8221; header_2_line_height=&#8221;1.6em&#8221; custom_margin=&#8221;||-4px|||&#8221; animation_direction=&#8221;top&#8221; hover_enabled=&#8221;0&#8243; header_2_font_size_tablet=&#8221;&#8221; header_2_font_size_phone=&#8221;24px&#8221; header_2_font_size_last_edited=&#8221;on|phone&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<h2>Talking about out automated lockers in Barcelona&#8230; how do they work?<\/h2>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_4,1_4,1_4,1_4&#8243; use_custom_gutter=&#8221;on&#8221; gutter_width=&#8221;2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; max_width=&#8221;1200px&#8221; custom_padding=&#8221;||2px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_blurb title=&#8221;Choose the size of your locker according to your luggage&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#xf424;||fa||900&#8243; icon_color=&#8221;#3c3b3c&#8221; icon_placement=&#8221;left&#8221; content_max_width=&#8221;1100px&#8221; _builder_version=&#8221;4.27.4&#8243; header_font=&#8221;Josefin Sans|700|||||||&#8221; header_line_height=&#8221;1.4em&#8221; body_font=&#8221;||||||||&#8221; body_font_size=&#8221;15px&#8221; body_line_height=&#8221;1.8em&#8221; custom_margin=&#8221;||3px||false|false&#8221; custom_padding=&#8221;0px||||false|false&#8221; animation_direction=&#8221;top&#8221; animation=&#8221;off&#8221; icon_font_size=&#8221;24px&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>We have lockers for all the bags, suitcases and luggage you need.<\/p>\n<p>[\/et_pb_blurb][\/et_pb_column][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_blurb title=&#8221;Make your online booking 100% secure&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#xf0ac;||fa||900&#8243; icon_color=&#8221;#3c3b3c&#8221; icon_placement=&#8221;left&#8221; content_max_width=&#8221;1100px&#8221; _builder_version=&#8221;4.27.4&#8243; header_font=&#8221;Josefin Sans|700|||||||&#8221; header_line_height=&#8221;1.4em&#8221; body_font=&#8221;||||||||&#8221; body_font_size=&#8221;15px&#8221; body_line_height=&#8221;1.8em&#8221; custom_margin=&#8221;||3px||false|false&#8221; custom_padding=&#8221;0px||||false|false&#8221; animation_direction=&#8221;top&#8221; animation=&#8221;off&#8221; icon_font_size=&#8221;24px&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>No more waiting in queues.<\/p>\n<p>[\/et_pb_blurb][\/et_pb_column][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_blurb title=&#8221;We will send you your code to access the venue and box office&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#xf13e;||fa||900&#8243; icon_color=&#8221;#3c3b3c&#8221; icon_placement=&#8221;left&#8221; content_max_width=&#8221;1100px&#8221; _builder_version=&#8221;4.27.4&#8243; header_font=&#8221;Josefin Sans|700|||||||&#8221; header_line_height=&#8221;1.4em&#8221; body_font=&#8221;||||||||&#8221; body_font_size=&#8221;15px&#8221; body_line_height=&#8221;1.8em&#8221; custom_margin=&#8221;||3px||false|false&#8221; custom_padding=&#8221;0px||||false|false&#8221; animation_direction=&#8221;top&#8221; animation=&#8221;off&#8221; icon_font_size=&#8221;24px&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>You will have your password at hand from your phone.<\/p>\n<p>[\/et_pb_blurb][\/et_pb_column][et_pb_column type=&#8221;1_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_blurb title=&#8221;Drop off your luggage at the locker &#038; Be Free!&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#xf5c1;||fa||900&#8243; icon_color=&#8221;#3c3b3c&#8221; icon_placement=&#8221;left&#8221; content_max_width=&#8221;1100px&#8221; _builder_version=&#8221;4.27.4&#8243; header_font=&#8221;Josefin Sans|700|||||||&#8221; header_line_height=&#8221;1.4em&#8221; body_font=&#8221;||||||||&#8221; body_font_size=&#8221;15px&#8221; body_line_height=&#8221;1.8em&#8221; custom_margin=&#8221;||3px||false|false&#8221; custom_padding=&#8221;0px||||false|false&#8221; animation_direction=&#8221;top&#8221; animation=&#8221;off&#8221; icon_font_size=&#8221;24px&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>Leave your luggage in the locker you booked and enjoy the city!<\/p>\n<p>[\/et_pb_blurb][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|phone&#8221; admin_label=&#8221;Menu&#8221; module_id=&#8221;escribenos&#8221; _builder_version=&#8221;4.16&#8243; background_enable_color=&#8221;off&#8221; background_enable_image=&#8221;off&#8221; background_size=&#8221;contain&#8221; background_position=&#8221;top_center&#8221; custom_padding_tablet=&#8221;&#8221; custom_padding_phone=&#8221;0px||0px||true|false&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; custom_padding=&#8221;34px|||||&#8221;][et_pb_row _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; text_font=&#8221;||||||||&#8221; text_text_color=&#8221;rgba(85,101,112,0.8)&#8221; text_line_height=&#8221;1.8em&#8221; header_2_font=&#8221;|700|||||||&#8221; header_2_text_color=&#8221;#002d4c&#8221; header_2_font_size=&#8221;56px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_3_font=&#8221;|700||on|||||&#8221; header_3_text_color=&#8221;#000000&#8243; header_3_font_size=&#8221;13px&#8221; header_3_letter_spacing=&#8221;6px&#8221; header_3_line_height=&#8221;1.4em&#8221; text_orientation=&#8221;center&#8221; width=&#8221;85%&#8221; max_width_tablet=&#8221;90%&#8221; max_width_phone=&#8221;100%&#8221; max_width_last_edited=&#8221;off|desktop&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;||||false|false&#8221; text_font_size_tablet=&#8221;15px&#8221; text_font_size_phone=&#8221;14px&#8221; text_font_size_last_edited=&#8221;off|desktop&#8221; header_2_font_size_tablet=&#8221;44px&#8221; header_2_font_size_phone=&#8221;32px&#8221; header_2_font_size_last_edited=&#8221;on|tablet&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; header_2_2_font_size_phone=&#8221;32px&#8221; header_3_2_font_size_phone=&#8221;32px&#8221; header_4_2_font_size_phone=&#8221;32px&#8221; header_5_2_font_size_phone=&#8221;32px&#8221; header_6_2_font_size_phone=&#8221;32px&#8221; header_2_2_font_size_tablet=&#8221;44px&#8221; header_3_2_font_size_tablet=&#8221;44px&#8221; header_4_2_font_size_tablet=&#8221;44px&#8221; header_5_2_font_size_tablet=&#8221;44px&#8221; header_6_2_font_size_tablet=&#8221;44px&#8221; header_2_2_font_size_last_edited=&#8221;on|tablet&#8221; header_3_2_font_size_last_edited=&#8221;on|tablet&#8221; header_4_2_font_size_last_edited=&#8221;on|tablet&#8221; header_5_2_font_size_last_edited=&#8221;on|tablet&#8221; header_6_2_font_size_last_edited=&#8221;on|tablet&#8221; text_letter_spacing__hover_enabled=&#8221;on|desktop&#8221;]<\/p>\n<h3>WRITE US WITH YOUR QUESTIONS<\/h3>\n<h2>Contact us NOW<\/h2>\n<p>For questions and for long stays complete and send the form.<br \/> You will receive our reply immediately<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.24.0&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#eae218&#8243; max_width=&#8221;510px&#8221; custom_padding=&#8221;|24px||24px|false|true&#8221; border_radii=&#8221;on|14px|14px|14px|14px&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.24.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][dipl_form_styler form_type=&#8221;contact_form_7&#8243; cf7_form_id=&#8221;52859&#8243; input_custom_padding=&#8221;5px|5px|5px|5px|false|false&#8221; use_custom_radio=&#8221;on&#8221; use_custom_checkbox=&#8221;on&#8221; button_custom_padding=&#8221;5px|5px|5px|5px|false|false&#8221; submit_custom_padding=&#8221;15px|15px|15px|15px|false|false&#8221; submit_bg_color=&#8221;#FFFFFF&#8221; _builder_version=&#8221;4.24.0&#8243; _module_preset=&#8221;default&#8221; label_font=&#8221;|600|||||||&#8221; label_font_size=&#8221;15px&#8221; input_font=&#8221;|300|||||||&#8221; input_font_size=&#8221;14px&#8221; placeholder_font=&#8221;|300|||||||&#8221; placeholder_font_size=&#8221;14px&#8221; submit_button_text_font_size=&#8221;17px&#8221; text_orientation=&#8221;center&#8221; input_width=&#8221;100%&#8221; input_height=&#8221;31px&#8221; border_radii_input=&#8221;on|5px|5px|5px|5px&#8221; border_radii_submit_button=&#8221;on|5px|5px|5px|5px&#8221; box_shadow_style_submit_button=&#8221;preset3&#8243; global_colors_info=&#8221;{}&#8221;][\/dipl_form_styler][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Locker and luggage storage shop in Barcelona    \n    <div class=\"locker-app-wrapper\">\n        <div class=\"locker-sidebar\">\n            <div class=\"locker-header\">\n                <h3 id=\"locker-count-title-en\">Searching for lockers...<\/h3>\n            <\/div>\n            <div id=\"locker-list-en\" class=\"locker-list-container\">\n                <div class=\"loading-spinner\">Loading map...<\/div>\n            <\/div>\n        <\/div>\n\n        <div id=\"locker-map-wrapper-en\" class=\"locker-map-wrapper\">\n            <div id=\"locker-map-en\" class=\"locker-map-canvas\"><\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n    document.addEventListener('DOMContentLoaded', function() {\n        const initMapEn = () => {\n            if (typeof mapboxgl === 'undefined' || typeof MapboxGeocoder === 'undefined') {\n                setTimeout(initMapEn, 100);\n                return;\n            }\n\n            mapboxgl.accessToken = 'pk.eyJ1IjoibG9ja2FuZGJlZnJlZSIsImEiOiJjbWp4NzY0ZWEwMWU3M2VzY3ZoeHBzemYyIn0.FGfEJafXqiblJmJ8WAGmUw'; \n            \n            const filtroCiudad = \"barcelona\"; \n            const centerLat = 40.416775;\n            const centerLng = -3.70379;\n            const zoomLevel = 12;\n\n            const map = new mapboxgl.Map({\n                container: 'locker-map-en',\n                style: 'mapbox:\/\/styles\/mapbox\/streets-v12',\n                center: [centerLng, centerLat],\n                zoom: zoomLevel\n            });\n\n            const geocoder = new MapboxGeocoder({\n                accessToken: mapboxgl.accessToken,\n                mapboxgl: mapboxgl,\n                placeholder: 'Search area...',\n                countries: 'es',\n                marker: false,\n                collapsed: false\n            });\n\n            map.addControl(geocoder, 'top-left');\n            map.addControl(new mapboxgl.GeolocateControl({\n                positionOptions: { enableHighAccuracy: true },\n                trackUserLocation: true,\n                showUserHeading: true\n            }), 'top-right');\n            map.addControl(new mapboxgl.NavigationControl(), 'top-right');\n\n            map.on('load', function() {\n                map.resize();\n            });\n\n            setTimeout(() => {\n                map.resize();\n            }, 1000);\n\n            window.addEventListener('resize', () => {\n                map.resize();\n            });\n\n            const listContainer = document.getElementById('locker-list-en');\n            const countTitle = document.getElementById('locker-count-title-en');\n            let markers = {};\n\n            fetch('\/wp-json\/wp\/v2\/taquillas?per_page=100&lang=en')\n                .then(response => response.json())\n                .then(data => {\n                    let lockers = data;\n\n                    if (filtroCiudad !== \"\") {\n                        lockers = data.filter(item => {\n                            const ciudadItem = item.datos_mapa?.ciudad || \"\";\n                            return ciudadItem.toLowerCase().includes(filtroCiudad);\n                        });\n                    }\n\n                    listContainer.innerHTML = '';\n\n                    if (lockers.length === 0) {\n                        countTitle.innerText = \"No lockers available\";\n                        listContainer.innerHTML = `<p style=\"padding:20px; text-align:center\">No results found<\/p>`;\n                        return;\n                    } else {\n                        countTitle.innerText = `${lockers.length} Lockers Available`;\n                    }\n\n                    const bounds = new mapboxgl.LngLatBounds();\n\n                    lockers.forEach((item) => {\n                        const meta = item.datos_mapa;\n                        if (!meta || !meta.latitud || !meta.longitud) return;\n\n                        const props = {\n                            id: item.id,\n                            title: item.title.rendered,\n                            lat: parseFloat(meta.latitud),\n                            lng: parseFloat(meta.longitud),\n                            address: meta.direccion || 'Center',\n                            url: meta.url_reserva || '#',\n                            prox: meta.texto_proximidad || '',\n                            rating: meta.google_rating || '',\n                            img: meta.imagen_taquilla || '',\n                            horario: meta.horario_texto || '',\n                            gmaps: meta.google_maps_link || '',\n                            precio: meta.precio || ''\n                        };\n\n                        const listItem = document.createElement('div');\n                        listItem.className = 'locker-item';\n                        listItem.id = `locker-item-${props.id}`;\n\n                        let imgHTML = props.img\n                            ? `<div class=\"locker-img-container\"><img decoding=\"async\" src=\"${props.img}\" class=\"locker-img\" alt=\"${props.title}\"><\/div>`\n                            : '';\n\n                        let horarioHTML = props.horario\n                            ? `<div class=\"locker-schedule\">\ud83d\udd52 ${props.horario}<\/div>`\n                            : '';\n\n                        let proxHTML = props.prox\n                            ? `<div class=\"locker-prox\">\ud83c\udfc3 ${props.prox}<\/div>`\n                            : '';\n\n                        let ratingHTML = props.rating\n                            ? `<div class=\"locker-rating\">${props.rating} on Google<\/div>`\n                            : '';\n\n                        let gmapsBtn = (props.gmaps && props.gmaps.length > 5)\n                            ? `<div class=\"google_maps_btn_maps\"><a href=\"${props.gmaps}\" target=\"_blank\" style=\"display:inline-block; font-size:0.75rem; border-bottom:1px solid #ccc; background:transparent; color:#333; padding:0; border-radius:0; text-decoration:none; margin-bottom:8px;\">View on Google Maps<\/a><\/div>`\n                            : '';\n\n                        listItem.innerHTML = `\n                            ${imgHTML}\n                            <div class=\"locker-content-pad\">\n                                <div class=\"locker-top-row\">\n                                    <div class=\"locker-title\">${props.title}<\/div>\n                                    ${horarioHTML}\n                                <\/div>\n                                <div class=\"locker-address\">\ud83d\udccd ${props.address}<\/div>\n                                ${proxHTML}\n                                ${gmapsBtn}\n                                <div class=\"locker-footer\">\n                                    ${ratingHTML}\n                                    <a href=\"${props.url}\" class=\"locker-btn\">BOOK NOW<\/a>\n                                <\/div>\n                            <\/div>\n                        `;\n\n                        listItem.addEventListener('click', () => {\n                            flyToLocation(props);\n                            highlightItem(props.id);\n                            openPopup(props.id);\n                        });\n\n                        listContainer.appendChild(listItem);\n\n                        \/\/ MARKER CON PRECIO\n                        const el = document.createElement('div');\n                        el.className = 'custom-marker';\n\n                        if (props.precio) {\n                            const priceBadge = document.createElement('div');\n                            priceBadge.className = 'marker-price-badge';\n                            priceBadge.innerText = `${props.precio} \u20ac`;\n                            el.appendChild(priceBadge);\n                        }\n\n                        const marker = new mapboxgl.Marker({\n                            element: el,\n                            anchor: 'bottom'\n                        })\n                        .setLngLat([props.lng, props.lat])\n                        .addTo(map);\n\n                        markers[props.id] = marker;\n\n                        marker.getElement().addEventListener('click', () => {\n                            highlightItem(props.id);\n                            scrollToItem(props.id);\n                            flyToLocation(props);\n                        });\n\n                        bounds.extend([props.lng, props.lat]);\n                    });\n\n                    if (!bounds.isEmpty()) {\n                        const isMobile = window.innerWidth <= 768;\n                        const paddingOptions = isMobile\n                            ? { top: 140, bottom: 320, left: 50, right: 50 }\n                            : 80;\n\n                        map.fitBounds(bounds, {\n                            padding: paddingOptions,\n                            maxZoom: 15\n                        });\n                    }\n                })\n                .catch(err => {\n                    console.error(\"Error Mapbox:\", err);\n                });\n\n            function flyToLocation(props) {\n                map.flyTo({\n                    center: [props.lng, props.lat],\n                    zoom: 16,\n                    speed: 1.5\n                });\n            }\n\n            function highlightItem(id) {\n                document.querySelectorAll('.locker-item').forEach(el => el.classList.remove('active'));\n                const activeItem = document.getElementById(`locker-item-${id}`);\n                if (activeItem) activeItem.classList.add('active');\n            }\n\n            function scrollToItem(id) {\n                const item = document.getElementById(`locker-item-${id}`);\n                const container = document.getElementById('locker-list-en');\n\n                if (item && container) {\n                    if (window.innerWidth <= 768) {\n                        const scrollLeft = item.offsetLeft - (container.clientWidth \/ 2) + (item.clientWidth \/ 2);\n                        container.scrollTo({ left: scrollLeft, behavior: 'smooth' });\n                    } else {\n                        container.scrollTo({ top: item.offsetTop, behavior: 'smooth' });\n                    }\n                }\n            }\n\n            function openPopup(id) {}\n        };\n\n        initMapEn();\n    });\n    <\/script>\n    50% discount from the second consecutive day(Not cumulative with other discounts)Talking about out automated lockers in Barcelona&#8230; how do they work?We have lockers for all the bags, suitcases and luggage you need.No more waiting in queues.You will have your password at hand from your phone.Leave your luggage in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-51247","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Keep your luggage in Barcelona | Lock &amp; Be Free<\/title>\n<meta name=\"description\" content=\"Keep your luggage and discover Barcelona! Make your reservation in our luggage storage in Carrer de C\u00f2rsega guarded 24 hours a day.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/lockandbefree.com\/en\/book-at-barcelona\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Keep your luggage in Barcelona | Lock &amp; Be Free\" \/>\n<meta property=\"og:description\" content=\"Keep your luggage and discover Barcelona! Make your reservation in our luggage storage in Carrer de C\u00f2rsega guarded 24 hours a day.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/lockandbefree.com\/en\/book-at-barcelona\" \/>\n<meta property=\"og:site_name\" content=\"Lock &amp; Be Free\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-28T11:37:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lockandbefree.com\/wp-content\/uploads\/2020\/05\/barcelona-2371946_1280.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Keep your luggage in Barcelona | Lock &amp; Be Free\" \/>\n<meta name=\"twitter:description\" content=\"Keep your luggage and discover Barcelona! Make your reservation in our luggage storage in Carrer de C\u00f2rsega guarded 24 hours a day.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/lockandbefree.com\/wp-content\/uploads\/2020\/05\/barcelona-2371946_1280.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/lockandbefree.com\/en\/book-at-barcelona\",\"url\":\"https:\/\/lockandbefree.com\/en\/book-at-barcelona\",\"name\":\"Keep your luggage in Barcelona | Lock & Be Free\",\"isPartOf\":{\"@id\":\"https:\/\/lockandbefree.com\/en#website\"},\"datePublished\":\"2020-05-03T10:10:52+00:00\",\"dateModified\":\"2026-01-28T11:37:31+00:00\",\"description\":\"Keep your luggage and discover Barcelona! Make your reservation in our luggage storage in Carrer de C\u00f2rsega guarded 24 hours a day.\",\"breadcrumb\":{\"@id\":\"https:\/\/lockandbefree.com\/en\/book-at-barcelona#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/lockandbefree.com\/en\/book-at-barcelona\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/lockandbefree.com\/en\/book-at-barcelona#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/lockandbefree.com\/en\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Book at Barcelona\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/lockandbefree.com\/en#website\",\"url\":\"https:\/\/lockandbefree.com\/en\",\"name\":\"Lock &amp; Be Free\",\"description\":\"Consigna de equipaje en Madrid, Sevilla, Valencia y Barcelona\",\"publisher\":{\"@id\":\"https:\/\/lockandbefree.com\/en#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/lockandbefree.com\/en?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/lockandbefree.com\/en#organization\",\"name\":\"Lock & Be Free\",\"url\":\"https:\/\/lockandbefree.com\/en\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/lockandbefree.com\/en#\/schema\/logo\/image\/\",\"url\":\"https:\/\/lockandbefree.com\/wp-content\/uploads\/2020\/05\/lock-and-be-free-esp-logo.png\",\"contentUrl\":\"https:\/\/lockandbefree.com\/wp-content\/uploads\/2020\/05\/lock-and-be-free-esp-logo.png\",\"width\":452,\"height\":253,\"caption\":\"Lock & Be Free\"},\"image\":{\"@id\":\"https:\/\/lockandbefree.com\/en#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Keep your luggage in Barcelona | Lock & Be Free","description":"Keep your luggage and discover Barcelona! Make your reservation in our luggage storage in Carrer de C\u00f2rsega guarded 24 hours a day.","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:\/\/lockandbefree.com\/en\/book-at-barcelona","og_locale":"en_US","og_type":"article","og_title":"Keep your luggage in Barcelona | Lock & Be Free","og_description":"Keep your luggage and discover Barcelona! Make your reservation in our luggage storage in Carrer de C\u00f2rsega guarded 24 hours a day.","og_url":"https:\/\/lockandbefree.com\/en\/book-at-barcelona","og_site_name":"Lock &amp; Be Free","article_modified_time":"2026-01-28T11:37:31+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/lockandbefree.com\/wp-content\/uploads\/2020\/05\/barcelona-2371946_1280.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_title":"Keep your luggage in Barcelona | Lock & Be Free","twitter_description":"Keep your luggage and discover Barcelona! Make your reservation in our luggage storage in Carrer de C\u00f2rsega guarded 24 hours a day.","twitter_image":"https:\/\/lockandbefree.com\/wp-content\/uploads\/2020\/05\/barcelona-2371946_1280.jpg","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/lockandbefree.com\/en\/book-at-barcelona","url":"https:\/\/lockandbefree.com\/en\/book-at-barcelona","name":"Keep your luggage in Barcelona | Lock & Be Free","isPartOf":{"@id":"https:\/\/lockandbefree.com\/en#website"},"datePublished":"2020-05-03T10:10:52+00:00","dateModified":"2026-01-28T11:37:31+00:00","description":"Keep your luggage and discover Barcelona! Make your reservation in our luggage storage in Carrer de C\u00f2rsega guarded 24 hours a day.","breadcrumb":{"@id":"https:\/\/lockandbefree.com\/en\/book-at-barcelona#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/lockandbefree.com\/en\/book-at-barcelona"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/lockandbefree.com\/en\/book-at-barcelona#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/lockandbefree.com\/en"},{"@type":"ListItem","position":2,"name":"Book at Barcelona"}]},{"@type":"WebSite","@id":"https:\/\/lockandbefree.com\/en#website","url":"https:\/\/lockandbefree.com\/en","name":"Lock &amp; Be Free","description":"Consigna de equipaje en Madrid, Sevilla, Valencia y Barcelona","publisher":{"@id":"https:\/\/lockandbefree.com\/en#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/lockandbefree.com\/en?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/lockandbefree.com\/en#organization","name":"Lock & Be Free","url":"https:\/\/lockandbefree.com\/en","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/lockandbefree.com\/en#\/schema\/logo\/image\/","url":"https:\/\/lockandbefree.com\/wp-content\/uploads\/2020\/05\/lock-and-be-free-esp-logo.png","contentUrl":"https:\/\/lockandbefree.com\/wp-content\/uploads\/2020\/05\/lock-and-be-free-esp-logo.png","width":452,"height":253,"caption":"Lock & Be Free"},"image":{"@id":"https:\/\/lockandbefree.com\/en#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/lockandbefree.com\/en\/wp-json\/wp\/v2\/pages\/51247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lockandbefree.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lockandbefree.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lockandbefree.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lockandbefree.com\/en\/wp-json\/wp\/v2\/comments?post=51247"}],"version-history":[{"count":48,"href":"https:\/\/lockandbefree.com\/en\/wp-json\/wp\/v2\/pages\/51247\/revisions"}],"predecessor-version":[{"id":21245021,"href":"https:\/\/lockandbefree.com\/en\/wp-json\/wp\/v2\/pages\/51247\/revisions\/21245021"}],"wp:attachment":[{"href":"https:\/\/lockandbefree.com\/en\/wp-json\/wp\/v2\/media?parent=51247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}