Tiendas y comercios en Santa Pola

De la moda a los recuerdos para llevar, Santa Pola reúne 57 tiendas y comercios. El recorrido de direcciones para una vuelta de compras sin coger el coche.

Joyería Rodes

★ 4.9

En el centro de Santa Pola, la Joyería Rodes reúne joyas, relojes y complementos, con la seriedad de un negocio asentado. Una dirección para un regalo, una reparación o un capricho, en las calles comerciales del corazón de la ciudad.

Ver en el mapa →

Erredé Joyeros

★ 5.0

En el centro de Santa Pola, Erredé Joyeros reúne joyas, relojes y piezas especiales. Una dirección para un regalo, una ocasión que marcar o un capricho, con la seriedad de una casa consolidada.

Ver en el mapa →

Bambú Moda y Complementos

★ 4.4

En el centro de Santa Pola, Bambú Moda y Complementos ofrece ropa y complementos de mujer, con un surtido ecléctico. Una tienda para incluir en una mañana de compras por las calles comerciales.

Ver en el mapa →

PAPERS

★ 4.7

En el centro de Santa Pola, Papers es una papelería práctica: material escolar, fotocopias y pequeños regalos. Abierta mañana y tarde, la dirección para los apuros de última hora.

Ver en el mapa →

Papelería Guilló

★ 4.8

En el centro de Santa Pola, la Papelería Guilló es una papelería de barrio conocida por su trato cercano. Material, prensa y servicios del día a día — un clásico de la ciudad.

Ver en el mapa →

Marvimundo

★ 4.5

En el centro de Santa Pola, en la Carrer d'Elx, Marvimundo es una perfumería y tienda de cosmética: perfumes, cuidado y productos de belleza a precios asequibles. Una dirección práctica para un capricho o un regalo.

Ver en el mapa →

Perfumarte Santa Pola

★ 5.0

En el centro de Santa Pola, Perfumarte es una perfumería de trato personalizado, con una selección cuidada de fragancias y cosmética. Una dirección fiable para un perfume o un regalo.

Ver en el mapa →

Yainoe

★ 4.6

En el centro de Santa Pola, Yainoe es una perfumería de barrio de ambiente acogedor: perfumes y cosmética a buen precio. Para incluir en una vuelta de compras por el centro.

Ver en el mapa →

Torsor Perfumes

★ 5.0

En Gran Alacant, Torsor Perfumes ofrece una selección de perfumes de calidad en un entorno agradable. La dirección de perfumería práctica para los residentes de la zona.

Ver en el mapa →

ALE-HOP

★ 4.3

Cadena nacional de regalos y artículos originales, siempre llena de sorpresas. Ideal para traer un recuerdo especial o encontrar una idea de regalo.

Ver en el mapa →

Sin Horas - Pola Shop

★ 4.5

En el centro de Santa Pola, Sin Horas (Pola Shop) es un bazar bien surtido: recuerdos de Santa Pola, artículos de playa y pequeños regalos a buen precio. Práctico para llevarse un recuerdo o salir del paso.

Ver en el mapa →

SPARTA SANTA POLA

★ 5.0

En el centro de Santa Pola, Sparta es la tienda de los coleccionistas: figuras, juegos, cartas y cultura pop. Un refugio para aficionados, para una rareza o un regalo geek.

Ver en el mapa →

KAI COAST

★ 5.0

En el centro de Santa Pola, Kai Coast ofrece recuerdos y regalos con una selección de artículos marineros y locales. Una bonita dirección para llevarse un recuerdo de la costa.

Ver en el mapa →

samaez

★ 5.0

En el centro de Santa Pola, Samaez es una tienda de regalos originales: detalles personalizados y artículos creativos. Para una idea de regalo que se sale de lo común.

Ver en el mapa →

Australian Store

★ 4.9

En el centro de Santa Pola, Australian Store apuesta por la moda femenina veraniega con aire australiano: estilo desenfadado y prendas fáciles de llevar. Para una vuelta de compras.

Ver en el mapa →

Hempunity CBD SANTA POLA

★ 4.7

En el centro de Santa Pola, Hempunity ofrece una amplia gama de productos de cáñamo: flores, aceites, cosmética y e-líquidos, con asesoramiento incluido. La dirección CBD de la ciudad.

Ver en el mapa →

Galegobricks

★ 5.0

En el centro de Santa Pola, Galegobricks es la tienda de juguetes y LEGO: sets y piezas para todas las edades. Una parada para familias y amantes de los bloques.

Ver en el mapa →

Mimusso Santa Pola

★ 4.8

En el centro de Santa Pola, Mimusso es una tienda de moda femenina inclusiva y actual: ropa pensada para todas las tallas, en un ambiente acogedor.

Ver en el mapa →

La Casa

★ 4.9

