API reference

Reference

Search, identifiers, exchanges and trading calendars, plus our sector, currency and chain lists.

Supported chains

GET /v1/chains

Free Operation ID reference.chains

Every chain we cover. Token symbols use the namespace, like SOLANA:EPjF...Dt1v.

Query parameters

  • fresh boolean

    Skip our cache and get the latest data. Items refreshed this way cost double

  • format string

    Response format

    One of jsoncsv

    Defaults to json

Response

  • data array of objects
    ShowHide 7 fields
    • evmChainId integer

      The EIP-155 chain id, only on EVM chains

    • id string
    • kind string

      One of evmutxosvmtvmother

    • name string
    • namespace string
    • nativeDecimals integer
    • nativeSymbol string
  • meta object
    ShowHide 3 fields
    • credits integer

      Credits this call cost

    • nextCursor string or null

      Pass as cursor to get the next page, null on the last page

    • requestId string

Errors

400 Bad Request401 Unauthorized402 Payment Required403 Forbidden422 Unprocessable Entity429 Too Many Requests500 Internal Server Error503 Service Unavailable

Every error body is problem+json with a stable code. See errors.

Supported currencies

GET /v1/currencies

Free Operation ID reference.currencies

Every currency prices can be converted into with currency=.

Query parameters

  • fresh boolean

    Skip our cache and get the latest data. Items refreshed this way cost double

  • format string

    Response format

    One of jsoncsv

    Defaults to json

Response

  • data array of objects
    ShowHide 3 fields
    • code string
    • minorUnits integer

      Decimal places of the minor unit, left out for units without one like gold

    • name string
  • meta object
    ShowHide 3 fields
    • credits integer

      Credits this call cost

    • nextCursor string or null

      Pass as cursor to get the next page, null on the last page

    • requestId string

Errors

400 Bad Request401 Unauthorized402 Payment Required403 Forbidden422 Unprocessable Entity429 Too Many Requests500 Internal Server Error503 Service Unavailable

Every error body is problem+json with a stable code. See errors.

Exchanges

GET /v1/exchanges

Free Operation ID reference.exchanges

Every exchange we cover with its country, timezone, currency and regular trading hours in local time.

Query parameters

  • fresh boolean

    Skip our cache and get the latest data. Items refreshed this way cost double

  • format string

    Response format

    One of jsoncsv

    Defaults to json

Response

  • data array of objects
    ShowHide 12 fields
    • aliases array of strings

      Other names symbols can use for this exchange, like ASX

    • breaks array of objects

      Midday pauses, local time

      ShowHide 2 fields
      • end string
      • start string
    • close string

      Regular session close, local time

    • country string
    • currency string
    • mic string
    • name string
    • open string

      Regular session open, local time

    • operatingMic string
    • quoteUnit string

      The minor unit prices are quoted in, like GBX, left out when quoted in major units

    • timezone string

      IANA timezone the hours are in

    • weekend array of strings
  • meta object
    ShowHide 3 fields
    • credits integer

      Credits this call cost

    • nextCursor string or null

      Pass as cursor to get the next page, null on the last page

    • requestId string

Errors

400 Bad Request401 Unauthorized402 Payment Required403 Forbidden422 Unprocessable Entity429 Too Many Requests500 Internal Server Error503 Service Unavailable

Every error body is problem+json with a stable code. See errors.

Exchange trading calendar

GET /v1/exchanges/{mic}/calendar

Free Operation ID reference.exchangeCalendar

Trading sessions between from and to with their open, close and breaks in UTC, plus the holidays and early closes in that range. Up to five years per call, between 2000 and 2099.

Path parameters

  • mic string Required

    A MIC, or an alias like ASX

    Up to 16 characters

Query parameters

  • from date Required

    First day, YYYY-MM-DD

  • to date Required

    Last day, YYYY-MM-DD

Response

  • data object
    ShowHide 4 fields
    • holidays array of objects

      Weekdays in the range the exchange is closed or closes early

      ShowHide 4 fields
      • close string

        The early close in local time, left out when closed all day

      • date date
      • kind string

        One of closedearly_close

      • name string
    • mic string
    • sessions array of objects

      Every trading day in the range

      ShowHide 5 fields
      • breaks array of objects
        ShowHide 2 fields
        • end timestamp
        • start timestamp
      • close timestamp
      • date date
      • earlyClose boolean
      • open timestamp
    • timezone string
  • meta object
    ShowHide 3 fields
    • asOf timestamp or null

      The point in time this data describes, like when a filing was published. Null where that doesn't apply, as with account data

    • credits integer

      Credits this call cost

    • requestId string

