Back

Public API · v1.0.0

StockMarketScan API

A production-ready JSON stock screener API covering screeners, options flow, chart patterns, trends and market breadth data. Choose direct API access or subscribe via the RapidAPI marketplace.

A stock screener API for your own tooling

Every screener, pattern and options flow endpoint on this page is the same one the site itself calls. If you want the model to query it for you instead of calling it yourself, the same data is exposed over MCP on the connector page.

A stock market data API for developers

Authentication is a single header, responses are plain JSON, and the endpoints below are documented with their parameters and rate limits. That makes it a stock market data API for developers who would rather query the data than read a dashboard.

Base URLhttps://stockmarketscan.com/api/v1

Authentication

Two authentication paths are supported. Direct API key holders generate their own credentials. RapidAPI subscribers use the marketplace’s standard headers and automatically receive Pro-tier access.

Direct API key

Generate at Settings. Requires a Basic or Pro plan.

X-API-Key: sms_xxxxxxxxxxxxxxxx

RapidAPI

Pro

Subscribe on the marketplace. All subscribers get Pro tier.

X-RapidAPI-Key: ...X-RapidAPI-Host: stockmarketscan.com

Rate Limits

Limits apply per user. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.

PlanPer minutePer day
FreeNo API access
Basic15 req500 req
Pro30 req2,000 req
RapidAPIPer RapidAPI plan + 10,000/day backend safety cap

Errors

All errors return a JSON body with error, code, and a tracing X-Request-Id header. The requestId field appears only on 500 INTERNAL_ERROR responses — include it when reporting issues.

{
  "error": "Human-readable message.",
  "code": "MACHINE_READABLE_CODE",
  "requestId": "uuid-for-tracing"
}

Health

Service health and database probe — public, no auth.

GET/health
Public

Health check

Returns service status and database reachability. No authentication required.

Response

200Service healthy
statusstring
versionstring
timestampstring (date-time)
dbobject
reachableboolean
latencyMsinteger

Errors

503

Screeners

24 curated screeners — full table data, columns, and tier metadata.

GET/screeners
Public

List all

Returns metadata for all 24 screeners including columns and tier requirements. API key optional — unauthenticated requests see the catalog at free-tier accessibility.

Response

200Screener list
tierenum("free" | "basic" | "pro")
totalinteger
accessibleinteger
screenersarray<object>
slugstring
namestring
descriptionstring
categorystring
tierstring
accessibleboolean
columnsarray<object>
keystring
labelstring
typestring

Errors

401403429
GET/screeners/{slug}
Basic+

Paginated rows by slug

Parameters

NameInTypeNotes
slug*pathstring
pagequeryintegerdefault: 1 · 1–10000
limitqueryintegerdefault: 50 · 1–500

Response

200Screener data
screenerobject
slugstring
namestring
tierstring
paginationobject
pageinteger
limitinteger
totalinteger
totalPagesinteger
dataarray<object>

Errors

401403404429

Patterns

Chart pattern detection per symbol or across screener cohorts.

GET/patterns/{symbol}
Basic+

Detected patterns for a symbol

Parameters

NameInTypeNotes
symbol*pathstring
intervalqueryenum("1d" | "1wk")default: "1d"

Response

200Pattern list
symbolstring
intervalstring
computedAtstring
candleCountinteger
patternsarray<object>

Errors

400401429
POST/patterns
Basic+

Search across screeners

Request body *

screenersarray<string>required
patternsarray<string>
intervalenum("1d" | "1wk")default: "1d"
limitintegerdefault: 100 · 1–500

Max stocks per screener group (groups get truncated: true when capped).

Response

200Pattern search results

object

Errors

400401429

Options Flow

Daily aggregated flow, per-symbol timelines, high-conviction signals with performance tracking, market sentiment, and unusual contract activity.

GET/options-flow
Pro

Daily overview

Pro tier required.

Parameters

NameInTypeNotes
datequerystring (date)
sortqueryenum("streak" | "volume" | "callput" | "premium")default: "streak"
limitqueryintegerdefault: 100 · 1–500

Response

200Options flow data
datestring (date)
sortstring
limitinteger
dataarray<object>
statsobject
datesarray<string (date)>

Errors

400401403429
GET/options-flow/{symbol}
Pro

Per-symbol timeline

Pro tier required.

Parameters

NameInTypeNotes
symbol*pathstring
limitqueryintegerdefault: 60 · 1–365

Response

