diff --git a/planet/cli/data.py b/planet/cli/data.py
index e45dbad..6ce15ee 100644
--- a/planet/cli/data.py
+++ b/planet/cli/data.py
@@ -21,7 +21,9 @@ from planet import data_filter, DataClient
 from planet.clients.data import (SEARCH_SORT,
                                  SEARCH_SORT_DEFAULT,
                                  STATS_INTERVAL)
-from planet.specs import get_item_types, SpecificationException
+from planet.specs import (get_item_types,
+                          validate_item_type,
+                          SpecificationException)
 
 from . import types
 from .cmds import coro, translate_exceptions
@@ -65,15 +67,14 @@ def assets_to_filter(ctx, param, assets: List[str]) -> Optional[dict]:
 
 
 def check_item_types(ctx, param, item_types) -> Optional[List[dict]]:
-    # Set difference between given item types and all item types
-    invalid_item_types = set([item.lower() for item in item_types]) - set(
-        [a.lower() for a in ALL_ITEM_TYPES])
-    if invalid_item_types:
-        raise SpecificationException(invalid_item_types,
-                                     ALL_ITEM_TYPES,
-                                     'item_type')
-    else:
+    '''Validates the item type by comparing the inputted item type to all
+    supported item types.'''
+    try:
+        for item_type in item_types:
+            validate_item_type(item_type)
         return item_types
+    except SpecificationException as e:
+        raise click.BadParameter(e)
 
 
 def date_range_to_filter(ctx, param, values) -> Optional[List[dict]]:

diff --git a/tests/integration/test_orders_cli.py b/tests/integration/test_orders_cli.py
index 3610ad9..59909c8 100644
--- a/tests/integration/test_orders_cli.py
+++ b/tests/integration/test_orders_cli.py
@@ -491,7 +491,8 @@ def test_cli_orders_request_item_type_invalid(invoke):
         '--id=4500474_2133707_2021-05-20_2419',
     ])
     assert result.exit_code == 2
-    assert "Usage: main orders request [OPTIONS] ITEM_TYPE BUNDLE" in result.output
+    error_msg = "Usage: main orders request [OPTIONS] ITEM_TYPE BUNDLE"
+    assert error_msg in result.output
 
 
 def test_cli_orders_request_product_bundle_invalid(invoke):
@@ -503,7 +504,8 @@ def test_cli_orders_request_product_bundle_invalid(invoke):
         '--id=4500474_2133707_2021-05-20_2419',
     ])
     assert result.exit_code == 2
-    assert "Usage: main orders request [OPTIONS] ITEM_TYPE BUNDLE" in result.output
+    error_msg = "Usage: main orders request [OPTIONS] ITEM_TYPE BUNDLE"
+    assert error_msg in result.output
 
 
 def test_cli_orders_request_product_bundle_incompatible(invoke):
@@ -515,7 +517,8 @@ def test_cli_orders_request_product_bundle_incompatible(invoke):
         '--id=4500474_2133707_2021-05-20_2419',
     ])
     assert result.exit_code == 2
-    assert "Usage: main orders request [OPTIONS] ITEM_TYPE BUNDLE" in result.output
+    error_msg = "Usage: main orders request [OPTIONS] ITEM_TYPE BUNDLE"
+    assert error_msg in result.output
 
 
 def test_cli_orders_request_id_empty(invoke):
diff --git a/tests/unit/test_data_callbacks.py b/tests/unit/test_data_callbacks.py
index a777609..41d7b78 100644
--- a/tests/unit/test_data_callbacks.py
+++ b/tests/unit/test_data_callbacks.py
@@ -13,7 +13,7 @@
 # limitations under the License.
 import logging
 import pytest
-from planet.specs import SpecificationException
+import click
 from planet.cli.data import check_item_types
 
 LOGGER = logging.getLogger(__name__)
@@ -51,5 +51,5 @@ def test_item_type_success(item_types):
 
 def test_item_type_fail():
     ctx = MockContext()
-    with pytest.raises(SpecificationException):
+    with pytest.raises(click.BadParameter):
         check_item_types(ctx, 'item_type', "bad_item_type")

Report invalid item-types with more human-readable list
With `planet data search` if I do an improper item-type I get a response like:

```
Error: Invalid value for 'ITEM_TYPES': ['psscend'] should be one of {'PSScene', 'MOD09GA', 'MYD09GA', 'MYD09GQ', 'SkySatCollect', 'REOrthoTile', 'REScene', 'MOD09GQ', 'PSScene4Band', 'Sentinel1', 'Sentinel2L1C', 'SkySatScene', 'Landsat8L1G', 'PSOrthoTile', 'PSScene3Band'}
```

