diff --git a/api/funkwhale_api/federation/views.py b/api/funkwhale_api/federation/views.py
index 35d8a75a574c98c2a0abb664637dcb27b28d4990..da2b193a2d0619d8617fa2656a8e76689f406977 100644
--- a/api/funkwhale_api/federation/views.py
+++ b/api/funkwhale_api/federation/views.py
@@ -121,7 +121,7 @@ class MusicFilesViewSet(FederationMixin, viewsets.GenericViewSet):
         qs = TrackFile.objects.order_by('-creation_date').select_related(
             'track__artist',
             'track__album__artist'
-        )
+        ).filter(library_track__isnull=True)
         if page is None:
             conf = {
                 'id': utils.full_url(reverse('federation:music:files-list')),
diff --git a/api/tests/federation/test_views.py b/api/tests/federation/test_views.py
index c26810dadf35b2088e1b7154801fbd728eeebdb2..c5d651dce2ec634b4004ad6fa4e9b45e2caefaca 100644
--- a/api/tests/federation/test_views.py
+++ b/api/tests/federation/test_views.py
@@ -116,6 +116,18 @@ def test_audio_file_list_actor_page(
     assert response.status_code == 200
     assert response.data == expected
 
+def test_audio_file_list_actor_page_exclude_federated_files(
+        db, settings, api_client, factories):
+    settings.FEDERATION_MUSIC_NEEDS_APPROVAL = False
+    library = actors.SYSTEM_ACTORS['library'].get_actor_instance()
+    tfs = factories['music.TrackFile'].create_batch(size=5, federation=True)
+
+    url = reverse('federation:music:files-list')
+    response = api_client.get(url)
+
+    assert response.status_code == 200
+    assert response.data['totalItems'] == 0
+
 
 def test_audio_file_list_actor_page_error(
         db, settings, api_client, factories):