Skip to main content

A simple yet robust API client for Robinhood

Project description


A simple yet robust (stock+options) API client for Robinhood

Build Status   Coverage Status   Version

PLEASE NOTE - breaking changes introduced in 1.0.0 release

Sometime during Spring 2019, Robinhood changed how their API handles authentication. In order to adapt to those changes, I've moved "authentication" outside this library to fast_arrow_auth,

Please see:

  • issue 35 for a detailed account of the issue
  • this comment for the approach I've taken to remediate auth issues
  • this PR for a run down on exact code changes

I have released these changes under version 1.0.0 to follow semantic version guidelines (since auth changes are incompatible API changes).


from fast_arrow import Client, Stock, OptionChain, Option

# new auth process as of 1.0.0
# get auth_data (see
with open("fast_arrow_auth.json") as f:
    auth_data = json.loads(

# initialize client with auth_data
client = Client(auth_data)

# fetch the stock info for TLT
symbol = "TLT"
stock = Stock.fetch(client, symbol)

# get the TLT option chain
stock_id = stock["id"]
option_chain = OptionChain.fetch(client, stock_id)

# let's get TLT options (calls and puts) for next 4 expiration dates
oc_id = option_chain["id"]
eds = option_chain['expiration_dates'][0:3]

# get all options on the TLT option chain
ops = Option.in_chain(client, oc_id, expiration_dates=eds)

# merge in market data fro TLT option instruments (ask, bid, delta, theta, etc)
ops = Option.mergein_marketdata_list(client, ops)


Install the package from pypi,

pip install fast_arrow

design principles

You might be asking, "yet another Robinhood client? There's already a few out there. What's different about this one?"

fast_arrow holds to these design principles,

  • focus on simple features that expose data. Don't interpret data.
  • make stock & option operations easy to reason through & execute with code
  • organize code in small and discrete python classes
  • use fast_arrow_auth to handle authentication process


Here's what you can do with fast_arrow (some features still in development)


  • get quotes
  • fetch historical data
  • fetch all stock trades
  • submit orders
  • fetch earning events (past and future)
  • fetch company news articles
  • fetch company fundamentals
  • fetch popularity data


  • fetch option quotes (example)
  • fetch open option positions (example)
  • fetch all option orders (filled, canceled, rejected)
  • fetch historical options data (example)
  • fetch option events (example)
  • generate option strategy orders
  • generate humanized names for option strategies
  • submit order (example)
  • cancel order (example)
  • replace order (example)


  • fetch historical value of portfolio (example)


Want to propose a feature? Open a feature request or open a Pull Request.


Install pipenv, and then run,

pipenv install --dev

Run the test suite via,

make test

Run all the examples (make sure you add username/password to config.debug.ini),


Run the test suite against a specific python version,

pipenv run tox -e py36


Adding so I don't forget the next time I release a version,

python sdist bdist_wheel
twine upload dist/*

supporting libraries

projects using fast_arrow

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fast_arrow-1.0.3.tar.gz (155.8 kB view hashes)

Uploaded source

Built Distribution

fast_arrow-1.0.3-py3-none-any.whl (163.1 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page