diff --git a/upgrade-helper.py b/upgrade-helper.py
index 58fd660..11b8d58 100755
--- a/upgrade-helper.py
+++ b/upgrade-helper.py
@@ -808,9 +808,17 @@ class UniverseUpdater(Updater):
             return pkg_to_upgrade
 
         upgrade_pkggroups = []
+        scan_workers = int(settings.get("scan_workers", "8"))
 
         for layer_name, layer_recipes in self.recipes:
-            pkggroups_iter = oe.recipeutils.get_recipe_upgrade_status(layer_recipes)
+            # Limit parallel version checks to avoid overwhelming upstream
+            # servers (oe-core defaults to cpu_count which can be 64+).
+            _orig_cpu_count = oe.utils.cpu_count
+            oe.utils.cpu_count = lambda at_least=1, at_most=64: min(max(at_least, scan_workers), at_most)
+            try:
+                pkggroups_iter = oe.recipeutils.get_recipe_upgrade_status(layer_recipes)
+            finally:
+                oe.utils.cpu_count = _orig_cpu_count
 
             # Collect results, logging any fetch error that terminates
             # the iterator early (oe-core raises inside executor.map,