En el centro de Santa Pola, La Casa es una tienda de moda femenina de estilo elegante, con colecciones cuidadosamente seleccionadas. Una parada de referencia en el comercio local.

Ver en el mapa →

Marieta Moda

★ 5.0

En el centro de Santa Pola, Marieta Moda es la favorita de las locales por sus looks coloridos, sus complementos y su trato amable. Para un toque de verano en el armario.

Ver en el mapa →

Lupita Store

★ 4.8

En el centro de Santa Pola, Lupita Store ofrece ropa femenina y complementos con un aire veraniego y desenfadado. Ideal para vestir al estilo Santa Pola.

Ver en el mapa →

40 Grados

★ 4.1

En el centro de Santa Pola, 40 Grados es una tienda de moda popular con colecciones asequibles y ambiente relajado. Un buen plan para los looks del día a día.

Ver en el mapa →

Blanco Perla

★ 5.0

En el centro de Santa Pola, Blanco Perla cultiva un estilo depurado y una selección minimalista de moda femenina. La dirección para quienes aman las prendas sobrias y bonitas.

Ver en el mapa →

Fresas Moda y Complementos

★ 4.8

En el centro de Santa Pola, Fresas Moda y Complementos apuesta por looks coloridos y accesorios originales. El espíritu veraniego de Santa Pola, para una vuelta de compras.

Ver en el mapa →

7 Colores Santa Pola

★ 5.0

En el centro de Santa Pola, 7 Colores viste a los niños con ropa colorida, alegre y de calidad. La alegría de los pequeños y la tranquilidad de los padres.

Ver en el mapa →

Koala Bay Santa Pola

★ 5.0

En plena Marina de Santa Pola, Koala Bay es la tienda de la moda de baño: bañadores, pareos y ropa de playa, con espíritu surf y lifestyle. El aliado del verano.

Ver en el mapa →

Silvan's

★ 5.0

En el centro de Santa Pola, Silvan's ofrece colecciones refinadas y un servicio muy personalizado. La dirección de moda femenina más arreglada del centro.

Ver en el mapa →

Pola Punt

★ 4.8

En el centro de Santa Pola, Pola Punt se especializa en el punto y los textiles delicados. Una selección cuidada para quien aprecia la elegancia discreta.

Ver en el mapa →

Gallud moda

★ 4.4

En el centro de Santa Pola, Gallud Moda viste al hombre en clave clásica y casual, con un trato atento. Una buena dirección de moda masculina en la ciudad.

Ver en el mapa →

Moda kids

★ 4.8

En el centro de Santa Pola, Moda Kids ofrece colecciones coloridas y prácticas para niños, con buena relación calidad-precio. Práctica para vestir a los pequeños.

Ver en el mapa →

Natalie Piel

★ 4.6

En el centro de Santa Pola, Natalie Piel ofrece calzado de cuero y complementos, entre comodidad y estilo. Una bonita selección de modelos de temporada.

Ver en el mapa →

Tendencias

★ 4.6

En el centro de Santa Pola, Tendencias sigue las tendencias de temporada en calzado y complementos, con colecciones que se renuevan a menudo.

Ver en el mapa →

Zapateria Atrevida

★ 4.4

En el centro de Santa Pola, Zapatería Atrevida ofrece calzado femenino atrevido y original. La tienda de quienes aman los modelos distintos.

Ver en el mapa →

Raiz

★ 5.0

En el centro de Santa Pola, Raiz combina trato personalizado, selección cuidada y espíritu local en calzado y complementos. Una bonita dirección del centro.

Ver en el mapa →

Natural Shoes

★ 4.3

Cerca de la Playa de Levante, Natural Shoes apuesta por el calzado cómodo y respetuoso con el pie. Ideal para quien prioriza el bienestar y la postura.

Ver en el mapa →

MIA&ROCK

★ 4.9

En el centro de Santa Pola, Mia&Rock ofrece calzado de tendencia con carácter rock y fashion, renovado cada temporada.

Ver en el mapa →

Sprinter

★ 4.2

Gran cadena nacional de deporte, bien surtida en calzado, ropa y equipamiento para todos los deportes. Ofertas frecuentes.

Ver en el mapa →

Be Urban Running

★ 4.2

Cerca de la Playa de Levante, Be Urban Running es la tienda de los corredores: calzado técnico, running y street wear, con asesoramiento experto. El sitio para equiparse antes de correr.

Ver en el mapa →

Consulta también nuestra guía interactiva completa de Santa Pola.

