Access 20+ years of global financial data: equities, options, forex, crypto, commodities, economic indicators, and 50+ technical indicators.
75%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/alpha-vantage/SKILL.mdAccess 20+ years of global financial data: equities, options, forex, crypto, commodities, economic indicators, and 50+ technical indicators.
read -rsp "Alpha Vantage API key: " ALPHAVANTAGE_API_KEY
echo
export ALPHAVANTAGE_API_KEYuv pip install requests pandasAll requests go to:
https://www.alphavantage.co/query?function=FUNCTION_NAME&apikey=YOUR_KEY&...paramsimport requests
import os
API_KEY = os.environ.get("ALPHAVANTAGE_API_KEY")
BASE_URL = "https://www.alphavantage.co/query"
def av_get(function, **params):
if not API_KEY:
raise ValueError("Set ALPHAVANTAGE_API_KEY before requesting data")
if "apikey" in params or "function" in params:
raise ValueError("Reserved request parameters")
try:
response = requests.get(
BASE_URL, params={**params, "function": function, "apikey": API_KEY},
timeout=30,
)
except requests.RequestException:
raise RuntimeError("Alpha Vantage transport failure; request URL redacted") from None
# Avoid logging request URLs or raw HTTP exceptions: URLs contain the key.
if not response.ok:
raise RuntimeError(f"Alpha Vantage HTTP status {response.status_code}")
try:
data = response.json()
except ValueError:
raise RuntimeError("Alpha Vantage returned invalid JSON") from None
if not isinstance(data, dict):
raise RuntimeError("Alpha Vantage returned an unexpected response shape")
if any(key in data for key in ("Error Message", "Note", "Information")):
raise RuntimeError("API returned an error, quota, or entitlement message; inspect a redacted response")
return data# 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")| 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 | WTI (crude oil), 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 |
| Parameter | Values | Notes |
|---|---|---|
outputsize | compact / full | For applicable time-series endpoints; depth and entitlement vary |
datatype | json / csv | Default: json |
interval | 1min, 5min, 15min, 30min, 60min, daily, weekly, monthly | Depends on endpoint |
adjusted | true / false | Adjust for splits/dividends |
Note and Information as well as HTTP status.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']}")Use this skill when tackling tasks related to its primary domain or functionality as described above.
sickn33/agentic-awesome-skills
8aa4123
Also appears in
last in sync Apr 14, 2026
last in sync Apr 14, 2026
last in sync Apr 14, 2026
last in sync Mar 24, 2026
last in sync Mar 24, 2026
last in sync Mar 24, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.