Python API to get stock data from Yahoo! Finance using web scraping technology provided by Beautifulsoup4.
Developed as an alternative to yahoo-finance by Łukasz Banasiak, after the backend API was taken down.
- Install the requirements (Beautifulsoup4):
$ pip install -r requirements.txt- Clone the yahoo_fs.py file into your project.
>>> from yahoo_fs import Share
>>> goog = Share('GOOG')
>>> print(goog.get_stock_exchange())
'NasdaqGS'
>>> print(goog.get_currency())
'USD'
>>> print(goog.get_price())
'1,007.72'
>>> print(goog.get_change())
'+2.62'
>>> print(goog.get_percent_change())
'+0.26%'
>>> print(goog.get_previous_trade_time())
'2:11PM'
>>> print(goog.get_trade_timezone())
'EDT'
>>> print(goog.get_previous_close())
'1,005.10'
>>> print(goog.get_open())
'998.00'
>>> print(goog.get_bid())
'1,014.74 x 200'
>>> print(goog.get_ask())
'1,016.02 x 100'
>>> print(goog.get_day_range())
'980.64 - 1,024.23'
>>> print(goog.get_52_week_range())
'817.02 - 1,186.89'
>>> print(goog.get_volume())
'2,728,590'
>>> print(goog.get_avg_daily_volume())
'1,836,955'>>> from yahoo_fs import Share
>>> goog = Share('GOOG')
>>> goog.refresh()>>> from yahoo_fs import Share
>>> from pprint import pprint
>>> goog = Share('GOOG')
>>> pprint(goog.get_custom_statistics_search('Valuation Measures'))
{'Enterprise Value': '631.52B',
'Enterprise Value/EBITDA': '17.65',
'Enterprise Value/Revenue': '5.70',
'Forward P/E': '20.90',
'Market Cap (intraday)': '705.66B',
'PEG Ratio (5 yr expected)': '1.07',
'Price/Book': '4.62',
'Price/Sales': '6.37',
'Trailing P/E': '56.30'}
>>> print(goog.get_custom_statistics_search('Trading Information', '200-Day Moving Average'))
'1,046.7584'>>> from yahoo_fs import Share
>>> from pprint import pprint
>>> goog = Share('GOOG')
>>> pprint(goog.get_historical_day('2018-03-23'))
[{'Adj Close': '1021.57',
'Close': '1021.57',
'Date': 'Mar 23 2018',
'High': '1063.36',
'Low': '1021.22',
'Open': '1047.03',
'Volume': '2156700'}]
>>> pprint(goog.get_historical_days('2018-03-19', '2018-03-23'))
[{'Adj Close': '1099.82',
'Close': '1099.82',
'Date': 'Mar 19 2018',
'High': '1121.99',
'Low': '1089.01',
'Open': '1120.01',
'Volume': '2805900'},
{'Adj Close': '1021.57',
'Close': '1021.57',
'Date': 'Mar 23 2018',
'High': '1063.36',
'Low': '1021.22',
'Open': '1047.03',
'Volume': '2156700'}]
>>> pprint(goog.get_historical_range('2018-02-01', '2018-02-09'))
[{'Adj Close': '1167.70',
'Close': '1167.70',
'Date': 'Feb 01 2018',
'High': '1174.00',
'Low': '1157.52',
'Open': '1162.61',
'Volume': '2412100'},
{'Adj Close': '1111.90',
'Close': '1111.90',
'Date': 'Feb 02 2018',
'High': '1123.07',
'Low': '1107.28',
'Open': '1122.00',
'Volume': '4857900'},
{'Adj Close': '1055.80',
'Close': '1055.80',
'Date': 'Feb 05 2018',
'High': '1110.00',
'Low': '1052.03',
'Open': '1090.60',
'Volume': '3798300'},
{'Adj Close': '1080.60',
'Close': '1080.60',
'Date': 'Feb 06 2018',
'High': '1081.71',
'Low': '1023.14',
'Open': '1027.18',
'Volume': '3448000'},
{'Adj Close': '1048.58',
'Close': '1048.58',
'Date': 'Feb 07 2018',
'High': '1081.78',
'Low': '1048.26',
'Open': '1081.54',
'Volume': '2369200'},
{'Adj Close': '1001.52',
'Close': '1001.52',
'Date': 'Feb 08 2018',
'High': '1058.62',
'Low': '1000.66',
'Open': '1055.41',
'Volume': '2859100'},
{'Adj Close': '1037.78',
'Close': '1037.78',
'Date': 'Feb 09 2018',
'High': '1043.97',
'Low': '992.56',
'Open': '1017.25',
'Volume': '3505900'}]get_stock_exchange()get_currency()get_price()get_change()get_percent_change()get_previous_trade_time()get_trade_timezone()get_previous_close()get_open()get_bid()get_ask()get_day_range()get_52_week_range()get_volume()get_avg_daily_volume()get_custom_statistics_search(heading, row=None)get_valuation_measures()get_market_cap()get_enterprise_value()get_trailing_pe()get_forward_pe()get_peg_ratio()get_price_per_sales()get_price_per_book()get_enterprise_value_per_revenue()get_enterprise_value_per_ebitda()get_financial_highlights()get_fiscal_year_ends()get_most_recent_quarter()get_profit_margin()get_operating_margin()get_return_assets()get_return_equity()get_revenue()get_revenue_per_share()get_quarterly_revenue_growth()get_gross_profit()get_ebitda()get_net_income_avi_to_common()get_diluted_eps()get_quarterly_earnings_growth()get_total_cash()get_total_cash_per_share()get_total_debt()get_total_debt_per_equity()get_current_ratio()get_book_value_per_share()get_operating_cash_flow()get_levered_free_cash_flow()get_trading_information()get_beta()get_52_week_change()get_sp500_52_week_change()get_52_week_high()get_52_week_low()get_50_day_average()get_200_day_average()get_avg_3_month_volume()get_avg_10_day_volume()get_shares_outstanding()get_float()get_percent_held_insiders()get_percent_held_institutions()get_shares_short()get_short_ratio()get_short_percent_of_float()get_shares_short_prior()get_forward_dividend_rate()get_forward_dividend_yield()get_trailing_dividend_rate()get_trailing_dividend_yield()get_5_year_avg_dividend_yield()get_payout_ratio()get_dividend_date()get_exdividend_date()get_last_split_factor()get_last_split_date()get_company_name()get_company_address()get_company_phone_number()get_company_website()get_sector()get_industry()get_key_executives()get_historical_day(date)get_historical_days(date_from, date_to)get_historical_range(date_from, date_to)get_custom_analysts_search(heading)get_analysts_earnings_estimate()get_analysts_revenue_estimate()get_analysts_earnings_history()get_analysts_eps_trend()get_analysts_eps_revisions()get_analysts_growth_estimates()refresh()