diff --git a/blockerbugs/util/update_sync.py b/blockerbugs/util/update_sync.py
--- a/blockerbugs/util/update_sync.py
+++ b/blockerbugs/util/update_sync.py
@@ -35,7 +35,7 @@
     def __init__(self, db, bodhi_interface=None):
         self.db = db
         if bodhi_interface:
-            self.bodhi_interface = bodhi_interface
+            self.bodhi_interface = bodhi_interface()
         else:
             self.bodhi_interface = bodhi.BodhiClient(base_url=bodhi_baseurl)
         self.log = logging.getLogger('update_sync')
@@ -109,19 +109,25 @@
                 self.db.session.commit()
 
     def search_updates(self, bugids, release_num):
-        req_params = {
-            'bugs': ','.join(str(bug_id) for bug_id in bugids),
-            'release': 'f%d' % release_num,
-            'limit': -1,
-        }
-        queries_data = self.bodhi_interface.send_request(
-            'list', req_params=req_params)
-        if 'error' in queries_data:
-            raise ServerError('', 200, queries_data['error'])
+        queries_data = dict(
+                bugs=[str(bug_id) for bug_id in bugids],
+                release='f%d' % release_num,
+                limit=100,
+        )
+        result = self.bodhi_interface.query(**queries_data)
+        if u'status' in result.keys():
+            raise ServerError('', 200, result['errors'][0].description)
+
         updates = {}
-        for update in queries_data['updates']:
-            if update.title not in updates:
+        for update in result.updates:
+            updates[update.title] = update
+
+        while result.page < result.pages:
+            result = self.bodhi_interface.query(page=result.page + 1,
+                                                **queries_data)
+            for update in result.updates:
                 updates[update.title] = update
+
         updates = updates.values()  # updates without duplicates
         self.log.info('found %d updates from bodhi for %d bugs in f%d' %
                       (len(updates), len(bugids), release_num))
diff --git a/init_db.sh b/init_db.sh
--- a/init_db.sh
+++ b/init_db.sh
@@ -8,10 +8,10 @@
 python run_cli.py init_db
 
 # add releases
-python run_cli.py add_release -r 22
+python run_cli.py add_release -r 23
 
 # add milestones
-python run_cli.py add_milestone -r 22 -m alpha -b 1043121 -a 1043123
-python run_cli.py add_milestone -r 22 -m beta -b 1043125 -a 1043128
-python run_cli.py add_milestone -r 22 -m final -b 1043130 -a 1043132
+python run_cli.py add_milestone -r 23 -m alpha -b 1170817 -a 1170818
+python run_cli.py add_milestone -r 23 -m beta -b 1170819 -a 1178020
+python run_cli.py add_milestone -r 23 -m final -b 1170821 -a 1170822
 
diff --git a/testing/testfunc_update_sync.py b/testing/testfunc_update_sync.py
--- a/testing/testfunc_update_sync.py
+++ b/testing/testfunc_update_sync.py
@@ -64,32 +64,24 @@
         update2_for_bug_3000.title: datetime(2003, 1, 1),
     }
 
-    @classmethod
-    def send_request(cls, method, req_params, *args, **kwargs):
-        assert method == 'list'
-        bugs = req_params['bugs']
-        release = req_params['release']
-        bugs = (bug.strip() for bug in bugs.split(','))
-        updates = list(chain(*(cls.updates[(release, bug)] for bug in bugs)))
-        return Bunch(num_items=len(updates),
-                     tg_flash=None,
-                     title=u'%d update found' % (len(updates)),
-                     updates=updates)
-
+    def query(self, release=None, bugs=None, **kwargs):
+        updates = list(chain(*(self.updates[(release, bug)] for bug in bugs)))
+        return Bunch(updates=updates,
+                     page=1,
+                     pages=1,
+                     rows_per_page=20,
+                     total=len(updates))
 
 class FakeErrorBodhiInterface(object):
-    @classmethod
-    def send_request(cls, method, *args, **kwargs):
-        assert method == 'list'
-        return Bunch(error=u"error message", num_items=0,
-                     tg_flash=None, title=u"Unknown release u'f99'",
-                     updates=[])
+    def query(self, **kwargs):
+        return Bunch(errors=[Bunch(location=u"querystring",
+                                    name=u"release",
+                                    description=u"Unknown release u'f99'")],
+                     status=u"error")
 
 
 class FakeRaisesBodhiInterface(object):
-    @classmethod
-    def send_request(cls, method, *args, **kwargs):
-        assert method == 'list'
+    def query(self, **kwargs):
         raise ServerError('https://admin.fedoraproject.org/updates/list',
                           500,
                           'Internal Server Error')
@@ -191,7 +183,7 @@
         update_sync.log.error = log_error
         update_sync.sync_updates(self.test_release99)
         assert log_error.call_count == 1
-        assert 'error message' in log_error.call_args[0][0]
+        assert 'Unknown release' in log_error.call_args[0][0]
 
     def test_release_server_error(self):
         add_bug(4000, 'testbug1', self.test_milestone99alpha)

