Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lukaszbanasiak/yahoo-finance
Python module to get stock data from Yahoo! Finance
https://github.com/lukaszbanasiak/yahoo-finance
finance python yahoo-finance-api
Last synced: 8 days ago
JSON representation
Python module to get stock data from Yahoo! Finance
- Host: GitHub
- URL: https://github.com/lukaszbanasiak/yahoo-finance
- Owner: yahoo-finance
- Created: 2014-05-02T21:12:50.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-12-25T18:19:29.000Z (12 months ago)
- Last Synced: 2024-05-23T10:25:08.314Z (7 months ago)
- Topics: finance, python, yahoo-finance-api
- Language: Python
- Homepage:
- Size: 66.4 KB
- Stars: 1,300
- Watchers: 112
- Forks: 353
- Open Issues: 87
-
Metadata Files:
- Readme: README.rst
Awesome Lists containing this project
- awesome-quant - yahoo-finance - Python module to get stock data from Yahoo! Finance. (Python / Data Sources)
- awesome-quant - yahoo-finance - Python module to get stock data from Yahoo! Finance. (Python / Data Sources)
- awesome-fintech - yahoo-finance - Python module to get stock data from Yahoo Finance (Stock data)
README
=============
yhoo-finance
=============Python module to get stock data from Yahoo! Finance
.. image:: https://travis-ci.org/lukaszbanasiak/yahoo-finance.svg?branch=master
:target: https://travis-ci.org/lukaszbanasiak/yahoo-financeLegal disclaimer
----------------
Yahoo!, Y!Finance, and Yahoo! finance are registered trademarks of Yahoo, Inc.yhoo-finance is not affiliated, endorsed, or vetted by Yahoo, Inc. It's an open-source tool that uses Yahoo's publicly available APIs, and is intended for research and educational purposes.
You should refer to Yahoo!'s terms of use (https://policies.yahoo.com/us/en/yahoo/terms/product-atos/apiforydn/index.htm, https://legal.yahoo.com/us/en/yahoo/terms/otos/index.html, https://policies.yahoo.com/us/en/yahoo/terms/index.htm) for details on your rights to use the actual data downloaded. Remember - the Yahoo! finance API is intended for personal use only.
Know issues
-----------
Yahoo! Finance backend is http://datatables.org/. If this service is down or
has network problems you will receive errors from group YQL*,
eg. ``YQLQueryError``.You can monitor this service via https://www.datatables.org/healthchecker/
More details https://github.com/lukaszbanasiak/yahoo-finance/issues/44
Install
-------From PyPI with pip:
.. code:: bash
$ pip install yahoo-finance
From development repo (requires git)
.. code:: bash
$ git clone git://github.com/lukaszbanasiak/yhoo-finance.git
$ cd yahoo-finance
$ python setup.py installUsage examples
--------------Get shares data
^^^^^^^^^^^^^^^Example: Yahoo! Inc. (``YHOO``)
.. code:: python
>>> from yahoo_finance import Share
>>> yahoo = Share('YHOO')
>>> print yahoo.get_open()
'36.60'
>>> print yahoo.get_price()
'36.84'
>>> print yahoo.get_trade_datetime()
'2014-02-05 20:50:00 UTC+0000'Refresh data from market
.. code:: python
>>> yahoo.refresh()
>>> print yahoo.get_price()
'36.87'
>>> print yahoo.get_trade_datetime()
'2014-02-05 21:00:00 UTC+0000'Historical data
.. code:: python
>>> print yahoo.get_historical('2014-04-25', '2014-04-29')
[{u'Volume': u'28720000', u'Symbol': u'YHOO', u'Adj_Close': u'35.83', u'High': u'35.89', u'Low': u'34.12', u'Date': u'2014-04-29', u'Close': u'35.83', u'Open': u'34.37'}, {u'Volume': u'30422000', u'Symbol': u'YHOO', u'Adj_Close': u'33.99', u'High': u'35.00', u'Low': u'33.65', u'Date': u'2014-04-28', u'Close': u'33.99', u'Open': u'34.67'}, {u'Volume': u'19391100', u'Symbol': u'YHOO', u'Adj_Close': u'34.48', u'High': u'35.10', u'Low': u'34.29', u'Date': u'2014-04-25', u'Close': u'34.48', u'Open': u'35.03'}]More readable output :)
.. code:: python
>>> from pprint import pprint
>>> pprint(yahoo.get_historical('2014-04-25', '2014-04-29'))
[{u'Adj_Close': u'35.83',
u'Close': u'35.83',
u'Date': u'2014-04-29',
u'High': u'35.89',
u'Low': u'34.12',
u'Open': u'34.37',
u'Symbol': u'YHOO',
u'Volume': u'28720000'},
{u'Adj_Close': u'33.99',
u'Close': u'33.99',
u'Date': u'2014-04-28',
u'High': u'35.00',
u'Low': u'33.65',
u'Open': u'34.67',
u'Symbol': u'YHOO',
u'Volume': u'30422000'},
{u'Adj_Close': u'34.48',
u'Close': u'34.48',
u'Date': u'2014-04-25',
u'High': u'35.10',
u'Low': u'34.29',
u'Open': u'35.03',
u'Symbol': u'YHOO',
u'Volume': u'19391100'}]Available methods
- ``get_price()``
- ``get_change()``
- ``get_percent_change()``
- ``get_volume()``
- ``get_prev_close()``
- ``get_open()``
- ``get_avg_daily_volume()``
- ``get_stock_exchange()``
- ``get_market_cap()``
- ``get_book_value()``
- ``get_ebitda()``
- ``get_dividend_share()``
- ``get_dividend_yield()``
- ``get_earnings_share()``
- ``get_days_high()``
- ``get_days_low()``
- ``get_year_high()``
- ``get_year_low()``
- ``get_50day_moving_avg()``
- ``get_200day_moving_avg()``
- ``get_price_earnings_ratio()``
- ``get_price_earnings_growth_ratio()``
- ``get_price_sales()``
- ``get_price_book()``
- ``get_short_ratio()``
- ``get_trade_datetime()``
- ``get_historical(start_date, end_date)``
- ``get_name()``
- ``refresh()``
- ``get_percent_change_from_year_high()``
- ``get_percent_change_from_year_low()``
- ``get_change_from_year_low()``
- ``get_change_from_year_high()``
- ``get_percent_change_from_200_day_moving_average()``
- ``get_change_from_200_day_moving_average()``
- ``get_percent_change_from_50_day_moving_average()``
- ``get_change_from_50_day_moving_average()``
- ``get_EPS_estimate_next_quarter()``
- ``get_EPS_estimate_next_year()``
- ``get_ex_dividend_date()``
- ``get_EPS_estimate_current_year()``
- ``get_price_EPS_estimate_next_year()``
- ``get_price_EPS_estimate_current_year()``
- ``get_one_yr_target_price()``
- ``get_change_percent_change()``
- ``get_dividend_pay_date()``
- ``get_currency()``
- ``get_last_trade_with_time()``
- ``get_days_range()``
- ``get_year_range()``Get currency data
^^^^^^^^^^^^^^^^^Example: EUR/PLN (``EURPLN=X``)
.. code:: python
>>> from yahoo_finance import Currency
>>> eur_pln = Currency('EURPLN')
>>> print eur_pln.get_bid()
'4.2007'
>>> print eur_pln.get_ask()
'4.2091'
>>> print eur_pln.get_rate()
'4.2049'
>>> print eur_pln.get_trade_datetime()
'2014-03-05 11:23:00 UTC+0000'Refresh data from market
.. code:: python
>>> eur_pln.refresh()
>>> print eur_pln.get_rate()
'4.2052'
>>> print eur_pln.get_trade_datetime()
'2014-03-05 11:27:00 UTC+0000'Avalible methods
- ``get_bid()``
- ``get_ask()``
- ``get_rate()``
- ``get_trade_datetime()``
- ``refresh()``Requirements
------------See ``requirements.txt``