[](https://pypi.org/project/investpy/)
[](https://pypi.org/project/investpy/)
[](https://anaconda.org/alvarob96/investpy)
[](https://pypi.org/project/investpy/)
[](https://dev.azure.com/alvarob96/alvarob96/_build?definitionId=1&_a=summary)
[](https://travis-ci.org/alvarob96/investpy)
[](https://investpy.readthedocs.io/)
[](https://codecov.io/gh/alvarob96/investpy)
[](https://pypistats.org/packages/investpy)
## Introduction
**investpy** is a Python package to retrieve real-time historical data from [Investing](https://www.investing.com/) mainly
of spanish financial products, but it is intended to be scalable and so on, work with world financial products such as
equities, funds, ETFs or currencies.
investpy seeks to be one of the most used Python packages when it comes to historical data extraction from financial products, so to stop depending on public/private APIs, as investpy is **free** and has **no limitations**, features that lead investpy to be one of the most strong and consistent packages of financial data retrieval.
## Installation
In order to get this package working you will need to install [**investpy**](https://pypi.org/project/investpy/) using pip on the terminal by typing:
``$ pip install investpy==0.9``
Every package used is listed in [requirements.txt](https://github.com/alvarob96/investpy/blob/master/requirements.txt) file, which can also be installed via pip:
``$ pip install -r requirements.txt``
## Usage
Even though some investpy usage examples are shown on the [docs](https://investpy.readthedocs.io/equities.html), some basic functionality will be sorted out with sample Python code blocks.
### Recent/Historical Data
As the main functionality is based on historical data retrieval, the usage of every function will be explained so to ease the user the use of investpy, which is mainly intended for historical data extraction, which means that every other function is additional.
#### Equity Data Retrieval
<div class="codehilite">
<pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">investpy</span>
<span class="n">df</span> <span class="o">=</span> <span class="n">investpy</span><span class="o">.</span><span class="n">get_recent_data</span><span class="p">(</span><span class="n">equity</span><span class="o">=</span><span class="s1">'bbva'</span><span class="p">,</span> <span class="n">country</span><span class="o">=</span><span class="s1">'spain'</span><span class="p">,</span> <span class="n">as_json</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">order</span><span class="o">=</span><span class="s1">'ascending'</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">())</span>
<span class="o">>>></span>
<span class="n">Close</span> <span class="n">High</span> <span class="n">Low</span> <span class="n">Open</span> <span class="n">Volume</span>
<span class="n">Date</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">12</span> <span class="mf">4.897</span> <span class="mf">4.985</span> <span class="mf">4.897</span> <span class="mf">4.952</span> <span class="mi">22930000</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">15</span> <span class="mf">4.926</span> <span class="mf">4.941</span> <span class="mf">4.873</span> <span class="mf">4.915</span> <span class="mi">14830000</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">16</span> <span class="mf">4.971</span> <span class="mf">5.008</span> <span class="mf">4.913</span> <span class="mf">4.947</span> <span class="mi">30730000</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">17</span> <span class="mf">4.905</span> <span class="mf">4.965</span> <span class="mf">4.900</span> <span class="mf">4.952</span> <span class="mi">22410000</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">18</span> <span class="mf">4.856</span> <span class="mf">4.894</span> <span class="mf">4.812</span> <span class="mf">4.879</span> <span class="mi">35820000</span>
</code></pre>
</div>
<div class="codehilite">
<pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">investpy</span>
<span class="n">df</span> <span class="o">=</span> <span class="n">investpy</span><span class="o">.</span><span class="n">get_historical_data</span><span class="p">(</span><span class="n">equity</span><span class="o">=</span><span class="s1">'bbva'</span><span class="p">,</span> <span class="n">country</span><span class="o">=</span><span class="s1">'spain'</span><span class="p">,</span> <span class="n">from_date</span><span class="o">=</span><span class="s1">'01/01/2018'</span><span class="p">,</span> <span class="n">to_date</span><span class="o">=</span><span class="s1">'12/08/2019'</span><span class="p">,</span> <span class="n">as_json</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">order</span><span class="o">=</span><span class="s1">'ascending'</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">())</span>
<span class="o">>>></span>
<span class="n">Close</span> <span class="n">High</span> <span class="n">Low</span> <span class="n">Open</span> <span class="n">Volume</span>
<span class="n">Date</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">02</span> <span class="mf">7.082</span> <span class="mf">7.169</span> <span class="mf">7.050</span> <span class="mf">7.139</span> <span class="mi">15960000</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">03</span> <span class="mf">7.094</span> <span class="mf">7.120</span> <span class="mf">7.055</span> <span class="mf">7.113</span> <span class="mi">13320000</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">04</span> <span class="mf">7.221</span> <span class="mf">7.274</span> <span class="mf">7.104</span> <span class="mf">7.113</span> <span class="mi">20790000</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">05</span> <span class="mf">7.253</span> <span class="mf">7.282</span> <span class="mf">7.203</span> <span class="mf">7.259</span> <span class="mi">13580000</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">08</span> <span class="mf">7.235</span> <span class="mf">7.293</span> <span class="mf">7.220</span> <span class="mf">7.274</span> <span class="mi">13420000</span>
</code></pre>
</div>
#### Fund Data Retrieval
<div class="codehilite">
<pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">investpy</span>
<span class="n">df</span> <span class="o">=</span> <span class="n">investpy</span><span class="o">.</span><span class="n">get_fund_recent_data</span><span class="p">(</span><span class="n">fund</span><span class="o">=</span><span class="s1">'bbva plan multiactivo moderado pp'</span><span class="p">,</span> <span class="n">as_json</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">order</span><span class="o">=</span><span class="s1">'ascending'</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">())</span>
<span class="o">>>></span>
<span class="n">Close</span> <span class="n">High</span> <span class="n">Low</span> <span class="n">Open</span>
<span class="n">Date</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">12</span> <span class="mf">1.128</span> <span class="mf">1.128</span> <span class="mf">1.128</span> <span class="mf">1.128</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">15</span> <span class="mf">1.130</span> <span class="mf">1.130</span> <span class="mf">1.130</span> <span class="mf">1.130</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">16</span> <span class="mf">1.130</span> <span class="mf">1.130</span> <span class="mf">1.130</span> <span class="mf">1.130</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">17</span> <span class="mf">1.129</span> <span class="mf">1.129</span> <span class="mf">1.129</span> <span class="mf">1.129</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">18</span> <span class="mf">1.126</span> <span class="mf">1.126</span> <span class="mf">1.126</span> <span class="mf">1.126</span>
</code></pre>
</div>
<div class="codehilite">
<pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">investpy</span>
<span class="n">df</span> <span class="o">=</span> <span class="n">investpy</span><span class="o">.</span><span class="n">get_fund_historical_data</span><span class="p">(</span><span class="n">fund</span><span class="o">=</span><span class="s1">'bbva plan multiactivo moderado pp'</span><span class="p">,</span> <span class="n">from_date</span><span class="o">=</span><span class="s1">'01/01/2018'</span><span class="p">,</span> <span class="n">to_date</span><span class="o">=</span><span class="s1">'12/08/2019'</span><span class="p">,</span> <span class="n">as_json</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">order</span><span class="o">=</span><span class="s1">'ascending'</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">())</span>
<span class="o">>>></span>
<span class="n">Close</span> <span class="n">High</span> <span class="n">Low</span> <span class="n">Open</span>
<span class="n">Date</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">15</span> <span class="mf">1.105</span> <span class="mf">1.105</span> <span class="mf">1.105</span> <span class="mf">1.105</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">16</span> <span class="mf">1.113</span> <span class="mf">1.113</span> <span class="mf">1.113</span> <span class="mf">1.113</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">17</span> <span class="mf">1.113</span> <span class="mf">1.113</span> <span class="mf">1.113</span> <span class="mf">1.113</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">18</span> <span class="mf">1.113</span> <span class="mf">1.113</span> <span class="mf">1.113</span> <span class="mf">1.113</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">02</span><span class="o">-</span><span class="mi">19</span> <span class="mf">1.111</span> <span class="mf">1.111</span> <span class="mf">1.111</span> <span class="mf">1.111</span>
</code></pre>
</div>
#### ETF Data Retrieval
<div class="codehilite">
<pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">investpy</span>
<span class="n">df</span> <span class="o">=</span> <span class="n">investpy</span><span class="o">.</span><span class="n">get_etf_recent_data</span><span class="p">(</span><span class="n">etf</span><span class="o">=</span><span class="s1">'bbva accion dj eurostoxx 50'</span><span class="p">,</span> <span class="n">country</span><span class="o">=</span><span class="s1">'spain'</span><span class="p">,</span> <span class="n">as_json</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">order</span><span class="o">=</span><span class="s1">'ascending'</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">())</span>
<span class="o">>>></span>
<span class="n">Close</span> <span class="n">High</span> <span class="n">Low</span> <span class="n">Open</span>
<span class="n">Date</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">12</span> <span class="mf">35.795</span> <span class="mf">35.870</span> <span class="mf">35.825</span> <span class="mf">35.825</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">15</span> <span class="mf">35.855</span> <span class="mf">35.930</span> <span class="mf">35.760</span> <span class="mf">35.875</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">16</span> <span class="mf">36.040</span> <span class="mf">36.085</span> <span class="mf">35.835</span> <span class="mf">35.845</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">17</span> <span class="mf">35.830</span> <span class="mf">36.080</span> <span class="mf">35.810</span> <span class="mf">35.965</span>
<span class="mi">2019</span><span class="o">-</span><span class="mi">07</span><span class="o">-</span><span class="mi">18</span> <span class="mf">35.640</span> <span class="mf">35.785</span> <span class="mf">35.515</span> <span class="mf">35.515</span>
</code></pre>
</div>
<div class="codehilite">
<pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">investpy</span>
<span class="n">df</span> <span class="o">=</span> <span class="n">investpy</span><span class="o">.</span><span class="n">get_etf_historical_data</span><span class="p">(</span><span class="n">etf</span><span class="o">=</span><span class="s1">'bbva accion dj eurostoxx 50'</span><span class="p">,</span> <span class="n">country</span><span class="o">=</span><span class="s1">'spain'</span><span class="p">,</span> <span class="n">from_date</span><span class="o">=</span><span class="s1">'01/01/2018'</span><span class="p">,</span> <span class="n">to_date</span><span class="o">=</span><span class="s1">'12/08/2019'</span><span class="p">,</span> <span class="n">as_json</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">order</span><span class="o">=</span><span class="s1">'ascending'</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">())</span>
<span class="o">>>></span>
<span class="n">Close</span> <span class="n">High</span> <span class="n">Low</span> <span class="n">Open</span>
<span class="n">Date</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">02</span> <span class="mf">34.995</span> <span class="mf">35.155</span> <span class="mf">34.860</span> <span class="mf">35.155</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">03</span> <span class="mf">35.210</span> <span class="mf">35.305</span> <span class="mf">35.020</span> <span class="mf">35.105</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">04</span> <span class="mf">35.825</span> <span class="mf">35.710</span> <span class="mf">35.465</span> <span class="mf">35.465</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">05</span> <span class="mf">36.185</span> <span class="mf">36.180</span> <span class="mf">35.900</span> <span class="mf">35.900</span>
<span class="mi">2018</span><span class="o">-</span><span class="mi">01</span><span class="o">-</span><span class="mi">08</span> <span class="mf">36.280</span> <span class="mf">36.370</span> <span class="mf">36.240</span> <span class="mf">36.325</span>
</code></pre>
</div>
### Additional Data
As Investing provides more data apart from historical data, some of that data is fetched via investpy if it is considered to be useful. So on, some additional information is retrieved for both equities and funds such as company profiles or inner basic information for equities and funds, respectively as shown below.
#### Equity Company Profile Retrieval
<div class="codehilite">
<pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">investpy</span>
<span class="n">company_profile</span> <span class="o">=</span> <span class="n">investpy</span><span class="o">.</span><span class="n">get_equity_company_profile</span><span class="p">(</span><span class="n">equity</span><span class="o">=</span><span class="s1">'bbva'</span><span class="p">,</span> <span class="n">country</span><span class="o">=</span><span class="s1">'spain'</span><span class="p">,</span> <span class="n">language</span><span class="o">=</span><span class="s1">'en'</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">company_profile</span><span class="p">)</span>
<span class="o">>>></span> <span class="s2">"Banco Bilbao Vizcaya Argentaria, S.A. (BBVA) is a diversified financial company engaged in retail banking ..."</span>
</code></pre>
</div>
#### Fund Additional Information Retrieval
<div class="codehilite">
<pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">investpy</span>
<span class="n">fund_information</span> <span class="o">=</span> <span class="n">investpy</span><span class="o">.</span><span class="n">get_fund_information</span><span class="p">(</span><span class="n">fund</span><span class="o">=</span><span class="s1">'bbva plan multiactivo moderado pp'</span><span class="p">,</span> <span class="n">as_json</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">fund_information</span><span class="p">)</span>
<span class="o">>>></span> <span class="p">{</span>
<span class="s1">'Fund Name'</span><span class="p">:</span> <span class="s1">'Bbva Plan Multiactivo Moderado Pp'</span><span class="p">,</span>
<span class="s1">'Rating'</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span>
<span class="s1">'1-Year Change'</span><span class="p">:</span> <span class="s1">'-1,19%'</span><span class="p">,</span>
<span class="s1">'Previous Close'</span><span class="p">:</span> <span class="s1">'1.103'</span><span class="p">,</span>
<span class="s1">'Risk Rating'</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="s1">'TTM Yield'</span><span class="p">:</span> <span class="s1">'0%'</span><span class="p">,</span>
<span class="s1">'ROE'</span><span class="p">:</span> <span class="s1">'14,02%'</span><span class="p">,</span>
<span class="s1">'Issuer'</span><span class="p">:</span> <span class="s1">'BBVA Pensiones EGFP'</span><span class="p">,</span>
<span class="s1">'Turnover'</span><span class="p">:</span> <span class="s1">'N/A'</span><span class="p">,</span>
<span class="s1">'ROA'</span><span class="p">:</span> <span class="s1">'4,97%'</span><span class="p">,</span>
<span class="s1">'Inception Date'</span><span class="p">:</span> <span class="s1">'16/10/2012'</span><span class="p">,</span>
<span class="s1">'Total Assets'</span><span class="p">:</span> <span class="mi">1670000000</span><span class="p">,</span>
<span class="s1">'Expenses'</span><span class="p">:</span> <span class="s1">'N/A'</span><span class="p">,</span>
<span class="s1">'Min Investment'</span><span class="p">:</span> <span class="mi">30</span><span class="p">,</span>
<span class="s1">'Market Cap'</span><span class="p">:</span> <span class="mi">34820000000</span><span class="p">,</span>
<span class="s1">'Category'</span><span class="p">:</span> <span class="s1">'Mixtos Euros Moderados PP'</span>
<span class="p">}</span>
</code></pre>
</div>
## Contribute - [](https://www.codetriage.com/alvarob96/investpy)
As this is an open source project it is open to contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas.
Also there is an open tab of [issues](https://github.com/alvarob96/investpy/issues) where anyone can contribute opening new issues if needed or navigate through them in order to solve them or contribute to its solving.
Additionally, you can triage issues on [investpy CodeTriage](https://www.codetriage.com/alvarob96/investpy) so you can provide issues so the package can grow and improve as the issues solves bugs, problems or needs, and maybe provide new ideas to improve package functionality and efficiency.
## Disclaimer
This Python package has been made for research purposes in order to fit the needs that Investing.com does not cover, so this package works like an Application Programming Interface (API) of Investing.com developed in an altruistic way. Conclude that this package is not related in any way with Investing.com or any dependant company, the only requirement specified by Investing in order to develop this package was "*mention the source where data is retrieved from*".