BMSI API

RESTful API per accedere al BMSI (Bitcoin Media Sentiment Index) in tempo reale.
Piano FREE disponibile. JSON puro. Veloce e affidabile.

✓ Piano FREE ✓ Piano PRO ✓ Real-time ✓ JSON

⚡ Quick Start

Ottieni subito la tua API key gratuita e prova l'API:

curl -H "X-API-Key: YOUR_API_KEY" \
     https://sentimentbitcoin.it/api/index_today.php

📧 Contattaci per ottenere la tua API key gratuita. Riceverai un JSON con BMSI, notizie analizzate e dati orari.

📖 Overview

Le API di SentimentBitcoin.it forniscono accesso programmatico a:

  • BMSI (Bitcoin Media Sentiment Index) real-time (aggiornato ogni ora)
  • Storico giornaliero completo
  • Notizie analizzate con AI (GPT-4)
  • Prezzo Bitcoin live (EUR/USD)

Le API richiedono autenticazione tramite API key e restituiscono dati in formato JSON. Disponibile piano FREE gratuito e piano PRO a pagamento.

🔐 Autenticazione

Tutte le richieste API devono includere l'header X-API-Key con la tua chiave API.

Esempio Request
curl -H "X-API-Key: free_abc123xyz789..." \
     https://sentimentbitcoin.it/api/index_today.php

📋 Piani Disponibili

Piano Costo Rate Limit Descrizione
FREE Gratuito 3 req/minuto Perfetto per progetti personali e test
PRO A pagamento 100 req/minuto Per applicazioni professionali e trading bot

🚀 Ottieni la tua API Key in 30 Secondi

Registrati gratuitamente e ricevi subito la tua chiave API FREE.
Nessuna carta di credito richiesta.

Registrati Gratis →
Hai già un account? Accedi qui

🌐 Base URL

Base URL
https://sentimentbitcoin.it/api/

Tutti gli endpoint sono relativi a questo URL base. Esempio completo: https://sentimentbitcoin.it/api/index_today.php

⚠️ Rate Limits

Piano FREE: 3 richieste al minuto. Ideale per test e sviluppo.
Piano PRO: 100 richieste al minuto. Per applicazioni in produzione.

Header HTTP Rate Limit

Ogni risposta dell'API include header standard per monitorare il tuo utilizzo:

  • X-RateLimit-Limit: Limite massimo di richieste (per minuto)
  • X-RateLimit-Remaining: Richieste rimanenti nel minuto corrente
  • X-RateLimit-Reset: Timestamp Unix del prossimo reset (inizio prossimo minuto)
Esempio Headers Response (Piano FREE)
HTTP/1.1 200 OK
X-RateLimit-Limit: 3
X-RateLimit-Remaining: 2
X-RateLimit-Reset: 1734652860

Errore 429 - Too Many Requests

Se superi il limite, riceverai un errore 429 Too Many Requests con dettagli sul reset:

Response 429
{
  "error": "Too Many Requests",
  "message": "Rate limit exceeded (3 req/min)",
  "limit": 3,
  "remaining": 0,
  "reset": 1734652860,
  "reset_readable": "2025-12-20 00:01:00 UTC",
  "upgrade_info": "Upgrade to PRO plan for unlimited requests"
}

Errore 401: Se ricevi 401 Unauthorized, verifica che l'header X-API-Key sia corretto e la tua chiave sia attiva.

Best Practice: Monitora gli header di rate limit e implementa backoff automatico quando ti avvicini al limite.

🔗 Endpoints Disponibili

Endpoint Descrizione Metodo
/index_today.php Sentiment di oggi + ultime 24 ore GET
/index_history.php Storico giornaliero (ultimi 30 giorni) GET
/news_list.php Lista news con filtri avanzati GET
/price.php Prezzo Bitcoin live (EUR/USD) GET
/stats_correlation.php Dati grezzi per grafici (Sentiment/Prezzo) GET
/correlation_index.php Indice Pearson e Narrative Analysis GET

📊 GET /index_today.php

GET /api/index_today.php
Restituisce il sentiment Bitcoin di oggi con breakdown orario delle ultime 24 ore, numero totale di notizie analizzate e le top 10 news più rilevanti.

Parametri

Nessun parametro richiesto.

Response Structure

Response 200 OK
{
  "status": "ok",
  "date": "2025-12-11",
  
  "sentiment": {
    "global_score": 58.2,
    "positive": 12,
    "negative": 5,
    "neutral": 10,
    "timestamp": "2025-12-11 14:30:00"
  },
  
  "hourly": {
    "latest": 60.1,
    "timestamp": "2025-12-11 14:00:00",
    "last_24h": [55.2, 57.8, 60.1, 58.9, ...]
  },
  
  "total_news": 247,
  
  "top_news": [
    {
      "title": "Bitcoin ETF approval...",
      "url": "https://...",
      "sentiment_label": "positive",
      "sentiment_score": 4,
      "relevance_score": 95,
      "category": "regulation",
      "published_at": "2025-12-11 10:30:00"
    }
  ]
}

Campi Response

Campo Tipo Descrizione
global_score float BMSI (Bitcoin Media Sentiment Index): valore 0–100 calcolato dal sentiment delle notizie tramite analisi del tono (positivo/neutral/negativo). Non include dati di prezzo/volume/volatilità.
positive/negative/neutral int Conteggio notizie per sentiment
hourly.last_24h array Serie temporale ultime 24 ore
total_news int Totale notizie analizzate oggi
top_news array Top 10 notizie più rilevanti