Errors

400 Bad Request401 Unauthorized402 Payment Required403 Forbidden404 Not Found422 Unprocessable Entity429 Too Many Requests500 Internal Server Error503 Service Unavailable

Every error body is problem+json with a stable code. See errors.

Instruments listed on an exchange

GET /v1/exchanges/{mic}/instruments

1 credit per page 2 credits with fresh=true Operation ID reference.exchangeInstruments

The exchange's whole listing universe, ordered by ticker.

Path parameters

  • mic string Required

    A MIC, or an alias like ASX

    Up to 16 characters

Query parameters

  • cursor string

    From meta.nextCursor of the previous page

    Up to 512 characters

  • limit integer

    Page size

    From 1 to 1000. Defaults to 100

  • fresh boolean

    Skip our cache and get the latest data. Items refreshed this way cost double

  • format string

    Response format

    One of jsoncsv

    Defaults to json

Response

  • data array of objects
    ShowHide 4 fields
    • industry string or null

      An industry id from /v1/sectors, null when unclassified

    • instrument object
      ShowHide 8 fields
      • country string
      • currency string
      • id string
      • mic string

        Left out for instruments that don't trade on an exchange, like tokens

      • name string
      • symbol string
      • ticker string or null

        The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none

      • type string

        One of equityetffundindexfxcryptotokenratefuturecommoditybondnftoptionwarrant

    • isin string or null
    • snapshotDate date

      The trading day this listing was last seen on

  • meta object
    ShowHide 3 fields
    • credits integer

      Credits this call cost

    • nextCursor string or null

      Pass as cursor to get the next page, null on the last page

    • requestId string

Errors

400 Bad Request401 Unauthorized402 Payment Required403 Forbidden404 Not Found422 Unprocessable Entity429 Too Many Requests500 Internal Server Error503 Service Unavailable

Every error body is problem+json with a stable code. See errors.

Instrument details

GET /v1/instruments

1 credit per instrument 2 credits with fresh=true Operation ID reference.instruments

Every identifier we hold, status, listing dates, and the history of listings and names. Licensed identifiers like CUSIP and SEDOL work as symbols but are never returned.

Query parameters

  • symbols array of strings Required

    Comma-separated identifiers, up to 100, like ASX:VAS, isin:AU000000VAS1 or ins_...

    Up to 100 items

  • listedOn date

    Resolves tickers as the listing that traded on this day, for tickers that have since been reused. A symbol can carry its own day instead, like ASX:CCL@2021-05-10, which overrides this

  • fresh boolean

    Skip our cache and get the latest data. Items refreshed this way cost double

  • format string

    Response format

    One of jsoncsv

    Defaults to json

