diff --git a/inventory_provider/gap.py b/inventory_provider/gap.py
index bd91ea5f1c5d455979cada418a1544321d51f489..b4333fa9f3cf8d021dbbd033d61aca1533df815f 100644
--- a/inventory_provider/gap.py
+++ b/inventory_provider/gap.py
@@ -1,7 +1,9 @@
 import logging
+import time
 
 import requests
 from flask import current_app
+import concurrent.futures
 
 logger = logging.getLogger(__name__)
 
@@ -110,14 +112,16 @@ def load_routers_from_orchestrator() -> dict:
     """
     routers = {}
     response = make_request(body={'query': query})
-
+    print(time.time())
     try:
         devices = response['data']['subscriptions']['page']
     except (TypeError, KeyError):
         devices = []
 
-    for device in devices:
-        router_info = extract_router_info(device)
-        if router_info is not None:
-            routers[router_info['fqdn']] = router_info['vendor']
+    with concurrent.futures.ThreadPoolExecutor() as executor:
+        futures = [executor.submit(extract_router_info, device) for device in devices]
+        for future in concurrent.futures.as_completed(futures):
+            router_info = future.result()
+            if router_info is not None:
+                routers[router_info['fqdn']] = router_info['vendor']
     return routers