Choisir la langue
🇫🇷
Français
Santa Pola. Découverte.
🇪🇸
Español
Santa Pola. Descubierta.
🇬🇧
English
Santa Pola. Explored.
(function () { if (window === window.top) return; const allowedParentOrigins = ["https://www.perplexity.ai","https://perplexity.ai","https://testing.perplexity.ai","https://staging.perplexity.ai","https://*.preview.i.perplexity.ai","http://localhost:3000","http://127.0.0.1:3000","http://localhost:5173","http://127.0.0.1:5173"]; const MAX_FONT_BYTES = 500 * 1024; const MAX_TOTAL_FONT_BYTES = 2 * 1024 * 1024; let scrollForwarding = false; let scrollRaf = 0; let trustedTopOrigin = null; // Allow entries like "https://*.preview.i.perplexity.ai" — the wildcard // matches a single DNS label (no dots), so "https://*.foo" cannot stretch // across multiple labels. function matchesAllowedOrigin(origin) { if (!origin) return false; for (const entry of allowedParentOrigins) { if (!entry.includes("*")) { if (entry === origin) return true; continue; } const pattern = new RegExp( "^" + entry.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, "[^.]+") + "$", ); if (pattern.test(origin)) return true; } return false; } // Trust decision: when the sender is same-origin-visible (event.origin is a // real origin like https://www.perplexity.ai) we trust event.origin directly. // When event.origin is "null" (opaque broker srcdoc), we fall back to the // broker's stamped `parentOrigin` to identify the top window. The fallback // is claim-only — we rely on the browser's native `targetOrigin` enforcement // on the response path (see postToTrustedTop) to ensure replies can't be // delivered to anyone but the actual top window of that claimed origin. function getTrustedParentOrigin(event) { const forwardedParentOrigin = typeof event.data.parentOrigin === "string" ? event.data.parentOrigin : null; const parentOrigin = event.origin === "null" ? forwardedParentOrigin : event.origin; return matchesAllowedOrigin(parentOrigin) ? parentOrigin : null; } // All responses go to window.top with targetOrigin = the allowlisted origin. // An attacker that iframes us inside their own null-origin broker can claim // any parentOrigin they like, but the browser will drop the reply whenever // the real top's origin doesn't match — so the screenshot never leaves. function postToTrustedTop(message) { if (!trustedTopOrigin) return; try { window.top.postMessage(message, trustedTopOrigin); } catch (_error) {} } function inlineAll(original, clone) { if (original.nodeType !== 1 || clone.nodeType !== 1) return; try { const computedStyle = getComputedStyle(original); // cssText on a computed style is the serialized declaration in modern // Chromium/Safari — a single read beats enumerating ~400 longhand // properties. Firefox returns "" here, so we fall back on empty. const serialized = computedStyle.cssText; if (serialized) { clone.style.cssText = serialized; } else { const parts = new Array(computedStyle.length); for (let index = 0; index < computedStyle.length; index += 1) { const property = computedStyle[index]; parts[index] = `${property}:${computedStyle.getPropertyValue(property)};`; } clone.style.cssText = parts.join(""); } } catch (_error) {} const originalChildren = original.children; const clonedChildren = clone.children; for ( let index = 0; index < originalChildren.length && index < clonedChildren.length; index += 1 ) { inlineAll(originalChildren[index], clonedChildren[index]); } } function extractFontUrl(srcValue) { const matches = [ ...srcValue.matchAll( /url\(["']?([^"')]+)["']?\)(?:\s*format\(["']?([^"')]+)["']?\))?/gi, ), ]; if (matches.length === 0) return null; const woff2 = matches.find((m) => m[2] && m[2].toLowerCase().includes("woff2")); if (woff2) return woff2[1]; const woff = matches.find((m) => m[2] && m[2].toLowerCase().includes("woff")); if (woff) return woff[1]; return matches[0][1]; } // Cache resolved font URL -> data URI across captures. Fonts on a page // essentially never change, and a batch run emits multiple captures back to // back — without this we'd refetch + re-base64 every time. const fontDataUriCache = new Map(); const SRC_DECLARATION_RE = /src\s*:\s*[^;}]+/i; async function fetchAsDataUri(url) { if (fontDataUriCache.has(url)) return fontDataUriCache.get(url); let dataUri = null; try { const response = await fetch(url, { mode: "cors", credentials: "omit" }); if (response.ok) { const blob = await response.blob(); if (blob.size <= MAX_FONT_BYTES) { dataUri = await new Promise((resolve) => { const reader = new FileReader(); reader.onloadend = () => resolve(typeof reader.result === "string" ? reader.result : null); reader.onerror = () => resolve(null); reader.readAsDataURL(blob); }); } } } catch (_error) { dataUri = null; } fontDataUriCache.set(url, dataUri); return dataUri; } function collectFontFaceRuleTexts() { const rules = []; for (const sheet of document.styleSheets) { let cssRules; try { cssRules = sheet.cssRules; } catch (_error) { continue; } if (!cssRules) continue; for (const rule of cssRules) { const cssText = rule.cssText || ""; if (cssText.startsWith("@font-face")) rules.push(cssText); } } return rules; } async function buildInlinedFontCss() { const ruleTexts = collectFontFaceRuleTexts(); if (ruleTexts.length === 0) return null; const resolved = ruleTexts.map((cssText) => { if (!SRC_DECLARATION_RE.test(cssText)) return null; const srcMatch = cssText.match(/src\s*:\s*([^;}]+)[;}]/i); if (!srcMatch) return null; const url = extractFontUrl(srcMatch[1]); if (!url) return null; try { return { cssText, url: new URL(url, document.baseURI).href }; } catch (_error) { return null; } }); const dataUris = await Promise.all( resolved.map((entry) => (entry ? fetchAsDataUri(entry.url) : Promise.resolve(null))), ); const inlined = []; let totalBytes = 0; for (let index = 0; index < resolved.length; index += 1) { const entry = resolved[index]; const dataUri = dataUris[index]; if (!entry || !dataUri) continue; const approxBytes = dataUri.length * 0.75; if (totalBytes + approxBytes > MAX_TOTAL_FONT_BYTES) break; totalBytes += approxBytes; inlined.push(entry.cssText.replace(SRC_DECLARATION_RE, `src: url("${dataUri}")`)); } return inlined.length > 0 ? inlined.join("\n") : null; } function stripExternal(clone) { const images = clone.querySelectorAll("img"); for (let index = 0; index < images.length; index += 1) { const src = images[index].getAttribute("src"); if (src && !src.startsWith("data:")) images[index].removeAttribute("src"); } const elements = clone.querySelectorAll("*"); for (let index = 0; index < elements.length; index += 1) { const style = elements[index].style.cssText; if (style && style.includes("url(")) { elements[index].style.cssText = style.replace( /url\(["']?(?!data:)[^)"']*["']?\)/gi, "none", ); } } } function emitScroll() { scrollRaf = 0; if (!scrollForwarding) return; postToTrustedTop({ type: "INLINE_EDIT_SCROLL", scrollX: window.scrollX, scrollY: window.scrollY, }); } window.addEventListener( "scroll", function () { if (!scrollForwarding || scrollRaf) return; scrollRaf = requestAnimationFrame(emitScroll); }, { passive: true, capture: true }, ); async function handleCaptureRequest(event) { const requestId = event.data.requestId; const scrollX = window.scrollX; const scrollY = window.scrollY; const width = window.innerWidth; const height = window.innerHeight; function postResult(dataUrl) { postToTrustedTop({ type: "INLINE_EDIT_SCREENSHOT_RESULT", requestId, dataUrl, scrollX, scrollY, }); } try { // Wait for any pending web fonts to resolve so both inline metrics and // the @font-face inlining below see the same loaded faces. if (document.fonts && document.fonts.ready) { try { await document.fonts.ready; } catch (_error) {} } const clone = document.documentElement.cloneNode(true); inlineAll(document.documentElement, clone); const removedNodes = clone.querySelectorAll("script,link[rel=\"stylesheet\"],style"); for (let index = 0; index < removedNodes.length; index += 1) { removedNodes[index].remove(); } stripExternal(clone); // Re-embed web fonts as data-URI @font-face rules so the SVG rasterizer // can resolve them — external font URLs aren't fetched during // foreignObject rendering, which would otherwise force a fallback face // and change text metrics. const inlinedFontCss = await buildInlinedFontCss(); if (inlinedFontCss) { const styleEl = document.createElement("style"); styleEl.textContent = inlinedFontCss; const head = clone.querySelector("head"); if (head) head.appendChild(styleEl); else clone.insertBefore(styleEl, clone.firstChild); } const html = new XMLSerializer().serializeToString(clone); const svg = `` + '' + `
` + `
` + html + "
"; const svgUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`; const image = new Image(); image.onload = function () { const canvas = document.createElement("canvas"); canvas.width = width; canvas.height = height; canvas.getContext("2d").drawImage(image, 0, 0); postResult(canvas.toDataURL("image/png")); }; image.onerror = function () { postResult(null); }; image.src = svgUrl; } catch (_error) { postResult(null); } } window.addEventListener("message", function (event) { if (!event.data) return; // Only accept messages from the direct parent frame. Blocks sibling / // unrelated-window postMessage senders that could otherwise reach us. if (event.source !== window.parent) return; const trustedParentOrigin = getTrustedParentOrigin(event); if (!trustedParentOrigin) return; trustedTopOrigin = trustedParentOrigin; if (event.data.type === "INLINE_EDIT_SCROLL_START") { scrollForwarding = true; emitScroll(); return; } if (event.data.type === "INLINE_EDIT_SCROLL_STOP") { scrollForwarding = false; if (scrollRaf) cancelAnimationFrame(scrollRaf); scrollRaf = 0; return; } if (event.data.type !== "INLINE_EDIT_CAPTURE_REQUEST") return; handleCaptureRequest(event); }); })();