ZhuLinsen/daily_stock_analysis · error · DataFetchError
[AlphaVantage] No time series data for {symbol}
Error message
[AlphaVantage] No time series data for {symbol} What it means
A DataFetchError raised by AlphaVantageFetcher._fetch_raw_data when the response JSON lacks the 'Time Series (Daily)' key or that key maps to an empty object. This means AV neither reported a Note (rate limit) nor an Error Message, but simply returned no series payload — typically a key-privilege or empty-response condition rather than a network fault.
Source
Thrown at data_provider/alphavantage_fetcher.py:70
'apikey': self._api_key,
}
try:
self.random_sleep(0.5, 1.5)
resp = requests.get(_AV_BASE_URL, params=params, timeout=30)
resp.raise_for_status()
data = resp.json()
except Exception as e:
raise DataFetchError(f"[AlphaVantage] HTTP request failed for {symbol}: {e}") from e
if 'Note' in data:
raise DataFetchError(f"[AlphaVantage] Rate limited: {data['Note']}")
if 'Error Message' in data:
raise DataFetchError(f"[AlphaVantage] API error for {symbol}: {data['Error Message']}")
ts_key = 'Time Series (Daily)'
if ts_key not in data or not data[ts_key]:
raise DataFetchError(f"[AlphaVantage] No time series data for {symbol}")
rows = []
start = datetime.strptime(start_date, '%Y-%m-%d').date()
end = datetime.strptime(end_date, '%Y-%m-%d').date()
for date_str, values in data[ts_key].items():
row_date = datetime.strptime(date_str, '%Y-%m-%d').date()
if start <= row_date <= end:
rows.append({
'date': date_str,
'1. open': float(values.get('1. open', 0)),
'2. high': float(values.get('2. high', 0)),
'3. low': float(values.get('3. low', 0)),
'4. close': float(values.get('4. close', 0)),
'5. volume': float(values.get('5. volume', 0)),
})
if not rows:
raise DataFetchError(f"[AlphaVantage] No data in date range for {symbol}")View on GitHub (pinned to 5159bd72e8)
Solutions
- Call the same endpoint manually with the key and inspect the raw JSON to see what AV actually returned.
- If metadata mentions 'premium', switch symbols/functions to free-tier ones or upgrade the key.
- Confirm the symbol has trading history (not a pre-IPO or empty listing).
- Fall back to Yfinance/Akshare for this symbol.
Example fix
# debugging recipe
import requests, os
r = requests.get('https://www.alphavantage.co/query', params={
'function': 'TIME_SERIES_DAILY', 'symbol': sym,
'apikey': os.environ['ALPHAVANTAGE_API_KEY']})
print(r.json()) # inspect why 'Time Series (Daily)' is absent Defensive patterns
Strategy: fallback
Validate before calling
import requests, os
r = requests.get('https://www.alphavantage.co/query', params={
'function': 'TIME_SERIES_DAILY', 'symbol': sym,
'apikey': os.environ['ALPHAVANTAGE_API_KEY']}, timeout=10)
assert 'Time Series (Daily)' in r.json(), f'unexpected AV payload keys: {list(r.json())} Try / catch
try:
df = av_fetcher.fetch(sym, start, end)
except DataFetchError as e:
if 'No time series data' in str(e):
logger.info('AV returned no series for %s; using fallback', sym)
df = yfinance_fetcher.fetch(sym, start, end)
else:
raise Prevention
- Inspect the raw AV JSON when this first appears — it distinguishes premium-gating from empty symbols.
- Keep premium-only datasets off free-tier keys.
- Monitor AV API changelog for series-key renames.
When it happens
Trigger: Using a free key to request a function/symbol combination reserved for premium (some responses omit the series), AV infrastructure returning a bare metadata-only object, or a symbol with no daily data at all (recent IPO with no trading history, some FX/crypto-style responses).
Common situations: Free-tier key hitting a premium dataset; brand-new IPO before first trading day; occasional AV API shape drift where the series key is renamed.
Related errors
- [AlphaVantage] API key not configured
- [AlphaVantage] {stock_code} is not a US stock
- [AlphaVantage] HTTP request failed for {symbol}: {e}
- [AlphaVantage] Rate limited: {data['Note']}
- [AlphaVantage] API error for {symbol}: {data['Error Message'
AI-assisted analysis of ZhuLinsen/daily_stock_analysis@5159bd72e8 (2026-08-15).
Data as JSON: /api/errors/5c11732feca68cdd.
Report an issue: GitHub.