{"id":137907,"date":"2025-11-26T16:26:34","date_gmt":"2025-11-26T16:26:34","guid":{"rendered":"https:\/\/www.escueladesurfsopelana.com\/?p=137907"},"modified":"2026-01-07T21:50:20","modified_gmt":"2026-01-07T21:50:20","slug":"deba-webcam","status":"publish","type":"post","link":"https:\/\/www.escueladesurfsopelana.com\/en\/deba-webcam\/","title":{"rendered":"Deba Webcam: Live Surf Conditions"},"content":{"rendered":"<h2>Deba Webcam Live<\/h2>\n<p>You are watching Deba beach, known for hosting some of the biggest and most powerful waves on the Basque coast. Use this webcam to measure the real size of the sea and the quality of the sandbanks.<\/p>\n<div class=\"webcam-container\" style=\"text-align: center; margin-bottom: 20px;\">\n    <style>\n    \/* Estilos generales *\/\n    .kostasystem-container {\n        max-width: 100%;\n        margin: 0 auto;\n    }\n    .kostasystem-titulo-principal {\n        text-align: center;\n        margin-bottom: 20px;\n        font-size: 24px;\n        font-weight: bold;\n    }\n    \n    \/* Estilos para las c\u00e1maras principales - vertical *\/\n    .kostasystem-camaras-grupo {\n        display: flex;\n        flex-direction: column;\n        gap: 30px;\n        margin-bottom: 40px;\n    }\n    .kostasystem-camara-container {\n        width: 100%;\n        position: relative;\n        overflow: hidden;\n        border-radius: 8px;\n        box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n    }\n    .kostasystem-camara-titulo {\n        background-color: rgba(0,0,0,0.7);\n        color: white;\n        font-weight: bold;\n        padding: 8px 15px;\n        position: absolute;\n        top: 0;\n        left: 0;\n        z-index: 10;\n        border-bottom-right-radius: 8px;\n    }\n    .kostasystem-camara-layers {\n        position: relative;\n        width: 100%;\n        height: auto;\n    }\n    .kostasystem-camara-layer {\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 100%;\n        transition: opacity 0.5s ease-in-out;\n    }\n    .kostasystem-camara-layer.active {\n        z-index: 2;\n        opacity: 1;\n    }\n    .kostasystem-camara-layer.inactive {\n        z-index: 1;\n        opacity: 0;\n    }\n    .kostasystem-camara-base {\n        position: relative;\n        z-index: 0;\n        width: 100%;\n        display: block;\n    }\n    \n    \/* Estilos para el historial - vertical *\/\n    .kostasystem-historial-container {\n        margin-top: 40px;\n        padding-top: 20px;\n        border-top: 1px solid #eee;\n    }\n    .kostasystem-historial-titulo {\n        text-align: center;\n        font-size: 20px;\n        font-weight: bold;\n        margin-bottom: 20px;\n        padding-bottom: 10px;\n        border-bottom: 2px solid #f5f5f5;\n    }\n    .kostasystem-historial-seccion {\n        margin-bottom: 30px;\n    }\n    .kostasystem-historial-subtitulo {\n        font-size: 18px;\n        margin-bottom: 15px;\n        background-color: #f5f5f5;\n        padding: 8px 15px;\n        border-radius: 5px;\n    }\n    .kostasystem-historial-grid {\n        display: grid;\n        grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));\n        gap: 10px;\n        margin-bottom: 30px;\n    }\n    .kostasystem-historial-item {\n        position: relative;\n        border: 1px solid #ddd;\n        border-radius: 5px;\n        overflow: hidden;\n        background: #f9f9f9;\n    }\n    .kostasystem-historial-imagen {\n        width: 100%;\n        height: auto;\n        display: block;\n    }\n    .kostasystem-historial-tiempo {\n        position: absolute;\n        bottom: 0;\n        left: 0;\n        right: 0;\n        background: rgba(0,0,0,0.7);\n        color: white;\n        font-size: 11px;\n        padding: 5px;\n        text-align: center;\n    }\n    \n    \/* Otros estilos *\/\n    .kostasystem-estado {\n        margin-top: 10px;\n        color: #ff0000;\n        font-style: italic;\n        text-align: center;\n    }\n    .kostasystem-timestamp {\n        margin-top: 8px;\n        margin-bottom: 5px;\n        font-size: 13px;\n        color: #666;\n        text-align: center;\n        background-color: #f9f9f9;\n        padding: 5px;\n        border-radius: 4px;\n    }\n    \n    \/* Media queries para responsividad *\/\n    @media (min-width: 768px) {\n        .kostasystem-historial-grid {\n            grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));\n        }\n    }\n    <\/style>\n\n    <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029\" class=\"kostasystem-container\">\n                    <h2 class=\"kostasystem-titulo-principal\">Deba<\/h2>\n                \n        <div class=\"kostasystem-camaras-grupo\">\n                            <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_container1\" class=\"kostasystem-camara-container\">\n                    <div class=\"kostasystem-camara-titulo\">C\u00e1mara 1<\/div>\n                    <a href=\"https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara1_snap.jpeg\" target=\"_blank\" rel=\"noopener\">\n                        <!-- Imagen base para establecer dimensiones -->\n                        <img decoding=\"async\" class=\"kostasystem-camara-base\" \n                             src=\"https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara1_snap.jpeg\" \n                             alt=\"Webcam Deba 1\" \/>\n                        \n                        <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_layers1\" class=\"kostasystem-camara-layers\">\n                            <!-- Las capas de im\u00e1genes se agregar\u00e1n aqu\u00ed v\u00eda JavaScript -->\n                        <\/div>\n                    <\/a>\n                    \n                    <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_timestamp1\" class=\"kostasystem-timestamp\"><\/div>\n                <\/div>\n                            <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_container2\" class=\"kostasystem-camara-container\">\n                    <div class=\"kostasystem-camara-titulo\">C\u00e1mara 2<\/div>\n                    <a href=\"https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara2_snap.jpeg\" target=\"_blank\" rel=\"noopener\">\n                        <!-- Imagen base para establecer dimensiones -->\n                        <img decoding=\"async\" class=\"kostasystem-camara-base\" \n                             src=\"https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara2_snap.jpeg\" \n                             alt=\"Webcam Deba 2\" \/>\n                        \n                        <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_layers2\" class=\"kostasystem-camara-layers\">\n                            <!-- Las capas de im\u00e1genes se agregar\u00e1n aqu\u00ed v\u00eda JavaScript -->\n                        <\/div>\n                    <\/a>\n                    \n                    <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_timestamp2\" class=\"kostasystem-timestamp\"><\/div>\n                <\/div>\n                            <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_container3\" class=\"kostasystem-camara-container\">\n                    <div class=\"kostasystem-camara-titulo\">C\u00e1mara 3<\/div>\n                    <a href=\"https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara3_snap.jpeg\" target=\"_blank\" rel=\"noopener\">\n                        <!-- Imagen base para establecer dimensiones -->\n                        <img decoding=\"async\" class=\"kostasystem-camara-base\" \n                             src=\"https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara3_snap.jpeg\" \n                             alt=\"Webcam Deba 3\" \/>\n                        \n                        <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_layers3\" class=\"kostasystem-camara-layers\">\n                            <!-- Las capas de im\u00e1genes se agregar\u00e1n aqu\u00ed v\u00eda JavaScript -->\n                        <\/div>\n                    <\/a>\n                    \n                    <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_timestamp3\" class=\"kostasystem-timestamp\"><\/div>\n                <\/div>\n                            <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_container4\" class=\"kostasystem-camara-container\">\n                    <div class=\"kostasystem-camara-titulo\">C\u00e1mara 4<\/div>\n                    <a href=\"https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara4_snap.jpeg\" target=\"_blank\" rel=\"noopener\">\n                        <!-- Imagen base para establecer dimensiones -->\n                        <img decoding=\"async\" class=\"kostasystem-camara-base\" \n                             src=\"https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara4_snap.jpeg\" \n                             alt=\"Webcam Deba 4\" \/>\n                        \n                        <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_layers4\" class=\"kostasystem-camara-layers\">\n                            <!-- Las capas de im\u00e1genes se agregar\u00e1n aqu\u00ed v\u00eda JavaScript -->\n                        <\/div>\n                    <\/a>\n                    \n                    <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_timestamp4\" class=\"kostasystem-timestamp\"><\/div>\n                <\/div>\n                    <\/div>\n        \n                \n        <div id=\"kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_estado\" class=\"kostasystem-estado\"><\/div>\n    <\/div>\n    \n    <script>\n    document.addEventListener('DOMContentLoaded', function() {\n        \/\/ Configuraci\u00f3n\n        const container_id = 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029';\n        const config = {\n            camaras: [\n                                {\n                    num: 1,\n                    container: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_container1',\n                    layers: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_layers1',\n                    url: 'https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara1_snap.jpeg',\n                    timestamp: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_timestamp1',\n                    currentLayer: 0,\n                    layersCreated: false,\n                    historial: {\n                        activo: false,\n                        container: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_historial_grid_1',\n                        items: [],\n                        lastHourProcessed: null\n                    }\n                },\n                                {\n                    num: 2,\n                    container: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_container2',\n                    layers: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_layers2',\n                    url: 'https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara2_snap.jpeg',\n                    timestamp: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_timestamp2',\n                    currentLayer: 0,\n                    layersCreated: false,\n                    historial: {\n                        activo: false,\n                        container: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_historial_grid_2',\n                        items: [],\n                        lastHourProcessed: null\n                    }\n                },\n                                {\n                    num: 3,\n                    container: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_container3',\n                    layers: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_layers3',\n                    url: 'https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara3_snap.jpeg',\n                    timestamp: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_timestamp3',\n                    currentLayer: 0,\n                    layersCreated: false,\n                    historial: {\n                        activo: false,\n                        container: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_historial_grid_3',\n                        items: [],\n                        lastHourProcessed: null\n                    }\n                },\n                                {\n                    num: 4,\n                    container: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_container4',\n                    layers: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_layers4',\n                    url: 'https:\/\/www.kostasystem.com\/wp-content\/uploads\/irudiak\/deba\/camara4_snap.jpeg',\n                    timestamp: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_timestamp4',\n                    currentLayer: 0,\n                    layersCreated: false,\n                    historial: {\n                        activo: false,\n                        container: 'kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_historial_grid_4',\n                        items: [],\n                        lastHourProcessed: null\n                    }\n                },\n                            ],\n            intervalo: 5000,\n            reintentos: {\n                tiempo: 3000,\n                max: 5\n            },\n            historial: {\n                activo: false,\n                ambasCamaras: false,\n                maxItems: 8,\n                minDiffHoras: 1 \/\/ Diferencia m\u00ednima en horas para a\u00f1adir al historial\n            }\n        };\n\n        const estadoConexion = document.getElementById('kostasystem_deba_d3f30d9d362d1dfcd76ac7e2f4353029_estado');\n        \n        \/\/ Funci\u00f3n para formatear una fecha\n        function formatearFecha(date) {\n            const dia = date.getDate().toString().padStart(2, '0');\n            const mes = (date.getMonth() + 1).toString().padStart(2, '0');\n            const anio = date.getFullYear();\n            const hora = date.getHours().toString().padStart(2, '0');\n            const minutos = date.getMinutes().toString().padStart(2, '0');\n            \n            return `${dia}\/${mes}\/${anio} ${hora}:${minutos}`;\n        }\n        \n        \/\/ Inicializaci\u00f3n\n        function inicializar() {\n            \/\/ Crear las capas iniciales para cada c\u00e1mara\n            config.camaras.forEach(camara => {\n                const layersElement = document.getElementById(camara.layers);\n                if (!layersElement) return;\n                \n                \/\/ Creamos dos capas para alternar entre ellas\n                const layer1 = document.createElement('img');\n                layer1.className = 'kostasystem-camara-layer active';\n                layer1.src = camara.url + '?t=' + Date.now();\n                layer1.alt = 'Webcam Layer 1';\n                \n                const layer2 = document.createElement('img');\n                layer2.className = 'kostasystem-camara-layer inactive';\n                layer2.src = camara.url + '?t=' + Date.now();\n                layer2.alt = 'Webcam Layer 2';\n                \n                layersElement.appendChild(layer1);\n                layersElement.appendChild(layer2);\n                \n                camara.layersCreated = true;\n                \n                \/\/ Actualizar timestamp\n                const timestampElement = document.getElementById(camara.timestamp);\n                if (timestampElement) {\n                    const ahora = new Date();\n                    timestampElement.textContent = '\u00daltima actualizaci\u00f3n: ' + formatearFecha(ahora);\n                }\n                \n                \/\/ Preparar historial si est\u00e1 habilitado\n                if (config.historial.activo && \n                    (config.historial.ambasCamaras || camara.num === config.camaras[0].num)) {\n                    const ahora = new Date();\n                    const primerItem = {\n                        src: camara.url + '?t=' + Date.now(),\n                        timestamp: Date.now(),\n                        fecha: ahora,\n                        hora: ahora.getHours()\n                    };\n                    camara.historial.items.push(primerItem);\n                    camara.historial.lastHourProcessed = ahora.getHours();\n                    actualizarHistorialVisual(camara);\n                }\n            });\n            \n            \/\/ Comenzar actualizaciones\n            setTimeout(() => {\n                iniciarActualizaciones();\n            }, 1000); \/\/ Esperamos 1 segundo para la carga inicial\n        }\n        \n        \/\/ Funci\u00f3n para actualizar el historial visual de una c\u00e1mara espec\u00edfica\n        function actualizarHistorialVisual(camara) {\n            if (!config.historial.activo) return;\n            if (!camara.historial.activo) return;\n            \n            const historialElement = document.getElementById(camara.historial.container);\n            if (!historialElement) return;\n            \n            \/\/ Limpiar el historial visual actual\n            historialElement.innerHTML = '';\n            \n            \/\/ Mostrar los elementos del historial (limitados al m\u00e1ximo configurado)\n            const itemsToShow = camara.historial.items.slice(0, config.historial.maxItems);\n            \n            itemsToShow.forEach((item, index) => {\n                const itemElement = document.createElement('div');\n                itemElement.className = 'kostasystem-historial-item';\n                \n                \/\/ Crear enlace para hacer la imagen clicable\n                const enlace = document.createElement('a');\n                enlace.href = item.src;\n                enlace.target = '_blank';\n                enlace.rel = 'noopener';\n                \n                const img = document.createElement('img');\n                img.className = 'kostasystem-historial-imagen';\n                img.src = item.src;\n                img.alt = 'Historial ' + (index + 1);\n                \n                const tiempo = document.createElement('div');\n                tiempo.className = 'kostasystem-historial-tiempo';\n                tiempo.textContent = formatearFecha(item.fecha);\n                \n                enlace.appendChild(img);\n                itemElement.appendChild(enlace);\n                itemElement.appendChild(tiempo);\n                historialElement.appendChild(itemElement);\n            });\n        }\n        \n        \/\/ Funci\u00f3n para actualizar la imagen con transici\u00f3n suave\n        function actualizarImagen(camara, intentos = 0) {\n            \/\/ Si las capas no se han creado, salimos\n            if (!camara.layersCreated) return;\n            \n            const layersElement = document.getElementById(camara.layers);\n            if (!layersElement) return;\n            \n            \/\/ Obtenemos las dos capas\n            const layers = layersElement.getElementsByClassName('kostasystem-camara-layer');\n            if (layers.length !== 2) return;\n            \n            \/\/ Determinamos qu\u00e9 capa est\u00e1 activa e inactiva\n            const activeLayer = layers[camara.currentLayer];\n            const inactiveLayer = layers[camara.currentLayer === 0 ? 1 : 0];\n            \n            \/\/ Creamos la nueva URL con timestamp\n            const timestamp = Date.now();\n            const newUrl = camara.url + '?t=' + timestamp;\n            \n            \/\/ Cargamos la nueva imagen en la capa inactiva\n            const tempImage = new Image();\n            tempImage.onload = function() {\n                \/\/ Cuando la imagen est\u00e1 cargada, la asignamos a la capa inactiva\n                inactiveLayer.src = newUrl;\n                \n                \/\/ Y hacemos el cambio de capas\n                setTimeout(() => {\n                    activeLayer.classList.remove('active');\n                    activeLayer.classList.add('inactive');\n                    \n                    inactiveLayer.classList.remove('inactive');\n                    inactiveLayer.classList.add('active');\n                    \n                    \/\/ Alternamos la capa actual\n                    camara.currentLayer = camara.currentLayer === 0 ? 1 : 0;\n                    \n                    \/\/ Actualizar timestamp\n                    const timestampElement = document.getElementById(camara.timestamp);\n                    if (timestampElement) {\n                        const ahora = new Date();\n                        timestampElement.textContent = '\u00daltima actualizaci\u00f3n: ' + formatearFecha(ahora);\n                    }\n                    \n                    \/\/ Procesar para el historial si es necesario\n                    if (config.historial.activo && \n                        (config.historial.ambasCamaras || camara.num === config.camaras[0].num)) {\n                        const ahora = new Date();\n                        const horaActual = ahora.getHours();\n                        \n                        \/\/ Solo a\u00f1adimos al historial si cambia la hora\n                        if (camara.historial.lastHourProcessed === null || \n                            horaActual !== camara.historial.lastHourProcessed) {\n                            const nuevoItem = {\n                                src: newUrl,\n                                timestamp: timestamp,\n                                fecha: ahora,\n                                hora: horaActual\n                            };\n                            \n                            \/\/ A\u00f1adir al principio del array\n                            camara.historial.items.unshift(nuevoItem);\n                            \n                            \/\/ Mantener solo el m\u00e1ximo configurado\n                            if (camara.historial.items.length > config.historial.maxItems) {\n                                camara.historial.items = camara.historial.items.slice(0, config.historial.maxItems);\n                            }\n                            \n                            \/\/ Actualizar la \u00faltima hora procesada\n                            camara.historial.lastHourProcessed = horaActual;\n                            \n                            \/\/ Actualizar visual del historial\n                            actualizarHistorialVisual(camara);\n                        }\n                    }\n                    \n                    \/\/ Limpiamos cualquier mensaje de error\n                    if (estadoConexion && estadoConexion.textContent.includes('Error')) {\n                        estadoConexion.textContent = '';\n                    }\n                }, 50); \/\/ Peque\u00f1o retraso para asegurar que la imagen est\u00e9 cargada\n            };\n            \n            tempImage.onerror = function() {\n                if (intentos < config.reintentos.max) {\n                    setTimeout(() => actualizarImagen(camara, intentos + 1), config.reintentos.tiempo);\n                } else if (estadoConexion) {\n                    estadoConexion.textContent = 'Error de conexi\u00f3n. Reintentando...';\n                    setTimeout(() => actualizarImagen(camara, 0), config.reintentos.tiempo * 2);\n                }\n            };\n            \n            \/\/ Iniciamos la carga\n            tempImage.src = newUrl;\n        }\n        \n        function iniciarActualizaciones() {\n            \/\/ Primera actualizaci\u00f3n\n            config.camaras.forEach(camara => actualizarImagen(camara));\n            \n            \/\/ Configurar actualizaciones peri\u00f3dicas\n            setInterval(() => {\n                config.camaras.forEach(camara => actualizarImagen(camara));\n            }, config.intervalo);\n        }\n        \n        \/\/ Iniciar todo\n        inicializar();\n    });\n    <\/script>\n    \n<p style=\"text-align: center; font-size: 0.9em; color: #555;\">(Live signal from Deba Beach)<\/p>\n<\/div>\n<h2>What to look for on the Deba camera?<\/h2>\n<p>Deba is not just any beach. It is famous for holding a lot of swell. To interpret the image well, look at:<\/p>\n<ul>\n\u00a0\t<\/p>\n<li><strong>The Right by the Jetty:<\/strong> It is the jewel of the beach. Look at the area next to the harbor wall. If you see long, organized lines breaking there, the session looks promising.<\/li>\n<p>\u00a0\t<\/p>\n<li><strong>The Size:<\/strong> Deba is deceptive. Since the camera is far away, the waves look smaller. Look for surfers in the water (if there are any) as a reference to calculate the <a href=\"https:\/\/www.escueladesurfsopelana.com\/en\/how-to-measure-waves-surfing\/\"><strong>real height<\/strong><\/a>.<\/li>\n<p>\u00a0\t<\/p>\n<li><strong>The Foam:<\/strong> If you see a lot of messy white water and visible rips, be careful. Deba has strong currents when the swell picks up.<\/li>\n<\/ul>\n<h3>Tips for this spot<\/h3>\n<ul>\n\u00a0\t<\/p>\n<li><strong>Tide:<\/strong> It works best at <strong>low tide<\/strong>. As the tide rises, the wave loses power and gets too close to the shore and the wall, making the session more complicated.<\/li>\n<p>\u00a0\t<\/p>\n<li><strong>Wind:<\/strong> It needs <strong>South (S)<\/strong> wind to be perfect. With Northwest wind, the beach gets very messy.<\/li>\n<\/ul>\n<hr style=\"margin: 40px 0;\" \/>\n<h2><strong>Looking for Surf Lessons? Come to Pe\u00f1a Txuri in SOPELANA<\/strong><\/h2>\n<p>We provide this webcam so you can see the waves in Deba, but remember that <a href=\"https:\/\/www.escueladesurfsopelana.com\/en\/\"><strong>Pe\u00f1a Txuri Surf School is located at Sopelana beach (Bizkaia)<\/strong><\/a>.<\/p>\n<p>Deba is an incredible beach for experienced surfers when it is big. If you are looking to learn, improve your technique, or simply enjoy a safe session with all comforts (changing rooms, showers, equipment), we await you in <a href=\"https:\/\/www.escueladesurfsopelana.com\/en\/sopelana-beach\/\"><strong>Sopelana<\/strong><\/a>.<\/p>\n<div style=\"background-color: #f9f9f9; padding: 20px; border-left: 5px solid #007bff; margin-bottom: 30px;\">\n<h3 style=\"margin-top: 0;\">\ud83d\udccd Pe\u00f1a Txuri: Your school in Sopela<\/h3>\n<p>Our facilities and team are in Sopelana, where we guarantee the consistency and safety needed for our surf courses.<\/p>\n<\/div>\n<h3>Book your lesson in Sopelana here:<\/h3>\n\t\t<div data-elementor-type=\"section\" data-elementor-id=\"137331\" class=\"elementor elementor-137331\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-5152775 e-flex e-con-boxed e-con e-parent\" data-id=\"5152775\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d4213d5 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"d4213d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.escueladesurfsopelana.com\/en\/surf-lesson-sopelana\/adult-surf-lessons\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Book your surf lesson<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n","protected":false},"excerpt":{"rendered":"<p>Deba Webcam Live You are watching Deba beach, known for hosting some of the biggest and most powerful waves on the Basque coast. Use this webcam to measure the real size of the sea and the quality of the sandbanks. (Live signal from Deba Beach) What to look for on the Deba camera? Deba is [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":137672,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[],"class_list":["post-137907","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-cam"],"_links":{"self":[{"href":"https:\/\/www.escueladesurfsopelana.com\/en\/wp-json\/wp\/v2\/posts\/137907","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.escueladesurfsopelana.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.escueladesurfsopelana.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.escueladesurfsopelana.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.escueladesurfsopelana.com\/en\/wp-json\/wp\/v2\/comments?post=137907"}],"version-history":[{"count":1,"href":"https:\/\/www.escueladesurfsopelana.com\/en\/wp-json\/wp\/v2\/posts\/137907\/revisions"}],"predecessor-version":[{"id":137908,"href":"https:\/\/www.escueladesurfsopelana.com\/en\/wp-json\/wp\/v2\/posts\/137907\/revisions\/137908"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.escueladesurfsopelana.com\/en\/wp-json\/wp\/v2\/media\/137672"}],"wp:attachment":[{"href":"https:\/\/www.escueladesurfsopelana.com\/en\/wp-json\/wp\/v2\/media?parent=137907"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.escueladesurfsopelana.com\/en\/wp-json\/wp\/v2\/categories?post=137907"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.escueladesurfsopelana.com\/en\/wp-json\/wp\/v2\/tags?post=137907"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}