Data/Datasets

    Data

    Datasets

    Every dataset the scanr.ai API serves, what it contains, and how it connects to scanning. Most of them are also scan filters: you can read relative strength for a list of tickers, or scan the whole market for stocks where it's above 90. The table's last column says which filter reads the same data.

    DatasetEndpointPlanAs a scan filter
    ScansPOST /scanStarter
    Relative strengthPOST /stocks/relative-strength, POST /stocks/get-stock-indicatorsPower UserIndicator.RelativeStrengthMkt, …Sector, …Industry
    Regime indicatorsPOST /stocks/get-stock-indicatorsBusinessIndicator.TrendEfficiency, RegimeExtension, GroupStrength, …
    Chart patternsPOST /stocks/get-chart-patternsPower UserChartPattern.*
    Supply & demand zonesPOST /stocks/get-supply-demand-zonesBusinessZone.Inside, Zone.Outside
    Market themesGET /stocks/themes, GET /stocks/themes/performance/*BusinessUniverse.Theme
    Technical indicatorsPOST /technicals/technical/{category}/{name}, POST /technicals/technical/bulkPower UserTechnical.*
    PeersGET /stocks/peersPower User
    Concept researchGET /stocks/concept-research/relate, GET /stocks/concept-research/findPower User
    ETF holdingsGET /stocks/etf/{ticker}/holdings, …/holdings/breakdownPower User
    Reference dataGET /stocks/search-securities, /stocks/sectors, /stocks/industries, /stocks/ticker-types, /stocks/hot-tickers, /misc/market-statusStarterStock.Sector, Stock.Industry

    Paths are relative to https://scanr.ai/api/v2. Full request and response schemas are in the API Reference.

    Scans

    The headline dataset: every U.S.-listed security that matches a payload of your design, computed on demand against current data. See How Scanning Works.

    • Returns: the matching tickers, their count, and the run's id.
    • Filters on: quote and profile data, 100+ technical studies on 18 timeframes, 300+ fundamental metrics, relative strength and regime scores, 60+ candlestick patterns, 17 chart patterns, supply/demand zones, insider and short data.
    • Freshness: live. Price-based filters include the current session's bar.

    Relative strength

    A 1–99 percentile rank of each stock's trailing performance against a comparison group. 99 means the stock has outperformed 99% of its group. There are three groups: the whole market (rs_score), the stock's sector (rs_sector_score) and its industry (rs_industry_score).

    Ranked lists, strongest first. POST /stocks/relative-strength:

    json
    { "scope": "sector", "value": "Healthcare", "limit": 25 }

    scope is market, sector or industry; value names the sector or industry (required unless scope is market); ascending: true returns the weakest instead; limit defaults to 20.

    Scores for your tickers. POST /stocks/get-stock-indicators returns the scores (and the regime indicators below) for a list of tickers:

    json
    { "tickers": ["NVDA", "AMD", "INTC"], "limit": 100 }

    Pass from and to (Unix milliseconds) for history, and follow next_cursor_date / next_cursor_ticker until is_last_page is true. Each row carries a date, a realtime flag, and the time it was updated.

    • Freshness: recomputed about once a minute during the session (realtime: true), settled after the close.
    • Scan filter: Indicator.RelativeStrengthMkt, RelativeStrengthSector, RelativeStrengthIndustry. See Find Relative-Strength Leaders.

    Regime indicators

    Business plan. Where a stock sits in its trend, beyond how far it has moved:

    FieldMeaning
    trend_efficiency0–100. How cleanly the stock is trending rather than chopping (Kaufman efficiency ratio ×100): 100 is a straight line, 0 is noise.
    regime_extension−100–100. How far price is stretched from its adaptive mean (KAMA), in ATR units ×10: 25 means 2.5 ATR above.
    regime_divergenceThe stock's extension minus its industry's median (sector if the industry is too small). Positive means it is holding up while its peers pull back.
    regime_divergence_pctregime_divergence ranked 1–99 within the same peer group.
    group_strengthThe regime_extension of the stock's sector or thematic ETF (group_ticker): is the group itself strong? Settled at the end of each day.
    market_strength, market_efficiencyThe extension and trend efficiency of the broad market, identical for every ticker on a date.

    They come back from POST /stocks/get-stock-indicators and POST /stocks/relative-strength alongside RS (market_strength and market_efficiency from get-stock-indicators only).

    On Power User the keys are still there, but their values are null and the response lists them in withheld_fields. That list is empty on Business. Check it before you store a regime value: a null whose key is not in withheld_fields means the stock has no reading, not that your plan hides it.

    json
    {  "withheld_fields": ["trend_efficiency", "regime_extension", "regime_divergence", "regime_divergence_pct", "group_strength"],  "results": [{ "ticker": "NVDA", "rs_score": 97, "trend_efficiency": null, "group_ticker": "SMH" }]}

    Chart patterns

    Detected classical formations, per ticker and timeframe: head and shoulders, double tops and bottoms, triangles, wedges, flags, channels, and cup and handle (17 in all).

    POST /stocks/get-chart-patterns takes tickers, optional from / to (Unix milliseconds, on the detection time) and limit, and pages with cursor_id / cursor_time. Each row has the pattern name and its stable pattern_key, the timeframe, the pattern's pivot points, and when it was detected_at and computed_at.

    • Scan filter: ChartPattern.<pattern_key>, for example ChartPattern.CupAndHandle (see Building Scan Payloads).

    Supply and demand zones

    Business plan. Price bands where the stock has found buyers (demand) or sellers (supply) before, each weighted by the volume traded there.

    POST /stocks/get-supply-demand-zones takes the same tickers / from / to / limit body as chart patterns. Each zone has a zone_type, top_price, bottom_price, the highest-volume node_price inside it, a volume_weight, and the bar range it formed over (bars_from, bars_to).

    • Scan filter: Zone.Inside / Zone.Outside, for "price is inside a daily demand zone".

    Market themes

    Business plan. scanr.ai groups stocks into themes by how their prices actually move together (correlation), not by their industry codes, and gives each group a label and a stable key, such as silver-miners. Themes are re-partitioned weekly.

    EndpointReturns
    GET /stocks/themesEvery theme: theme_key, label, description, member tickers (each with its membership tier: core members first, then satellites and looser members), and cohesion statistics.
    GET /stocks/themes/performance/latestToday's performance of every theme, its average RS, volume and member returns.
    GET /stocks/themes/performance/by-date?date=YYYY-MM-DDThe same, for a past session.
    GET /stocks/themes/performance/history?days=90A time series of theme performance over the last N calendar days.
    • Freshness: live during the session (is_realtime marks today's entry); memberships change weekly.
    • Scan filter: Universe.Theme restricts any scan to a theme's members. See Track Theme Rotation.

    Technical indicators

    80+ studies (moving averages, momentum oscillators, volatility, volume, statistics, cycles) computed server-side on scanr.ai's bars. You send tickers and parameters, not price data.

    POST /technicals/technical/{category}/{name} computes one study, for example /technicals/technical/momentum/rsi:

    json
    { "tickers": ["AAPL", "MSFT"], "timeframe": "1d", "params": { "period": 14 }, "within": 5 }

    within: 1 (the default) returns the latest value per ticker; a larger within returns that many trailing values, oldest first. POST /technicals/technical/bulk computes many studies over one set of tickers in a single request. Values always end at the latest bar; there is no date range.

    Peers

    GET /stocks/peers?ticker=NVDA returns the stocks whose prices move most like the given one, each with its correlation. Funds (ETFs, ETNs) have no peers and return 404.

    Concept research

    Whether a stock relates to a free-text concept (a theme, place, product or event: "rare earths", "GLP-1"), or which stocks do, judged from SEC filings, news and company profiles. GET /stocks/concept-research/relate?ticker=XMPL&concept=rare%20earths answers one pair as related, not_related or unknown; GET /stocks/concept-research/find?concept=rare%20earths ranks the stocks that relate. Every positive answer carries the passage it rests on and a link. unknown is not a no, and a partial list is not a complete one: Research a Concept explains how to read each answer.

    ETF holdings

    GET /stocks/etf/{ticker}/holdings returns a sector or thematic ETF's constituents with their weight (as a fraction), shares and market value; GET /stocks/etf/{ticker}/holdings/breakdown?top_n=15 groups the weights by industry.

    • Coverage: sector and thematic ETFs. Broad-market, factor, leveraged, inverse and defined-outcome funds (SPY, QQQ, IWM) are not covered, and the response says so in coverage (covered, pending_ingest or out_of_universe).
    • Freshness: a periodic snapshot; as_of and as_of_age_days say how old it is. weight_covered is the share of the fund's weight the listed holdings account for, usually below 1.

    Reference data

    EndpointReturns
    GET /stocks/search-securities?q=nvidia&l=10Securities matching a ticker, company name or description (query_description=true). Add include_otc=true to include OTC listings.
    GET /stocks/sectors, GET /stocks/industriesEvery sector and industry name, for Stock.Sector and Stock.Industry filters.
    GET /stocks/ticker-typesSecurity type codes (cs, etf, adrc, …) with descriptions, for Universe.Type.
    GET /stocks/hot-tickers?l=10Currently trending stocks: ticker, name, exchange, sector, price and % change.
    GET /misc/market-statusWhether U.S. markets are open, closed or in extended-hours, per exchange, with the server time.

    Next