Skip to content

dblock/iex-ruby-client

Repository files navigation

IEX Finance API

Gem Version Build Status

A Ruby client for the IEX Finance API.

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.

# 1d or 1m data depending on the day or week and time of day
IEX::Resources::Chart.get('MSFT', 'dynamic')

# a specific date
IEX::Resources::Chart.get('MSFT', Date.new(2018, 3, 26))

# every n-th data point
IEX::Resources::Chart.get('MSFT', '1d', chart_interval: 10)

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.

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.