diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 93f28e39f82f10522bcb9d14d7a06bf019d57e7a..b2bc0a17142a2f34aa01a28a6f5a8bbcb160efb9 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -690,9 +690,7 @@ module API
       expose :id
       expose :description, :ref, :cron, :cron_timezone, :next_run_at, :active
       expose :created_at, :updated_at, :deleted_at
-      expose :last_pipeline, using: Entities::Pipeline do |pipeline_schedule|
-        pipeline_schedule.pipelines&.last
-      end
+      expose :last_pipeline, using: Entities::Pipeline
       expose :owner, using: Entities::UserBasic
     end
 
diff --git a/lib/api/pipeline_schedules.rb b/lib/api/pipeline_schedules.rb
index 58888417888de3579c69ca1f496a181b947fb854..27be796356c6d1042f3bbc4cdc6a2bc26fea8c36 100644
--- a/lib/api/pipeline_schedules.rb
+++ b/lib/api/pipeline_schedules.rb
@@ -17,7 +17,7 @@ module API
       get ':id/pipeline_schedules' do
         authorize! :read_pipeline_schedule, user_project
 
-        pipeline_schedules = user_project.pipeline_schedules.preload(:pipelines)
+        pipeline_schedules = user_project.pipeline_schedules.includes(last_pipeline: {statuses: :latest})
 
         present paginate(pipeline_schedules), with: Entities::PipelineSchedule
       end
diff --git a/spec/requests/api/pipeline_schedules_spec.rb b/spec/requests/api/pipeline_schedules_spec.rb
index 34c4fcfcae158161e5707d58040a52ad8904d2fa..1b44043907b73522358c7a48a8a646353b46447c 100644
--- a/spec/requests/api/pipeline_schedules_spec.rb
+++ b/spec/requests/api/pipeline_schedules_spec.rb
@@ -31,6 +31,9 @@ describe API::PipelineSchedules do
         end.count
 
         create_list(:ci_pipeline_schedule, 10, project: project, owner: developer)
+          .each do |pipeline_schedule|
+          pipeline_schedule.pipelines << build(:ci_pipeline, project: project)
+        end
 
         expect do
           get api("/projects/#{project.id}/pipeline_schedules", developer)