diff --git a/dist/index.js b/dist/index.js
index 09fdb5d..a46b432 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -1627,7 +1627,7 @@
         try {
             for (var _b = __asyncValues(repositoryInfo.octokit.paginate.iterator(listJobs)), _c; _c = yield _b.next(), !_c.done;) {
                 const item = _c.value;
-                for (const job of item.data) {
+                for (const job of item.data.jobs) {
                     core.info(`    The job name: ${job.name}, Conclusion: ${job.conclusion}`);
                     const [jobMatched, jobMatches] = matchInArray(job.name, jobNameRegexps);
                     if (jobMatched) {
diff --git a/src/main.ts b/src/main.ts
index 3c4eab1..7ee681b 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -228,7 +228,7 @@
   const allMatches: string[] = []
   let matched = false
   for await (const item of repositoryInfo.octokit.paginate.iterator(listJobs)) {
-    for (const job of item.data) {
+    for (const job of item.data.jobs) {
       core.info(`    The job name: ${job.name}, Conclusion: ${job.conclusion}`)
       const [jobMatched, jobMatches] = matchInArray(job.name, jobNameRegexps)
       if (jobMatched) {
