diff --git a/api/funkwhale_api/audio/serializers.py b/api/funkwhale_api/audio/serializers.py
index a946df9a90e09ae80722dc7d80357cf76593b65b..205ec383ca2536097c577bf77f7f141192bf6afa 100644
--- a/api/funkwhale_api/audio/serializers.py
+++ b/api/funkwhale_api/audio/serializers.py
@@ -97,6 +97,15 @@ class ChannelSerializer(serializers.ModelSerializer):
     def get_artist(self, obj):
         return music_serializers.serialize_artist_simple(obj.artist)
 
+    def to_representation(self, obj):
+        data = super().to_representation(obj)
+        if self.context.get("subscriptions_count"):
+            data["subscriptions_count"] = self.get_subscriptions_count(obj)
+        return data
+
+    def get_subscriptions_count(self, obj):
+        return obj.actor.received_follows.exclude(approved=False).count()
+
 
 class SubscriptionSerializer(serializers.Serializer):
     approved = serializers.BooleanField(read_only=True)
diff --git a/api/funkwhale_api/audio/views.py b/api/funkwhale_api/audio/views.py
index ba9983672a6ff826d97fcc4bedd42539191bdf57..5162730a6310b06c2ccaaf13d9f0f6eafacaa094 100644
--- a/api/funkwhale_api/audio/views.py
+++ b/api/funkwhale_api/audio/views.py
@@ -92,6 +92,11 @@ class ChannelViewSet(
         request.user.actor.emitted_follows.filter(target=object.actor).delete()
         return response.Response(status=204)
 
+    def get_serializer_context(self):
+        context = super().get_serializer_context()
+        context["subscriptions_count"] = self.action in ["retrieve", "create", "update"]
+        return context
+
 
 class SubscriptionsViewSet(
     ChannelsMixin,
diff --git a/api/tests/audio/test_serializers.py b/api/tests/audio/test_serializers.py
index b431e8e96fdf19551596442f67933d24dd27546d..7f39bb338f149e7f3d956aa92f8b6ffc544cdbe7 100644
--- a/api/tests/audio/test_serializers.py
+++ b/api/tests/audio/test_serializers.py
@@ -90,6 +90,16 @@ def test_channel_serializer_representation(factories, to_api_date):
     assert serializers.ChannelSerializer(channel).data == expected
 
 
+def test_channel_serializer_representation_subscriptions_count(factories, to_api_date):
+    channel = factories["audio.Channel"]()
+    factories["federation.Follow"](target=channel.actor)
+    factories["federation.Follow"](target=channel.actor, approved=False)
+    serializer = serializers.ChannelSerializer(
+        channel, context={"subscriptions_count": True}
+    )
+    assert serializer.data["subscriptions_count"] == 1
+
+
 def test_subscription_serializer(factories, to_api_date):
     subscription = factories["audio.Subscription"]()
     expected = {
diff --git a/api/tests/audio/test_views.py b/api/tests/audio/test_views.py
index 0724bfa98b07e69008c0d4abaa5a04625fede72b..935ee434276fcb686ea2589c3af61d1b9546038b 100644
--- a/api/tests/audio/test_views.py
+++ b/api/tests/audio/test_views.py
@@ -41,7 +41,9 @@ def test_channel_create(logged_in_api_client):
 def test_channel_detail(factories, logged_in_api_client):
     channel = factories["audio.Channel"](artist__description=None)
     url = reverse("api:v1:channels-detail", kwargs={"uuid": channel.uuid})
-    expected = serializers.ChannelSerializer(channel).data
+    expected = serializers.ChannelSerializer(
+        channel, context={"subscriptions_count": True}
+    ).data
     response = logged_in_api_client.get(url)
 
     assert response.status_code == 200