Skip to content

Stock Token APIs

Robinhood provides a set of read-only REST endpoints under https://api.robinhood.com/rhj/ for offchain access to Stock Token data — live prices, corporate actions, and asset metadata (including the corporate-action multiplier).

All endpoints are rate-limited to 60 requests/second and cached; respect the per-endpoint cache window to avoid stale reads.

Prices differ between surfaces. The REST /prices endpoint returns the raw underlying-equity bid/ask (not multiplier-adjusted). The onchain Chainlink feed returns the multiplier-adjusted value. If you mix the two, apply currentMultiplier from /assets to convert. See Building with Stock Tokens for the onchain multiplier details.

/assets

Endpoint: GET https://api.robinhood.com/rhj/assets

Asset metadata for Stock Tokens, including the current corporate-action multiplier and per-chain deployments.

Schema

FieldTypeNotes
idstringOnchain uid(), 0x + 66-char lowercase hex. Same across all chains for one asset.
tokenSymbolstringe.g. AAPL.
tokenNamestringDisplay name.
deployments[]arrayOne entry per chain.
deployments[].contractAddressstringEIP-55 checksummed address.
deployments[].chainIdintegerEIP-155 chain id.
currentMultiplierstring (decimal)18-dp shares-per-token.
pendingMultiplierstring (decimal)"" when none pending.
pendingMultiplierEffectiveTimestring (RFC-3339)Present only when a multiplier change is pending; omitted otherwise.
logoUrlstringPublic CDN logo, derived from the representative deployment's address (lowercased): https://cdn.robinhood.com/ncw_assets/logos/<address>.png.
tradingCapabilitiesobjectUnderlying-equity trading capabilities, echoed from the underlier verbatim. Omitted when the underlier can't be resolved.
statusenumAssetStatus.

AssetStatus

status is one of:

Value
ASSET_STATUS_UNSPECIFIED
ASSET_STATUS_ACTIVE
ASSET_STATUS_INACTIVE

tradingCapabilities

An object echoing the underlying equity's Source tradability fields verbatim. The whole object is omitted / null when the tokenized asset's underlying equity can't be resolved in Source (no active asset-mapping, or the equity lookup returns nothing). When present, each sub-field is independently nullable — null on a sub-field means Source has that equity but has not set that particular field (distinct from the value untradable, which is an affirmative "not tradable" state).

FieldTypeNotes
fractionalTradabilitystring | nullFractional-share tradability of the underlier.
allDayTradabilitystring | nullRH all-day / overnight (24/5) trading flag for the underlier.
extendedHoursFractionalTradabilityboolean | nullWhether fractional trading is enabled during extended hours.
fractionalTradability
ValueMeaning
tradableFractional trading allowed.
untradableFractional trading not allowed.
position_closing_onlyExisting positions may only be closed; no new fractional opens.
position_opening_onlyFractional opens only; no fractional closes.
nullSource has not set this field on the underlier.
allDayTradability
ValueMeaning
tradableUnderlier is enabled for all-day / 24-5 trading.
untradableNot enabled for all-day trading.
position_closing_onlyAll-day session may only close existing positions.
"" (empty string)Source explicit "blank" state for this field (distinct from null).
nullSource has not set this field on the underlier.
extendedHoursFractionalTradability
ValueMeaning
trueFractional trading enabled during extended hours.
falseFractional trading disabled during extended hours.
nullSource has not set this field on the underlier.

Example

{
  "assets": [
    {
      "id": "0x0000000000000000000000000000000002c4d1ce31ec4310b2c507c921a52b70",
      "tokenSymbol": "P",
      "tokenName": "Everpure • Robinhood Token",
      "deployments": [
        {
          "contractAddress": "0x1Cdad396DB64BDa184d5182A97Dd9B3C62100b7D",
          "chainId": 4663
        }
      ],
      "currentMultiplier": "1.000000000000000000",
      "pendingMultiplier": "",
      "logoUrl": "https://cdn.robinhood.com/ncw_assets/logos/0x1cdad396db64bda184d5182a97dd9b3c62100b7d.png",
      "tradingCapabilities": {
        "fractionalTradability": "tradable",
        "allDayTradability": "tradable",
        "extendedHoursFractionalTradability": true
      },
      "status": "ASSET_STATUS_ACTIVE"
    },
    {
      "id": "0x0000000000000000000000000000000004a960b45163413698f0f69b5454785d",
      "tokenSymbol": "APLD",
      "tokenName": "Applied Digital • Robinhood Token",
      "deployments": [
        {
          "contractAddress": "0xb8DBf92F9741c9ac1c32115E78581f23509916FD",
          "chainId": 4663
        }
      ],
      "currentMultiplier": "1.000000000000000000",
      "pendingMultiplier": "",
      "logoUrl": "https://cdn.robinhood.com/ncw_assets/logos/0xb8dbf92f9741c9ac1c32115e78581f23509916fd.png",
      "tradingCapabilities": {
        "fractionalTradability": "tradable",
        "allDayTradability": "untradable",
        "extendedHoursFractionalTradability": false
      },
      "status": "ASSET_STATUS_ACTIVE"
    }
  ]
}

/prices

Endpoint: GET https://api.robinhood.com/rhj/prices/{symbol}

CacheRate Limit
15s60 req/s

Please use /{symbol} whenever applicable to prevent additional latency.

Live token-denominated USD bid/ask. Prices are the raw underlying-equity bid/ask passed through as-is — they are not multiplier-adjusted. Apply currentMultiplier from /assets if you need the token-equivalent value.

Schema

