diff --git a/changelogs/unreleased/56694-mark-group-level-labels-in-label-api-as-such.yml b/changelogs/unreleased/56694-mark-group-level-labels-in-label-api-as-such.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ae2d9e18e0bac6988bef219c36ae443293d3f15a
--- /dev/null
+++ b/changelogs/unreleased/56694-mark-group-level-labels-in-label-api-as-such.yml
@@ -0,0 +1,5 @@
+---
+title: 'API: Indicate if label is a project label'
+merge_request: 25219
+author: Robert Schilling
+type: added
diff --git a/doc/api/labels.md b/doc/api/labels.md
index 5b5b04bc1d7e53e236d29a8e5a929b184b937955..eec55bff29452f7bf0377dd726c9aa12442ba9ea 100644
--- a/doc/api/labels.md
+++ b/doc/api/labels.md
@@ -30,7 +30,8 @@ Example response:
     "closed_issues_count": 0,
     "open_merge_requests_count": 1,
     "subscribed": false,
-    "priority": 10
+    "priority": 10,
+    "is_project_label": true
   },
   {
     "id" : 4,
@@ -42,7 +43,8 @@ Example response:
     "closed_issues_count": 5,
     "open_merge_requests_count": 0,
     "subscribed": false,
-    "priority": null
+    "priority": null,
+    "is_project_label": true
   },
   {
     "id" : 7,
@@ -54,7 +56,8 @@ Example response:
     "closed_issues_count": 3,
     "open_merge_requests_count": 1,
     "subscribed": false,
-    "priority": null
+    "priority": null,
+    "is_project_label": true
   },
   {
     "id" : 8,
@@ -66,7 +69,8 @@ Example response:
     "closed_issues_count": 0,
     "open_merge_requests_count": 2,
     "subscribed": false,
-    "priority": null
+    "priority": null,
+    "is_project_label": false
   },
   {
     "id" : 9,
@@ -78,7 +82,8 @@ Example response:
     "closed_issues_count": 0,
     "open_merge_requests_count": 1,
     "subscribed": true,
-    "priority": null
+    "priority": null,
+    "is_project_label": true
   }
 ]
 ```
@@ -116,7 +121,8 @@ Example response:
   "closed_issues_count": 0,
   "open_merge_requests_count": 0,
   "subscribed": false,
-  "priority": null
+  "priority": null,
+    "is_project_label": true
 }
 ```
 
@@ -173,7 +179,8 @@ Example response:
   "closed_issues_count": 0,
   "open_merge_requests_count": 2,
   "subscribed": false,
-  "priority": null
+  "priority": null,
+  "is_project_label": true
 }
 ```
 
@@ -209,7 +216,8 @@ Example response:
   "closed_issues_count": 0,
   "open_merge_requests_count": 1,
   "subscribed": true,
-  "priority": null
+  "priority": null,
+  "is_project_label": true
 }
 ```
 
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 173e86dfd3b47f73f6389da4b8f815a5ed182396..f3ff7e10eb748949672ff6d8078ee14172cd7a02 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -1032,6 +1032,9 @@ class ProjectLabel < Label
       expose :priority do |label, options|
         label.priority(options[:parent])
       end
+      expose :is_project_label do |label, options|
+        label.is_a?(::ProjectLabel)
+      end
     end
 
     class List < Grape::Entity
diff --git a/spec/requests/api/labels_spec.rb b/spec/requests/api/labels_spec.rb
index 606fa9185d805f6170e03d1e28b87ae0d2273347..518181e4d93c741f7610e2e16d3ac4d1fe845dfa 100644
--- a/spec/requests/api/labels_spec.rb
+++ b/spec/requests/api/labels_spec.rb
@@ -22,7 +22,7 @@
       expected_keys = %w(
         id name color text_color description
         open_issues_count closed_issues_count open_merge_requests_count
-        subscribed priority
+        subscribed priority is_project_label
       )
 
       get api("/projects/#{project.id}/labels", user)
@@ -47,6 +47,7 @@
       expect(label1_response['description']).to be_nil
       expect(label1_response['priority']).to be_nil
       expect(label1_response['subscribed']).to be_falsey
+      expect(label1_response['is_project_label']).to be_truthy
 
       expect(group_label_response['open_issues_count']).to eq(1)
       expect(group_label_response['closed_issues_count']).to eq(0)
@@ -57,6 +58,7 @@
       expect(group_label_response['description']).to be_nil
       expect(group_label_response['priority']).to be_nil
       expect(group_label_response['subscribed']).to be_falsey
+      expect(group_label_response['is_project_label']).to be_falsey
 
       expect(priority_label_response['open_issues_count']).to eq(0)
       expect(priority_label_response['closed_issues_count']).to eq(0)
@@ -67,6 +69,7 @@
       expect(priority_label_response['description']).to be_nil
       expect(priority_label_response['priority']).to eq(3)
       expect(priority_label_response['subscribed']).to be_falsey
+      expect(priority_label_response['is_project_label']).to be_truthy
     end
   end