Aller au contenu principal
COT-Reports
COT-Reports.com
COT-Reports
COT-Reports
GRATUIT · RÉFÉRENCE API REST

COT Data API

Auth bearer · 60 req/min · 500 req/jour

API REST pour l'ensemble du jeu de données CFTC Commitments of Traders. Endpoints disponibles, authentification, limites de taux et codes d'erreur — tout ce qu'il faut pour intégrer.

L'API COT Data expose le même jeu de données que cot-reports.com : tous les marchés CFTC, toutes les familles de rapports (Legacy, Désagrégé, TFF, Supplémentaire), colonnes normalisées, historique hebdomadaire. Abonnez-vous pour générer un token ; auth bearer sur chaque requête ; limites de taux ci-dessous.

Cette référence est uniquement en anglais — le reste du site est localisé en 6 langues, mais la surface API (noms d'endpoints, syntaxe des paramètres, codes d'erreur) est partagée entre les langues. Les exemples sont en curl ; les snippets JavaScript fonctionnent dans Node 18+ et tout navigateur moderne.

Authentification

Chaque requête sauf /api/v1/demo nécessite un token bearer. Abonnez-vous sur cot-reports.com/api, générez un token depuis /account/api, et incluez-le dans l'en-tête Authorization.

curl -H "Authorization: Bearer cot_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  https://cot-reports.com/api/v1/markets

Les tokens font 36 caractères au total (préfixe cot_live_ + 32 caractères hex). Le token complet n'est affiché qu'une seule fois à la création ; nous ne stockons qu'un hash SHA-256. Les tokens perdus ne peuvent pas être récupérés — révoquez l'ancien et générez-en un nouveau.

Limites de taux

PalierPar minutePar jourNotes
Entry (9.99 $/mois)60500Palier par défaut à l'abonnement.
Démo (sans auth)510Par IP. Réponse synthétique statique.

Chaque réponse contient X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset pour la plus stricte des deux fenêtres, plus des clés par fenêtre (-Minute / -Day) pour une télémétrie plus riche. Sur un 429, Retry-After indique le nombre de secondes à attendre.

Endpoints

GET/api/v1/marketsAuth bearer

Liste tous les marchés CFTC du jeu de données, avec les métadonnées et l'appartenance aux familles de rapports.

ParamètreInTypeDescription
categoryquerystringMatch exact sur le champ metadata category.
trackedquerybooleanFiltre sur l'ensemble curaté des marchés "populaires".
familyquerystringUne valeur parmi legacy, disagg, tff, supp.
searchquerystringRecherche par sous-chaîne sur market_name (insensible à la casse).
limitqueryinteger (1..2000)Par défaut 500.
offsetqueryintegerOffset de pagination, par défaut 0.
curl -H "Authorization: Bearer $COT_API_TOKEN" \
  "https://cot-reports.com/api/v1/markets?family=legacy&tracked=true&limit=10"
GET/api/v1/cot/{cftc_code}Auth bearer

Historique hebdomadaire d'un marché. Par défaut, retourne les 520 dernières semaines (10 ans).

ParamètreInTypeDescription
cftc_code *pathstringCode CFTC du contract market, ex. 099741 pour EURO FX.
familyquerystringPar défaut legacy. Une valeur parmi legacy, disagg, tff, supp.
fromqueryYYYY-MM-DDBorne inférieure inclusive sur report_date.
toqueryYYYY-MM-DDBorne supérieure inclusive sur report_date.
limitqueryinteger (1..5000)Par défaut 520.
curl -H "Authorization: Bearer $COT_API_TOKEN" \
  "https://cot-reports.com/api/v1/cot/099741?from=2024-01-01"
GET/api/v1/cot/{cftc_code}/latestAuth bearer

Rapport le plus récent pour un marché.

ParamètreInTypeDescription
cftc_code *pathstringCode CFTC du contract market.
familyquerystringPar défaut legacy.
curl -H "Authorization: Bearer $COT_API_TOKEN" \
  "https://cot-reports.com/api/v1/cot/099741/latest"
GET/api/v1/cot/{cftc_code}/indexAuth bearer

COT Index style Briese (percentile 0–100) pour le dernier rapport sur la fenêtre de lookback.

ParamètreInTypeDescription
cftc_code *pathstringCode CFTC du contract market.
lookbackqueryinteger (4..520)Fenêtre en semaines. Par défaut 52.
curl -H "Authorization: Bearer $COT_API_TOKEN" \
  "https://cot-reports.com/api/v1/cot/099741/index?lookback=156"
GET/api/v1/demoSans auth

Échantillon synthétique statique. Sans auth. 10 req/jour par IP. À utiliser pour valider la forme des réponses avant abonnement.

curl https://cot-reports.com/api/v1/demo

Codes d'erreur

codeHTTPQuand
missing_header401L'en-tête Authorization n'a pas été envoyé.
malformed_header401L'en-tête Authorization n'est pas Bearer + cot_live_<32 hex>.
unknown_token401Le token ne correspond à aucune ligne active. Peut avoir été révoqué ou jamais généré.
revoked403Le token existe mais a été révoqué (abonnement annulé, révocation manuelle).
rate_limited429Limite par minute ou par jour dépassée. L'en-tête Retry-After indique le nombre de secondes à attendre.
invalid_code400cftc_code dans le chemin n'a pas passé la validation alphanumérique.
invalid_family400Paramètre family hors de legacy, disagg, tff, supp.
invalid_from400Le paramètre from n'est pas une date YYYY-MM-DD valide.
invalid_to400Le paramètre to n'est pas une date YYYY-MM-DD valide.
no_data404Aucun historique pour le marché demandé dans la famille demandée.
db_error500Erreur de base de données interne. Réessayer une fois ; si persistant, contacter le support.
internal500Erreur serveur inattendue. Réessayer une fois ; si persistant, contacter le support.
demo_rate_limited429/api/v1/demo limite par hash d'IP (10/jour) atteinte.

Exemple JavaScript

const r = await fetch('https://cot-reports.com/api/v1/cot/099741/index?lookback=52', {
  headers: { Authorization: `Bearer ${process.env.COT_API_TOKEN}` },
})
if (!r.ok) {
  const { error, message } = await r.json()
  throw new Error(`COT API ${r.status} ${error}: ${message}`)
}
const { cot_index, latest_report_date } = await r.json()
console.log(`COT Index for EURO FX as of ${latest_report_date}: ${cot_index}`)

Spec OpenAPI 3.0

Description lisible par machine de tous les endpoints ci-dessus. Importable dans Postman, Insomnia, OpenAPI Generator, etc.

Télécharger openapi.json

Utilisation acceptable

  • Un token par abonné. Le partage de tokens entre utilisateurs ou systèmes au-delà de ce que couvre votre abonnement est une violation des Conditions ; nous révoquons les tokens présentant des patterns d'IP distribués.
  • Les données CFTC elles-mêmes sont du domaine public (17 USC §105). Vous pouvez construire des produits payants par-dessus, redistribuer les résultats de requêtes, ou alimenter n'importe quel modèle. Nous ne restreignons pas la sémantique des données.
  • Le scraping massif visant à recréer gratuitement le Data Dump est interdit — achetez le Data Dump si c'est votre besoin ; il coûte 49 $ en achat unique et vous épargne le ballet des rate-limits.
  • Le contournement des limites de taux (rotation d'IPs, tokens parallèles vers le même endpoint) est une violation des Conditions. Nous loguons par token + par hash d'IP exactement pour cette raison.

Conditions complètes : /terms.