Robinhood API Endpoints Reference¶
Robinhood does not publish official API documentation for stocks/options. This reference is based on reverse engineering and live testing. Endpoints may change without notice.
Base URL: https://api.robinhood.com
Batch Limits¶
| Endpoint | Max Batch | Limiting Factor | Safe Default |
|---|---|---|---|
/fundamentals/ |
100 symbols | Hard count limit | 100 |
/quotes/ |
~1,220 symbols | URL length (~5,700 chars) | 1,000 |
/marketdata/options/ |
~17 instruments | URL length | 17 |
Market Data¶
GET /quotes/¶
Current price data for one or many symbols.
Batch: ✅ Up to ~1,220 symbols (comma-separated)
Returns:
| Field | Type | Description |
|---|---|---|
symbol |
string | Ticker symbol |
last_trade_price |
string | Current/last trade price |
previous_close |
string | Previous day's close |
bid_price |
string | Current bid |
ask_price |
string | Current ask |
bid_size |
int | Bid size |
ask_size |
int | Ask size |
last_trade_volume |
string | Volume of last trade |
last_extended_hours_trade_price |
string | After-hours price |
updated_at |
string | Timestamp |
instrument |
string | Instrument URL |
GET /fundamentals/¶
Fundamental data including valuation, 52-week range, and company info.
Batch: ✅ Up to 100 symbols (comma-separated)
Returns:
| Field | Type | Description |
|---|---|---|
high_52_weeks |
string | 52-week high price |
high_52_weeks_date |
string | Date of 52-week high |
low_52_weeks |
string | 52-week low price |
low_52_weeks_date |
string | Date of 52-week low |
market_cap |
string | Market capitalization |
pb_ratio |
string | Price-to-book ratio |
pe_ratio |
string | Price-to-earnings ratio |
shares_outstanding |
string | Total shares outstanding |
float |
string | Public float |
dividend_yield |
string | Dividend yield |
volume |
string | Today's volume |
average_volume |
string | Average daily volume |
average_volume_2_weeks |
string | 2-week average volume |
average_volume_30_days |
string | 30-day average volume |
open |
string | Today's open price |
high |
string | Today's high |
low |
string | Today's low |
sector |
string | Company sector |
industry |
string | Company industry |
description |
string | Company description |
ceo |
string | CEO name |
headquarters_city |
string | HQ city |
headquarters_state |
string | HQ state |
num_employees |
int | Employee count |
year_founded |
int | Year founded |
GET /marketdata/historicals/¶
Historical OHLCV candle data.
Batch: ❌ Single symbol only
Parameters:
| Param | Values |
|---|---|
symbols |
Single ticker |
interval |
5minute, 10minute, hour, day, week |
span |
day, week, month, 3month, year, 5year |
bounds |
regular, extended, trading |
Valid Combinations (verified):
| Interval | day | week | month | 3month | year | 5year |
|---|---|---|---|---|---|---|
5minute |
39 candles | 195 candles | ❌ | ❌ | ❌ | ❌ |
10minute |
39 candles | 195 candles | ❌ | ❌ | ❌ | ❌ |
hour |
6 candles | 30 candles | 120 candles | 357 candles | ❌ | ❌ |
day |
❌ | 5 candles | 20 candles | 60 candles | 251 candles | 1,255 candles |
week |
❌ | ❌ | 4 candles | 13 candles | 52 candles | 261 candles |
Invalid combinations return HTTP 400. Maximum data: 5 years of daily candles (1,255 data points).
Returns (per candle):
| Field | Type | Description |
|---|---|---|
begins_at |
string | Candle start timestamp |
open_price |
string | Open price |
close_price |
string | Close price |
high_price |
string | High price |
low_price |
string | Low price |
volume |
int | Volume |
session |
string | Trading session (reg, pre, post) |
interpolated |
bool | Whether data was interpolated |
GET /marketdata/earnings/¶
Earnings calendar with EPS estimates and actuals.
Batch: ❌ Single symbol
Returns:
| Field | Type | Description |
|---|---|---|
report.date |
string | Earnings date (YYYY-MM-DD) |
report.timing |
string | am or pm |
eps.estimate |
string | Consensus EPS estimate |
eps.actual |
string | Actual EPS (after report) |
GET /midlands/ratings/¶
Analyst ratings and price targets.
Batch: ❌ Single symbol
GET /midlands/news/¶
Recent news articles for a symbol.
Batch: ❌ Single symbol
Indexes¶
GET /indexes/¶
Instrument lookup for index symbols (SPX, NDX, VIX, RUT, XSP). Used instead of /instruments/ when fetching index option chains.
Returns:
| Field | Type | Description |
|---|---|---|
id |
string | Index instrument UUID |
symbol |
string | Index symbol |
tradable_chain_ids |
list | Options chain IDs (plural — indexes can have multiple chains) |
GET /marketdata/indexes/values/v1/{id}/¶
Market data (quote) for an index instrument.
Returns: Same fields as /marketdata/quotes/ — last_trade_price, bid_price, ask_price, etc.
Options¶
GET /options/chains/¶
Available options expiration dates for a symbol.
Warning
For equity options: use equity_instrument_ids param. Get the instrument ID from /instruments/?symbol=AAPL first.
For index options: use ids param with a chain ID from /indexes/?symbol=SPX → tradable_chain_ids[0].
Returns:
| Field | Type | Description |
|---|---|---|
expiration_dates |
list | Available expiration dates |
symbol |
string | Underlying symbol |
trade_value_multiplier |
string | Contract multiplier (usually 100) |
GET /options/instruments/¶
Option contracts filtered by symbol, expiration, and type.
GET /options/instruments/?chain_symbol=AAPL&expiration_dates=2026-04-17&state=active&type=call
GET /options/instruments/?chain_symbol=SPXW&expiration_dates=2026-04-17&state=active&type=call
Note
For index options, use the mapped chain symbol: SPX → SPXW, NDX → NDXP, VIX → VIXW, RUT → RUTW. pyhood handles this mapping automatically.
Returns (per contract):
| Field | Type | Description |
|---|---|---|
id |
string | Option instrument ID |
url |
string | Full instrument URL |
strike_price |
string | Strike price |
expiration_date |
string | Expiration date |
type |
string | call or put |
state |
string | active, expired |
GET /marketdata/options/¶
Market data and Greeks for option instruments.
Warning
Pass full instrument URLs, not IDs. Max ~17 per request.
Returns:
| Field | Type | Description |
|---|---|---|
adjusted_mark_price |
string | Mid-market price |
bid_price |
string | Bid price |
ask_price |
string | Ask price |
implied_volatility |
string | IV (decimal, e.g., 0.35 = 35%) |
delta |
string | Delta |
gamma |
string | Gamma |
theta |
string | Theta |
vega |
string | Vega |
rho |
string | Rho |
volume |
int | Day's volume |
open_interest |
int | Open interest |
chance_of_profit_long |
string | Estimated chance of profit (long) |
chance_of_profit_short |
string | Estimated chance of profit (short) |
Discovery & Lists¶
GET /midlands/movers/sp500/¶
Top 10 S&P 500 daily movers.
Returns: 10 stocks with symbol, price_movement, description
GET /midlands/tags/tag/{tag}/¶
Pre-built stock lists by category.
Available tags:
| Tag | ~Count | Description |
|---|---|---|
100-most-popular |
100 | Top 100 stocks on Robinhood |
top-movers |
20 | Daily movers |
most-popular-under-25 |
24 | Retail-popular cheap stocks |
upcoming-earnings |
70 | Earnings in next 2 weeks |
new-on-robinhood |
172 | Recently added |
large-cap |
88 | Large cap stocks |
mid-cap |
16 | Mid cap stocks |
small-cap |
104 | Small cap stocks |
etf |
500 | ETFs |
technology |
500 | Tech sector |
finance |
500 | Financial sector |
energy |
386 | Energy sector |
healthcare |
212 | Healthcare sector |
real-estate |
453 | Real estate sector |
banking |
441 | Banking sector |
retail |
500 | Retail sector |
manufacturing |
495 | Manufacturing sector |
insurance |
293 | Insurance sector |
utilities |
222 | Utilities sector |
food |
219 | Food sector |
media |
192 | Media sector |
reit |
203 | REITs |
automotive |
175 | Automotive sector |
entertainment |
138 | Entertainment sector |
china |
104 | Chinese stocks |
aerospace |
99 | Aerospace sector |
gold |
69 | Gold-related |
oil |
66 | Oil-related |
e-commerce |
53 | E-commerce |
travel |
47 | Travel sector |
silver |
34 | Silver-related |
social-media |
13 | Social media companies |
Returns: instruments (list of instrument URLs), name, description
Instruments¶
GET /instruments/¶
List or search all instruments.
GET /instruments/?active_instruments_only=true # All tradeable (~4,909 stocks)
GET /instruments/?query=apple # Search by name
GET /instruments/?symbol=AAPL # Exact symbol lookup
Paginated: ✅ 100 per page
Returns:
| Field | Type | Description |
|---|---|---|
id |
string | Instrument UUID |
url |
string | Full instrument URL |
symbol |
string | Ticker symbol |
name |
string | Full company name |
simple_name |
string | Short company name |
tradeable |
bool | Currently tradeable |
state |
string | active, inactive |
type |
string | stock, etp, adr |
tradable_chain_id |
string | Options chain ID (if available) |
market |
string | Market URL |
country |
string | Country code |
list_date |
string | IPO / listing date |
Account¶
GET /positions/¶
Current stock positions.
Returns: quantity, average_buy_price, instrument, created_at
GET /options/aggregate_positions/¶
Current option positions.
GET /portfolios/¶
Portfolio summary with total value.
GET /accounts/¶
Account details with buying power and cash balances.
GET /orders/¶
Stock order history (paginated).
GET /options/orders/¶
Options order history (paginated).
GET /midlands/lists/default/¶
Your default watchlist.
GET /dividends/¶
Dividend payment history.
Profile¶
GET /user/¶
Basic account information (user ID, URLs).
GET /user/investment_profile/¶
| Field | Type | Description |
|---|---|---|
total_net_worth |
string | Self-reported net worth |
annual_income |
string | Self-reported income |
risk_tolerance |
string | Risk preference |
investment_experience |
string | Experience level |
Futures¶
GET /arsenal/v1/futures/contracts/symbol/{symbol}/¶
Contract details for a single futures symbol.
Note
Requires Rh-Contract-Protected: true header (set automatically by pyhood).
Returns:
| Field | Type | Description |
|---|---|---|
id |
string | Contract UUID |
symbol |
string | Futures symbol (e.g. ESH26) |
simple_name |
string | Human-readable name |
expiration_date |
string | Expiration date (YYYY-MM-DD) |
tick_size |
string | Minimum price increment |
multiplier |
string | Contract multiplier |
state |
string | active, expired |
underlying_symbol |
string | Root symbol (e.g. ES) |
asset_class |
string | Asset class (e.g. equity_index) |
GET /marketdata/futures/quotes/v1/¶
Real-time quotes for futures contracts.
Parameters:
| Param | Description |
|---|---|
ids |
Contract UUID (from contract lookup) |
Returns:
| Field | Type | Description |
|---|---|---|
last_trade_price |
string | Last trade price |
bid_price |
string | Current bid |
ask_price |
string | Current ask |
high_price |
string | Session high |
low_price |
string | Session low |
previous_close |
string | Previous close |
volume |
string | Trading volume |
open_interest |
string | Open interest |
GET /ceres/v1/accounts/¶
Futures account discovery. Filter by accountType == 'FUTURES' to find the futures account ID.
Returns: List of accounts with id, accountType fields.
GET /ceres/v1/accounts/{account_id}/orders/¶
Historical futures orders with cursor-based pagination.
Paginated: Yes (cursor-based, uses next URL)
Returns (per order):
| Field | Type | Description |
|---|---|---|
id |
string | Order UUID |
symbol |
string | Futures symbol |
side |
string | buy or sell |
type |
string | Order type |
quantity |
string | Number of contracts |
price |
string | Order price |
state |
string | filled, pending, cancelled |
created_at |
string | Timestamp |
opening_strategy |
string | Set on opening orders |
closing_strategy |
string | Set on closing orders |
legs[].executions[].settlement.realized_pnl |
string | P&L (nested, closing orders only) |
Debit Card (Cash Management)¶
GET https://minerva.robinhood.com/history/transactions/¶
Debit card transaction history. Uses a different base URL (minerva.robinhood.com) but the same OAuth bearer token.
GET https://minerva.robinhood.com/history/transactions/
GET https://minerva.robinhood.com/history/transactions/?type=pending
Parameters:
| Param | Values | Description |
|---|---|---|
type |
pending, settled |
Filter by transaction state |
Paginated: ✅ Standard next/previous pagination
Returns (per transaction):
| Field | Type | Description |
|---|---|---|
id |
string | Transaction UUID |
description |
string | Transaction description |
amount |
string | Dollar amount |
category |
string | Transaction category |
direction |
string | debit or credit |
state |
string | completed, pending |
initiated_at |
string | Timestamp when initiated |
completed_at |
string | Timestamp when settled |
merchant |
object | Merchant details (includes name) |
Warning
This is an undocumented internal API. It may change without notice. Requires an active Cash Management / debit card on the account.
Authentication¶
POST /oauth2/token/¶
Login (password grant) or refresh (refresh_token grant).
See Authentication for details.
POST /oauth2/revoke_token/¶
Logout and revoke tokens.
Markets¶
GET /markets/¶
List of available markets (NYSE, NASDAQ, etc.).
GET /markets/{market}/hours/{date}/¶
Market hours for a specific date. Returns open/close times and whether the market is open.