← Volver al blogGoogle & Local SEO

Schema markup para gimnasios: las etiquetas invisibles que le explican tu negocio a Google

Schema markup para gimnasios: las etiquetas invisibles que le explican tu negocio a Google

El schema markup es código invisible en tu web que le dice a Google, sin ambigüedad, "esto es un gimnasio, está en esta dirección exacta, abre a las 7:00, cuesta desde 29€ al mes y este es su teléfono". Tus visitantes no lo ven nunca. Las máquinas que deciden cuándo y cómo mostrarte, sí. Se implementa una vez, en una tarde, y trabaja para siempre.

Aviso desde el principio: no es un cohete. Añadir schema no te va a subir tres posiciones la semana que viene. Lo que hace es otra cosa, igual de valiosa pero menos vistosa: elimina la ambigüedad sobre quién eres y te hace elegible para resultados enriquecidos. Y en 2026 hay una razón nueva para tomárselo en serio que no existía hace tres años: los motores de búsqueda con IA.

Qué es, en cristiano

Cuando Google rastrea tu web, lee texto. Y el texto es ambiguo para una máquina. "Abierto de 7 a 22" puede ser un horario o el título de una película. "Desde 29€" puede ser tu cuota mensual, el precio de unas zapatillas que recomiendas en el blog o una errata.

El schema markup (datos estructurados, según el estándar de schema.org) resuelve esa ambigüedad con etiquetas: en lugar de obligar a Google a deducir, se lo declaras. "openingHours": "Mo-Fr 07:00-22:00" no admite interpretación. El formato moderno es JSON-LD: un bloque de código que se pega en el <head> de la página y que no afecta en nada al diseño ni a lo que ve el usuario.

La analogía menos mala: tu web es el escaparate para personas, y el schema es la ficha técnica para máquinas. Las dos cuentan lo mismo, cada una en el idioma de su lector.

Por qué importa más ahora: la búsqueda con IA

El argumento clásico a favor del schema era la elegibilidad para resultados enriquecidos: estrellas de valoración, preguntas frecuentes desplegables, eventos con fecha en el propio resultado de búsqueda. Sigue vigente.

El argumento nuevo es que los motores generativos (los resúmenes con IA de Google, ChatGPT con búsqueda, Perplexity) construyen sus respuestas a partir de fuentes que pueden interpretar con confianza. Un dato estructurado es exactamente eso: información que la máquina no tiene que adivinar. Cuando alguien le pregunta a un asistente "gimnasios con clases de crossfit que abran antes de las 7 cerca de Chamberí", el motor tiene que resolver horario, ubicación y servicio. Si tu web declara las tres cosas en JSON-LD, eres citable con un coste de interpretación cercano a cero. Si las tres cosas están enterradas en un PDF de horarios o en una imagen, no existes para esa respuesta.

Esto conecta con la búsqueda clásica de proximidad: la consulta cerca de mí ya era el campo de batalla del SEO local, y la IA la está volviendo conversacional. Los datos estructurados son tu forma de presentarte a ese examen con las respuestas escritas.

Una cosa que el schema no hace: no sustituye a tu perfil de empresa de Google. Para el pack local del mapa, la ficha sigue mandando. El schema trabaja sobre tu web, refuerza la coherencia entre ambos y cubre lo que la ficha no alcanza.

Los tipos que aplican a un gimnasio

De los cientos de tipos de schema.org, a un gimnasio le interesan cinco. En orden de prioridad:

LocalBusiness / HealthClub: el básico obligatorio

HealthClub es el subtipo específico para gimnasios (cuelga de ExerciseGym, que cuelga de SportsActivityLocation, que cuelga de LocalBusiness; usa el más específico). Es el que declara lo fundamental: nombre, dirección, coordenadas, teléfono, horario, web, rango de precios. Si solo implementas uno, es este. La dirección y el teléfono deben coincidir carácter a carácter con los de tu ficha de Google y el resto de tu presencia online; la coherencia de esos datos es un pilar del SEO local y el schema es un sitio más donde puede romperse.

FAQPage: las 5 preguntas que todos hacen

Todo gimnasio recibe las mismas preguntas: cuánto cuesta, hay permanencia, puedo probar gratis, hay parking, qué necesito para la primera clase. Si tu web tiene una sección de preguntas frecuentes (y debería), márcala con FAQPage. Google ha reducido cuánto muestra este formato en resultados, así que no esperes los desplegables de antes en todas las búsquedas, pero el contenido marcado sigue siendo material de primera para los motores de IA, que adoran el formato pregunta-respuesta.

Offer: tu oferta de entrada

La promo de matrícula gratis o el mes de prueba pueden declararse como Offer con precio, moneda y fecha de validez. Mantenlo sincronizado: una oferta caducada en el schema es peor que ninguna.

Event: puertas abiertas y retos

Si organizas jornadas de puertas abiertas, masterclass o retos de 6 semanas, el tipo Event los hace elegibles para aparecer con fecha y lugar en resultados de búsqueda. Útil sobre todo si publicas los eventos en una página propia con URL estable.

Review / AggregateRating: con las reglas de Google