200Timeline rows
symbolstring
limitinteger
countinteger
dataarray<object>

Errors

400401403429
GET/options-flow/signals
Pro

Bullish/bearish signals

Returns filtered, high-conviction signals with performance metrics (max high, max drawdown, days since signal). Pro tier required.

Parameters

NameInTypeNotes
date_fromquerystring (date)
date_toquerystring (date)
limitqueryintegerMax signals returned.default: 500 · 1–2000

Response

200Signal list
dateFromstring (date)nullable
dateTostring (date)nullable
countinteger
signalsarray<object>

Errors

400401403429
GET/options-flow/sentiment
Pro

Daily market sentiment

Returns the stored daily sentiment record (one row per trading day): market breadth score, market-wide call/put ratio, computed daily context (`bullish_only` / `bearish_only` / `mixed`), bullish/bearish signal counts, plus a derived sentiment score and label using the same formula as the StockMarketScan dashboard. Pro tier required. If `date_from`/`date_to` are omitted, returns the last 60 days.

Parameters

NameInTypeNotes
date_fromquerystring (date)
date_toquerystring (date)

Response

200Sentiment rows
dateFromstring (date)nullable
dateTostring (date)nullable
countinteger
dataarray<object>
datestring (date)
market_breadth_scoreintegernullable

Combined Adv/Dec + new-highs/new-lows score (0–100)

market_call_put_rationumbernullable

Market-wide call volume divided by put volume

contextenum("bullish_only" | "bearish_only" | "mixed")

Daily filter context applied to the signal builder

bullish_countinteger
bearish_countinteger
sentiment_scoreinteger0–100

Derived from `market_call_put_ratio` using `clamp(round((cp - 0.5) * 100), 0, 100)`. Same formula as the dashboard gauge.

sentiment_labelenum("bullish" | "neutral" | "bearish")

`>=65` bullish, `45–64` neutral, `<45` bearish.

Errors

400401403429
GET/options-flow/unusual
Pro

Unusual activity ranking

Top unusual options contracts for the most recent available trading day. Server-side filters: `volume_oi_ratio >= 1.5`, `open_interest >= 100`, notional (`last_price * volume * 100`) `>= 25000`. Results ranked by `volume_oi_ratio * ln(notional + 1)` descending. Latest snapshot only — UOA data is stored as a rolling daily table, no history. Pro tier required.

Parameters

NameInTypeNotes
limitqueryintegerdefault: 300 · 1–1000

Response

200Unusual options activity rows
datestring (date)nullable
countinteger
dataarray<object>
symbolstring
option_symbolstring
symbol_typeenum("Call" | "Put")nullable
base_last_pricenumbernullable
strike_pricenumbernullable
expiration_datestring (date)nullable
days_to_expirationintegernullable
last_pricenumbernullable
bid_pricenumbernullable
midpointnumbernullable
ask_pricenumbernullable
volumestringnullable
open_intereststringnullable
volume_oi_ratiostringnullable
volatilitystringnullable
deltastringnullable
trade_timestringnullable
data_datestring (date)

Errors

401403429

Market Breadth

NYSE/NASDAQ advance/decline and new-highs/new-lows data.

GET/market-momentum
Basic+

NYSE/NASDAQ advance-decline data

Parameters

NameInTypeNotes
datequerystring (date)
date_fromquerystring (date)
date_toquerystring (date)

Response

200Market momentum rows
datesarray<string (date)>
countinteger
dataarray<object>
exchangestring
advancing_issuesstring
declining_issuesstring
new_highsstring
new_lowsstring
data_datestring (date)

Errors

400401403429

Stock Data

Stock metadata and OHLCV candles for any supported symbol.

GET/stocks/{symbol}
Basic+

Stock metadata

Parameters

NameInTypeNotes
symbol*pathstring

Response

200Stock metadata
symbolstring
symbol_namestring
last_pricenumbernullable
percent_changenumbernullable
exchangestring
industrystring

Errors

400401404429503
GET/stocks/{symbol}/candles
Basic+

OHLCV candles

Parameters

NameInTypeNotes
symbol*pathstring
intervalqueryenum("1d" | "1wk")default: "1d"
rangequerystringdefault: "6mo"

Response

200Candle data
symbolstring
intervalstring
rangestring
countinteger
dataarray<object>
timeinteger

Unix epoch seconds

opennumber
highnumber
lownumber
closenumber
volumenumber

Errors

400401429