This guide provides a comprehensive comparison of all yfinance-go methods, their capabilities, limitations, and recommended use cases to help you choose the right method for your needs.
yfinance-go provides two main categories of methods:
- API Methods: Direct access to Yahoo Finance API endpoints
- Scraping Methods: Web scraping fallback for data not available through APIs
| Method | Category | Use Case | Data Returned | Limitations | Performance |
|---|---|---|---|---|---|
FetchQuote() |
API | Real-time prices | Current price, volume, market data | No historical data | Fast |
FetchDailyBars() |
API | Historical analysis | OHLCV data for date range | Limited to available history | Fast |
FetchWeeklyBars() |
API | Long-term trends | Weekly OHLCV data | Limited historical depth | Fast |
FetchMonthlyBars() |
API | Long-term analysis | Monthly OHLCV data | Limited historical depth | Fast |
FetchIntradayBars() |
API | Short-term analysis | Intraday OHLCV data | May return 422 errors | Fast |
ScrapeFinancials() |
Scraping | Fundamental analysis | Revenue, EPS, financial metrics | Quarterly/annual data only | Slower |
ScrapeBalanceSheet() |
Scraping | Balance sheet analysis | Assets, liabilities, equity | Quarterly/annual data only | Slower |
ScrapeCashFlow() |
Scraping | Cash flow analysis | Operating, investing, financing cash flows | Quarterly/annual data only | Slower |
ScrapeKeyStatistics() |
Scraping | Key metrics | P/E ratios, market cap, financial metrics | May be limited for some stocks | Slower |
ScrapeAnalysis() |
Scraping | Analyst insights | Estimates, projections | May be limited for smaller companies | Slower |
ScrapeAnalystInsights() |
Scraping | Detailed analysis | Comprehensive analyst data | May be limited for smaller companies | Slower |
ScrapeNews() |
Scraping | Market sentiment | Recent news articles | May be empty for some stocks | Slower |
FetchCompanyInfo() |
API | Basic company data | Name, exchange, currency | No address/executives | Fast |
FetchMarketData() |
API | Comprehensive market data | Price, volume, 52-week ranges | No historical data | Fast |
FetchFundamentalsQuarterly() |
API | Quarterly fundamentals | Financial statement data | Requires paid subscription | Fast |
Best for: Getting current market prices and basic market data
Returns:
- Current market price
- Bid/ask prices and sizes
- Daily high/low
- Volume
- Market venue information
Limitations:
- No historical data
- May be delayed (not real-time)
- Some fields may be nil
Use Cases:
- Real-time price monitoring
- Portfolio valuation
- Market data dashboards
- Trading applications
Example:
quote, err := client.FetchQuote(ctx, "AAPL", runID)
if quote.RegularMarketPrice != nil {
price := float64(quote.RegularMarketPrice.Scaled) /
float64(quote.RegularMarketPrice.Scale)
fmt.Printf("Current price: $%.2f\n", price)
}Best for: Comprehensive market data including 52-week ranges
Returns:
- Current market price
- Daily high/low
- 52-week high/low
- Previous close
- Market time information
Limitations:
- No historical data
- No fundamental metrics
Use Cases:
- Market analysis dashboards
- Price range analysis
- Market timing applications
Best for: Daily price analysis and backtesting
Returns:
- Daily OHLCV data
- Split/dividend adjustments
- Volume information
- Currency information
Limitations:
- Limited by Yahoo Finance's historical data availability
- Some symbols may have incomplete data
Use Cases:
- Technical analysis
- Backtesting strategies
- Portfolio performance analysis
- Risk management
Example:
start := time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC)
end := time.Date(2024, 12, 31, 0, 0, 0, 0, time.UTC)
bars, err := client.FetchDailyBars(ctx, "AAPL", start, end, true, runID)Best for: Short-term trading and intraday analysis
Returns:
- Intraday OHLCV data (1m, 5m, 15m, 30m, 60m)
- High-frequency price data
Limitations:
- May return HTTP 422 errors for some symbols
- Limited historical depth (typically 60 days for 1m data)
- Data availability varies by symbol
Use Cases:
- Day trading
- Intraday analysis
- High-frequency trading
- Market microstructure analysis
Best for: Long-term trend analysis
Returns:
- Weekly/monthly OHLCV data
- Long-term price trends
Limitations:
- Limited historical depth
- Less granular than daily data
Use Cases:
- Long-term investment analysis
- Trend identification
- Macro analysis
- Portfolio rebalancing
Best for: Basic company identification and exchange information
Returns:
- Company name (long and short)
- Exchange information
- Currency
- Instrument type
- Timezone information
- First trade date
- Only returns basic security information
- Does NOT include: Address, executives, website, employees, business summary
- Use case: Basic identification only
Use Cases:
- Symbol validation
- Exchange identification
- Basic company lookup
- Data source identification
Example:
companyInfo, err := client.FetchCompanyInfo(ctx, "AAPL", runID)
fmt.Printf("Company: %s\n", companyInfo.LongName)
fmt.Printf("Exchange: %s\n", companyInfo.Exchange)
// Note: No address, executives, or business summary availableBest for: Quarterly financial data (requires paid subscription)
Returns:
- Quarterly financial statements
- EPS, revenue, net income
- Financial ratios
- Requires Yahoo Finance paid subscription
- Returns error with exit code 2 if subscription required
- Limited to quarterly data only
Use Cases:
- Financial analysis (if you have paid subscription)
- Earnings analysis
- Financial modeling
Best for: Income statement data without paid subscription
Returns:
- Revenue, expenses, net income
- EPS (basic and diluted)
- Financial statement line items
Limitations:
- Quarterly/annual data only
- Slower than API methods
- May be limited for some stocks
Use Cases:
- Financial analysis
- Earnings analysis
- Financial modeling
- Investment research
Best for: Balance sheet analysis
Returns:
- Assets, liabilities, equity
- Balance sheet line items
- Financial position data
Use Cases:
- Financial health analysis
- Debt analysis
- Asset analysis
- Financial ratio calculations
Best for: Cash flow analysis
Returns:
- Operating, investing, financing cash flows
- Cash flow statement data
- Liquidity analysis
Use Cases:
- Cash flow analysis
- Liquidity assessment
- Financial health evaluation
- Investment analysis
Best for: Key financial metrics and ratios
Returns:
- P/E ratio, market cap
- Enterprise value
- Financial ratios
- Key performance indicators
Use Cases:
- Valuation analysis
- Financial ratio analysis
- Investment screening
- Performance metrics
Best for: Analyst recommendations and price targets
Returns:
- Analyst recommendations
- Price targets
- Earnings estimates
- Analyst ratings
Limitations:
- May be limited for smaller companies
- Slower than API methods
Use Cases:
- Investment research
- Analyst sentiment analysis
- Price target analysis
- Market sentiment
Best for: Detailed analyst insights
Returns:
- Comprehensive analyst data
- Detailed insights
- Analyst reports
Use Cases:
- Investment research
- Analyst sentiment analysis
- Market research
- Investment decision support
Best for: Market sentiment and news analysis
Returns:
- Recent news articles
- Press releases
- Market news
Limitations:
- May be empty for some stocks
- News availability varies by company
Use Cases:
- Market sentiment analysis
- News monitoring
- Event-driven analysis
- Risk assessment
Get current market data for real-time applications:
quote, err := client.FetchQuote(ctx, "AAPL", runID)Get price history for analysis:
bars, err := client.FetchDailyBars(ctx, "AAPL", start, end, true, runID)Get financial metrics for analysis:
financials, err := client.ScrapeFinancials(ctx, "AAPL", runID)
keyStats, err := client.ScrapeKeyStatistics(ctx, "AAPL", runID)Get analyst estimates and recommendations:
analysis, err := client.ScrapeAnalysis(ctx, "AAPL", runID)Get market sentiment:
news, err := client.ScrapeNews(ctx, "AAPL", runID)Use for basic identification only:
companyInfo, err := client.FetchCompanyInfo(ctx, "AAPL", runID)
// Note: Limited data, use alternative sources for detailed profilesFetchQuote()FetchDailyBars()FetchWeeklyBars()FetchMonthlyBars()FetchIntradayBars()FetchCompanyInfo()FetchMarketData()
ScrapeFinancials()ScrapeBalanceSheet()ScrapeCashFlow()ScrapeKeyStatistics()ScrapeAnalysis()ScrapeAnalystInsights()ScrapeNews()
- Use API methods when possible for better performance
- Use session rotation for high-volume requests
- Implement rate limiting to avoid being blocked
- Cache results when appropriate
- Use concurrent processing for multiple symbols
- Network errors
- Rate limiting (429)
- Invalid symbols
- Data not available
- Parse errors
- Website structure changes
- Rate limiting
- Empty results
- Authentication errors (401)
- Subscription required (exit code 2)
- Quotes: Generally available for all active stocks
- Historical Data: Available for most stocks
- Company Info: Basic info only
- Financials: Available for most public companies
- Analysis: May be limited for smaller companies
- News: Highly variable, may be empty
- Use
FetchQuote()for real-time prices - Use
FetchIntradayBars()for short-term analysis - Use
FetchDailyBars()for daily analysis
- Use
ScrapeFinancials()for financial analysis - Use
ScrapeKeyStatistics()for valuation metrics - Use
ScrapeAnalysis()for analyst insights - Use
ScrapeNews()for market sentiment
- Use
FetchDailyBars()for performance analysis - Use
FetchQuote()for current valuations - Use
ScrapeKeyStatistics()for risk metrics
- Use
FetchMarketData()for comprehensive market data - Use
ScrapeNews()for market sentiment - Use
ScrapeAnalysis()for analyst sentiment
- API Reference - Complete API documentation
- Data Structures - Detailed data structure guide
- Complete Examples - Working code examples
- Error Handling Guide - Comprehensive error handling