diff --git a/src/ios-deploy/ios-deploy.m b/src/ios-deploy/ios-deploy.m
index e19c420..c20db70 100644
--- a/src/ios-deploy/ios-deploy.m
+++ b/src/ios-deploy/ios-deploy.m
@@ -1580,18 +1580,28 @@
     check_error(AMDeviceValidatePairing(device));
     check_error(AMDeviceStartSession(device));
 
-    NSArray *a = [NSArray arrayWithObjects:@"CFBundleIdentifier", nil];
+    NSArray *a = [NSArray arrayWithObjects:
+                  @"CFBundleIdentifier",
+                  @"CFBundleName",
+                  @"CFBundleDisplayName",
+                  @"CFBundleVersion",
+                  @"CFBundleShortVersionString", nil];
     NSDictionary *optionsDict = [NSDictionary dictionaryWithObject:a forKey:@"ReturnAttributes"];
     CFDictionaryRef options = (CFDictionaryRef)optionsDict;
     CFDictionaryRef result = nil;
     check_error(AMDeviceLookupApplications(device, options, &result));
 
-    CFIndex count;
-    count = CFDictionaryGetCount(result);
-    const void *keys[count];
-    CFDictionaryGetKeysAndValues(result, keys, NULL);
-    for(int i = 0; i < count; ++i) {
-        NSLogOut(@"%@", (CFStringRef)keys[i]);
+    if (_json_output) {
+        NSLogJSON(@{@"Event": @"ListBundleId",
+                    @"Apps": (NSDictionary *)result});
+    } else {
+        CFIndex count;
+        count = CFDictionaryGetCount(result);
+        const void *keys[count];
+        CFDictionaryGetKeysAndValues(result, keys, NULL);
+        for(int i = 0; i < count; ++i) {
+            NSLogOut(@"%@", (CFStringRef)keys[i]);
+        }
     }
 
     check_error(AMDeviceStopSession(device));
