IEX Finance API Ruby Client
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Preparing for next development iteration, 0.4.5. Dec 27, 2018
spec
.gitignore Fetch a single stock quote with IEX::Quote.get. Mar 23, 2018
.rspec
.rubocop.yml
.rubocop_todo.yml
.travis.yml
CHANGELOG.md Preparing for next development iteration, 0.4.5. Dec 27, 2018
CONTRIBUTING.md
Dangerfile Add danger-toc gem Aug 14, 2018
Gemfile
LICENSE.md
README.md
RELEASING.md Fetch a single stock quote with IEX::Quote.get. Mar 23, 2018
Rakefile
UPGRADING.md Bump to v0.4.0 and add UPGRADING docs Jul 29, 2018
iex-ruby-client.gemspec

README.md

IEX Finance API

Gem Version Build Status

A Ruby client for the IEX Finance API.

Table of Contents

Installation

Add to Gemfile.

gem 'iex-ruby-client'

Run bundle install.

Methods Available

Usage

Get a Single Price

Fetches a single number, being the IEX real time price, the 15 minute delayed market price, or the previous close price.

IEX::Resources::Price.get('MSFT') # 93.78

See #price for detailed documentation.

Get a Quote

Fetches a single stock quote.

quote = IEX::Resources::Quote.get('MSFT')

quote.latest_price # 90.165
quote.change # 0.375
quote.change_percent # 0.00418
quote.change_percent_s # '+0.42%'

See #quote for detailed documentation or quote.rb for returned fields.

Get a OHLC (Open, High, Low, Close) price

Fetches a single stock OHLC price. Open and Close prices contain timestamp.

ohlc = IEX::Resources::OHLC.get('MSFT')

ohlc.close.price # 90.165
ohlc.close.time #
ohlc.open.price # 0.375
ohlc.open.time
ohlc.high # 0.00418
ohlc.low # '+0.42%'

Get a market OHLC (Open, High, Low, Close) prices

Fetches a hash market OHLC prices.

market = IEX::Resources::OHLC.market
market['SPY'].close.price # 278.56
market['SPY'].close.time # 2018-06-11 23:00:00 +0300
market['SPY'].open.price # 279.05
market['SPY'].open.time # 2018-06-12 16:30:00 +0300
market['SPY'].high #
market['SPY'].low #

Get Company Information

Fetches company information for a symbol.

company = IEX::Resources::Company.get('MSFT')

company.ceo # 'Satya Nadella'
company.company_name # 'Microsoft Corporation'

See #company for detailed documentation or company.rb for returned fields.

Get a Company Logo

Fetches company logo for a symbol.

logo = IEX::Resources::Logo.get('MSFT')

logo.url # 'https://storage.googleapis.com/iex/api/logos/MSFT.png'

See #logo for detailed documentation or logo.rb for returned fields.

Get Recent News

Fetches news for a symbol.

news = IEX::Resources::News.get('MSFT')

news.size # 10

latest = news.first
latest.headline # 'Smartsheet files for $100M IPO with growing losses'
latest.url # 'https://...'

Use market to get market-wide news.

news = IEX::Resources::News.get(:market)

Retrieve a range between 1 and 50.

news = IEX::Resources::News.get('MSFT', 5)

See #news for detailed documentation or news.rb for returned fields.

Get Chart

Fetches charts for a symbol.

chart = IEX::Resources::Chart.get('MSFT')

chart.size # 38510

first = chart.first
first.label # '9:30 AM'
first.high # 94.97

You can specify a chart range and additional options.

IEX::Resources::Chart.get('MSFT', 'dynamic') # 1d or 1m data depending on the day or week and time of day
IEX::Resources::Chart.get('MSFT', Date.new(2018, 3, 26)) # a specific date
IEX::Resources::Chart.get('MSFT', '1d', chart_interval: 10) # every n-th data point

Get Key Stats

Fetches company's key stats for a symbol.

key_stats = IEX::Resources::KeyStats.get('MSFT')

