Yahooquery
Access Yahoo Finance data including real-time pricing, fundamentals, analyst estimates, options, new
- Rating
- 4.6 (121 reviews)
- Downloads
- 850 downloads
- Version
- 1.0.0
Overview
Access Yahoo Finance data including real-time pricing, fundamentals, analyst estimates, options, news.
Complete Documentation
View Source →
yahooquery Skill
Comprehensive access to Yahoo Finance data via the yahooquery Python library. This library provides programmatic access to nearly all Yahoo Finance endpoints, including real-time pricing, fundamentals, analyst estimates, options, news, and premium research.
Core Classes
1. Ticker (Company-Specific Data)
The primary interface for retrieving data about one or more securities.from yahooquery import Ticker
# Single or multiple symbols
aapl = Ticker('AAPL')
tickers = Ticker('AAPL MSFT NVDA', asynchronous=True)
2. Screener (Predefined Stock Lists)
Access to pre-built screeners for discovering stocks by criteria.from yahooquery import Screener
s = Screener()
screeners = s.available_screeners # List all available screeners
data = s.get_screeners(['day_gainers', 'most_actives'], count=10)
3. Research (Premium Subscription Required)
Access proprietary research reports and trade ideas.from yahooquery import Research
r = Research(username='[email protected]', password='password')
reports = r.reports(report_type='Analyst Report', report_date='Last Week')
trades = r.trades(trend='Bullish', term='Short term')
Ticker Class: Data Modules
The Ticker class exposes dozens of data endpoints via properties and methods.
📊 Financial Statements
.income_statement(frequency='a', trailing=True)- Income statement (annual/quarterly).balance_sheet(frequency='a', trailing=True)- Balance sheet.cash_flow(frequency='a', trailing=True)- Cash flow statement.all_financial_data(frequency='a')- Combined financials + valuation measures.valuation_measures- EV/EBITDA, P/E, P/B, P/S across periods
📈 Pricing & Market Data
.price- Current pricing, market cap, 52-week range.history(period='1y', interval='1d', start=None, end=None)- Historical OHLC- period:
1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max - interval:
1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo .option_chain- Full options chain (all expirations)
🔍 Analysis & Estimates
.calendar_events- Next earnings date, EPS/revenue estimates.earning_history- Actual vs. estimated EPS (last 4 quarters).earnings- Historical quarterly/annual earnings and revenue.earnings_trend- Analyst estimates for upcoming periods.recommendation_trend- Buy/Sell/Hold rating changes over time.gradings- Recent analyst upgrades/downgrades
🏢 Company Fundamentals
.asset_profile- Address, industry, sector, business summary, officers.company_officers- Executives with compensation details.summary_profile- Condensed company information.key_stats- Forward P/E, profit margin, beta, shares outstanding.financial_data- Financial KPIs (ROE, ROA, debt-to-equity, margins)
👥 Ownership & Governance
.insider_holders- List of insider holders and positions.insider_transactions- Recent buy/sell transactions by insiders.institution_ownership- Top institutional holders.fund_ownership- Top mutual fund holders.major_holders- Ownership summary (institutional %, insider %, float)
🌍 ESG & Ratings
.esg_scores- Environmental, Social, Governance scores and controversies.recommendation_rating- Analyst consensus (Strong Buy → Strong Sell)
📰 News & Insights
.news()- Recent news articles.technical_insights- Bullish/bearish technical patterns
💰 Funds & ETFs Only
.fund_holding_info- Top holdings, bond/equity breakdown.fund_performance- Historical performance and returns.fund_bond_holdings/.fund_bond_ratings- Bond maturity and credit ratings.fund_equity_holdings- P/E, P/B, P/S for equity holdings
📊 Other Modules
.summary_detail- Trading stats (day high/low, volume, avg volume).default_key_statistics- Enterprise value, trailing P/E, forward P/E.index_trend- Performance relative to a benchmark index.quote_type- Security type, exchange, market
Global Functions
import yahooquery as yq
# Search
results = yq.search('NVIDIA')
# Market Data
market = yq.get_market_summary(country='US') # Major indices snapshot
trending = yq.get_trending(country='US') # Trending tickers
# Utilities
currencies = yq.get_currencies() # List of supported currencies
exchanges = yq.get_exchanges() # List of exchanges
rate = yq.currency_converter('USD', 'EUR') # Exchange rate
Configuration & Keyword Arguments
The Ticker, Screener, and Research classes accept these optional parameters:
Performance & Reliability
asynchronous=True- Make requests asynchronously (for multiple symbols)max_workers=8- Number of concurrent workers (when async)retry=5- Number of retry attemptsbackoff_factor=0.3- Exponential backoff between retriesstatus_forcelist=[429, 500, 502, 503, 504]- HTTP codes to retrytimeout=5- Request timeout in seconds
Data Format & Validation
formatted=False- IfTrue, returns data with{raw, fmt, longFmt}structurevalidate=True- Validate symbols on instantiation (invalid →.invalid_symbols)country='United States'- Regional data/news (france, germany, canada, etc.)
Network & Auth
proxies={'http': 'http://proxy:port'}- HTTP/HTTPS proxyuser_agent='...'- Custom user agent stringverify=True- SSL certificate verificationusername='[email protected]'/password='...'- Yahoo Finance Premium login
Advanced (Shared Sessions)
session=.../crumb=...- Share auth betweenResearchandTickerinstances
Best Practices
1. Async for Multiple Symbols
tickers = Ticker('AAPL MSFT NVDA TSLA', asynchronous=True)
prices = tickers.price # Returns dict keyed by symbol
2. Handling DataFrames
Most financial methods returnpandas.DataFrame. Convert for JSON output:
df = aapl.income_statement()
print(df.to_json(orient='records', date_format='iso'))
3. Historical Data - 1-Minute Intervals
Yahoo limits 1-minute data to 7 days per request. For 30 days:tickers = Ticker('AAPL', asynchronous=True)
df = tickers.history(period='1mo', interval='1m') # Makes 4 requests automatically
4. Premium Users: Combining Research + Ticker
r = Research(username='...', password='...')
reports = r.reports(sector='Technology', investment_rating='Bullish')
# Reuse session for Ticker
tickers = Ticker('AAPL', session=r.session, crumb=r.crumb)
data = tickers.asset_profile
Common Use Cases
Portfolio Analysis
portfolio = Ticker('AAPL MSFT NVDA', asynchronous=True)
summary = portfolio.summary_detail
earnings = portfolio.earnings
history = portfolio.history(period='1y')
Screening & Discovery
s = Screener()
gainers = s.get_screeners(['day_gainers'], count=20)
# Returns DataFrame with price, volume, % change, etc.
Options Analysis
nvda = Ticker('NVDA')
options = nvda.option_chain
# Filter for calls/puts, strikes, expirations
Earnings Calendar
tickers = Ticker('AAPL MSFT NVDA')
calendar = tickers.calendar_events
# Shows next earnings date + analyst estimates
Reference Documentation
Full API docs at: /Users/henryzha/.openclaw/workspace-research/skills/yahooquery/references/
index.md- Overview of classes and functionsticker/- Detailed breakdown of all Ticker methodsscreener.md- Screener class guideresearch.md- Research class (Premium)keyword_arguments.md- Complete list of configuration optionsmisc.md- Global utility functionsadvanced.md- Sharing sessions between Research and Ticker
Environment
- Installation:
python3 -m pip install yahooquery - Dependencies: pandas, requests-futures, tqdm, beautifulsoup4, lxml
- Python Version: 3.7+
Notes
- Yahoo Finance may rate-limit or block requests. Use
retry,backoff_factor, andstatus_forcelistfor robustness. - Premium features (Research class) require a paid Yahoo Finance Premium subscription.
- Data accuracy and availability depend on Yahoo Finance's upstream data providers.
Installation
openclaw install yahooquery
💻Code Examples
tickers = Ticker('AAPL MSFT NVDA', asynchronous=True)
### 2. **Screener** (Predefined Stock Lists)
Access to pre-built screeners for discovering stocks by criteria.data = s.get_screeners(['day_gainers', 'most_actives'], count=10)
### 3. **Research** (Premium Subscription Required)
Access proprietary research reports and trade ideas.trades = r.trades(trend='Bullish', term='Short term')
---
## Ticker Class: Data Modules
The `Ticker` class exposes dozens of data endpoints via properties and methods.
### 📊 **Financial Statements**
- `.income_statement(frequency='a', trailing=True)` - Income statement (annual/quarterly)
- `.balance_sheet(frequency='a', trailing=True)` - Balance sheet
- `.cash_flow(frequency='a', trailing=True)` - Cash flow statement
- `.all_financial_data(frequency='a')` - Combined financials + valuation measures
- `.valuation_measures` - EV/EBITDA, P/E, P/B, P/S across periods
### 📈 **Pricing & Market Data**
- `.price` - Current pricing, market cap, 52-week range
- `.history(period='1y', interval='1d', start=None, end=None)` - Historical OHLC
- **period**: `1d`, `5d`, `1mo`, `3mo`, `6mo`, `1y`, `2y`, `5y`, `10y`, `ytd`, `max`
- **interval**: `1m`, `2m`, `5m`, `15m`, `30m`, `60m`, `90m`, `1h`, `1d`, `5d`, `1wk`, `1mo`, `3mo`
- `.option_chain` - Full options chain (all expirations)
### 🔍 **Analysis & Estimates**
- `.calendar_events` - Next earnings date, EPS/revenue estimates
- `.earning_history` - Actual vs. estimated EPS (last 4 quarters)
- `.earnings` - Historical quarterly/annual earnings and revenue
- `.earnings_trend` - Analyst estimates for upcoming periods
- `.recommendation_trend` - Buy/Sell/Hold rating changes over time
- `.gradings` - Recent analyst upgrades/downgrades
### 🏢 **Company Fundamentals**
- `.asset_profile` - Address, industry, sector, business summary, officers
- `.company_officers` - Executives with compensation details
- `.summary_profile` - Condensed company information
- `.key_stats` - Forward P/E, profit margin, beta, shares outstanding
- `.financial_data` - Financial KPIs (ROE, ROA, debt-to-equity, margins)
### 👥 **Ownership & Governance**
- `.insider_holders` - List of insider holders and positions
- `.insider_transactions` - Recent buy/sell transactions by insiders
- `.institution_ownership` - Top institutional holders
- `.fund_ownership` - Top mutual fund holders
- `.major_holders` - Ownership summary (institutional %, insider %, float)
### 🌍 **ESG & Ratings**
- `.esg_scores` - Environmental, Social, Governance scores and controversies
- `.recommendation_rating` - Analyst consensus (Strong Buy → Strong Sell)
### 📰 **News & Insights**
- `.news()` - Recent news articles
- `.technical_insights` - Bullish/bearish technical patterns
### 💰 **Funds & ETFs Only**
- `.fund_holding_info` - Top holdings, bond/equity breakdown
- `.fund_performance` - Historical performance and returns
- `.fund_bond_holdings` / `.fund_bond_ratings` - Bond maturity and credit ratings
- `.fund_equity_holdings` - P/E, P/B, P/S for equity holdings
### 📊 **Other Modules**
- `.summary_detail` - Trading stats (day high/low, volume, avg volume)
- `.default_key_statistics` - Enterprise value, trailing P/E, forward P/E
- `.index_trend` - Performance relative to a benchmark index
- `.quote_type` - Security type, exchange, market
---
## Global Functionsrate = yq.currency_converter('USD', 'EUR') # Exchange rate
---
## Configuration & Keyword Arguments
The `Ticker`, `Screener`, and `Research` classes accept these optional parameters:
### Performance & Reliability
- `asynchronous=True` - Make requests asynchronously (for multiple symbols)
- `max_workers=8` - Number of concurrent workers (when async)
- `retry=5` - Number of retry attempts
- `backoff_factor=0.3` - Exponential backoff between retries
- `status_forcelist=[429, 500, 502, 503, 504]` - HTTP codes to retry
- `timeout=5` - Request timeout in seconds
### Data Format & Validation
- `formatted=False` - If `True`, returns data with `{raw, fmt, longFmt}` structure
- `validate=True` - Validate symbols on instantiation (invalid → `.invalid_symbols`)
- `country='United States'` - Regional data/news (france, germany, canada, etc.)
### Network & Auth
- `proxies={'http': 'http://proxy:port'}` - HTTP/HTTPS proxy
- `user_agent='...'` - Custom user agent string
- `verify=True` - SSL certificate verification
- `username='[email protected]'` / `password='...'` - Yahoo Finance Premium login
### Advanced (Shared Sessions)
- `session=...` / `crumb=...` - Share auth between `Research` and `Ticker` instances
---
## Best Practices
### 1. **Async for Multiple Symbols**prices = tickers.price # Returns dict keyed by symbol
### 2. **Handling DataFrames**
Most financial methods return `pandas.DataFrame`. Convert for JSON output:print(df.to_json(orient='records', date_format='iso'))
### 3. **Historical Data - 1-Minute Intervals**
Yahoo limits 1-minute data to 7 days per request. For 30 days:data = tickers.asset_profile
---
## Common Use Cases
### Portfolio Analysisfrom yahooquery import Ticker
# Single or multiple symbols
aapl = Ticker('AAPL')
tickers = Ticker('AAPL MSFT NVDA', asynchronous=True)from yahooquery import Screener
s = Screener()
screeners = s.available_screeners # List all available screeners
data = s.get_screeners(['day_gainers', 'most_actives'], count=10)from yahooquery import Research
r = Research(username='[email protected]', password='password')
reports = r.reports(report_type='Analyst Report', report_date='Last Week')
trades = r.trades(trend='Bullish', term='Short term')Tags
Quick Info
Ready to Install?
Get started with this skill in seconds
Related Skills
4claw
4claw — a moderated imageboard for AI agents.
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
Acestep Lyrics Transcription
Transcribe audio to timestamped lyrics using OpenAI Whisper or ElevenLabs Scribe API.
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.