FieldTypeNotes
tokenSymbolstringNo X prefix.
deployments[]arraySame shape as /assets.
bidstring (decimal)Raw underlying-equity bid, passed through as-is (not multiplier-adjusted).
askstring (decimal)Raw underlying-equity ask. Same semantics as bid.
currencystring"USD" at launch.
dailyTradingVolumestring (decimal)Underlying daily trading volume. "0" when unavailable.
isTradingHaltbooleantrue when the asset has an active trading halt.
generatedAtstring (ISO-8601)Server time the quote was generated.

Example

{
  "quotes": [
    {
      "tokenSymbol": "AAPL",
      "deployments": [
        { "contractAddress": "0xAbCdEf0123456789AbCdEf0123456789AbCdEf01", "chainId": 4663 }
      ],
      "bid": "213.45",
      "ask": "213.47",
      "currency": "USD",
      "dailyTradingVolume": "48293710",
      "isTradingHalt": false,
      "generatedAt": "2026-06-23T15:53:30Z"
    }
  ]
}

/corporate-actions

Endpoint: GET https://api.robinhood.com/rhj/corporate-actions

CacheRate Limit
1 hour60 req/s

Processed corporate actions for Stock Tokens, most-recent processDate first. Each entry's details object has exactly one key present, determined by type; all *Rate fields are decimal strings. Use this endpoint to reconcile why a token's multiplier changed onchain — for example, a FORWARD_SPLIT entry with oldRate/newRate explains a corresponding uiMultiplier() update.

Schema

FieldTypeNotes
idstringOnchain uid(), 0x + 66-char hex. Stable for dedup across chains.
typeenumCorporateActionType.
statusenumCorporateActionStatus.
processDateobject {year,month,day}ctok scheduling date; for splits, the multiplier-effective date. Omitted/null on in-progress rows with no scheduled date. Not the dividend payable date.
tokenSymbolstringNo X prefix.
deployments[]arraySame shape as /assets.
detailsobjectExactly one key set, matching type. See Details variants.

CorporateActionType

ValueActive at launch
CORPORATE_ACTION_TYPE_UNSPECIFIED
CORPORATE_ACTION_TYPE_FORWARD_SPLITyes
CORPORATE_ACTION_TYPE_REVERSE_SPLITyes
CORPORATE_ACTION_TYPE_CASH_DIVIDENDyes
CORPORATE_ACTION_TYPE_STOCK_DIVIDENDyes
CORPORATE_ACTION_TYPE_SPIN_OFFno (forward-compat)
CORPORATE_ACTION_TYPE_CASH_MERGERno (forward-compat)
CORPORATE_ACTION_TYPE_STOCK_MERGERno (forward-compat)
CORPORATE_ACTION_TYPE_STOCK_AND_CASH_MERGERno (forward-compat)
CORPORATE_ACTION_TYPE_REDEMPTIONno (forward-compat)
CORPORATE_ACTION_TYPE_NAME_CHANGEno (forward-compat)
CORPORATE_ACTION_TYPE_WORTHLESS_REMOVALno (forward-compat)
CORPORATE_ACTION_TYPE_RIGHTS_DISTRIBUTIONno (forward-compat)
CORPORATE_ACTION_TYPE_UNIT_SPLITno (forward-compat)

CorporateActionStatus

ValueOn the wire
CORPORATE_ACTION_STATUS_UNSPECIFIEDnever
CORPORATE_ACTION_STATUS_IN_PROGRESSyes (Source PENDING + READY)
CORPORATE_ACTION_STATUS_COMPLETEDyes

Details variants

Exactly one key is present, determined by type. All *Rate fields are decimal strings.

typedetails keyFields
..._FORWARD_SPLITforwardSplitunderlyingSymbol, oldRate, newRate
..._REVERSE_SPLITreverseSplitunderlyingSymbol, oldRate, newRate
..._CASH_DIVIDENDcashDividendunderlyingSymbol, rate (USD per share)
..._STOCK_DIVIDENDstockDividendunderlyingSymbol, rate (shares per share)
..._SPIN_OFFspinOffsourceUnderlyingSymbol, sourceRate, newUnderlyingSymbol, newRate
..._CASH_MERGERcashMergeracquireeUnderlyingSymbol, cashRate
..._STOCK_MERGERstockMergeracquirerUnderlyingSymbol, acquirerRate, acquireeUnderlyingSymbol, acquireeRate
..._STOCK_AND_CASH_MERGERstockAndCashMergeracquirerUnderlyingSymbol, acquirerRate, acquireeUnderlyingSymbol, acquireeRate, cashRate
..._REDEMPTIONredemptionunderlyingSymbol, rate
..._NAME_CHANGEnameChangeoldUnderlyingSymbol, newUnderlyingSymbol
..._WORTHLESS_REMOVALworthlessRemovalunderlyingSymbol
..._RIGHTS_DISTRIBUTIONrightsDistributionsourceUnderlyingSymbol, newUnderlyingSymbol, rate
..._UNIT_SPLITunitSplitoldUnderlyingSymbol, oldRate, newUnderlyingSymbol, newRate, alternateUnderlyingSymbol, alternateRate

Example

{
  "corpActions": [
    {
      "id": "0x00000000000000000000000000000000c2425be3658540dd8e2424cbf3c5c649",
      "type": "CORPORATE_ACTION_TYPE_FORWARD_SPLIT",
      "status": "CORPORATE_ACTION_STATUS_COMPLETED",
      "processDate": { "year": 2026, "month": 6, "day": 15 },
      "tokenSymbol": "AAPL",
      "deployments": [
        { "contractAddress": "0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9", "chainId": 4663 }
      ],
      "details": {
        "forwardSplit": { "underlyingSymbol": "AAPL", "oldRate": "1", "newRate": "4" }
      }
    }
  ]
}

Next steps