key_stats.symbol # MSFT
key_stats.market_cap # 825814890000
key_stats.market_cap_dollars # '$825,814,890,000'
key_stats.beta # 1.261768
key_stats.week_52_high # 111.15
key_stats.week_52_high_dollar # '$111.15'
key_stats.week_52_low # 71.28
key_stats.week_52_low_dollar # '$71.28'
key_stats.week_52_change_dollar # '$51.77'
key_stats.short_interest # 47158592
key_stats.short_date # '2018-07-13'
key_stats.dividend_rate # 1.68
key_stats.dividend_yield # 1.5617738
key_stats.ex_dividend_date # '2018-08-15 00:00:00.0'
key_stats.latest_eps # 2.11
key_stats.latest_eps_date # '2018-06-30'
key_stats.shares_outstanding # 7677000000
key_stats.float # 7217387757
key_stats.return_on_equity # 20.82
key_stats.consensus_eps # 0.86
key_stats.number_of_estimates # 14
key_stats.eps_surprise_dollar # nil
key_stats.eps_surprise_percent # 11.6279
key_stats.eps_surprise_percent_s # '+1162.79%'
key_stats.ebitda # 23558000000
key_stats.revenue_dollar # '$53,456,000,000'
key_stats.gross_profit # 34114000000
key_stats.gross_profit_dollar # '$34,114,000,000'
key_stats.cash_dollar # '$281,251,000,000'
key_stats.ttm_eps # 3.51
key_stats.revenue_per_share # 7
key_stats.revenue_per_employee # 431097
key_stats.pe_ratio_high # 0
key_stats.pe_ratio_low # 0
key_stats.return_on_assets # 6.46
key_stats.return_on_capital # nil
key_stats.profit_margin # 15.1
key_stats.price_to_sales # 7.393182
key_stats.price_to_sales_dollar # '$7.39'
key_stats.price_to_book # 10.73
key_stats.price_to_book_dollar # '$10.73'
key_stats.day_200_moving_avg # 91.99065
key_stats.day_50_moving_avg # 102.2528
key_stats.institution_percent # 75.1
key_stats.institution_percent_s # '+7510.00%'
key_stats.insider_percent # nil
key_stats.insider_percent_s # nil
key_stats.short_ratio # 1.7330703
key_stats.year_5_change_percent # 2.85141424991049
key_stats.year_5_change_percent_s # '+285.14%'
key_stats.year_2_change_percent # 0.9732002824884664
key_stats.year_2_change_percent_s # '+97.32%'
key_stats.year_1_change_percent # 0.5200287133805482
key_stats.year_1_change_percent_s # '+52.00%'
key_stats.ytd_change_percent # 0.2628699562098638
key_stats.month_6_change_percent # 0.23345097958275707
key_stats.month_6_change_percent_s # '+23.35%'
key_stats.month_3_change_percent # 0.14846686026648437
key_stats.month_3_change_percent_s # '+14.85%'
key_stats.month_1_change_percent # 0.08601716304896513
key_stats.month_1_change_percent_s # '+8.60%'
key_stats.day_5_change_percent # -0.0010215453194652084
key_stats.day_5_change_percent_s # '-0.10%'

See #key-stats for detailed documentation or key_stats.rb for returned fields.

Get Dividends

Fetches dividends for a symbol.

dividends = IEX::Resources::Dividends.get('MSFT', '6m') # Options are: 5y, 2y, 1y, ytd, 6m, 3m, 1m

dividends.payment_date # '2018-03-08'
dividends.record_date # '2018-02-15'
dividends.declared_date # '2017-11-29'
dividends.amount # 0.42
dividends.amount_dollar # '$0.42'
dividends.flag # ''
dividends.type # 'Dividend income'
dividends.qualified # 'Q'
dividends.indicated # ''

See #dividends for detailed documentation or dividends.rb for returned fields.

Get Earnings

Fetches earnings for a symbol.

earnings = IEX::Resources::Earnings.get('MSFT')

earnings.actual_eps # 1.13
earnings.consensus_eps # 1.07
earnings.estimated_eps # 1.07
earnings.announce_time # 'AMC'
earnings.number_of_estimates # 14
earnings.eps_surprise_dollar # 0.06
earnings.eps_report_date # '2018-07-19'
earnings.fiscal_period # 'Q4 2018'
earnings.fiscal_end_date # '2018-06-30'
earnings.year_ago # 0.98
earnings.year_ago_change_percent # 0.15306122448979584
earnings.year_ago_change_percent_s # '+15.31%'
earnings.estimated_change_percent # 0.09183673469387764
earnings.estimated_change_percent_s # '+9.18%'
earnings.symbol_id # 4563

