Developer API
The Market Census Stock Data API
One 0–100 score and six sub-scores per US stock, as read-only JSON. Key-authenticated, versioned, and quota-metered — the same numbers behind the app, delivered as a stable contract you can build on.
Sign-up takes an email and a password. Keys are issued on Premium, so the 30-day trial (started by adding a card, $0 that day) is the way to build against the API before you commit.
Quickstart
Create a key at /app/api-keys (Premium), then authenticate every request with an X-API-Key header (or Authorization: Bearer tl_live_…). The base URL is https://api.marketcensus.io.
Example request
curl -H "X-API-Key: tl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
"https://api.marketcensus.io/api/v1/signals?min_score=70&limit=50"Example response (illustrative values)
{
"count": 50,
"limit": 50,
"offset": 0,
"items": [
{
"symbol": "AAPL",
"name": "Apple Inc.",
"sector": "Technology",
"asset_class": "equity",
"is_leveraged": false,
"is_non_common": false,
"score": 79.1,
"signal": "STRONG SETUP",
"price": 231.40,
"change_pct_1d": 0.8,
"change_pct_5d": 2.1,
"change_pct_1m": 5.3,
"confidence_pct": 94,
"sub_trend": 82,
"sub_rs": 75,
"sub_fundamentals": 79,
"sub_momentum": 71,
"sub_macro": 60,
"sub_smart_money": 88,
"updated_at": "2026-06-06T13:00:00+00:00",
"quote_at": null,
"quote_timeframe": null,
"price_source": null
}
]
}Endpoints
All endpoints are GET, read-only, and return JSON. Versioned under /api/v1 — fields are added, never renamed or removed, without a version bump.
/api/v1/meYour key's identity + live daily quota (limit, used today, remaining). Call it before a batch run to check your budget.
/api/v1/signalsThe full scored universe, sorted by score descending. Each row carries the composite score, descriptive signal label, price action, confidence, all six sub-scores, and two structural facts about the listing itself: is_leveraged (a geared or inverse fund) and is_non_common (a note, preferred or depositary share, warrant, right or unit — not a company's common shares).
- limit
- rows to return, max 2000 (default 1000)
- offset
- pagination offset (default 0)
- min_score
- only return rows scoring at or above this (0-100)
- signal
- filter by descriptive label, e.g. "HIGH CONVICTION"
- exclude_non_common
- set to true to drop listings that are not common stock (notes, preferred and depositary shares, warrants, rights, units). Defaults to false, so these are INCLUDED unless you ask — each one carries is_non_common: true.
/api/v1/ticker/{symbol}One ticker's current score, signal, price action, confidence, and the six sub-scores. 404 if the symbol isn't in the scored universe.
/api/v1/regimeCurrent macro-regime snapshot — VIX, 10Y yield, a US dollar index, rate direction, breadth, and sector leaders. The dollar reading, in the field named dxy, is the Federal Reserve's broad trade-weighted US dollar index (FRED series DTWEXBGS). It is not the ICE US Dollar Index (DXY), and the two read on different scales; the field keeps the name dxy for compatibility.
Access & quota
- 1,000 requests/day on Premium, including the 30-day trial. Check live remaining quota any time with
GET /api/v1/me. - Scores are descriptive, not advice. What a score means is explained at /how-it-works.
- No key needed. The MCP server brings Market Census’s scores into AI assistants such as Claude, and the free score badge shows a ticker’s score on any website.
- Stable contract. A 0–100 score, a descriptive signal label (HIGH CONVICTION → WEAK), and the six sub-scores per symbol.
- Prices and timestamps. Stock and ETF prices are delayed about 15 minutes. updated_at is when Market Census last wrote the row, not the age of the price. quote_at is the price source's own time for the price (with quote_timeframe, the market-data vendor's own delay flag) when the source sends one, and null when it does not; never read a null as the updated_at time. For a stock or ETF, treat a null as "delayed about 15 minutes or more". price_source says who priced the row. On a crypto row (asset_class "crypto") it is "coingecko" when the price came from CoinGecko: that price is re-read about once a minute, quote_at is CoinGecko's own time for it, and change_pct_1d is its change over the last 24 hours. Show such a price with "Data provided by CoinGecko". When price_source is null, a crypto row is a daily close: its quote_at is the end of the UTC day of that close, and a null quote_at means daily closes, sometimes several days old, not the stock delay. On a crypto row, updated_at is when its score was last computed: a crypto score is rebuilt about once a day where the data allows, so it can be older than the price, whichever source priced the row, and a pair whose score stops updating drops out of the ranked results.
Build on Market Census.
Premium includes the API, 1,000 requests/day, and everything else. An account takes an email and a password; adding a card starts the 30-day Premium trial and issues a key — $0 charged that day, first charge on day 30, cancel online any time.