---
title: "Stock-market reading for an entity (Starter+): ticker, exchange, price, % change and provenance — its own listing or that of its public owner/parent. `history=true` returns the stored series. Null when not publicly traded (and no public owner) or the markets collector is disabled."
method: GET
path: "/entities/{entityId}/markets"
tags: ["Layer 1 — Profile"]
---

# Stock-market reading for an entity (Starter+): ticker, exchange, price, % change and provenance — its own listing or that of its public owner/parent. \`history=true\` returns the stored series. Null when not publicly traded (and no public owner) or the markets collector is disabled.

`GET /entities/{entityId}/markets`

## Request

- Base URL: `https://entidex.com/api/v1`
- URL: `https://entidex.com/api/v1/entities/{entityId}/markets`
- Auth: HTTP bearer

## Path parameters

- `entityId` string, required

## Query parameters

- `history` boolean

## Response `200`

OK

- object
  - `data` PublicMarketData: Stock-market reading for an entity (CANON Amendment 21): its own listing or that of its public owner/parent. The price provider is internal (CANON §7) — `source` is a freshness class.
    - `found` true, required
    - `symbol` string, nullable, required
    - `exchange` string, nullable, required
    - `price` number, nullable, required
    - `currency` string, nullable, required
    - `changePct` number, nullable, required
    - `marketCapUsd` number, nullable, required
    - `asOf` string, date-time, nullable, required: ISO timestamp the quote reflects.
    - `live` boolean, required: true = near-real-time, false = end-of-day / delayed.
    - `source` 'real-time' | 'delayed', nullable, required: Quote freshness class — provider names are internal (CANON §7).
    - `viaPublicOwner` object, nullable, required: Set when the reading comes from a public owner/parent, not the entity itself.
      - `ownerSlug` string
      - `relationship` string
    - `confidence` integer, required: 0–100 (lower for EOD / owner-derived).
    - `collectedAt` string, date-time, required
  - `meta` ResponseMeta
    - `requestId` string, required
    - `timestamp` string, date-time, required
    - `apiVersion` string, required
    - `pagination` object
      - `cursor` string, nullable
      - `hasMore` boolean
      - `limit` integer
    - `rateLimit` object
      - `limit` integer
      - `remaining` integer
      - `resetAt` string, date-time
    - `billing` object
      - `creditsUsed` integer
      - `creditsRemaining` integer, nullable
      - `tier` 'free' | 'layer_0_discovery' | 'layer_1_profile' | 'layer_2_insight' | 'layer_3_drift' | 'layer_4_cohort'
      - `allowedLayers` integer[]: Cumulative layer ladder unlocked by this key (0=discovery … 4=cohort). free → []; layer_2_insight → [0,1,2].
      - `mode` 'demo' | 'free' | 'payg' | 'keyed': How the caller is billed: demo (feedback-loop key), free (monthly allowance), payg (Developer PAYG), keyed (paid subscription).
  - `errors` ApiError[]
    - `code` 'ENTITY_NOT_RESOLVED' | 'ENTITY_NOT_FOUND' | 'INVALID_PARAMETER' | 'RATE_LIMITED' | 'INSUFFICIENT_CREDITS' | 'TIER_NOT_AVAILABLE' | 'UNAUTHENTICATED' | 'FORBIDDEN' | 'INTERNAL_ERROR', required
    - `message` string, required
    - `field` string
    - `candidates` object[]

---

[API](https://skmtc.dev/entidex/apis/entidex-api.md) · [All operations](https://skmtc.dev/entidex/apis/entidex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/entidex/apis/entidex-api/revisions/86b92f21a09a?raw)
