Alpha Vantage — Financial Market Data
Access 20+ years of global financial data: equities, options, forex, crypto, commodities, economic indicators, and 50+ technical indicators.
API Key Setup (Required)
- Get a free key at https://www.alphavantage.co/support/#api-key (premium plans available for higher rate limits)
- Set as environment variable:
export ALPHAVANTAGE_API_KEY="your_key_here"
Installation
uv pip install requests pandas
Base URL & Request Pattern
All requests go to:
https://www.alphavantage.co/query?function=FUNCTION_NAME&apikey=YOUR_KEY&...params
import requests
import os
API_KEY = os.environ.get("ALPHAVANTAGE_API_KEY")
BASE_URL = "https://www.alphavantage.co/query"
def av_get(function, **params):
response = requests.get(BASE_URL, params={"function": function, "apikey": API_KEY, **params})
return response.json()
Quick Start Examples
# Stock quote (latest price)
quote = av_get("GLOBAL_QUOTE", symbol="AAPL")
price = quote["Global Quote"]["05. price"]
# Daily OHLCV
daily = av_get("TIME_SERIES_DAILY", symbol="AAPL", outputsize="compact")
ts = daily["Time Series (Daily)"]
# Company fundamentals
overview = av_get("OVERVIEW", symbol="AAPL")
print(overview["MarketCapitalization"], overview["PERatio"])
# Income statement
income = av_get("INCOME_STATEMENT", symbol="AAPL")
annual = income["annualReports"][0] # Most recent annual
# Crypto price
crypto = av_get("DIGITAL_CURRENCY_DAILY", symbol="BTC", market="USD")
# Economic indicator
gdp = av_get("REAL_GDP", interval="annual")
# Technical indicator
rsi = av_get("RSI", symbol="AAPL", interval="daily", time_period=14, series_type="close")
API Categories
| Category |
Key Functions |
| Time Series (Stocks) |
GLOBAL_QUOTE, TIME_SERIES_INTRADAY, TIME_SERIES_DAILY, TIME_SERIES_WEEKLY, TIME_SERIES_MONTHLY |
| Options |
REALTIME_OPTIONS, HISTORICAL_OPTIONS |
| Alpha Intelligence |
NEWS_SENTIMENT, EARNINGS_CALL_TRANSCRIPT, TOP_GAINERS_LOSERS, INSIDER_TRANSACTIONS, ANALYTICS_FIXED_WINDOW |
| Fundamentals |
OVERVIEW, ETF_PROFILE, INCOME_STATEMENT, BALANCE_SHEET, CASH_FLOW, EARNINGS, DIVIDENDS, SPLITS |
| Forex (FX) |
CURRENCY_EXCHANGE_RATE, FX_INTRADAY, FX_DAILY, FX_WEEKLY, FX_MONTHLY |
| Crypto |
CURRENCY_EXCHANGE_RATE, CRYPTO_INTRADAY, DIGITAL_CURRENCY_DAILY |
| Commodities |
GOLD (WTI spot), BRENT, NATURAL_GAS, COPPER, WHEAT, CORN, COFFEE, ALL_COMMODITIES |
| Economic Indicators |
REAL_GDP, TREASURY_YIELD, FEDERAL_FUNDS_RATE, CPI, INFLATION, UNEMPLOYMENT, NONFARM_PAYROLL |
| Technical Indicators |
SMA, EMA, MACD, RSI, BBANDS, STOCH, ADX, ATR, OBV, VWAP, and 40+ more |
Common Parameters
| Parameter |
Values |
Notes |
outputsize |
compact / full |
compact = last 100 points; full = 20+ years |
datatype |
json / csv |
Default: json |
interval |
1min, 5min, 15min, 30min, 60min, daily, weekly, monthly |
Depends on endpoint |
adjusted |
true / false |
Adjust for splits/dividends |
Rate Limits
- Free tier: 25 requests/day (as of 2026)
- Premium plans: higher limits, real-time data, intraday access
- HTTP 429 = rate limit exceeded
- Add delays between requests when processing multiple symbols
import time
# Add delay to avoid rate limits
time.sleep(0.5) # 0.5s between requests on free tier
Error Handling
data = av_get("GLOBAL_QUOTE", symbol="AAPL")
# Check for API errors
if "Error Message" in data:
raise ValueError(f"API Error: {data['Error Message']}")
if "Note" in data:
print(f"Rate limit warning: {data['Note']}")
if "Information" in data:
print(f"API info: {data['Information']}")
Reference Files
Load these for detailed endpoint documentation:
- time-series.md — Stock OHLCV data, quotes, bulk quotes, market status
- fundamentals.md — Company overview, financial statements, earnings, dividends, splits
- options.md — Realtime and historical options chain data
- intelligence.md — News/sentiment, earnings transcripts, insider transactions, analytics
- forex-crypto.md — Forex exchange rates and cryptocurrency prices
- commodities.md — Gold, silver, oil, natural gas, agricultural commodities
- economic-indicators.md — GDP, CPI, interest rates, employment data
- technical-indicators.md — 50+ technical analysis indicators (SMA, EMA, MACD, RSI, etc.)
1---2name: alpha-vantage3description: Access real-time and historical stock market data, forex rates, cryptocurrency prices, commodities, economic indicators, and 50+ technical indicators via the Alpha Vantage API. Use when fetching stock prices (OHLCV), company fundamentals (income statement, balance sheet, cash flow), earnings, options data, market news/sentiment, insider transactions, GDP, CPI, treasury yields, gold/silver/oil prices, Bitcoin/crypto prices, forex exchange rates, or calculating technical indicators (SMA, EMA, MACD, RSI, Bollinger Bands). Requires a free API key from alphavantage.co.4license: Unknown5---6
7# Alpha Vantage — Financial Market Data
8
9Access 20+ years of global financial data: equities, options, forex, crypto, commodities, economic indicators, and 50+ technical indicators.
10
11## API Key Setup (Required)
12
131. Get a free key at https://www.alphavantage.co/support/#api-key (premium plans available for higher rate limits)
142. Set as environment variable:
15
16```bash
17export ALPHAVANTAGE_API_KEY="your_key_here"
18```
19
20## Installation
21
22```bash
23uv pip install requests pandas
24```
25
26## Base URL & Request Pattern
27
28All requests go to:
29
30```
31https://www.alphavantage.co/query?function=FUNCTION_NAME&apikey=YOUR_KEY&...params
32```
33
34```python
35import requests
36import os
37
38API_KEY = os.environ.get("ALPHAVANTAGE_API_KEY")
39BASE_URL = "https://www.alphavantage.co/query"
40
41def av_get(function, **params):
42 response = requests.get(BASE_URL, params={"function": function, "apikey": API_KEY, **params})
43 return response.json()
44```
45
46## Quick Start Examples
47
48```python
49# Stock quote (latest price)
50quote = av_get("GLOBAL_QUOTE", symbol="AAPL")
51price = quote["Global Quote"]["05. price"]
52
53# Daily OHLCV
54daily = av_get("TIME_SERIES_DAILY", symbol="AAPL", outputsize="compact")
55ts = daily["Time Series (Daily)"]
56
57# Company fundamentals
58overview = av_get("OVERVIEW", symbol="AAPL")
59print(overview["MarketCapitalization"], overview["PERatio"])
60
61# Income statement
62income = av_get("INCOME_STATEMENT", symbol="AAPL")
63annual = income["annualReports"][0] # Most recent annual
64
65# Crypto price
66crypto = av_get("DIGITAL_CURRENCY_DAILY", symbol="BTC", market="USD")
67
68# Economic indicator
69gdp = av_get("REAL_GDP", interval="annual")
70
71# Technical indicator
72rsi = av_get("RSI", symbol="AAPL", interval="daily", time_period=14, series_type="close")
73```
74
75## API Categories
76
77| Category | Key Functions |
78|----------|--------------|
79| **Time Series (Stocks)** | GLOBAL_QUOTE, TIME_SERIES_INTRADAY, TIME_SERIES_DAILY, TIME_SERIES_WEEKLY, TIME_SERIES_MONTHLY |
80| **Options** | REALTIME_OPTIONS, HISTORICAL_OPTIONS |
81| **Alpha Intelligence** | NEWS_SENTIMENT, EARNINGS_CALL_TRANSCRIPT, TOP_GAINERS_LOSERS, INSIDER_TRANSACTIONS, ANALYTICS_FIXED_WINDOW |
82| **Fundamentals** | OVERVIEW, ETF_PROFILE, INCOME_STATEMENT, BALANCE_SHEET, CASH_FLOW, EARNINGS, DIVIDENDS, SPLITS |
83| **Forex (FX)** | CURRENCY_EXCHANGE_RATE, FX_INTRADAY, FX_DAILY, FX_WEEKLY, FX_MONTHLY |
84| **Crypto** | CURRENCY_EXCHANGE_RATE, CRYPTO_INTRADAY, DIGITAL_CURRENCY_DAILY |
85| **Commodities** | GOLD (WTI spot), BRENT, NATURAL_GAS, COPPER, WHEAT, CORN, COFFEE, ALL_COMMODITIES |
86| **Economic Indicators** | REAL_GDP, TREASURY_YIELD, FEDERAL_FUNDS_RATE, CPI, INFLATION, UNEMPLOYMENT, NONFARM_PAYROLL |
87| **Technical Indicators** | SMA, EMA, MACD, RSI, BBANDS, STOCH, ADX, ATR, OBV, VWAP, and 40+ more |
88
89## Common Parameters
90
91| Parameter | Values | Notes |
92|-----------|--------|-------|
93| `outputsize` | `compact` / `full` | compact = last 100 points; full = 20+ years |
94| `datatype` | `json` / `csv` | Default: json |
95| `interval` | `1min`, `5min`, `15min`, `30min`, `60min`, `daily`, `weekly`, `monthly` | Depends on endpoint |
96| `adjusted` | `true` / `false` | Adjust for splits/dividends |
97
98## Rate Limits
99
100- Free tier: 25 requests/day (as of 2026)
101- Premium plans: higher limits, real-time data, intraday access
102- HTTP 429 = rate limit exceeded
103- Add delays between requests when processing multiple symbols
104
105```python
106import time
107# Add delay to avoid rate limits
108time.sleep(0.5) # 0.5s between requests on free tier
109```
110
111## Error Handling
112
113```python
114data = av_get("GLOBAL_QUOTE", symbol="AAPL")
115
116# Check for API errors
117if "Error Message" in data:
118 raise ValueError(f"API Error: {data['Error Message']}")
119if "Note" in data:
120 print(f"Rate limit warning: {data['Note']}")
121if "Information" in data:
122 print(f"API info: {data['Information']}")
123```
124
125## Reference Files
126
127Load these for detailed endpoint documentation:
128
129- **[time-series.md](references/time-series.md)** — Stock OHLCV data, quotes, bulk quotes, market status
130- **[fundamentals.md](references/fundamentals.md)** — Company overview, financial statements, earnings, dividends, splits
131- **[options.md](references/options.md)** — Realtime and historical options chain data
132- **[intelligence.md](references/intelligence.md)** — News/sentiment, earnings transcripts, insider transactions, analytics
133- **[forex-crypto.md](references/forex-crypto.md)** — Forex exchange rates and cryptocurrency prices
134- **[commodities.md](references/commodities.md)** — Gold, silver, oil, natural gas, agricultural commodities
135- **[economic-indicators.md](references/economic-indicators.md)** — GDP, CPI, interest rates, employment data
136- **[technical-indicators.md](references/technical-indicators.md)** — 50+ technical analysis indicators (SMA, EMA, MACD, RSI, etc.)
137