openbb
Access financial data for analysis, quantitative research, and AI agents using OpenBB platform — stocks, crypto, forex, macro economics, alternative data. Use when: building financial analysis tools, feeding market data to AI agents, creating quantitative research pipelines, accessing free financial data APIs.
What this skill does
# OpenBB
Open Data Platform for financial data. Connect once, consume everywhere — Python for quants, REST API for apps, MCP server for AI agents. Access stocks, crypto, forex, macro indicators, and alternative data.
GitHub: [OpenBB-finance/OpenBB](https://github.com/OpenBB-finance/OpenBB)
## Overview
OpenBB is an open-source financial data platform that aggregates data from multiple providers (Yahoo Finance, FRED, SEC, FMP, Polygon, and more). It offers a Python SDK, REST API server, and MCP server for AI agents, covering equities, crypto, forex, macro economics, and news.
## Instructions
### Installation
```bash
# Core package
pip install openbb
# With all data providers
pip install "openbb[all]"
```
### Quick Start
```python
from openbb import obb
# Stock price history
output = obb.equity.price.historical("AAPL")
df = output.to_dataframe()
print(df.head())
```
### Equity Data
```python
# Historical prices
df = obb.equity.price.historical("AAPL", start_date="2025-01-01").to_dataframe()
# Real-time quote
quote = obb.equity.price.quote("AAPL").to_dataframe()
# Fundamental analysis
income = obb.equity.fundamental.income("AAPL", period="annual").to_dataframe()
balance = obb.equity.fundamental.balance("AAPL").to_dataframe()
metrics = obb.equity.fundamental.metrics("AAPL").to_dataframe()
# Technical indicators
df = obb.equity.price.historical("AAPL", start_date="2025-01-01").to_dataframe()
sma = obb.technical.sma(data=df, length=20)
rsi = obb.technical.rsi(data=df, length=14)
macd = obb.technical.macd(data=df)
```
### Crypto, Forex, and Macro
```python
# Crypto
btc = obb.crypto.price.historical("BTC-USD").to_dataframe()
# Forex
eurusd = obb.currency.price.historical("EUR/USD").to_dataframe()
# Macro economics
gdp = obb.economy.gdp.nominal(country="united_states").to_dataframe()
cpi = obb.economy.cpi(country="united_states").to_dataframe()
rates = obb.economy.fred_series("FEDFUNDS").to_dataframe()
```
### AI Agent Integration
Run OpenBB as an API server:
```bash
openbb-api
# Launches FastAPI at http://127.0.0.1:6900
```
Query from any language:
```bash
curl http://127.0.0.1:6900/api/v1/equity/price/historical?symbol=AAPL
```
OpenBB also exposes an MCP server so AI agents can query financial data directly.
### Data Providers
| Provider | Data | Free Tier |
|----------|------|-----------|
| Yahoo Finance | Prices, fundamentals | Yes |
| FRED | Macro economics | Yes |
| SEC (EDGAR) | Filings, insider trades | Yes |
| FMP | Fundamentals, estimates | Limited |
| Polygon | Real-time prices | Limited |
```python
# Use a specific provider
obb.equity.price.historical("AAPL", provider="yfinance")
# Set API keys for premium providers
obb.user.credentials.fmp_api_key = "your_key"
```
## Examples
### Example 1: Full Stock Analysis Pipeline
```python
from openbb import obb
def analyze_stock(ticker: str) -> dict:
"""Full analysis for AI agent consumption."""
price = obb.equity.price.historical(ticker, start_date="2025-01-01").to_dataframe()
fundamentals = obb.equity.fundamental.metrics(ticker).to_dataframe()
news = obb.news.company(ticker, limit=5).to_dataframe()
return {
"ticker": ticker,
"current_price": price["close"].iloc[-1],
"52w_high": price["high"].max(),
"52w_low": price["low"].min(),
"pe_ratio": fundamentals["pe_ratio"].iloc[0] if len(fundamentals) > 0 else None,
"market_cap": fundamentals["market_cap"].iloc[0] if len(fundamentals) > 0 else None,
"recent_news": news["title"].tolist() if len(news) > 0 else [],
}
analysis = analyze_stock("AAPL")
```
### Example 2: Screening and Discovery
```python
# Stock screener — find undervalued dividend stocks
screener = obb.equity.screener(
market_cap_min=1e9,
pe_ratio_max=20,
dividend_yield_min=2.0
).to_dataframe()
# Top gainers/losers
gainers = obb.equity.discovery.gainers().to_dataframe()
losers = obb.equity.discovery.losers().to_dataframe()
# Company news
news = obb.news.company("AAPL", limit=20).to_dataframe()
```
## Guidelines
- Start with `pip install openbb` (core) — add `[all]` only if you need every provider
- Use `.to_dataframe()` on all outputs for pandas integration
- Free data from Yahoo Finance and FRED covers most research needs
- Run `openbb-api` to expose data to non-Python applications
- The MCP server lets AI agents query financial data autonomously
- Check [docs.openbb.co/python/reference](https://docs.openbb.co/python/reference) for all available endpoints
## Resources
- [Documentation](https://docs.openbb.co)
- [Python Reference](https://docs.openbb.co/python/reference)
- [OpenBB Workspace](https://pro.openbb.co)
- [Agents for OpenBB](https://github.com/OpenBB-finance/agents-for-openbb)
- [Discord](https://discord.com/invite/xPHTuHCmuV)
Related in Web3
xaut-trade
IncludedBuy or sell XAUT (Tether Gold) on Ethereum. Supports market orders (Uniswap V3) and limit orders (UniswapX). Wallet modes: Foundry keystore or WDK. Delegates non-XAUT intents to registered skills (e.g. Polymarket prediction markets, Hyperliquid trading). Triggers: buy XAUT, XAUT trade, swap USDT for XAUT, sell XAUT, swap XAUT for USDT, limit order, limit buy XAUT, limit sell XAUT, check limit order, cancel limit order, XAUT when, create wallet, setup wallet, polymarket, prediction market, bet on, odds on, hyperliquid, perp, perpetual, long, short, open long, open short, close position, leverage.
qfc-openclaw-skill
IncludedQFC blockchain interaction — wallet, faucet, chain queries, staking, epoch & finality, AI inference
gate-dex-trade
IncludedExecutes on-chain token swaps via Gate DEX. Use when user wants to swap, buy, sell, exchange, or convert tokens, or bridge cross-chain. Covers full swap flow: price quotes, transaction build, signing, and submission. Do NOT use for read-only data lookups or wallet account management.
hunch
IncludedDiscover, bet on, track, and settle Hunch prediction markets in natural language. Trigger when a user wants to bet, take a position, or get odds on a crypto outcome — token market-cap milestones and flips, launchpad races (Bankr vs pump.fun volume / #1-days / launches over a cap), token head-to-head outperformance, mcap strike-ladders, and up/down price rounds. Also trigger on "what can I bet on about $TOKEN", "odds on …", "take YES/NO on …", "show my Hunch bets", "did my market resolve". Settles in USDC on Base via x402 (≤ $10 / bet); every bet returns an on-chain proof.
opensea
IncludedQuery NFT data, trade on the Seaport marketplace, and swap ERC20 tokens across Ethereum, Base, Arbitrum, Optimism, Polygon, and more.
polymarket
IncludedTrade on Polymarket prediction markets (CLOB V2) from a Privy EOA wallet. Search markets, place/cancel orders, manage positions. No private key handling. Use when the user wants to bet on event outcomes (e.g. "buy YES at 0.65 on the ceasefire market", "what are my open positions", "close my Trump bet").