Response

  • data array of objects
    ShowHide 11 fields
    • asOf timestamp

      The point in time this data describes. For history and events it's the date of the newest record, or the end of your range when there are none. Live values give when they were observed, and reference data gives when we last confirmed it

    • identifiers object

      Only the ones it has

      ShowHide 14 fields
      • apir string
      • cik string
      • compositeFigi string
      • contract string

        chain:address, for tokens

      • cryptoSymbol string
      • currencyCode string

        For a currency itself, like FX:AUD

      • figi string
      • futureCode string
      • fxPair string
      • indexCode string
      • isin string
      • lei string
      • rateCode string
      • shareClassFigi string
    • instrument object

      What the symbol resolved to

      ShowHide 8 fields
      • country string
      • currency string
      • id string
      • mic string

        Left out for instruments that don't trade on an exchange, like tokens

      • name string
      • symbol string
      • ticker string or null

        The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none

      • type string

        One of equityetffundindexfxcryptotokenratefuturecommoditybondnftoptionwarrant

    • listedFrom date or null

      First trading day on any exchange, null when unknown or never listed

    • listedTo date

      Last trading day, or an option's expiry. Left out while listed without an end

    • listings array of objects

      Every exchange and ticker it has traded under, oldest first

      ShowHide 4 fields
      • from date or null

        First trading day, null when unknown

      • mic string
      • ticker string
      • to date

        Last trading day, left out while listed

    • names array of objects

      Every name it has had, oldest first

      ShowHide 3 fields
      • from date or null

        First day under this name, null when unknown

      • name string
      • to date

        Last day under this name, left out for the current name

    • nft object

      Which collection an NFT is from and its token id. Left out for other types

      ShowHide 2 fields
      • collection object

        The collection an item belongs to. Left out on a collection, and when we don't know

        ShowHide 8 fields
        • country string
        • currency string
        • id string
        • mic string

          Left out for instruments that don't trade on an exchange, like tokens

        • name string
        • symbol string
        • ticker string or null

          The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none

        • type string

          One of equityetffundindexfxcryptotokenratefuturecommoditybondnftoptionwarrant

      • tokenId string or null

        The item's token id, null on a collection and on chains without them, like Solana

    • option object

      The terms of an option or warrant. Left out for other types

      ShowHide 7 fields
      • exercise string or null

        One of americaneuropean

      • expiry date or null
      • multiplier number or null

        How many of the underlying one contract is on. Null for contracts adjusted for a corporate action, and when we don't know

      • right string or null

        One of callput

      • strike number or null

        In the instrument's currency

      • underlying object

        What the contract is written on. Left out when we don't know

        ShowHide 8 fields
        • country string
        • currency string
        • id string
        • mic string

          Left out for instruments that don't trade on an exchange, like tokens

        • name string
        • symbol string
        • ticker string or null

          The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none

        • type string

          One of equityetffundindexfxcryptotokenratefuturecommoditybondnftoptionwarrant

      • warrantType string or null

        How the issuer describes a warrant, like trading or instalment

    • status string

      One of activedelistedsuspendedexpired

    • symbol string

      The symbol as sent

  • errors array of objects
    ShowHide 3 fields
    • code string

      One of invalid_symbolinstrument_not_foundnot_supporteddata_unavailabledata_pendingdata_failed

    • message string
    • symbol string
  • meta object
    ShowHide 2 fields
    • credits integer

      Credits this call cost

    • requestId string

Errors

400 Bad Request401 Unauthorized402 Payment Required403 Forbidden422 Unprocessable Entity429 Too Many Requests500 Internal Server Error503 Service Unavailable

Every error body is problem+json with a stable code. See errors.

Instrument logo

GET /v1/logos

Free Operation ID reference.logos

The logo image of any symbol symbols take, for img tags and anyone else, without a key and from any origin. Currencies and FX pairs show the round flag of their base currency. A symbol answers with a redirect to where its logo lives, which also answers any origin, and the logo URLs other responses carry answer with the image itself. Logos come in whatever format their source made them, so SVG, PNG, JPEG, GIF, WebP or AVIF. Answers are cached for a day in browsers and longer at our edge, and a missing logo for an hour.

Query parameters

  • symbol string

    Any identifier symbols take, like ASX:BHP, FX:AUDUSD, FX:AUD, CRYPTO:BTC or SOLANA:<mint>. Send either symbol, or id and v

  • id string

    An instrument id, from a logo URL another response gave

  • v string

    The version from the same logo URL

Errors

400 Neither a symbol nor an id and version, or a symbol we can't read404 No logo for the symbol, or none at that version429 Too many logos from one network, see Retry-After502 The logo is temporarily unavailable503 The logo is still being fetched, ask again after Retry-After

Find instruments

GET /v1/search

1 credit per call 2 credits with fresh=true Operation ID reference.search

Instruments whose name, ticker, ISIN or contract address matches q, best first. Exact tickers and identifiers lead, then tickers and names that start with q, and a company's main listing comes before its other listings. A US exchange that lists nothing matching takes matches on the other US exchanges, since brokers often print NYSE for NYSE Arca. Each page costs the same.

