Symbology & Reference Data
Field-by-field reference for Pyth Pro symbol metadata: identifiers, classification, data quality, trading schedules, and futures expiration
Pyth Pro publishes reference data describing every feed it offers: identifiers, classification, data-quality parameters, trading schedules, and (for derivatives) expiration metadata. This data is distinct from the real-time price payload: it describes what a feed is, not its current value.
Reference data is served by the Symbology & Reference Data API:
GET https://pyth.dourolabs.app/v1/symbolsThe endpoint returns one JSON object per feed. This page documents every field on that object. For the request schema and query parameters for filtering (for example by asset_type or instrument_type), see the interactive API reference.
Example response
Every feed is returned as a single JSON object with the same top-level shape. The tabs below show feeds that populate different optional fields, depending on asset class and instrument type.
BKNG, a US equity with regular, pre_market, post_market, and over_night sessions, a nasdaq_symbol, and a corporate_actions stock split:
{
"pyth_lazer_id": 992,
"name": "BKNG",
"symbol": "Equity.US.BKNG/USD",
"description": "BOOKING HOLDINGS INC / US DOLLAR",
"asset_type": "equity",
"instrument_type": "spot",
"exponent": -5,
"cmc_id": null,
"interval": null,
"min_publishers": 3,
"min_channel": "fixed_rate@200ms",
"state": "stable",
"schedule": "America/New_York;0930-1600,0930-1600,0930-1600,0930-1600,0930-1600,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1127/0930-1300,1224/0930-1300,1225/C",
"market_session_schedule": {
"regular": "America/New_York;0930-1600,0930-1600,0930-1600,0930-1600,0930-1600,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1127/0930-1300,1224/0930-1300,1225/C",
"pre_market": "America/New_York;0400-0930,0400-0930,0400-0930,0400-0930,0400-0930,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1225/C",
"post_market": "America/New_York;1600-2000,1600-2000,1600-2000,1600-2000,1600-2000,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1225/C",
"over_night": "America/New_York;0000-0400&2000-2400,0000-0400&2000-2400,0000-0400&2000-2400,0000-0400&2000-2400,0000-0400,C,2000-2400;0118/C,0119/2000-2400,0215/C,0216/2000-2400,0402/0000-0400,0403/C,0524/C,0525/2000-2400,0618/0000-0400,0619/C,0702/0000-0400,0703/C,0906/C,0907/2000-2400,1125/0000-0400,1126/2000-2400,1224/0000-0400,1225/C,1231/0000-0400,0101/C"
},
"market_sessions": {
"regular": {
"min_pub": 3,
"schedule": "America/New_York;0930-1600,0930-1600,0930-1600,0930-1600,0930-1600,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1127/0930-1300,1224/0930-1300,1225/C",
"state": "stable"
},
"pre_market": {
"min_pub": 2,
"schedule": "America/New_York;0400-0930,0400-0930,0400-0930,0400-0930,0400-0930,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1225/C",
"state": "stable"
},
"post_market": {
"min_pub": 2,
"schedule": "America/New_York;1600-2000,1600-2000,1600-2000,1600-2000,1600-2000,C,C;0101/C,0119/C,0216/C,0403/C,0525/C,0619/C,0703/C,0907/C,1126/C,1225/C",
"state": "stable"
},
"over_night": {
"min_pub": 2,
"schedule": "America/New_York;0000-0400&2000-2400,0000-0400&2000-2400,0000-0400&2000-2400,0000-0400&2000-2400,0000-0400,C,2000-2400;0118/C,0119/2000-2400,0215/C,0216/2000-2400,0402/0000-0400,0403/C,0524/C,0525/2000-2400,0618/0000-0400,0619/C,0702/0000-0400,0703/C,0906/C,0907/2000-2400,1125/0000-0400,1126/2000-2400,1224/0000-0400,1225/C,1231/0000-0400,0101/C",
"state": "stable"
}
},
"hermes_id": "e90b679a7e4ca0d591abb634959d38a535c2036c6b121c520a82cff111ff7d12",
"nasdaq_symbol": "BKNG",
"quote_currency": "USD",
"corporate_actions": [
{
"event_type": "SPLIT",
"activation": {
"us_equity_ex_date": {
"ex_date": "2026-04-06"
}
},
"adjustment_factor_numerator": "25",
"adjustment_factor_denominator": "1"
}
],
"groups": []
}Every field is documented below.
Field reference
Field invariants
Useful guarantees when mapping these fields in your own systems:
nameis not guaranteed to be unique; the same short name can appear on more than one feed.symbolis unique, but in rare cases it can change without notice. Usepyth_lazer_idas the stable key for external mappings.asset_typeandinstrument_typeare open enums whose set of values can grow over time, so handle unknown values gracefully.
Identity & naming
| Field | Type | Description |
|---|---|---|
pyth_lazer_id | u32 | Stable numeric identifier for the feed in Pyth Pro. Use it when subscribing to prices. |
name | string | Short symbol name, e.g. BTCUSD. Dated futures suffix the family root with a month code and year digit, e.g. the EM (E-mini S&P 500) family becomes EMU6; see Futures Terminology. |
symbol | string | Fully-qualified Pyth symbol, e.g. Crypto.BTC/USD or Equity.US.EMU6/USD. Encodes asset class, optional region, root, and quote currency. |
description | string | Human-readable description, e.g. BITCOIN / US DOLLAR. |
hermes_id | string? | Hex feed ID used by Pyth Core / Hermes for the same underlying. null when the feed has no Pyth Core counterpart. |
nasdaq_symbol | string? | Nasdaq ticker, for equities sourced via Nasdaq. null when not applicable. |
cmc_id | integer? | CoinMarketCap ID, for crypto assets. null when not applicable. |
Classification
| Field | Type | Description |
|---|---|---|
asset_type | string | Broad asset class (open enum, may grow). Current values include crypto, equity, fx, commodity, metal, interest-rate, rates, crypto-index, crypto-redemption-rate, funding-rate, nav, kalshi. |
instrument_type | string | Instrument form: spot, future, perp, rate, index, or nav. May be an empty string when unspecified. |
quote_currency | string | Currency the price is quoted in, e.g. USD, EUR, KRW, JPY. |
groups | string[] | Discovery/grouping tags, e.g. pyth-indices. Empty for most feeds. |
Pricing & data quality
| Field | Type | Description |
|---|---|---|
exponent | i16 | Decimal exponent: actual_price = mantissa × 10^exponent. Same meaning as in the price payload. |
min_publishers | u16 | Minimum number of publishers required for the feed to produce a price. |
min_channel | string | Highest-frequency channel the feed supports: real_time, fixed_rate@50ms, or fixed_rate@200ms. You can subscribe at this channel or any slower one. |
state | string | Lifecycle state: stable (live), coming_soon (announced, not yet publishing), or inactive (retired/expired). |
interval | string? | Funding interval for funding-rate feeds (instrument type rate), e.g. 8h. null otherwise. |
Scheduling
| Field | Type | Description |
|---|---|---|
schedule | string | The regular session's trading schedule, in the form TZ;<weekly>;<holidays>. Each day is open (O), closed (C), or a set of hour ranges (e.g. 0000-1700&1800-2400). Identical to market_session_schedule.regular. |
market_session_schedule | object | A schedule string per session, keyed by session name (regular, pre_market, post_market, over_night). |
market_sessions | object | The full per-session configuration: each session carries its own schedule, min_pub, and state. |
Three schedule fields, three altitudes
These describe the same trading calendar at increasing detail:
schedule: the regular session's schedule (identical tomarket_session_schedule.regular), not a union across sessions.market_session_schedule: a schedule string for each session the feed has (regular,pre_market,post_market,over_night).market_sessions: the richest form, carrying per-sessionscheduleplusmin_pubandstate.
The price payload's marketSession field tells you which of these sessions is currently active for a given update.
Pick an example or paste a schedule string to decode it into market hours:
America/New_York| Monday | Open 24h |
|---|---|
| Tuesday | Open 24h |
| Wednesday | Open 24h |
| Thursday | Open 24h |
| Friday | Open 24h |
| Saturday | Open 24h |
| Sunday | Open 24h |
Futures
expiration_time describes an individual dated feed. The other three fields describe the chain that feed belongs to — the family of feeds measuring the same underlying at different expirations — and carry the same values on every feed in the chain.
| Field | Type | Description |
|---|---|---|
expiration_time | string? | Expiration timestamp (RFC 3339) for a dated futures feed, e.g. 2026-12-15T13:30:00-05:00. |
symbol_chain_id | string? | Root symbol for the chain of all the futures that measure the same underlying with different expiration times, e.g. CA for the cocoa chain that CAZ6 belongs to. Note this is the bare root, not a fully-qualified symbol. null for feeds that are not part of a futures chain. |
expiration_pattern | string[]? | The total set of expirations per a single year applicable to the chain, as lowercase three-letter month abbreviations, e.g. ["mar", "may", "jul", "sep", "dec"]. |
availability_pattern | string[]? | The subset of expirations per single year already priced or expected to be priced by Pyth, as month codes, e.g. ["H", "K", "N", "U", "Z"]. |
The two patterns use different encodings
expiration_pattern lists month abbreviations (mar), availability_pattern lists month codes (H). Normalize before comparing them. The two often differ in length as well as encoding: copper (CC) expires in all twelve months but Pyth prices only ["H", "K", "N", "U", "Z"].
Chains with no fixed annual cycle — such as the LME 3-month feeds (Metal.AL3M/USD) — report ["none"] for both.
Corporate actions
| Field | Type | Description |
|---|---|---|
corporate_actions | object[]? | Corporate actions on an equity feed. Each entry has an event_type (e.g. SPLIT), an activation block with the effective date (e.g. us_equity_ex_date.ex_date), and adjustment_factor_numerator / adjustment_factor_denominator. See the Equity example. |
Accessing the data
- Symbology & Reference Data API:
GET /v1/symbolsreturns the full catalog. - Filter to your entitlements: pass
?entitled_only=trueto return only the symbols your API key is entitled to, instead of the full catalog. - Interactive docs: explore the request schema and filtering parameters in the OpenAPI reference.
Related
- Price Feed IDs: browsable table of every available feed.
- Futures Terminology: ticker format, month/year codes, and rollover.
- Payload Reference: the real-time price payload (distinct from reference data).