diff --git a/reviewboard/webapi/resources/hosting_service.py b/reviewboard/webapi/resources/hosting_service.py
index 0d4ead958d9f1d93fa2421417adb769c7b38b9a9..3a86fafdd450631f606eeb2e55c001fb04af16b0 100644
--- a/reviewboard/webapi/resources/hosting_service.py
+++ b/reviewboard/webapi/resources/hosting_service.py
@@ -9,6 +9,7 @@ from djblets.util.decorators import augment_method_from
 from reviewboard.hostingsvcs.service import (get_hosting_services,
                                              HostingService)
 from reviewboard.webapi.base import WebAPIResource
+from reviewboard.webapi.resources import resources
 
 
 class HostingServiceResource(WebAPIResource):
@@ -82,6 +83,25 @@ class HostingServiceResource(WebAPIResource):
         return super(HostingServiceResource, self).get_serializer_for_object(
             obj)
 
+    def get_links(self, items, obj=None, *args, **kwargs):
+        links = super(HostingServiceResource, self).get_links(
+            items, obj, *args, **kwargs)
+
+        if obj:
+            request = kwargs.get('request')
+
+            accounts_url = resources.hosting_service_account.get_list_url(
+                local_site_name=request._local_site_name)
+
+            links['accounts'] = {
+                'method': 'GET',
+                'href': request.build_absolute_uri(
+                    '%s?service=%s' % (accounts_url, obj.id)
+                ),
+            }
+
+        return links
+
     @augment_method_from(WebAPIResource)
     def get_list(self, request, *args, **kwargs):
         """Lists all the hosting services supported by Review Board.
diff --git a/reviewboard/webapi/resources/hosting_service_account.py b/reviewboard/webapi/resources/hosting_service_account.py
index 57ce4ebde7764e5ea8d78d226054a363552ea474..9221d6e336b4240570db7042efbdee5956ce074f 100644
--- a/reviewboard/webapi/resources/hosting_service_account.py
+++ b/reviewboard/webapi/resources/hosting_service_account.py
@@ -50,10 +50,21 @@ class HostingServiceAccountResource(WebAPIResource):
     allowed_methods = ('GET', 'POST',)
 
     @webapi_check_login_required
-    def get_queryset(self, request, local_site_name=None, *args, **kwargs):
+    def get_queryset(self, request, local_site_name=None, is_list=False,
+                     *args, **kwargs):
         local_site = self._get_local_site(local_site_name)
-        return self.model.objects.accessible(visible_only=True,
-                                             local_site=local_site)
+
+        queryset = self.model.objects.accessible(visible_only=True,
+                                                 local_site=local_site)
+
+        if is_list:
+            if 'username' in request.GET:
+                queryset = queryset.filter(username=request.GET['username'])
+
+            if 'service' in request.GET:
+                queryset = queryset.filter(service_name=request.GET['service'])
+
+        return queryset
 
     def has_access_permissions(self, request, account, *args, **kwargs):
         return account.is_accessible_by(request.user)
@@ -66,6 +77,19 @@ class HostingServiceAccountResource(WebAPIResource):
 
     @webapi_check_local_site
     @augment_method_from(WebAPIResource)
+    @webapi_request_fields(
+        optional=dict({
+            'username': {
+                'type': six.text_type,
+                'description': 'Filter accounts by username.',
+            },
+            'service': {
+                'type': six.text_type,
+                'description': 'Filter accounts by the hosting service ID.',
+            },
+        }, **WebAPIResource.get_list.optional_fields),
+        required=WebAPIResource.get_list.required_fields
+    )
     def get_list(self, request, *args, **kwargs):
         """Retrieves the list of accounts on the server.
 
diff --git a/reviewboard/webapi/tests/test_hosting_service.py b/reviewboard/webapi/tests/test_hosting_service.py
index 7737ea81c59bd1891c5aa072fc6c9f61f715572f..a84f531474976453a0c2cef9cdb503ef8d972faf 100644
--- a/reviewboard/webapi/tests/test_hosting_service.py
+++ b/reviewboard/webapi/tests/test_hosting_service.py
@@ -27,6 +27,18 @@ def _compare_item(self, item_rsp, hosting_service):
     self.assertEqual(item_rsp['supported_scmtools'],
                      hosting_service.supported_scmtools)
 
+    # Check the links
+    self.assertIn('accounts', item_rsp['links'])
+    accounts_url = 'http://testserver/'
+
+    if '/s/local-site-1/' in item_rsp['links']['self']['href']:
+        accounts_url += 's/local-site-1/'
+
+    accounts_url += ('api/hosting-service-accounts/?service=%s'
+                     % hosting_service.id)
+
+    self.assertEqual(item_rsp['links']['accounts']['href'], accounts_url)
+
 
 @six.add_metaclass(BasicTestsMetaclass)
 class ResourceListTests(BaseWebAPITestCase):
diff --git a/reviewboard/webapi/tests/test_hosting_service_account.py b/reviewboard/webapi/tests/test_hosting_service_account.py
index 324f11d19ba9dcf2bb31bece7f54ed36981cdf61..e35035598677ca5578bb0a3becbf91db3245b13c 100644
--- a/reviewboard/webapi/tests/test_hosting_service_account.py
+++ b/reviewboard/webapi/tests/test_hosting_service_account.py
@@ -60,6 +60,42 @@ class ResourceListTests(BaseWebAPITestCase):
                 hosting_service_account_list_mimetype,
                 accounts)
 
+    def test_get_with_service(self):
+        """Testing the GET hosting-service-accounts/ API with service="""
+        HostingServiceAccount.objects.create(
+            service_name='googlecode',
+            username='bob')
+
+        account = HostingServiceAccount.objects.create(
+            service_name='github',
+            username='bob')
+
+        rsp = self.apiGet(
+            get_hosting_service_account_list_url(),
+            query={'service': 'github'},
+            expected_mimetype=hosting_service_account_list_mimetype)
+        self.assertEqual(rsp['stat'], 'ok')
+        self.assertEqual(len(rsp['hosting_service_accounts']), 1)
+        self.compare_item(rsp['hosting_service_accounts'][0], account)
+
+    def test_get_with_username(self):
+        """Testing the GET hosting-service-accounts/ API with username="""
+        account = HostingServiceAccount.objects.create(
+            service_name='googlecode',
+            username='bob')
+
+        HostingServiceAccount.objects.create(
+            service_name='googlecode',
+            username='frank')
+
+        rsp = self.apiGet(
+            get_hosting_service_account_list_url(),
+            query={'username': 'bob'},
+            expected_mimetype=hosting_service_account_list_mimetype)
+        self.assertEqual(rsp['stat'], 'ok')
+        self.assertEqual(len(rsp['hosting_service_accounts']), 1)
+        self.compare_item(rsp['hosting_service_accounts'][0], account)
+
     #
     # HTTP POST tests
     #