📅 GET /index_history.php

GET /api/index_history.php
Restituisce lo storico giornaliero del sentiment Bitcoin. Di default restituisce gli ultimi 30 giorni.

Parametri

Attualmente nessun parametro (futuro: ?days=60 per personalizzare)

Response Example

Response 200 OK
{
  "status": "ok",
  "days": 30,
  "history": [
    {
      "date": "2025-11-12",
      "global_score": 48.7,
      "positive": 120,
      "negative": 110,
      "neutral": 95
    }
  ]
}

Esempio Request

Python - Grafico con Matplotlib
import requests
import matplotlib.pyplot as plt

data = requests.get("https://sentimentbitcoin.it/api/index_history.php").json()

dates = [item["date"] for item in data["history"]]
scores = [item["global_score"] for item in data["history"]]

plt.plot(dates, scores)
plt.title("Bitcoin Sentiment - Ultimi 30 giorni")
plt.xlabel("Data")
plt.ylabel("Sentiment Score")
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

📰 GET /news_list.php

GET /api/news_list.php
Restituisce una lista paginata di notizie analizzate con AI, con possibilità di filtrare per categoria, sentiment, data e ricerca testuale.

Query Parameters

Parametro Tipo Required Descrizione
category string Optional Filtra per categoria: regulation, adoption, security, mining, market
sentiment string Optional Filtra per sentiment: positive, negative, neutral
from date Optional Data inizio (formato: YYYY-MM-DD)
to date Optional Data fine (formato: YYYY-MM-DD)
search string Optional Ricerca testuale nel titolo
offset int Optional Offset per paginazione (default: 0)

Response Example

Response 200 OK
{
  "status": "ok",
  "count": 20,
  "next_offset": 20,
  "items": [
    {
      "id": 1234,
      "title": "SEC approves Bitcoin ETF...",
      "url": "https://...",
      "published_at": "2025-12-11 09:30:00",
      "source": "CoinDesk",
      "sentiment_label": "positive",
      "relevance_score": 92,
      "category": "regulation"
    }
  ]
}

💰 GET /price.php

GET /api/price.php
Restituisce il prezzo Bitcoin live in EUR o USD, aggiornato ogni 5 minuti da CoinGecko.

Query Parameters

Parametro Tipo Required Descrizione
currency string Optional Valuta: eur (default) o usd

Response Example

Response 200 OK
{
  "success": true,
  "price": 92847.50,
  "currency": "eur",
  "updated": "2025-12-11 14:25:00"
}

Example Request

JavaScript
fetch("https://sentimentbitcoin.it/api/price.php?currency=usd")
  .then(r => r.json())
  .then(d => console.log(d.price));

📈 Dati Grafico Correlazione

GET /stats_correlation.php
Restituisce dati aggregati di sentiment e prezzo Bitcoin per analisi di correlazione.

Piano FREE: Limitato alle ultime 24 ore con granularità 1 ora. Nessun filtro categoria.
Piano PRO: Fino a 30 giorni, granularità fine (fino a 1 minuto) e filtro per categoria.

Parametri (Query String)

Parametro Tipo Obbligatorio Descrizione
days integer No Numero di giorni di storico (Default: 1, Max PRO: 30)
granularity string No Raggruppamento temporale: '1h', '30m', '15m', '5m', '1m'. (Default: '1h')
category string No Filtra per categoria (es. 'bitcoin', 'regulation'). Solo PRO.

Response Example (PRO)

JSON Response
{
  "status": "ok",
  "meta": {
    "subscription_status": "pro",
    "days": 1,
    "granularity": "1h",
    "record_count": 24
  },
  "data": [
    {
      "timestamp": "2025-12-20 10:00:00",
      "avg_sentiment": 55.5,
      "avg_price": 98050.20,
      "news_count": 12
    },
    {
      "timestamp": "2025-12-20 11:00:00",
      "avg_sentiment": 62.1,
      "avg_price": 98200.00,
      "news_count": 8
    }
  ]
}

brain Indice Pearson & Intelligence

GET /correlation_index.php
Calcola l'Indice di Correlazione di Pearson (r) tra il Sentiment Score e il Prezzo di Bitcoin.
Identifica automaticamente, analizzando 5 narrative (Mining, ETF, Regulation, Macro, Security), quale ha la correlazione più forte con il prezzo nel periodo selezionato.

Interpretazione Index:
Strong Positive (> 0.7): Il prezzo segue fortemente il sentiment.
Moderate/Weak: Correlazione parziale.
Inverse: Il prezzo si muove in direzione opposta al sentiment (es. FUD che non impatta il prezzo).

Parametri (Query String)

Parametro Tipo Obbligatorio Descrizione
days integer No Finestra temporale in giorni (Default: 7, Max: 30)
category string No Analizza una specifica narrativa (es. 'MINING'). Se omesso, calcola GLOBAL e trova la top narrative.

Response Example

JSON Response
{
  "category": "GLOBAL",
  "correlation_score": 0.82,
  "interpretation": "Strong Positive",
  "top_impact_narrative": {
    "category": "ETF",
    "score": 0.89,
    "interpretation": "Strong Positive"
  },
  "days": 7
}

⚠️ Gestione Errori

Tutte le API restituiscono uno status HTTP appropriato e un JSON con dettagli dell'errore.

Status Codes

Code Significato Azione
200 OK Request success
400 Bad Request Verifica parametri query string
500 Internal Server Error Errore lato server, riprova più tardi