diff --git a/scripts/pull-spdx-licenses.py b/scripts/pull-spdx-licenses.py
index 597a62133f..de1f5b7bad 100755
--- a/scripts/pull-spdx-licenses.py
+++ b/scripts/pull-spdx-licenses.py
@@ -55,20 +55,22 @@ def main():
             data = json.load(response)
             version = data["tag_name"]
 
-    print(f"Pulling SPDX license list version {version}")
-    req = urllib.request.Request(
-        f"https://raw.githubusercontent.com/spdx/license-list-data/{version}/json/licenses.json"
-    )
-    with urllib.request.urlopen(req) as response:
-        spdx_licenses = json.load(response)
+    spdx_licenses = {}
+    for jsonfile in ["licenses.json", "exceptions.json"]:
+        req = urllib.request.Request(
+            f"https://raw.githubusercontent.com/spdx/license-list-data/{version}/json/{jsonfile}"
+        )
+        with urllib.request.urlopen(req) as response:
+            spdx_licenses.update(json.load(response))
+            print(len(spdx_licenses))
 
     with (TOP_DIR / "meta" / "files" / "spdx-licenses.json").open("w") as f:
         json.dump(spdx_licenses, f, sort_keys=True, indent=2)
 
-    total_count = len(spdx_licenses["licenses"])
+    total_count = len(spdx_licenses["licenses"] + spdx_licenses["exceptions"])
     updated = 0
-    for idx, lic in enumerate(spdx_licenses["licenses"]):
-        lic_id = lic["licenseId"]
+    for idx, lic in enumerate(spdx_licenses["licenses"] + spdx_licenses["exceptions"]):
+        lic_id = lic.get("licenseId") or lic.get("licenseExceptionId")
 
         print(f"[{idx + 1} of {total_count}] ", end="")
 
@@ -88,7 +90,7 @@ def main():
             continue
 
         with dest_license_file.open("w") as f:
-            f.write(lic_data["licenseText"])
+            f.write(lic_data.get("licenseText") or lic_data.get("licenseExceptionText"))
         updated += 1
         print("done")
 