The { and ' characters make it feel like a dump of a program. It'd be better to have it look like a more natural list. 

`planet orders request` does it in a more readable way, so likely can just copy theirs: 
```
Error: Invalid value: item_type - 'skysatcollectd' is not one of 'PSScene', 'Landsat8L1G', 'SkySatScene', 'SkySatCollect', 'PSOrthoTile', 'REOrthoTile', 'PSScene3Band', 'Sentinel2L1C'.
```
tests/unit/test_data_callbacks.py::test_item_type_fail
tests/integration/test_orders_cli.py::test_cli_orders_list_basic tests/integration/test_orders_cli.py::test_cli_orders_list_empty tests/integration/test_orders_cli.py::test_cli_orders_list_state tests/integration/test_orders_cli.py::test_cli_orders_list_limit[None-100] tests/integration/test_orders_cli.py::test_cli_orders_list_limit[0-102] tests/integration/test_orders_cli.py::test_cli_orders_list_limit[1-1] tests/integration/test_orders_cli.py::test_cli_orders_list_pretty tests/integration/test_orders_cli.py::test_cli_orders_get tests/integration/test_orders_cli.py::test_cli_orders_get_id_not_found tests/integration/test_orders_cli.py::test_cli_orders_cancel tests/integration/test_orders_cli.py::test_cli_orders_cancel_id_not_found tests/integration/test_orders_cli.py::test_cli_orders_wait_default tests/integration/test_orders_cli.py::test_cli_orders_wait_max_attempts tests/integration/test_orders_cli.py::test_cli_orders_download_default tests/integration/test_orders_cli.py::test_cli_orders_download_checksum tests/integration/test_orders_cli.py::test_cli_orders_download_dest tests/integration/test_orders_cli.py::test_cli_orders_download_overwrite tests/integration/test_orders_cli.py::test_cli_orders_download_state tests/integration/test_orders_cli.py::test_cli_orders_create_basic_success[4500474_2133707_2021-05-20_2419-expected_ids0] tests/integration/test_orders_cli.py::test_cli_orders_create_basic_success[4500474_2133707_2021-05-20_2419,4500474_2133707_2021-05-20_2420-expected_ids1] tests/integration/test_orders_cli.py::test_cli_orders_request_basic_success[4500474_2133707_2021-05-20_2419-expected_ids0] tests/integration/test_orders_cli.py::test_cli_orders_request_basic_success[4500474_2133707_2021-05-20_2419,4500474_2133707_2021-05-20_2420-expected_ids1] tests/integration/test_orders_cli.py::test_cli_orders_request_item_type_invalid tests/integration/test_orders_cli.py::test_cli_orders_request_product_bundle_invalid tests/integration/test_orders_cli.py::test_cli_orders_request_product_bundle_incompatible tests/integration/test_orders_cli.py::test_cli_orders_request_id_empty tests/integration/test_orders_cli.py::test_cli_orders_request_clip_success[geom_geojson] tests/integration/test_orders_cli.py::test_cli_orders_request_clip_success[feature_geojson] tests/integration/test_orders_cli.py::test_cli_orders_request_clip_success[featurecollection_geojson] tests/integration/test_orders_cli.py::test_cli_orders_request_clip_invalid_geometry tests/integration/test_orders_cli.py::test_cli_orders_request_both_clip_and_tools tests/integration/test_orders_cli.py::test_cli_orders_request_cloudconfig tests/integration/test_orders_cli.py::test_cli_orders_request_email tests/integration/test_orders_cli.py::test_cli_orders_request_tools tests/integration/test_orders_cli.py::test_cli_orders_request_no_stac tests/unit/test_data_callbacks.py::test_item_type_success[PSScene3Band] tests/unit/test_data_callbacks.py::test_item_type_success[MOD09GQ] tests/unit/test_data_callbacks.py::test_item_type_success[MYD09GA] tests/unit/test_data_callbacks.py::test_item_type_success[REOrthoTile] tests/unit/test_data_callbacks.py::test_item_type_success[SkySatCollect] tests/unit/test_data_callbacks.py::test_item_type_success[SkySatScene] tests/unit/test_data_callbacks.py::test_item_type_success[MYD09GQ] tests/unit/test_data_callbacks.py::test_item_type_success[Landsat8L1G] tests/unit/test_data_callbacks.py::test_item_type_success[Sentinel2L1C] tests/unit/test_data_callbacks.py::test_item_type_success[MOD09GA] tests/unit/test_data_callbacks.py::test_item_type_success[Sentinel1] tests/unit/test_data_callbacks.py::test_item_type_success[PSScene] tests/unit/test_data_callbacks.py::test_item_type_success[PSOrthoTile] tests/unit/test_data_callbacks.py::test_item_type_success[PSScene4Band] tests/unit/test_data_callbacks.py::test_item_type_success[REScene]