Query parameters

  • q string Required

    A name, ticker, ISIN or contract address

    Up to 100 characters

  • type string

    Only instruments of this type

    One of equityetffundindexfxcryptotokenratefuturecommoditybondnftoptionwarrant

  • exchange string

    Only instruments listed here, as a MIC or an alias like ASX

    Up to 16 characters

  • country string

    Only instruments from this ISO country

    Matches ^[A-Z]{2}$

  • cursor string

    From meta.nextCursor of the previous page

    Up to 512 characters

  • limit integer

    Page size

    From 1 to 1000. Defaults to 100

  • fresh boolean

    Skip our cache and get the latest data. Items refreshed this way cost double

  • format string

    Response format

    One of jsoncsv

    Defaults to json

Response

  • data array of objects
    ShowHide 8 fields
    • country string
    • currency string
    • id string
    • mic string

      Left out for instruments that don't trade on an exchange, like tokens

    • name string
    • symbol string
    • ticker string or null

      The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none

    • type string

      One of equityetffundindexfxcryptotokenratefuturecommoditybondnftoptionwarrant

  • meta object
    ShowHide 3 fields
    • credits integer

      Credits this call cost

    • nextCursor string or null

      Pass as cursor to get the next page, null on the last page

    • requestId string

Errors

400 Bad Request401 Unauthorized402 Payment Required403 Forbidden422 Unprocessable Entity429 Too Many Requests500 Internal Server Error503 Service Unavailable

Every error body is problem+json with a stable code. See errors.

Find instruments in bulk

POST /v1/search

1 credit per query 2 credits with fresh=true Operation ID reference.searchMany

Up to 100 searches in one call, each matching the way a single search does and answered with its first page, in request order. Each query that finds its answer costs what a single search does, and one we can't answer right now is in errors instead.

Query parameters

  • fresh boolean

    Skip our cache and get the latest data. Items refreshed this way cost double

  • format string

    Response format

    One of jsoncsv

    Defaults to json

Request body

  • limit integer

    The most instruments each query answers with

    From 1 to 1000. Defaults to 100

  • queries array of objects Required

    Up to 100 searches

    Up to 100 items

    ShowHide 4 fields
    • country string

      Only instruments from this ISO country

      Matches ^[A-Z]{2}$

    • exchange string

      Only instruments listed here, as a MIC or an alias like ASX

      Up to 16 characters

    • q string Required

      A name, ticker, ISIN or contract address

      Up to 100 characters

    • type string

      Only instruments of this type

      One of equityetffundindexfxcryptotokenratefuturecommoditybondnftoptionwarrant

Response

  • data array of objects
    ShowHide 3 fields
    • instruments array of objects

      Best first

      ShowHide 8 fields
      • country string
      • currency string
      • id string
      • mic string

        Left out for instruments that don't trade on an exchange, like tokens

      • name string
      • symbol string
      • ticker string or null

        The code it's known by, like a listing's ticker, a token's symbol or an unlisted fund's APIR code. Null when it has none

      • type string

        One of equityetffundindexfxcryptotokenratefuturecommoditybondnftoptionwarrant

    • q string

      The query's q as sent

    • query integer

      The query's position in queries

  • errors array of objects
    ShowHide 3 fields
    • code string

      One of data_pendingdata_failed

    • message string
    • query integer

      The query's position in queries

  • meta object
    ShowHide 2 fields
    • credits integer

      Credits this call cost

    • requestId string

Errors

400 Bad Request401 Unauthorized402 Payment Required403 Forbidden422 Unprocessable Entity429 Too Many Requests500 Internal Server Error503 Service Unavailable

Every error body is problem+json with a stable code. See errors.

Sector and industry taxonomy

GET /v1/sectors

Free Operation ID reference.sectors

Our sectors and the industries in each. Profiles, listings and the screener use these ids.

Query parameters

  • fresh boolean

    Skip our cache and get the latest data. Items refreshed this way cost double

  • format string

    Response format

    One of jsoncsv

    Defaults to json

Response

  • data array of objects
    ShowHide 3 fields
    • id string
    • industries array of objects
      ShowHide 2 fields
      • id string
      • name string
    • name string
  • meta object
    ShowHide 3 fields
    • credits integer

      Credits this call cost

    • nextCursor string or null

      Pass as cursor to get the next page, null on the last page

    • requestId string

Errors

400 Bad Request401 Unauthorized402 Payment Required403 Forbidden422 Unprocessable Entity429 Too Many Requests500 Internal Server Error503 Service Unavailable

Every error body is problem+json with a stable code. See errors.