Quickstart¶
Is a python wrapper for the Alpha Vantage API really neccesary?
Not really. If you are content with downloading csv files and you don’t want to or can’t include a wrapper in your project or workflow, getting data from Alpha Vantage is fairly straight forward. Referencing the docs, you could do something like:
import requests
url = 'https://www.alphavantage.co/query?'
url += 'function=TIME_SERIES_INTRADAY'
url += '&symbol=MSFT'
url += '&interval=5min'
url += '&apikey=demo'
url += '&datatype=csv'
save_to = 'MSFT_5min_intraday.csv'
r = requests.get(url)
content = r.content
with open(save_to, 'wb') as file:
file.write(content)
Installation¶
pip install avapi
Before use¶
Follow instructions on the Alpha vantage website to get a free API-key. The docs provide all necessary info for à la carte downloading of historical data and indicators. Please checkout Alpha Vantage support and read through the Frequently Asked Questions.
Examples¶
The “demo” api-key only works for these specific examples and a limited number of times. If you modify the code you also need to provide your own api-key.
Single download¶
import avapi as aa
import pandas as pd
data = aa.get_data(function='VWAP', symbol='MSFT',
interval='15min', apikey='demo')
df = aa.to_df(data)
df.head()
Multiple files download¶
There are limits for free accounts: up to 5 API requests per minute and 500
requests per day. In loops, if you don’t incorporate time.sleep()
, you might
get errors.
import avapi as aa
import pandas as pd
from time import sleep
data_calls = [
{
'function': 'TIME_SERIES_DAILY',
'symbol': 'MSFT',
'apikey': 'demo',
'datatype': 'csv',
},
{
'function':'TIME_SERIES_INTRADAY',
'symbol': 'MSFT',
'interval': '5min',
'apikey': 'demo',
'datatype': 'csv',
}
]
for i in range(len(data_calls)):
save_to = str(i) + '.csv'
data = aa.get_data(save_to=save_to, **data_calls[i])
sleep(15)
Unexpected results¶
If you get unexpected results, you may check the latest, original response from the Alpha Vantage server in the following way:
response = aa.response()
print(response)