Skip to main content
StockContext covers 5,628 symbols: 5,571 stocks plus 57 ETFs, listed on NYSE, NASDAQ, and the ETF venues NYSE ARCA and BATS (verified 2026-06-13). It is a supported-symbol API, not a market-wide dump: a symbol either resolves to data or it does not. Call /v2/search to discover symbols and /v2/coverage to confirm what a symbol supports before you build a workflow on it.

The universe

The /v2/coverage support map reports eighteen data families: snapshot, profile, fundamentals, valuation, priced-in (reverse-DCF), earnings, dividends, technicals, price action, history, calendar, filings, insider, events, facts, plus the private-beta families ownership, governance, and segments. Each family carries public_visibility: public_core is safe for normal analyst-agent workflows, private_beta is callable only for explicitly enabled/private use, and internal_only is not part of the public product surface. The public MCP and docs surface exposes 21 core routes/tools.
  • 4,446 US-domestic filers route-support the public SEC core. Store-backed SEC facts can still report available_now: false until the per-symbol store has been built.
  • 1,125 foreign private issuers (~20%) file 20-F / 40-F / 6-K instead of US-domestic forms. Domestic-form families such as filings, insider, and events return unsupported for them with reason symbol_does_not_file_us_domestic_forms; SEC facts can still work where filings expose usable XBRL.
  • 57 ETFs carry market and dividend data but no issuer-level financials. Their non-applicable families return unsupported with reasons like not_applicable_for_etf.
Daily price history reaches back up to 30 years, bounded by source availability per symbol (check coverage.start/coverage.end on /v2/history).

What /v2/coverage returns

Coverage is a per-symbol support map. Use available_now before calling a route. supported is kept for back-compat and means route-level support only. For a US-domestic stock, route-level support is true. Store-backed SEC families also disclose whether the backing store is built:
GET /v2/coverage?symbol=AAPL (excerpt)
{
  "data": {
    "symbol": "AAPL",
    "asset_type": "stock",
    "cache_age_seconds": 0,
    "support": {
      "snapshot": {
        "supported": true,
        "route_supported": true,
        "quality_grade": "production_core",
        "public_visibility": "public_core",
        "available_now": true
      },
      "filings": {
        "supported": true,
        "route_supported": true,
        "quality_grade": "production_core",
        "public_visibility": "public_core",
        "available_now": true
      },
      "facts": {
        "supported": true,
        "route_supported": true,
        "quality_grade": "production_core",
        "public_visibility": "public_core",
        "data_collected": true,
        "available_now": true
      },
      "ownership": {
        "supported": true,
        "route_supported": true,
        "quality_grade": "production_beta",
        "public_visibility": "private_beta",
        "data_collected": true,
        "available_now": true
      },
      "segments": {
        "supported": true,
        "route_supported": true,
        "quality_grade": "production_beta",
        "public_visibility": "private_beta",
        "data_collected": true,
        "available_now": true
      }
    }
  }
}
For an ETF, the issuer-level families come back unsupported with a machine-readable reason you can branch on:
GET /v2/coverage?symbol=SPY (excerpt)
{
  "data": {
    "symbol": "SPY",
    "asset_type": "etf",
    "cache_age_seconds": 0,
    "support": {
      "snapshot": {
        "supported": true,
        "route_supported": true,
        "public_visibility": "public_core",
        "available_now": true
      },
      "fundamentals": {
        "supported": false,
        "route_supported": false,
        "data_collected": false,
        "available_now": false,
        "reason": "etf_no_standalone_financial_statements",
        "blocker": "etf_no_standalone_financial_statements"
      },
      "filings": {
        "supported": false,
        "route_supported": false,
        "data_collected": false,
        "available_now": false,
        "reason": "not_applicable_for_etf",
        "blocker": "not_applicable_for_etf"
      },
      "facts": {
        "supported": false,
        "route_supported": false,
        "public_visibility": "public_core",
        "data_collected": false,
        "available_now": false,
        "reason": "not_applicable_for_etf",
        "blocker": "not_applicable_for_etf"
      },
      "segments": {
        "supported": false,
        "route_supported": false,
        "public_visibility": "private_beta",
        "data_collected": false,
        "available_now": false,
        "reason": "not_applicable_for_etf",
        "blocker": "not_applicable_for_etf"
      }
    }
  }
}
For public-agent workflows, branch on both support[family].public_visibility == "public_core" and support[family].available_now. A foreign-issuer stock looks like AAPL above except domestic-form families such as filings, insider, and events carry supported: false with reason symbol_does_not_file_us_domestic_forms.

Where the data ends

StockContext is focused on equity context, not a trading or market-intelligence platform, so an agent always knows exactly where the data ends and never guesses. None of these exist in v2, so do not imply them in UI copy, examples, or generated summaries:
  • options data
  • L2 / order-book depth
  • global equities (US listings only)
  • analyst consensus and price targets
  • earnings-call transcripts
  • news
  • order execution
  • ETF AUM or expense ratios (top holdings are source-state dependent — see /v2/profile holdings and honor unavailable reasons)
  • sector or peer medians (each valuation multiple is ranked against the symbol’s own 3/5/10-year history only, never against peers or a fair-value target)
Market data comes from licensed market-data sources; filings, filing sections, and insider activity come from SEC EDGAR. Provider names are not embedded in payloads.

Cold EDGAR latency

The first read of a given filing pulls from EDGAR and can take up to ~20 seconds for a large 10-K; repeat reads return from cache in well under a second. Listing filings is fast either way: the cold cost is per accession, when metadata and sections are first fetched. Subsequent calls for that company are served from cache and return fast. Design for the cold hit: use a loading state or a background job for SEC-heavy work, control concurrency when you fan out across many filers, and cache successful responses. Retry only retryable errors; never retry an unsupported filings or insider result, because the answer will not change. See error codes for which statuses retry.