ACCÈS API · BÊTA PRIVÉE Sigma est en bêta. L'API et le serveur MCP s'ouvriront avec les tiers Pro et Quant. Rejoignez la liste d'attente pour un accès anticipé (10 000 req/mois, 20 ans d'historique, MCP, webhooks).
X-Api-Key: <key> · alternative si votre client HTTP ne gère pas bien le header Authorization.
La clé est affichée une seule fois à la création. En cas de perte, révoquez-la et générez-en une nouvelle. Limite : 10 clés actives par compte. Les clés révoquées restent visibles en historique.
Format des clés
text
sit_live_<32 caractères base62>
Exemple de préfixe visible (safe pour logs) : sit_live_Ab1C
La clé complète fait ~40 caractères. Stockée hashée (SHA-256) côté serveur,
jamais retrouvable en clair.
Clé invalide, expirée ou révoquée
Toute erreur d'authentification renvoie un HTTP 401 au format uniforme :
json
{
"error": {
"code": "invalid_api_key",
"message": "Clé API invalide, inconnue ou révoquée. Générez une nouvelle clé depuis votre compte.",
"status": 401
}
}
Fondamentaux
Concepts clés
Base URL
text
https://insiders-trades.com
Métadonnées universelles
Chaque réponse 200 inclut un objet meta. Il contient la latence serveur et un mini-dictionnaire dataFreshness avec la date de dernière mise à jour de chaque bloc de données, permettant à votre client de décider s'il doit invalider son cache.
Les endpoints listing supportent ?limit (défaut 50, max 200) et ?offset (défaut 0). Le champ total retourné permet de paginer jusqu'au bout.
Format des timestamps
Tous les timestamps sont en ISO 8601 UTC (2026-04-20T18:32:11.123Z).
Champs nullable
Un champ manquant dans la BDD est sérialisé en null (jamais omis). Cela permet de distinguer « donnée absente » d'une erreur de champ.
BigInt (montants)
Les champs comme marketCap, revenue, totalAmount peuvent dépasser la capacité du nombre flottant JS (253). Ils sont retournés comme des nombres, mais pour les sommes globales (L'Oréal à 195 Md€…) votre code client doit utiliser des BigInt si la précision vaut plus de 1 €.
API Reference
Endpoints
18 endpoints, tous en lecture seule. Groupés par domaine. Filtre cross-marché via ?market=fr|us|de|ch|uk|ca|it|es sur tous les endpoints de listing.
── Authentification
GET/api/v1/me
Vérifier une clé et obtenir l'identité
Renvoie les informations de l'utilisateur propriétaire de la clé + métadonnées de la clé elle-même. Utilisez-le comme ping pour valider qu'une clé est toujours active.
Ping de la base de données (avec latence mesurée), horodatage de chaque étape de la pipeline. Utile pour détecter un arrêt du cron horaire ou du scoring.
Catalogue des 8 régulateurs ingérés avec compteurs vivants (déclarations, sociétés) et fenêtre de couverture par marché. À appeler une fois au démarrage de votre intégration pour vérifier ce qui est dispo.
Net buy − net sell sur une société, bucketé par mois (ou semaine ISO), avec rollups par dirigeant et un signal rolling 90 jours. Idéal pour détecter une phase d'accumulation ou de distribution.
Transactions ordonnées dans le temps pour un dirigeant, avec un cumul de volume par société recalculé à chaque ligne. Tu vois la position se construire trade par trade.
Retourne la valeur, les points bruts attribués, le plafond et un court rationale pour chacun des 9 facteurs du score composite v3. Aucune boîte noire, auditez n'importe quel signal vous-même. Méthodologie : voir /methodology.
Paramètres de chemin
Nom
Type
Défaut
Description
amfIdrequis
string
·
Identifiant unique (ex : 2026DD1108988 ou SEC:0001127602-25-009876)
Signaux qui satisfont les 6 filtres de la Sigma Winning Strategy (cluster, mid-cap, fonctions clés, fraîcheur ≤ 7j, acquisition, score v3 ≥ 40). Inclut la preuve historique 4 ans.
Proxy les routes READ de /api/v1/* sans authentification. Cap glissant 24h: 10 appels par empreinte (3 si user-agent bot). Datacenter refusé, captcha à partir du 6e appel, watermark dans chaque réponse. Bulk export, MCP, webhooks ne sont PAS proxiés.
Émet un challenge HMAC (difficulté 16 bits, TTL 10 min). Le client doit trouver un nonce tel que sha256(challenge + ':' + nonce) commence par 4 zéros hex, puis renvoyer X-Sandbox-POW-Challenge + X-Sandbox-POW-Solution sur l'appel suivant.
bash
curl -X POST "https://insiders-trades.com/api/v1/sandbox/challenge"
Schéma
Modèle de données
Cinq entités principales. Voici les champs exposés dans l'API (certains champs internes comme les index ou timestamps techniques ne sont pas inclus).
Clé mal formée, inconnue, ou révoquée. User banni = idem.
404
company_not_found
Slug de société inexistant
404
insider_not_found
Slug de dirigeant inexistant
404
declaration_not_found
amfId inexistant
500
internal_error
Erreur serveur, remontez-nous l'URL + heure
Retryez toute réponse ≥ 500 avec un back-off exponentiel (ex : 1 s, 2 s, 4 s max 5 tentatives). Ne retryez jamais 401 / 404.
Quotas
Rate limits & bonnes pratiques
Plafonds par défaut durant la phase beta :
Bêta privée : 50 pages/jour (web, anonymes), 20 requêtes sandbox/jour, 40 requêtes API/jour par clé (compteur reset 00:00 UTC). Les quotas Pro et Quant ouvrent à la sortie de bêta.
10 req/seconde (burst) · suffisant pour la plupart des usages. Chaque réponse renvoie X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset (ISO 8601).
10 clés actives maximum par compte. Au-delà, révoquez-en une depuis votre page de clés.
Les compteurs d'usage sont visibles en temps réel par l'utilisateur (total + aujourd'hui) et par l'admin (avec Top consommateurs).
Bonnes pratiques
Respectez la fraîcheur. Les données ne bougent pas toutes les secondes. Les cours Yahoo sont rafraîchis 1×/jour (4 h UTC), les déclarations d'initiés des 28 régulateurs (AMF, SEC, BaFin, SIX SER, RNS, SEDI, Consob, CNMV, AFM, FSMA, Oslo, Helsinki, Copenhagen, ASX, FMA, CVM, HKEX, BSE-Sofia, Tadawul, DART, EDINET, SSE, SZSE, SEBI, KNF, PSE, NZX, JSE) 1×/heure. Consultez meta.dataFreshness pour adapter votre fréquence de polling.
Cachez agressivement. Un détail société change rarement, cachez-le côté client jusqu'au priceAt + 1h.
Paginez correctement. Utilisez limit raisonnable (20-50) et offset pour les gros datasets.
Retryez les 5xx. Avec back-off exponentiel, max 5 tentatives.
Stockez la clé en secret. Jamais en clair dans un repo Git, dans le frontend, ou dans les logs.
Exemples
Code samples
Récupérer les top signaux du jour
const API = "https://insiders-trades.com";
const KEY = process.env.INSIDERS_API_KEY;
async function topSignals(direction = "BUY", days = 1) {
const url = new URL(API + "/api/v1/signals");
url.searchParams.set("direction", direction);
url.searchParams.set("lookbackDays", String(days));
url.searchParams.set("minScore", "50");
url.searchParams.set("limit", "10");
const res = await fetch(url, {
headers: { Authorization: "Bearer " + KEY },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { items, meta } = await res.json();
console.log(`${items.length} signals · latency ${meta.latencyMs}ms`);
for (const s of items) {
console.log(
`[${s.signal.score}] ${s.company.name.padEnd(32)} ${s.insider.name} · ${s.transaction.amount}€`
);
}
}
topSignals();
Export CSV de toutes les déclarations d'une société
import csv, os, requests
API = "https://insiders-trades.com"
KEY = os.environ["INSIDERS_API_KEY"]
def fetch_all(slug):
items, offset = [], 0
while True:
r = requests.get(
f"{API}/api/v1/companies/{slug}/declarations",
params={"limit": 100, "offset": offset},
headers={"Authorization": f"Bearer {KEY}"},
)
r.raise_for_status()
page = r.json()
items.extend(page["items"])
if offset + 100 >= page["total"]:
break
offset += 100
return items
with open("bouygues_declarations.csv", "w", newline="") as f:
rows = fetch_all("bouygues-1454")
w = csv.writer(f)
w.writerow(["pubDate", "insider", "role", "nature",
"isin", "unitPrice", "volume", "amount", "score"])
for d in rows:
w.writerow([
d["pubDate"],
d["insider"]["name"],
d["insider"]["function"],
d["transaction"]["nature"],
d["transaction"]["isin"],
d["transaction"]["unitPrice"],
d["transaction"]["volume"],
d["transaction"]["totalAmount"],
d["signal"]["score"],
])
print(f"Wrote {len(rows)} rows")
Versioning
Changelog
v1.0.0· 2026-04-20
Lancement de l'API publique.
18 endpoints, authentification par clé API, métadonnées de fraîcheur.
L'API est en beta privée. L'accès est sur invitation. Aucun SLA contractuel n'est fourni pendant la beta, mais l'équipe veille quotidiennement à la fraîcheur des données (cron horaire multi-marchés + quotidien Yahoo).
Bug / anomalie : mentionnez l'URL exacte, l'heure (UTC), et le prefix de la clé utilisée.
Roadmap : endpoints POST pour notifications push, webhooks sur nouveaux signaux, scopes granulaires.
Usage éthique. Les déclarations d'initiés (AMF, SEC, BaFin, SIX, RNS, SEDI, Consob, CNMV, AFM, FSMA, Oslo, Helsinki, Stockholm, Copenhagen, ASX, FMA, Dublin) sont publiques, mais le rate limit sert aussi à éviter de surcharger les serveurs amont (Yahoo Finance, BDIF, EDGAR, etc.). Les patterns abusifs entraînent la révocation immédiate de la clé.
Prêt à intégrer le signal des initiés ?
Générez une clé en 10 secondes, copiez l'exemple cURL du quickstart, et explorez les endpoints en direct avec Swagger.