{"id":1248,"date":"2025-12-17T20:08:00","date_gmt":"2025-12-17T17:08:00","guid":{"rendered":"http:\/\/api-sport.pro\/?p=1248"},"modified":"2025-12-17T20:08:00","modified_gmt":"2025-12-17T17:08:00","slug":"como-crear-tu-propio-widget-de-puntuacion-en-vivo-de-futbol-para-un-sitio-web","status":"publish","type":"post","link":"https:\/\/api-sport.pro\/es\/como-crear-tu-propio-widget-de-puntuacion-en-vivo-de-futbol-para-un-sitio-web\/","title":{"rendered":"\u00bfC\u00f3mo crear tu propio widget de puntuaci\u00f3n en vivo de f\u00fatbol para un sitio web?"},"content":{"rendered":"<div class=\"table-of-contents\">\n<div class=\"table-of-contents-title\">Contenidos<\/div>\n<ul class=\"table-of-contents-ul\">\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-1\">\u00bfQu\u00e9 es un widget de puntuaci\u00f3n en vivo de f\u00fatbol para un sitio web y c\u00f3mo funciona?<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-2\">\u00bfQu\u00e9 API de partidos de f\u00fatbol elegir para puntuaciones en vivo en el sitio web?<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-3\">\u00bfC\u00f3mo obtener una clave y conectar la API de puntuaci\u00f3n en vivo de f\u00fatbol al sitio web?<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-4\">\u00bfC\u00f3mo crear tu propio widget de puntuaci\u00f3n en vivo para partidos de f\u00fatbol utilizando la API?<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-5\">C\u00f3digo de ejemplo para un widget de puntuaci\u00f3n en vivo de f\u00fatbol en JavaScript y HTML.<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-6\">\u00bfC\u00f3mo configurar la actualizaci\u00f3n y el almacenamiento en cach\u00e9 de las puntuaciones en vivo de f\u00fatbol a trav\u00e9s de la API?<\/a><\/li>\n<li class=\"table-of-contents-li\"><a class=\"table-of-contents-a\" href=\"#contents-7\">Aspectos legales y licencias al utilizar la API de puntuaci\u00f3n en vivo de partidos de f\u00fatbol.<\/a><\/li>\n<\/ul>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-1\">\u00bfQu\u00e9 es un widget de puntuaci\u00f3n en vivo de f\u00fatbol para un sitio web y c\u00f3mo funciona?<\/h2>\n<p>Un widget de puntuaci\u00f3n en vivo de f\u00fatbol es un bloque en el sitio web que muestra la puntuaci\u00f3n del partido, el estado de la reuni\u00f3n, el minuto de juego y eventos clave en tiempo real: goles, tarjetas, sustituciones. Tal widget aumenta la participaci\u00f3n de la audiencia, extiende el tiempo en el sitio y permite a los propietarios de medios, proyectos de apuestas y servicios anal\u00edticos proporcionar a los visitantes contenido relevante sin actualizaciones manuales.<\/p>\n<p>T\u00e9cnicamente, un widget es solo un \u00abenvoltorio\u00bb: marcado HTML, estilos y l\u00f3gica de JavaScript en el lado del cliente (o renderizado del lado del servidor), que solicita peri\u00f3dicamente datos de una fuente externa. La informaci\u00f3n deportiva en s\u00ed (partidos, puntuaciones, eventos en vivo, estad\u00edsticas, cuotas) se obtiene de manera m\u00e1s confiable a trav\u00e9s de una API especializada en eventos deportivos. Por ejemplo, en la API de Eventos Deportivos basada en <a href=\"http:\/\/api-sport.pro\/es\/\">api-sport.pro<\/a> Los datos de f\u00fatbol est\u00e1n disponibles a trav\u00e9s de puntos finales REST del tipo <code>\/v2\/f\u00fatbol\/partidos<\/code> \u0438 <code>\/v2\/f\u00fatbol\/partidos\/{matchId}<\/code>, donde puedes obtener no solo la puntuaci\u00f3n actual sino tambi\u00e9n el campo <code>minutoDelPartidoActual<\/code>, un array <code>eventosEnVivo<\/code> y detallado <code>estad\u00edsticasDelPartido<\/code>.<\/p>\n<p>El flujo de trabajo es simple: el widget env\u00eda una solicitud a la API, recibe una lista de partidos con par\u00e1metros (torneo, equipos, estado, puntuaci\u00f3n, cuotas, etc.), despu\u00e9s de lo cual JavaScript transforma la respuesta en un formato legible y lo renderiza en la interfaz. Luego, los datos se actualizan a intervalos especificados o, en el futuro, a trav\u00e9s de una conexi\u00f3n WebSocket, que pronto estar\u00e1 disponible en la infraestructura <a href=\"http:\/\/api-sport.pro\/es\/\">API de eventos deportivos<\/a>. Este enfoque libera al desarrollador de la necesidad de analizar sitios web o mantener sus propios feeds y les permite centrarse en el dise\u00f1o y la funcionalidad del widget.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-2\">\u00bfQu\u00e9 API de partidos de f\u00fatbol elegir para puntuaciones en vivo en el sitio web?<\/h2>\n<p>Un requisito clave para la API deportiva para resultados en vivo es la fiabilidad y la integridad de los datos. La API debe devolver no solo la puntuaci\u00f3n b\u00e1sica del partido, sino tambi\u00e9n el estado (por ejemplo, <code>no comenzado<\/code>, <code>en progreso<\/code>, <code>completado<\/code>), el minuto actual (<code>minutoDelPartidoActual<\/code>), alineaciones de equipos, estad\u00edsticas detalladas por per\u00edodos, as\u00ed como eventos en vivo: goles, tarjetas, sustituciones, tiempo a\u00f1adido. En <a href=\"http:\/\/api-sport.pro\/es\/\">API de Eventos Deportivos<\/a> esto se implementa a trav\u00e9s del punto final <code>\/v2\/f\u00fatbol\/partidos<\/code> para la lista de partidos y <code>\/v2\/f\u00fatbol\/partidos\/{matchId}<\/code> para una reuni\u00f3n espec\u00edfica donde est\u00e1n disponibles los campos. <code>eventosEnVivo<\/code> \u0438 <code>estad\u00edsticasDelPartido<\/code>. Este conjunto permite construir no solo una tabla de puntuaciones simple, sino tambi\u00e9n una l\u00ednea de tiempo detallada de eventos.<\/p>\n<p>Al elegir una API, es importante prestar atenci\u00f3n a varios criterios: cobertura geogr\u00e1fica y de torneos (n\u00famero de pa\u00edses y ligas), frecuencia de actualizaciones de datos en vivo, estabilidad y velocidad de respuesta, disponibilidad de filtros por fecha, torneo, equipo o estado del partido. Tambi\u00e9n es importante que la API escale bajo carga, soporte autorizaci\u00f3n segura basada en claves y tenga documentaci\u00f3n clara. Una ventaja adicional es la integraci\u00f3n con datos de apuestas. En la API de api-sport.ru para f\u00fatbol, los mercados de apuestas y las cuotas est\u00e1n disponibles a trav\u00e9s del campo <code>oddsBase<\/code> en la respuesta del partido. Esto permite complementar el widget en vivo con l\u00edneas de casas de apuestas, lo cual es especialmente relevante para sitios de apuestas y predicciones.<\/p>\n<p>A continuaci\u00f3n se muestra un ejemplo simple de una solicitud para una lista de partidos de f\u00fatbol en vivo actuales a trav\u00e9s de la API REST, que se puede usar como base para un futuro widget:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\" data-no-translation=\"\">\nconst apiKey = 'YOUR_API_KEY'; \/\/ \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043a\u043b\u044e\u0447 \u0432 \u043b\u0438\u0447\u043d\u043e\u043c \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0435\nasync function loadLiveMatches() {\n  const url = 'https:\/\/api.api-sport.ru\/v2\/football\/matches?status=inprogress';\n  const response = await fetch(url, {\n    headers: {\n      Authorization: apiKey\n    }\n  });\n  if (!response.ok) {\n    console.error('\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u0430\u0442\u0447\u0435\u0439', response.status);\n    return;\n  }\n  const data = await response.json();\n  console.log('Live-\u043c\u0430\u0442\u0447\u0438:', data.matches);\n}\nloadLiveMatches();\n<\/pre>\n<p>Tal solicitud devuelve un objeto con el campo <code>partidos<\/code>, que contiene todos los juegos en curso. A continuaci\u00f3n, solo queda filtrar los torneos o equipos necesarios y mostrarlos en la interfaz del widget en un formato conveniente.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-3\">\u00bfC\u00f3mo obtener una clave y conectar la API de puntuaci\u00f3n en vivo de f\u00fatbol al sitio web?<\/h2>\n<p>Para que tu widget solicite resultados en vivo, se necesitar\u00e1 una clave API personal. En el ecosistema <a href=\"http:\/\/api-sport.pro\/es\/\">api-sport.pro<\/a> se emite despu\u00e9s de registrarse en la cuenta personal. Basta con crear una cuenta, elegir una tarifa adecuada (hay planes para pruebas y para cargas de producci\u00f3n) y generar una clave en la secci\u00f3n de gesti\u00f3n de acceso. Esta clave se utiliza en el encabezado <code>Autorizaci\u00f3n<\/code> para todas las solicitudes a los puntos finales REST. <code>\/v2\/f\u00fatbol\/...<\/code>. Es importante mantener la clave en un lugar seguro y no publicarla abiertamente en un repositorio p\u00fablico.<\/p>\n<p>Conectar la API al sitio se reduce a dos pasos. Primero, configuras la parte del servidor o cliente de la aplicaci\u00f3n para enviar solicitudes HTTP a la URL base. <code>https:\/\/api.api-sport.ru<\/code>. Segundo, agregas un encabezado de autorizaci\u00f3n con tu clave a cada solicitud. Para pruebas r\u00e1pidas, es conveniente usar Postman o curl, y luego transferir el ejemplo funcional al c\u00f3digo del sitio. A continuaci\u00f3n se muestra una llamada b\u00e1sica a la API para obtener los partidos de hoy:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\" data-no-translation=\"\">\ncurl \\\n  -H 'Authorization: YOUR_API_KEY' \\\n  'https:\/\/api.api-sport.ru\/v2\/football\/matches?date=2025-09-03'\n<\/pre>\n<p>En el widget de producci\u00f3n, es mejor hacer un proxy de la clave a trav\u00e9s del servidor: el frontend llama a tu backend, que luego hace solicitudes a la API utilizando la clave secreta. Esto mejora la seguridad y permite un almacenamiento en cach\u00e9 adicional, limitaci\u00f3n de solicitudes y agregaci\u00f3n de datos. Puedes obtener una clave funcional y gestionar tarifas en <a href=\"https:\/\/app.api-sport.ru\">la cuenta personal en api-sport.ru<\/a>, donde tambi\u00e9n surgen nuevas oportunidades: se planea el soporte para conexiones WebSocket para actualizaciones instant\u00e1neas de puntuaciones y servicios de IA para an\u00e1lisis avanzados.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-4\">\u00bfC\u00f3mo crear tu propio widget de puntuaci\u00f3n en vivo para partidos de f\u00fatbol utilizando la API?<\/h2>\n<p>Desarrollar un widget de resultados en vivo de forma independiente brinda completa libertad en dise\u00f1o y funcionalidad: no est\u00e1s limitado por soluciones iframe listas y puedes adaptar la interfaz al estilo corporativo y a las tareas del proyecto. Gracias a la API de Eventos Deportivos de api-sport.ru, la l\u00f3gica se construye en torno a varias solicitudes REST. A nivel superior, el widget consulta regularmente el punto final <code>\/v2\/f\u00fatbol\/partidos<\/code> con filtros por fecha, estado y torneo. Usando par\u00e1metros <code>fecha<\/code>, <code>estado<\/code>, <code>torneo_id<\/code> or <code>equipo_id<\/code>, formas exactamente el conjunto de partidos que tu audiencia necesita, desde ligas principales hasta campeonatos locales.<\/p>\n<p>A continuaci\u00f3n, cada juego puede enriquecerse con detalles a trav\u00e9s de una solicitud. <code>\/v2\/f\u00fatbol\/partidos\/{matchId}<\/code>. En la respuesta, est\u00e1n disponibles las composiciones (<code>equipoLocal<\/code>, <code>equipoVisitante<\/code> \u0441 <code>alineaci\u00f3n<\/code>), el minuto actual (<code>minutoDelPartidoActual<\/code>), estad\u00edsticas sobre tiros, posesi\u00f3n del bal\u00f3n y duelos (<code>estad\u00edsticasDelPartido<\/code>), as\u00ed como un array <code>eventosEnVivo<\/code> con goles, tarjetas y sustituciones. Estos datos se pueden presentar de manera conveniente en forma de una tarjeta de partido compacta, un bloque expandible con una l\u00ednea de tiempo, o un panel de estad\u00edsticas separado. Para proyectos de apuestas, se a\u00f1aden mercados del campo a estos datos <code>oddsBase<\/code>, permitiendo la visualizaci\u00f3n de cuotas 1X2, totales y h\u00e1ndicaps junto al marcador actual.<\/p>\n<p>A continuaci\u00f3n se muestra un ejemplo de una funci\u00f3n b\u00e1sica que recupera partidos para un torneo espec\u00edfico y los prepara para su visualizaci\u00f3n en un widget personalizado:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\" data-no-translation=\"\">\nconst apiKey = 'YOUR_API_KEY';\nasync function getTournamentMatches(tournamentIds) {\n  const url = 'https:\/\/api.api-sport.ru\/v2\/football\/matches'\n    + '?status=inprogress'\n    + '&amp;tournament_id=' + encodeURIComponent(tournamentIds.join(','));\n  const response = await fetch(url, {\n    headers: { Authorization: apiKey }\n  });\n  const data = await response.json();\n  \/\/ \u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443 \u0432\u0438\u0434\u0436\u0435\u0442\u0430\n  return data.matches.map(match =&gt; ({\n    id: match.id,\n    homeTeam: match.homeTeam.name,\n    awayTeam: match.awayTeam.name,\n    score: `${match.homeScore.current}:${match.awayScore.current}`,\n    minute: match.currentMatchMinute,\n    status: match.status\n  }));\n}\n<\/pre>\n<p>Encima de tal funci\u00f3n, se construye una capa de UI: ordenando partidos por ligas, filtrando por equipos, bloques expandibles de eventos en vivo, e integraci\u00f3n con otros deportes (hockey, baloncesto, tenis), que tambi\u00e9n est\u00e1n disponibles a trav\u00e9s de puntos finales universales del tipo <code>\/v2\/{sportSlug}\/partidos<\/code>. Gracias a un formato de datos unificado, m\u00e1s adelante podr\u00e1s expandir tu widget de f\u00fatbol en un centro de resultados en vivo multi-deporte completamente funcional.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-5\">C\u00f3digo de ejemplo para un widget de puntuaci\u00f3n en vivo de f\u00fatbol en JavaScript y HTML.<\/h2>\n<p>A continuaci\u00f3n se muestra un ejemplo simplificado de implementaci\u00f3n de un widget de resultados en vivo en el frontend en HTML puro y JavaScript. Solicita una lista de partidos de f\u00fatbol actuales a trav\u00e9s del punto final <code>\/v2\/f\u00fatbol\/partidos?estado=enprogreso<\/code>, los muestra como tarjetas, y actualiza los datos peri\u00f3dicamente. En un proyecto real, puedes refinar los estilos, a\u00f1adir logotipos de equipos, estad\u00edsticas extendidas, y un bloque con cuotas del campo. <code>oddsBase<\/code>, si est\u00e1s utilizando APIs de casas de apuestas.<\/p>\n<p>El marcado HTML del contenedor del widget puede verse as\u00ed:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\" data-no-translation=\"\">\n&lt;div id=&quot;football-live-widget&quot;&gt;\n  &lt;h3&gt;Live-\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0444\u0443\u0442\u0431\u043e\u043b\u0430&lt;\/h3&gt;\n  &lt;div id=&quot;matches-container&quot;&gt;\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0430\u0442\u0447\u0435\u0439...&lt;\/div&gt;\n&lt;\/div&gt;\n<\/pre>\n<p>C\u00f3digo JavaScript para cargar y actualizar partidos:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\" data-no-translation=\"\">\nconst API_KEY = 'YOUR_API_KEY';\nconst API_URL = 'https:\/\/api.api-sport.ru\/v2\/football\/matches?status=inprogress';\nconst REFRESH_MS = 30000; \/\/ \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u044b\u0435 30 \u0441\u0435\u043a\u0443\u043d\u0434\nasync function fetchLiveMatches() {\n  const response = await fetch(API_URL, {\n    headers: { Authorization: API_KEY }\n  });\n  if (!response.ok) {\n    throw new Error('API error: ' + response.status);\n  }\n  const data = await response.json();\n  return data.matches || &#x5B;];\n}\nfunction renderMatches(matches) {\n  const container = document.getElementById('matches-container');\n  if (!matches.length) {\n    container.textContent = '\u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0435\u0442 live-\u043c\u0430\u0442\u0447\u0435\u0439.';\n    return;\n  }\n  container.innerHTML = matches.map(match =&gt; {\n    const minute = match.status === 'inprogress'\n      ? match.currentMatchMinute + &quot;'&quot;\n      : (match.status === 'finished' ? 'FT' : '\u2014');\n    return `\n      &lt;div class=&quot;match-card&quot;&gt;\n        &lt;div class=&quot;match-header&quot;&gt;\n          &lt;span class=&quot;match-tournament&quot;&gt;${match.tournament.name}&lt;\/span&gt;\n          &lt;span class=&quot;match-minute&quot;&gt;${minute}&lt;\/span&gt;\n        &lt;\/div&gt;\n        &lt;div class=&quot;match-body&quot;&gt;\n          &lt;span class=&quot;team home&quot;&gt;${match.homeTeam.name}&lt;\/span&gt;\n          &lt;span class=&quot;score&quot;&gt;${match.homeScore.current}:${match.awayScore.current}&lt;\/span&gt;\n          &lt;span class=&quot;team away&quot;&gt;${match.awayTeam.name}&lt;\/span&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    `;\n  }).join('');\n}\nasync function startLiveWidget() {\n  try {\n    const matches = await fetchLiveMatches();\n    renderMatches(matches);\n  } catch (e) {\n    console.error(e);\n    document.getElementById('matches-container').textContent = '\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.';\n  }\n}\nstartLiveWidget();\nsetInterval(startLiveWidget, REFRESH_MS);\n<\/pre>\n<p>Este ejemplo puede integrarse en cualquier sitio web: solo conecta el archivo JavaScript, inserta el contenedor HTML, y sustituye la clave API real obtenida de <a href=\"https:\/\/app.api-sport.ru\">la cuenta personal en api-sport.ru<\/a>. En el futuro, podr\u00e1s reemplazar solicitudes peri\u00f3dicas con una conexi\u00f3n WebSocket tan pronto como esta funci\u00f3n est\u00e9 disponible en el lado de la API para recibir actualizaciones de puntuaci\u00f3n casi instant\u00e1neamente.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-6\">\u00bfC\u00f3mo configurar la actualizaci\u00f3n y el almacenamiento en cach\u00e9 de las puntuaciones en vivo de f\u00fatbol a trav\u00e9s de la API?<\/h2>\n<p>La forma en que organizas la actualizaci\u00f3n y el almacenamiento en cach\u00e9 de datos afecta tanto la velocidad del widget como la carga en la infraestructura. Al usar la API REST para resultados en vivo, el enfoque t\u00edpico es sondear regularmente el punto final <code>\/v2\/f\u00fatbol\/partidos<\/code> con el par\u00e1metro <code>estado=enprogreso<\/code>. El intervalo de actualizaci\u00f3n se elige en funci\u00f3n de las tareas: para portales de noticias, 20-30 segundos suelen ser suficientes, mientras que para proyectos de apuestas, a veces pueden ser necesarios 5-10 segundos. Es importante considerar los l\u00edmites de solicitudes especificados en las condiciones tarifarias del proveedor de API y no excederlos innecesariamente.<\/p>\n<p>Para optimizar el tr\u00e1fico y el tiempo de respuesta, es recomendable implementar un almacenamiento en cach\u00e9 intermedio en tu servidor. El backend realiza una solicitud a la API, almacena el resultado en memoria (por ejemplo, Redis) durante unos segundos, y lo distribuye a todos los clientes del frontend. De esta manera, reduces el n\u00famero de llamadas a la API externa, mientras que el widget sigue apareciendo casi \u00aben l\u00ednea\u00bb para los usuarios. Para partidos con el estado <code>completado<\/code> or <code>no comenzado<\/code> El TTL de la cach\u00e9 puede aumentarse a minutos e incluso horas, ya que los datos cambian raramente. A continuaci\u00f3n se muestra un ejemplo simplificado de almacenamiento en cach\u00e9 del lado del servidor en Node.js:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\" data-no-translation=\"\">\nconst cache = new Map();\nconst CACHE_TTL_MS = 10000; \/\/ 10 \u0441\u0435\u043a\u0443\u043d\u0434 \u0434\u043b\u044f live\nasync function getCachedLiveMatches() {\n  const now = Date.now();\n  const cached = cache.get('live-matches');\n  if (cached &amp;&amp; (now - cached.time) &amp;lt; CACHE_TTL_MS) {\n    return cached.data;\n  }\n  const response = await fetch('https:\/\/api.api-sport.ru\/v2\/football\/matches?status=inprogress', {\n    headers: { Authorization: 'YOUR_API_KEY' }\n  });\n  const data = await response.json();\n  cache.set('live-matches', { time: now, data });\n  return data;\n}\n<\/pre>\n<p>Se debe prestar especial atenci\u00f3n a los errores y la tolerancia a fallos. Si la API no est\u00e1 disponible temporalmente, el widget debe mostrar el \u00faltimo estado exitoso de la cach\u00e9 e informar al usuario sobre el retraso en la actualizaci\u00f3n, en lugar de simplemente desaparecer. En el futuro, la transici\u00f3n a WebSocket dentro de la plataforma <a href=\"http:\/\/api-sport.pro\/es\/\">api-sport.pro<\/a> eliminar\u00e1 la necesidad de sondear frecuentemente los puntos finales de REST y recibir\u00e1 actualizaciones push solo cuando el puntaje cambie o ocurra un nuevo evento, lo que reducir\u00e1 a\u00fan m\u00e1s la carga y har\u00e1 que los widgets en vivo sean lo m\u00e1s receptivos posible.<\/p>\n<\/div>\n<div class=\"universal_article\">\n<h2 id=\"contents-7\">Aspectos legales y licencias al utilizar la API de puntuaci\u00f3n en vivo de partidos de f\u00fatbol.<\/h2>\n<p>Al trabajar con resultados en vivo, es importante considerar las restricciones legales y los t\u00e9rminos de uso de los datos. Las estad\u00edsticas deportivas y los puntajes de los partidos en s\u00ed generalmente no est\u00e1n protegidos por derechos de autor, pero el formato espec\u00edfico de su presentaci\u00f3n, la estructura de la base de datos y el contenido acompa\u00f1ante pueden estar protegidos. Por lo tanto, al utilizar una API de terceros, es necesario estudiar cuidadosamente el acuerdo de usuario y los t\u00e9rminos de licencia del proveedor. En el caso de APIs comerciales, como una plataforma de datos deportivos <a href=\"http:\/\/api-sport.pro\/es\/\">api-sport.pro<\/a>, el acceso a la informaci\u00f3n est\u00e1 regulado por un contrato y la tarifa elegida, que define los escenarios de uso permitidos, los l\u00edmites de solicitudes y los posibles requisitos de atribuci\u00f3n de fuentes.<\/p>\n<p>Se debe prestar especial atenci\u00f3n al uso de logotipos de clubes, emblemas de torneos y contenido de video (res\u00famenes, rese\u00f1as). Los derechos sobre estos materiales generalmente pertenecen a ligas, clubes o titulares de derechos de medios, y su exhibici\u00f3n puede requerir un permiso separado. Incluso si la API proporciona t\u00e9cnicamente enlaces a res\u00famenes a trav\u00e9s del campo <code>momentosDestacados<\/code>, la responsabilidad por el uso correcto del video en su sitio recae en usted. Si planea integrar cuotas y mercados de apuestas en el widget a trav\u00e9s de APIs de casas de apuestas, debe asegurarse de que su sitio cumpla con las leyes locales de publicidad de juegos de azar y restricciones de edad.<\/p>\n<p>Se recomienda: celebrar un acuerdo oficial con el proveedor de datos deportivos, mantener versiones actualizadas de los t\u00e9rminos de uso de la API, configurar el registro de solicitudes y adherirse a los l\u00edmites especificados en la tarifa. Para proyectos que operan en m\u00faltiples jurisdicciones, es \u00fatil consultar adicionalmente con un abogado para asegurarse de que la exhibici\u00f3n de resultados en vivo, estad\u00edsticas e informaci\u00f3n de apuestas no viole las leyes locales y regulaciones de organizaciones autorregulatorias en la industria deportiva o de juegos de azar.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Content What is a football live score widget for a website and how does it work What football match API to choose for live scores on the website How to get a key and connect the football live score API to the website How to create your own live score widget for football matches using the API Example code for a football live score widget in JavaScript and HTML How to configure updates and caching [\u2026]<\/p>","protected":false},"author":1,"featured_media":1247,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","faq":"[{\"question\":\"\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0444\u0443\u0442\u0431\u043e\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 live\u2011\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u0441\u0430\u0439\u0442\u0435?\",\"answer\":\"\u041f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u043c\u0443 API \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a Sport Events API \u043d\u0430 \u0431\u0430\u0437\u0435 api-sport.ru, \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 API\u2011\u043a\u043b\u044e\u0447, \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0432\u044b\u043a\u0438 \u0432\u0435\u0431\u2011\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (HTML, CSS, JavaScript) \u0438 \u0445\u043e\u0441\u0442\u0438\u043d\u0433. \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 REST\u2011\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u043e\u0432 \/v2\/football\/matches \u0438 \/v2\/football\/matches\/{matchId} \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 live\u2011\u0432\u0438\u0434\u0436\u0435\u0442\u0430.\"},{\"question\":\"\u041a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u0443\u0442\u0431\u043e\u043b\u044c\u043d\u043e\u043c live\u2011\u0432\u0438\u0434\u0436\u0435\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 API?\",\"answer\":\"\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0437\u0430\u0434\u0430\u0447 \u0438 \u0442\u0430\u0440\u0438\u0444\u043d\u044b\u0445 \u043b\u0438\u043c\u0438\u0442\u043e\u0432. \u0414\u043b\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u0436\u0434\u044b\u0435 20\u201330 \u0441\u0435\u043a\u0443\u043d\u0434, \u0434\u043b\u044f \u0431\u0435\u0442\u0442\u0438\u043d\u0433\u2011\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u2014 5\u201310 \u0441\u0435\u043a\u0443\u043d\u0434. \u0427\u0442\u043e\u0431\u044b \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0435 \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0432 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 WebSocket, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 API.\"},{\"question\":\"\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0436\u0435\u0442 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0431\u0443\u043a\u043c\u0435\u043a\u0435\u0440\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 live\u2011\u0441\u0447\u0451\u0442\u043e\u043c?\",\"answer\":\"\u0414\u0430. \u0412 \u043e\u0442\u0432\u0435\u0442\u0430\u0445 API api-sport.ru \u0434\u043b\u044f \u0444\u0443\u0442\u0431\u043e\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043f\u043e\u043b\u0435 oddsBase \u0441 \u0440\u044b\u043d\u043a\u0430\u043c\u0438 \u0441\u0442\u0430\u0432\u043e\u043a \u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0435 \u043c\u0430\u0442\u0447\u0430 \u0440\u044f\u0434\u043e\u043c \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0441\u0447\u0451\u0442\u043e\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0430\u0436\u043d\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043a\u043e\u043d\u043e\u0434\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u043e \u0440\u0435\u043a\u043b\u0430\u043c\u0435 \u0430\u0437\u0430\u0440\u0442\u043d\u044b\u0445 \u0438\u0433\u0440 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0430\u0440\u0442\u043d\u0451\u0440\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0431\u0443\u043a\u043c\u0435\u043a\u0435\u0440\u043e\u0432.\"},{\"question\":\"\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0434 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0438\u0434\u043e\u0432 \u0441\u043f\u043e\u0440\u0442\u0430?\",\"answer\":\"\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0434\u0430. Sport Events API \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u043e\u0432 \/v2\/{sportSlug}\/matches \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432 \u0441\u043f\u043e\u0440\u0442\u0430 (\u0444\u0443\u0442\u0431\u043e\u043b, \u0445\u043e\u043a\u043a\u0435\u0439, \u0431\u0430\u0441\u043a\u0435\u0442\u0431\u043e\u043b, \u0442\u0435\u043d\u043d\u0438\u0441 \u0438 \u0434\u0440.). \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c sportSlug \u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0434 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u044b (\u043f\u0435\u0440\u0438\u043e\u0434\u044b, \u0441\u0447\u0451\u0442, \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430), \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0443 \u0441 \u043d\u0443\u043b\u044f.\"},{\"question\":\"\u041d\u0443\u0436\u043d\u043e \u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430 live\u2011\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e API?\",\"answer\":\"\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0430 \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c API, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 api-sport.ru. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 (\u043b\u043e\u0433\u043e\u0442\u0438\u043f\u044b, \u0432\u0438\u0434\u0435\u043e, \u0444\u0438\u0440\u043c\u0435\u043d\u043d\u0443\u044e \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u043b\u0438\u0433) \u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0435 \u0431\u0435\u0442\u0442\u0438\u043d\u0433\u2011\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u044e\u0440\u0438\u0441\u0434\u0438\u043a\u0446\u0438\u044f\u0445 \u0441 \u0436\u0451\u0441\u0442\u043a\u0438\u043c \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0412 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u0446\u0438\u044f \u0441 \u044e\u0440\u0438\u0441\u0442\u043e\u043c.\"}]","footnotes":""},"categories":[1],"tags":[],"class_list":["post-1248","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"yoast_head":"<title>How to create a football live results widget with API \u2014 api-sport.ru<\/title>\n<meta name=\"description\" content=\"Step-by-step guide to creating a football live score widget for a website using the Sport Events API. Code examples, caching, and legal nuances.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/api-sport.pro\/es\/como-crear-tu-propio-widget-de-puntuacion-en-vivo-de-futbol-para-un-sitio-web\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to create a football live results widget with API \u2014 api-sport.ru\" \/>\n<meta property=\"og:description\" content=\"Step-by-step guide to creating a football live score widget for a website using the Sport Events API. Code examples, caching, and legal nuances.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/api-sport.pro\/es\/como-crear-tu-propio-widget-de-puntuacion-en-vivo-de-futbol-para-un-sitio-web\/\" \/>\n<meta property=\"og:site_name\" content=\"Sports Events API\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-17T17:08:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-sobstvennyi-futbolnyi-vidzhet-live-rezultatov-dlya-saita_posts.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1408\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/\",\"url\":\"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/\",\"name\":\"How to create a football live results widget with API \u2014 api-sport.ru\",\"isPartOf\":{\"@id\":\"https:\/\/api-sport.pro\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-sobstvennyi-futbolnyi-vidzhet-live-rezultatov-dlya-saita_posts.jpg\",\"datePublished\":\"2025-12-17T17:08:00+00:00\",\"author\":{\"@id\":\"https:\/\/api-sport.pro\/#\/schema\/person\/bc93f449b3753a5f254264da266fb601\"},\"description\":\"Step-by-step guide to creating a football live score widget for a website using the Sport Events API. Code examples, caching, and legal nuances.\",\"breadcrumb\":{\"@id\":\"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/#primaryimage\",\"url\":\"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-sobstvennyi-futbolnyi-vidzhet-live-rezultatov-dlya-saita_posts.jpg\",\"contentUrl\":\"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-sobstvennyi-futbolnyi-vidzhet-live-rezultatov-dlya-saita_posts.jpg\",\"width\":1408,\"height\":768,\"caption\":\"\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u0443\u0442\u0431\u043e\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 live-\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u0430?\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\/\/api-sport.pro\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to create your own football live score widget for a website?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/api-sport.pro\/#website\",\"url\":\"https:\/\/api-sport.pro\/\",\"name\":\"Sports Events API\",\"description\":\"Sports Events API\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/api-sport.pro\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/api-sport.pro\/#\/schema\/person\/bc93f449b3753a5f254264da266fb601\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/api-sport.pro\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8f3dce32feb8659c1f1c917db74325481c6133714f03d5a9433ba6df23a857ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8f3dce32feb8659c1f1c917db74325481c6133714f03d5a9433ba6df23a857ab?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/api-sport.pro\"],\"url\":\"https:\/\/api-sport.pro\/es\/author\/admin\/\"}]}<\/script>","yoast_head_json":{"title":"C\u00f3mo crear un widget de resultados en vivo de f\u00fatbol con API \u2014 api-sport.ru","description":"Gu\u00eda paso a paso para crear un widget de puntuaci\u00f3n en vivo de f\u00fatbol para un sitio web utilizando la API de Eventos Deportivos. Ejemplos de c\u00f3digo, almacenamiento en cach\u00e9 y matices legales.","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:\/\/api-sport.pro\/es\/como-crear-tu-propio-widget-de-puntuacion-en-vivo-de-futbol-para-un-sitio-web\/","og_locale":"es_ES","og_type":"article","og_title":"How to create a football live results widget with API \u2014 api-sport.ru","og_description":"Step-by-step guide to creating a football live score widget for a website using the Sport Events API. Code examples, caching, and legal nuances.","og_url":"https:\/\/api-sport.pro\/es\/como-crear-tu-propio-widget-de-puntuacion-en-vivo-de-futbol-para-un-sitio-web\/","og_site_name":"Sports Events API","article_published_time":"2025-12-17T17:08:00+00:00","og_image":[{"width":1408,"height":768,"url":"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-sobstvennyi-futbolnyi-vidzhet-live-rezultatov-dlya-saita_posts.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"admin","Tiempo de lectura":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/","url":"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/","name":"C\u00f3mo crear un widget de resultados en vivo de f\u00fatbol con API \u2014 api-sport.ru","isPartOf":{"@id":"https:\/\/api-sport.pro\/#website"},"primaryImageOfPage":{"@id":"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/#primaryimage"},"image":{"@id":"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/#primaryimage"},"thumbnailUrl":"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-sobstvennyi-futbolnyi-vidzhet-live-rezultatov-dlya-saita_posts.jpg","datePublished":"2025-12-17T17:08:00+00:00","author":{"@id":"https:\/\/api-sport.pro\/#\/schema\/person\/bc93f449b3753a5f254264da266fb601"},"description":"Gu\u00eda paso a paso para crear un widget de puntuaci\u00f3n en vivo de f\u00fatbol para un sitio web utilizando la API de Eventos Deportivos. Ejemplos de c\u00f3digo, almacenamiento en cach\u00e9 y matices legales.","breadcrumb":{"@id":"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/#primaryimage","url":"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-sobstvennyi-futbolnyi-vidzhet-live-rezultatov-dlya-saita_posts.jpg","contentUrl":"https:\/\/api-sport.pro\/wp-content\/uploads\/2025\/11\/kak-sdelat-sobstvennyi-futbolnyi-vidzhet-live-rezultatov-dlya-saita_posts.jpg","width":1408,"height":768,"caption":"\u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u0443\u0442\u0431\u043e\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 live-\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u0430?"},{"@type":"BreadcrumbList","@id":"https:\/\/api-sport.pro\/how-to-create-your-own-football-live-score-widget-for-a-website\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/api-sport.pro\/"},{"@type":"ListItem","position":2,"name":"How to create your own football live score widget for a website?"}]},{"@type":"WebSite","@id":"https:\/\/api-sport.pro\/#website","url":"https:\/\/api-sport.pro\/","name":"API de Eventos Deportivos","description":"API de Eventos Deportivos","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/api-sport.pro\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/api-sport.pro\/#\/schema\/person\/bc93f449b3753a5f254264da266fb601","name":"administrador","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/api-sport.pro\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8f3dce32feb8659c1f1c917db74325481c6133714f03d5a9433ba6df23a857ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8f3dce32feb8659c1f1c917db74325481c6133714f03d5a9433ba6df23a857ab?s=96&d=mm&r=g","caption":"admin"},"sameAs":["http:\/\/api-sport.pro"],"url":"https:\/\/api-sport.pro\/es\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/posts\/1248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/comments?post=1248"}],"version-history":[{"count":2,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/posts\/1248\/revisions"}],"predecessor-version":[{"id":1475,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/posts\/1248\/revisions\/1475"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/media\/1247"}],"wp:attachment":[{"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/media?parent=1248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/categories?post=1248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/api-sport.pro\/es\/wp-json\/wp\/v2\/tags?post=1248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}