diff --git a/jussi/upstream.py b/jussi/upstream.py
index bd7bd43c99fd78ae2efff09d6394fa49a6118f77..7b9728d9d04402274f689eae639e0f747eca8d42 100644
--- a/jussi/upstream.py
+++ b/jussi/upstream.py
@@ -18,7 +18,7 @@ from .errors import InvalidUpstreamURL
 
 logger = structlog.get_logger(__name__)
 
-ACCOUNT_TRANSFER_PATTERN = re.compile(r'^\/?@([^\/\s]+)/transfers$')
+ACCOUNT_TRANSFER_PATTERN = re.compile(r'^\/?(@([^\/\s]+)/transfers|~?witnesses)$')
 
 
 # -------------------
@@ -88,14 +88,16 @@ class _Upstreams(object):
 
     @functools.lru_cache(8192)
     def url(self, request_urn) -> str:
-        try:
-            if (request_urn.api == 'database_api' or request_urn.api == 'condenser_api') and ACCOUNT_TRANSFER_PATTERN.match(
-                    request_urn.params[0]):
-                url = os.environ.get('JUSSI_ACCOUNT_TRANSFER_STEEMD_URL')
-                if url:
-                    return url
-        except Exception:
-            pass
+        # certain steemd.get_state paths must be routed differently
+        if (request_urn.api in ['database_api', 'condenser_api']
+                and request_urn.method == 'get_state'
+                and isinstance(request_urn.params, list)
+                and len(request_urn.params) == 1
+                and ACCOUNT_TRANSFER_PATTERN.match(request_urn.params[0])):
+            url = os.environ.get('JUSSI_ACCOUNT_TRANSFER_STEEMD_URL')
+            if url:
+                return url
+
         _, url = self.__URLS.longest_prefix(str(request_urn))
         if not url:
             raise InvalidUpstreamURL(