See #earnings for detailed documentation or earnings.rb for returned fields.

Get Sector Performance

Fetches latest sector's performance.

sectors = IEX::Resources::Sectors.get('MARKET')

sectors.type # sectors
sectors.name # Industrials
sectors.performance # 0.00711
sectors.last_updated # 1533672000437

See #sector-performance for detailed documentation or sectors.rb for returned fields.

Get Largest Trades

Fetches largest trades in the day for a specific stock. Ordered by largest trade on the top.

trades = IEX::Resources::LargestTrades.get('aapl')

trades.first.price # 186.39
trades.first.size # 10000 - refers to the number of shares negotiated in the day.
trades.first.time # 1527090690175
trades.first.time_label # 11:51:30
trades.first.venue # EDGX
trades.first.venue_name # Cboe EDGX

See #largest-trades for detailed documentation or largest_trades.rb for returned fields.

Get Cryptocurrencies

Fetches a list of cryptocurrencies' latest quotes and information.

crypto = IEX::Resources::Crypto.get

crypto.first.ask_price # 6617.99
crypto.first.symbol # 'BTCUSDT'
crypto.first.company_name # 'Bitcoin USD'
crypto.first.primary_exchange # 'crypto'
crypto.first.sector # 'cryptocurrency'
crypto.first.calculation_price # 'realtime'
crypto.first.open # 6645.76
crypto.first.open_dollar # '$6,645'
crypto.first.open_time # 1_538_360_540_423
crypto.first.close # 6595.49934953
crypto.first.close_dollar # '$6,595'
crypto.first.close_time # 1_538_446_940_423
crypto.first.high # 6663.1
crypto.first.high_dollar # '$6,663'
crypto.first.low # 6510
crypto.first.low_dollar # '$6,510'
crypto.first.latest_price # 6618.7
crypto.first.latest_price_dollar # '$6,618'
crypto.first.latest_source # 'Real time price'
crypto.first.latest_time # '10:22:20 PM'
crypto.first.latest_update # 1_538_446_940_423
crypto.first.latest_volume # 20_027.36393
crypto.first.latest_volume_dollar # '$20,027'
crypto.first.iex_realtime_price # nil
crypto.first.iex_realtime_size # nil
crypto.first.iex_last_updated # nil
crypto.first.delayed_price # nil
crypto.first.delayed_price_time # nil
crypto.first.extended_change # nil
crypto.first.extended_change_percent # nil
crypto.first.extended_price_time # nil
crypto.first.previous_close # 6645.76
crypto.first.previous_close_dollar # '$6,645'
crypto.first.change # -27.06
crypto.first.change_percent # -0.00407
crypto.first.change_percent_s # '-0.41%'
crypto.first.iex_market_percent # nil
crypto.first.iex_volume # nil
crypto.first.avg_total_volume # nil
crypto.first.iex_bid_price # nil
crypto.first.iex_bid_size # nil
crypto.first.iex_ask_price # nil
crypto.first.iex_ask_size # nil
crypto.first.market_cap # nil
crypto.first.pe_ratio # nil
crypto.first.week52_high # nil
crypto.first.week52_high_dollar # nil
crypto.first.week52_low # nil
crypto.first.week52_low_dollar # nil
crypto.first.ytd_change # nil
crypto.first.bid_price # 6613.16
crypto.first.bid_size # 2.166213
crypto.first.ask_price # 6617.99
crypto.first.ask_size # 0.264944

Errors

SymbolNotFound

If a symbol cannot be found an IEX::Errors::SymbolNotFound exception is raised.

ClientError

All errors that return HTTP codes 400-600 result in a IEX::Errors::ClientError exception.

Contributing

See CONTRIBUTING.

Copyright and License

Copyright (c) 2018, Daniel Doubrovkine and Contributors.

This project is licensed under the MIT License.

Data provided for free by IEX, see terms.