REST API · Updated daily at market open

Equity signals for your trading bot

A single API that gives your bot the macro regime, the top-ranked tickers, and per-symbol scores — all from the same quant engine that scores 2,300+ stocks every morning.

1

Get a key

Enter your email below and receive a sandbox key instantly. 100 free calls/day, no credit card.

2

Call the API

Pass X-API-Key in your request header. Regime, snapshot, or single-ticker — all REST.

3

Build your edge

Gate trades on macro regime, rank candidates by ML score, filter by fundamentals.

Three endpoints, all you need

Base URL: https://macrorouter.com/api

GET/v1/signals/snapshot

Regime + top picks in a single call. The default entry point for most bots.

Request

GET /v1/signals/snapshot?top_n=10
X-API-Key: sk_live_...

Response

{
  "regime": {
    "state": "favorable",
    "vix": 16.2,
    "fci": -0.4,
    "hmm_regime": 0
  },
  "top_picks": [
    {
      "ticker": "NVDA",
      "total_score": 94.1,
      "ml_prob": 0.87,
      "momentum_score": 91.0
    },
    ...
  ],
  "as_of": "2026-06-26"
}
GET/v1/signals/regime

Lightweight macro regime check. Useful as a gating condition before entering positions.

Request

GET /v1/signals/regime
X-API-Key: sk_live_...

Response

{
  "state": "favorable",
  "vix": 16.2,
  "fci": -0.4,
  "hmm_regime": 0,
  "as_of": "2026-06-26"
}
GET/v1/signals/ticker/{symbol}

Per-ticker detail: ML probability, composite score, and all sub-scores for a specific symbol.

Request

GET /v1/signals/ticker/NVDA
X-API-Key: sk_live_...

Response

{
  "ticker": "NVDA",
  "total_score": 94.1,
  "ml_prob": 0.87,
  "momentum_score": 91.0,
  "fundamental_score": 88.0,
  "technical_score": 79.5,
  "macro_score": 82.0,
  "regime_state": "favorable",
  "as_of": "2026-06-26"
}

Quick start — Python

import requests

API_KEY = "sk_live_..."   # your key
BASE    = "https://macrorouter.com/api"

def should_trade_today():
    r = requests.get(f"{BASE}/v1/signals/regime",
                     headers={"X-API-Key": API_KEY})
    return r.json()["state"] == "favorable"

def get_top_picks(n=5):
    r = requests.get(f"{BASE}/v1/signals/snapshot",
                     params={"top_n": n},
                     headers={"X-API-Key": API_KEY})
    return r.json()["top_picks"]

if should_trade_today():
    picks = get_top_picks()
    for p in picks:
        print(f"{p['ticker']:6s}  score={p['total_score']:.1f}  ml={p['ml_prob']:.2f}")

Plans

TierPriceDaily callsRate limitSupport
SandboxFree100 calls / day10 req / minCommunity
Developer$29 / mo1,000 calls / day60 req / minEmail
Production$99 / mo10,000 calls / day300 req / minPriority

Need more? Email support@macrorouter.com for custom volume pricing.

Start for free

Enter your email and get a sandbox key instantly. 100 calls/day to prototype your strategy — no credit card required.

Sandbox tier · 100 calls/day · No credit card required