diff --git a/scripts/get-contributions-stats.py b/scripts/get-contributions-stats.py
index 7e24bf36bc768788de2e89b1111422d0f4f85742..6ac65ca7629c2bbe63bd7901f2e7e641736c71e4 100644
--- a/scripts/get-contributions-stats.py
+++ b/scripts/get-contributions-stats.py
@@ -10,28 +10,36 @@ WEBLATE_COMPONENT_ID = "funkwhale/front"
 
 def get_issues(next_release):
     url = GITLAB_URL + "/api/v4/issues"
-    # TODO assumes we have less than 100 issues per Milestone
-    response = requests.get(
-        url,
-        params={"per_page": 100, "milestone": next_release, "scope": "all"},
-        headers={"PRIVATE-TOKEN": os.environ["PRIVATE_TOKEN"]},
-    )
-    response.raise_for_status()
+    while url:
+        response = requests.get(
+            url,
+            params={"per_page": 20, "milestone": next_release, "scope": "all"},
+            headers={"PRIVATE-TOKEN": os.environ["PRIVATE_TOKEN"]},
+        )
+        response.raise_for_status()
+        yield from response.json()
 
-    return response.json()
+        if "next" in response.links:
+            url = response.links["next"]["url"]
+        else:
+            url = None
 
 
 def get_merge_requests(next_release):
     url = GITLAB_URL + "/api/v4/merge_requests"
-    # TODO assumes we have less than 100 issues per Milestone
-    response = requests.get(
-        url,
-        params={"per_page": 100, "milestone": next_release, "scope": "all"},
-        headers={"PRIVATE-TOKEN": os.environ["PRIVATE_TOKEN"]},
-    )
-    response.raise_for_status()
-
-    return response.json()
+    while url:
+        response = requests.get(
+            url,
+            params={"per_page": 20, "milestone": next_release, "scope": "all"},
+            headers={"PRIVATE-TOKEN": os.environ["PRIVATE_TOKEN"]},
+        )
+        response.raise_for_status()
+        yield from response.json()
+
+        if "next" in response.links:
+            url = response.links["next"]["url"]
+        else:
+            url = None
 
 
 def get_participants(project_id, issue_iid, object_type="issues"):