Python y FastAPI: cómo exponer resultados de fútbol en tiempo real
Un ejemplo práctico muestra cómo obtener puntuaciones en vivo de un API de fútbol y exponerlas a través de un endpoint FastAPI, con cacheo y manejo de claves.

En la práctica, muchos desarrolladores backend necesitan consumir datos deportivos sin exponer claves a los clientes. Este tutorial explica cómo obtener resultados en vivo de fútbol con la API de Orbistats y exponerlos mediante un pequeño servidor FastAPI.
Configuración inicial
- Regístrate para obtener una clave gratuita sin tarjeta en [orbistats.com/signup.html].
- Instala las dependencias:
pip install requests fastapi uvicorn python-dotenv
- Guarda la clave en un archivo
.env:
ORBISTATS_API_KEY=tu_clave_aquí
- Crea un cliente sencillo con
requests:
import os
import requests
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv("ORBISTATS_API_KEY")
BASE_URL = "https://api.orbistats.com/v1"
def get_live_football_scores():
response = requests.get(f"{BASE_URL}/football/live", headers={"Authorization": f"Bearer {API_KEY}"})
response.raise_for_status()
return response.json()
Exponiendo a FastAPI
from fastapi import FastAPI
app = FastAPI()
@app.get("/scores/live")
def live_scores():
return get_live_football_scores()
Ejecuta con:
uvicorn main:app --reload
Ahora tu endpoint /scores/live devuelve los resultados sin exponer la clave.
Cacheo para respetar el límite
Para evitar superar el límite gratuito, se puede usar un caché en memoria con TTL:
from cachetools import TTLCache
cache = TTLCache(maxsize=1, ttl=15)
@app.get("/scores/live")
def live_scores():
if "matches" not in cache:
cache["matches"] = get_live_football_scores()
return cache["matches"]
Esto mantiene una copia válida por 15 segundos.
Alternativas: polling vs WebSockets
Si necesitas actualizaciones en tiempo real sin polling, considera la API WebSocket de Orbistats (documentación en [orbistats.com/developers/sandbox.html]).
Extensiones
El mismo patrón sirve para fixtures, resultados históricos o cuotas. Sólo cambia la ruta y la estructura de respuesta. La referencia completa de endpoints está en la documentación de Orbistats.
Conclusión
El ejemplo muestra un flujo típico: autenticación segura, caché, y un endpoint ligero. Es útil para bots de Discord, alertas de Telegram o dashboards internos. La pregunta pendiente es qué estrategia de caché prefieren los demás cuando los datos cambian cada pocos segundos.