Puedes marcar valoraciones agregadas (AggregateRating) para optar a las estrellas en el resultado de búsqueda. Pero con las reglas de Google, que aquí es estricto: solo reseñas recogidas en tu propio sitio, de tu propio negocio. Está prohibido marcar reseñas copiadas de Google o de terceros, y está prohibido el self-serving markup sobre reseñas que no son verificables en tu página. Si haces trampa, el castigo típico es perder todos los resultados enriquecidos del sitio. Si no recoges reseñas propias en tu web, sáltate este tipo sin remordimiento; tu estrategia de reseñas en Google sigue intacta por su lado.

El código: JSON-LD completo para un gimnasio

Ejemplo para un gimnasio ficticio. Copia, sustituye los valores y listo. Va dentro de una etiqueta <script type="application/ld+json"> en el <head> de tu página de inicio.

{
  "@context": "https://schema.org",
  "@type": "HealthClub",
  "name": "Forja Fitness Club",
  "image": "https://www.forjafitness.es/img/sala-principal.jpg",
  "url": "https://www.forjafitness.es",
  "telephone": "+34 912 345 678",
  "priceRange": "29€-59€/mes",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Calle de la Forja, 12",
    "addressLocality": "Madrid",
    "postalCode": "28012",
    "addressCountry": "ES"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 40.4123,
    "longitude": -3.7038
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "07:00",
      "closes": "22:30"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday", "Sunday"],
      "opens": "09:00",
      "closes": "14:00"
    }
  ],
  "sameAs": [
    "https://www.instagram.com/forjafitness",
    "https://www.facebook.com/forjafitness"
  ],
  "makesOffer": {
    "@type": "Offer",
    "name": "Matrícula gratis",
    "description": "Matrícula gratuita para nuevas altas durante octubre",
    "price": "0",
    "priceCurrency": "EUR",
    "validThrough": "2026-10-31"
  }
}

Las coordenadas exactas las sacas de Google Maps: clic derecho sobre tu local y copia los dos números. El campo sameAs enlaza tus perfiles sociales y ayuda a las máquinas a unificar tu identidad. El priceRange admite formato libre; sé concreto, "€€" no le dice nada a nadie.

Para la página de preguntas frecuentes, un bloque aparte:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "¿Cuánto cuesta la cuota mensual?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "La cuota estándar es de 39€/mes sin permanencia. El plan con clases dirigidas ilimitadas cuesta 59€/mes."
      }
    },
    {
      "@type": "Question",
      "name": "¿Puedo probar antes de apuntarme?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Sí, la primera sesión es gratuita y sin compromiso. Reserva por WhatsApp o en la web."
      }
    }
  ]
}

Regla de oro en ambos casos: el schema solo puede declarar lo que la página muestra visiblemente. Marcar contenido que el usuario no ve es violación directa de las directrices de Google.

Cómo añadirlo según tu web

WordPress. El camino fácil. Plugins como Rank Math o Yoast generan el LocalBusiness básico desde un formulario, sin tocar código. Para afinar el subtipo a HealthClub o añadir Offer, casi todos permiten pegar JSON-LD personalizado. Diez minutos.

Web a medida. Pídele a tu desarrollador que pegue el bloque en el <head> de la home (y el FAQPage en la página de preguntas). Es literalmente copiar y pegar; si te cobra más de media hora por esto, pregunta por qué.

Builders (Wix, Squarespace, Webflow). Todos tienen una opción de "código personalizado" en la cabecera, por página o global. Wix además genera algo de schema automático; revisa que no dupliques tipos, porque dos LocalBusiness contradictorios en la misma página confunden más que ayudan.

Validación. Antes de dar por terminado: pasa la URL por la prueba de resultados enriquecidos de Google (search.google.com/test/rich-results). Te dice qué tipos detecta y qué errores hay. Errores en rojo: corrígelos. Avisos en ámbar: opcionales, normalmente campos recomendados que no has rellenado. Repite la prueba después de cualquier rediseño de la web, que es cuando el schema suele romperse en silencio.

Qué impacto esperar, sin humo

Honestamente: pequeño, gratis y permanente. Esa es la combinación.

El schema no es un factor de ranking directo confirmado. Lo que te da es elegibilidad para resultados enriquecidos (que mejoran el porcentaje de clics cuando aparecen), mejor comprensión de tu negocio por parte de Google, y citabilidad ante los motores de IA. Tradeoff transparente: si tu web tiene problemas gordos (lenta, sin contenido, mal SEO de base), el schema no los compensa; arregla primero la casa y etiqueta después. Pero como tarea de una tarde con efecto indefinido, la relación esfuerzo-retorno es de las mejores del SEO local.

Hay un beneficio lateral que casi nadie menciona: escribir el schema te obliga a auditar tus datos. Más de un dueño descubre, al rellenar el JSON, que su web dice un horario, su ficha de Google otro y su Instagram un tercero. Esa inconsistencia sí te está costando posiciones hoy, y el resto de tu presencia técnica local depende de resolverla.

El plan concreto: esta semana, genera tu bloque HealthClub con el ejemplo de arriba, pégalo, valídalo. La que viene, el FAQPage. Y apunta en el calendario revisar el schema cada vez que cambies precios, horario u oferta. En Pilotium lo vemos a diario con los gimnasios que captan socios con campañas: el anuncio lleva el tráfico, pero lo que ese tráfico encuentra al investigarte (ficha coherente, web que las máquinas entienden) decide cuántos acaban rellenando el formulario. El schema es la parte de ese trabajo que se hace una vez y no se vuelve a tocar.

Mantente a la Vanguardia

Insights semanales de marketing con IA. Sin spam. Cancela cuando quieras.