From d77020dcc5e4ff967dd4dc4315246bcec2a13bfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20Rodrigues?= Date: Sat, 13 Jun 2026 18:49:49 +0100 Subject: [PATCH] fix: add User-Agent header to Yahoo Finance price requests Without it the API returns "Too Many Requests" (not JSON), prices map stays empty, currentValue = 0, and every holding shows -100% P&L with an empty allocation chart. Co-Authored-By: Claude Sonnet 4.6 --- apps/finance/services/api/main/portfolio.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/finance/services/api/main/portfolio.go b/apps/finance/services/api/main/portfolio.go index e23f174..52e1532 100644 --- a/apps/finance/services/api/main/portfolio.go +++ b/apps/finance/services/api/main/portfolio.go @@ -167,7 +167,12 @@ func fetchPricesByISIN(isins []string) (map[string]int64, error) { } url := fmt.Sprintf("https://query1.finance.yahoo.com/v8/finance/chart/%s", ticker) - resp, err := client.Get(url) + req, err := http.NewRequest(http.MethodGet, url, nil) + if err != nil { + continue + } + req.Header.Set("User-Agent", "Mozilla/5.0 (compatible; homelab-finance/1.0)") + resp, err := client.Do(req) if err != nil { slog.Warn("price fetch failed", "isin", isin, "ticker", ticker, "err", err) continue