diff --git a/api/funkwhale_api/favorites/filters.py b/api/funkwhale_api/favorites/filters.py
new file mode 100644
index 0000000000000000000000000000000000000000..a355593d91bea643277086fe98d7e81a1653e998
--- /dev/null
+++ b/api/funkwhale_api/favorites/filters.py
@@ -0,0 +1,15 @@
+from django_filters import rest_framework as filters
+
+from funkwhale_api.common import fields
+
+from . import models
+
+
+class TrackFavoriteFilter(filters.FilterSet):
+    q = fields.SearchFilter(
+        search_fields=["track__title", "track__artist__name", "track__album__title"]
+    )
+
+    class Meta:
+        model = models.TrackFavorite
+        fields = ["user", "q"]
diff --git a/api/funkwhale_api/favorites/views.py b/api/funkwhale_api/favorites/views.py
index ae47e03f251cb5e89972e716c36563d6b3e9f5ca..dae90ebbdcfeb3719a915f125bc26f76208d431b 100644
--- a/api/funkwhale_api/favorites/views.py
+++ b/api/funkwhale_api/favorites/views.py
@@ -7,7 +7,7 @@ from funkwhale_api.activity import record
 from funkwhale_api.common import fields, permissions
 from funkwhale_api.music.models import Track
 
-from . import models, serializers
+from . import filters, models, serializers
 
 
 class TrackFavoriteViewSet(
@@ -17,6 +17,7 @@ class TrackFavoriteViewSet(
     viewsets.GenericViewSet,
 ):
 
+    filter_class = filters.TrackFavoriteFilter
     serializer_class = serializers.UserTrackFavoriteSerializer
     queryset = (
         models.TrackFavorite.objects.all()
diff --git a/api/tests/favorites/test_favorites.py b/api/tests/favorites/test_favorites.py
index 6ef323db50b3eeb4edaaf5c7d97b49a5c3b3ad19..0b99c93409a7ca1eb542fe2607d29a3b54c1293c 100644
--- a/api/tests/favorites/test_favorites.py
+++ b/api/tests/favorites/test_favorites.py
@@ -20,8 +20,9 @@ def test_user_can_add_favorite(factories):
 def test_user_can_get_his_favorites(api_request, factories, logged_in_client, client):
     r = api_request.get("/")
     favorite = factories["favorites.TrackFavorite"](user=logged_in_client.user)
+    factories["favorites.TrackFavorite"]()
     url = reverse("api:v1:favorites:tracks-list")
-    response = logged_in_client.get(url)
+    response = logged_in_client.get(url, {"user": logged_in_client.user.pk})
     expected = [
         {
             "user": users_serializers.UserBasicSerializer(
diff --git a/changes/changelog.d/384.bugfix b/changes/changelog.d/384.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..c8920985bc74d1971df4b5f425198fb37a7990cb
--- /dev/null
+++ b/changes/changelog.d/384.bugfix
@@ -0,0 +1 @@
+Fixed unfiltered results in favorites API (#384)
diff --git a/front/src/components/favorites/List.vue b/front/src/components/favorites/List.vue
index 71355536ede69c74039556b48d75672b072aadf9..eacea63eca01e52b3b96b22d541cac8e6ac623a2 100644
--- a/front/src/components/favorites/List.vue
+++ b/front/src/components/favorites/List.vue
@@ -11,7 +11,7 @@
         <translate
           translate-plural="%{ count } favorites"
           :translate-n="$store.state.favorites.count"
-          :translate-params="{count: $store.state.favorites.count}">
+          :translate-params="{count: results.count}">
           1 favorite
         </translate>
       </h2>
diff --git a/front/src/store/favorites.js b/front/src/store/favorites.js
index b7e789511217726e74412591d18233e6d25ed762..5983d18051fe2f519ca3b0ac7454a148af0aea2c 100644
--- a/front/src/store/favorites.js
+++ b/front/src/store/favorites.js
@@ -53,10 +53,13 @@ export default {
     toggle ({getters, dispatch}, id) {
       dispatch('set', {id, value: !getters['isFavorite'](id)})
     },
-    fetch ({dispatch, state, commit}, url) {
+    fetch ({dispatch, state, commit, rootState}, url) {
       // will fetch favorites by batches from API to have them locally
+      let params = {
+        user: rootState.auth.profile.id
+      }
       url = url || 'favorites/tracks/'
-      return axios.get(url).then((response) => {
+      return axios.get(url, {params: params}).then((response) => {
         logger.default.info('Fetched a batch of ' + response.data.results.length + ' favorites')
         response.data.results.forEach(result => {
           commit('track', {id: result.track, value: true})