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)