Documentación de la API
Integra los datos de DataScout en tus propias herramientas a través de nuestra API REST.
Visión general
¿Qué datos?
Estadísticas detalladas por jugador y por equipo, índices de rendimiento por rol, puntos fuertes y débiles, valores de mercado estimados, proyecciones entre ligas, perfiles similares y puntuaciones de encaje jugador-club.
¿Qué cobertura?
Más de 100 ligas masculinas y femeninas en Europa, América, Asia y África, desde el Big 5 hasta divisiones inferiores y ligas juveniles, además de las copas europeas (Champions League, Europa League, Conference League). El endpoint /v1/leagues devuelve las ligas accesibles con tu clave.
¿Qué frescura tienen los datos?
Los datos se actualizan cada semana, a medida que se disputan las jornadas de liga.
¿Cómo funciona el acceso?
Suscripción mensual por liga: cada suscripción cubre todos los jugadores y equipos de la liga elegida, con todas sus estadísticas, copas europeas incluidas. Tarifas bajo petición.
Preguntas frecuentes
¿Las estadísticas cubren la Champions League o las selecciones nacionales?
Las copas europeas (Champions League, Europa League, Conference League) están incluidas con cualquier suscripción a la API sin coste adicional: los jugadores que participan en ellas tienen estadísticas separadas de las de su liga. En cambio, las estadísticas con las selecciones nacionales no están disponibles.
¿Con qué frecuencia se actualizan los datos?
Cada semana. Las estadísticas incluyen las últimas jornadas disputadas de cada liga cubierta.
Inicio rápido
URL base : https://api.datascout.fr/v1
curl -H "X-API-Key: dk_live_YOUR_KEY" \
https://api.datascout.fr/v1/leaguesAutenticación
Todas las solicitudes deben incluir tu clave API en la cabecera HTTP X-API-Key.
X-API-Key: dk_live_a1b2c3d4e5f6...Buenas prácticas :
- Nunca hagas commit de una clave en un repositorio Git
- Usa una clave por entorno (producción, staging, desarrollo)
- Revoca inmediatamente cualquier clave comprometida
- Define una fecha de caducidad para las claves temporales
Identificadores de jugadores
En la API coexisten dos identificadores de jugador: sepa cuál almacenar.
player_id: identifica una FILA jugador × contexto (temporada, club, competición). Cambia cada temporada, con cada traspaso y entre liga y competición europea: no lo almacene como clave duradera.datascout_id: identifica a una PERSONA (formato ds_ + 16 caracteres): estable entre temporadas, traspasos y competiciones. Es la clave recomendada para indexar sus datos.- datascout_id está presente en todas las respuestas de jugador (null si la fila aún no está vinculada, transitorio).
- Se acepta en cualquier lugar donde se espere un player_id (rutas /v1/players/:id/*, player_ids de /v1/compare y /v1/fit-score).
- Para iniciar su referencial: POST /v1/players/resolve-batch y almacene el datascout_id de cada jugador. GET /v1/players/:id/history devuelve la correspondencia por temporada.
Límite de solicitudes
Plan Pro Liga: 10 000 solicitudes/día. Plan Pro Full: ilimitado. Cada respuesta incluye las siguientes cabeceras:
X-RateLimit-Limit: límite diarioX-RateLimit-Remaining: solicitudes restantesX-RateLimit-Reset: fecha de reinicio (ISO 8601)
Códigos de error
| Código | Significado |
|---|---|
| 200 | Éxito |
| 400 | Parámetros faltantes o no válidos |
| 401 | Clave API ausente, no válida o caducada |
| 403 | Plan insuficiente o liga no accesible |
| 404 | Recurso no encontrado |
| 429 | Límite de solicitudes superado |
| 500 | Error del servidor |
Endpoints
Perfil
Identidad de la clave que llama a la API
Referencia
Metadatos: ligas, temporadas, equipos
Jugadores
Búsqueda, fichas, estadísticas, perfiles similares
Equipos
Ficha, plantilla, similitud, comparación cara a cara
Entrenadores
Búsqueda, ficha, carrera y perfil táctico de los entrenadores
Clasificaciones
Mejores jugadores por rol o por estadística
Glosario
Documentación legible por máquina de las estadísticas e índices
Scouting
Búsqueda avanzada multicriterio
Mis recursos
Índices y presets guardados en tu cuenta de DataScout
Comparación
Distribución de jugadores en 2 estadísticas cruzadas
Roles posicionales (27 perfiles)
Utilizables en /v1/rankings / /v1/scouting mediante el parámetro role.
Porteros
gardien_stoppeurgardien_moderne
Defensas centrales
defenseur_stoppeurdefenseur_relanceurdefenseur_modernedefenseur_athletique
Laterales
arriere_laterallateral_offensiflateral_interieur
Mediocentros defensivos
milieu_sentinellemilieu_recuperateurmeneur_de_jeu_en_retrait
Mediocentros
milieu_box_to_boxmezzalamilieu_relayeurmilieu_ratisseur
Mediapuntas
meneur_de_jeumeneur_de_jeu_excentre
Extremos
ailier_defensifailier_interieurailier_de_profondeurailier_provocateurailier_buteur
Delanteros
faux_9attaquant_pivotattaquant_de_pressingattaquant_de_profondeurrenard_des_surfacesattaquant_complet
Ejemplos de código
Python
import requests
API_KEY = "dk_live_..."
headers = {"X-API-Key": API_KEY}
# Top 10 ailiers buteurs - France D1
r = requests.get(
"https://api.datascout.fr/v1/rankings",
params={
"role": "ailier_buteur",
"saison": "25-26",
"league": "France D1",
"limit": 10
},
headers=headers
)
print(r.json()["data"])Node.js (axios)
const axios = require("axios")
const api = axios.create({
baseURL: "https://api.datascout.fr/v1",
headers: { "X-API-Key": process.env.DATASCOUT_API_KEY }
})
const { data } = await api.post("/scouting", {
saison: "25-26",
roles: ["ailier_buteur"],
ageMax: 23,
minutesMin: 1000,
limit: 20
})
console.log(data.data)R (httr2)
library(httr2)
API_KEY <- "dk_live_..."
# GET : top 10 ailiers buteurs en Ligue 1
resp <- request("https://api.datascout.fr/v1/rankings") |>
req_url_query(role = "ailier_buteur", saison = "25-26",
league = "France D1", limit = 10) |>
req_headers("X-API-Key" = API_KEY) |>
req_perform()
players <- resp |> resp_body_json() |> _$data
# Conversion en data.frame
df <- do.call(rbind, lapply(players, function(p) {
data.frame(rank = p$rank, name = p$name, club = p$club,
score = p$score, stringsAsFactors = FALSE)
}))Google Sheets (Apps Script)
// Extensions → Apps Script. Copier ce code puis utiliser en cellule :
// =DATASCOUT_RANKING("ailier_buteur", "25-26", "France D1", 20)
function DATASCOUT_RANKING(role, saison, league, limit) {
const key = PropertiesService.getScriptProperties()
.getProperty('DATASCOUT_API_KEY')
const url = 'https://api.datascout.fr/v1/rankings?' +
'role=' + role + '&saison=' + saison +
'&league=' + encodeURIComponent(league) +
'&limit=' + (limit || 10)
const resp = UrlFetchApp.fetch(url, {
method: 'get',
headers: { 'X-API-Key': key }
})
const data = JSON.parse(resp.getContentText())
const rows = [['Rang', 'Joueur', 'Club', 'Âge', 'Note']]
data.data.forEach(p => rows.push([p.rank, p.name, p.club, p.age, p.score]))
return rows
}
// Une seule fois : stocker la clé en sécurité
function setupApiKey() {
PropertiesService.getScriptProperties()
.setProperty('DATASCOUT_API_KEY', 'dk_live_...')
}