Documentazione API

API REST per le notizie sportive italiane in tempo reale. Risposte JSON, un'unica API key.

Base URL

https://api.sportswire.info

Introduzione

SportsWire fornisce notizie sportive (calcio, tennis, basket, motori, volley e altro) aggregate da fonti ufficiali e normalizzate come dati strutturati: sport, testata, data, immagine e link all'originale. Tutte le richieste sono GET e restituiscono JSON.

Autenticazione

Passa la tua chiave nell'header X-API-Key (oppure come parametro ?api_key=). Ottieni una chiave gratuita registrandoti su sportswire.info/app.

curl -H "X-API-Key: sk_live_xxx" \
  "https://api.sportswire.info/api/news?sport=calcio&limit=5"

Senza chiave, l'accesso è consentito solo dal sito SportsWire (tier anonymous, limiti ridotti). Per l'uso programmatico serve una API key.

Rate limit & piani

PianoRichieste/minLimit maxPrezzo
anonymous6020
free12050€0
pro600100€29/mese

Ogni risposta include gli header X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Al superamento ricevi 429 con Retry-After. Dettagli piani su /prezzi.

GET /api/news

GET/api/news

Il feed delle notizie, dalla più recente. Cuore dell'API.

Parametri

NomeTipoDescrizione
sportstringfiltra per sport (calcio, tennis, basket, motori, volley, nuoto, atletica, rugby, ciclismo, sci, golf)
qstringricerca testo nel titolo
limitintrisultati per pagina (max secondo il piano)
offsetintpaginazione

Esempio

curl -H "X-API-Key: sk_live_xxx" \
  "https://api.sportswire.info/api/news?sport=tennis&limit=3"
const r = await fetch(
  "https://api.sportswire.info/api/news?sport=tennis&limit=3",
  { headers: { "X-API-Key": "sk_live_xxx" } }
);
const data = await r.json();
console.log(data.items);
import requests
r = requests.get(
    "https://api.sportswire.info/api/news",
    params={"sport": "tennis", "limit": 3},
    headers={"X-API-Key": "sk_live_xxx"},
)
print(r.json()["items"])

Risposta

{
  "total": 219,
  "limit": 3,
  "offset": 0,
  "items": [
    {
      "id": 240881,
      "title": "...",
      "summary": "...",
      "sport": "tennis",
      "source": "Ubitennis",
      "image_url": "https://...",
      "published_at": "2026-08-02T09:12:00+00:00",
      "slug": "...",
      "has_article": true,
      "link": "https://..."
    }
  ]
}

GET /api/sports

GET/api/sports

Elenco degli sport disponibili con il conteggio degli articoli.

{ "sports": [ { "sport": "calcio", "count": 813 }, { "sport": "motori", "count": 350 } ] }

GET /api/me

GET/api/me

Informazioni sul piano associato alla tua chiave.

{ "plan": "pro", "rate_per_min": 600, "max_limit": 100, "monthly_cap": 0 }

GET /api/plans

GET/api/plans

Listino pubblico dei piani (non richiede autenticazione).

GET /api/health

GET/api/health

Stato del servizio e numero di articoli/fonti. Aperto, senza autenticazione.

{ "status": "ok", "articles": 2466, "sources": 37 }

Codici di errore

CodiceSignificato
401API key mancante o non valida
403accesso non consentito (origine/UA non valida, o IP bloccato)
429rate limit superato — vedi header Retry-After

Domande? Scrivici a info@sportswire.info.