diff --git a/docs/cli/ongc.rst b/docs/cli/ongc.rst
index 49f0cf2..e80397b 100644
--- a/docs/cli/ongc.rst
+++ b/docs/cli/ongc.rst
@@ -86,12 +86,14 @@ If the ouput exceed 20 objects, the user can choose to view the list in a pager.
 
     ``--type TEXT``
 
-        Allows to list only objects of a kind. It accepts one of the object types listed in 
-        the `OpenNGC guide <https://github.com/mattiaverga/OpenNGC/blob/master/NGC_guide.txt>`_.
+        Allows to list only objects of specific kinds. It accepts multiple comma separated values 
+        of the object types listed in the 
+        `OpenNGC guide <https://github.com/mattiaverga/OpenNGC/blob/master/NGC_guide.txt>`_.
 
     ``--constellation TEXT``
 
-        Allows to list only objects within a constellation boundaries. Use IAU 3-letter form.
+        Allows to list only objects within some constellations boundaries. It accepts multiple comma 
+        separated values. Use IAU 3-letter form.
 
     ``--minsize FLOAT``
 
diff --git a/pyongc/ongc.py b/pyongc/ongc.py
index d5dd1e8..bc7fe2a 100644
--- a/pyongc/ongc.py
+++ b/pyongc/ongc.py
@@ -41,7 +41,7 @@ import numpy as np
 import re
 import sqlite3
 
-__version__ = '0.4.0'
+__version__ = '0.4.90'
 DBDATE = 20190609  # Version of database data
 DBPATH = resource_filename(__name__, 'ongc.db')
 PATTERNS = {'NGC|IC': r'^((?:NGC|IC)\s?)(\d{1,4})\s?((NED)(\d{1,2})|[A-Z]{1,2})?$',
@@ -982,8 +982,8 @@ def listObjects(**kwargs):
 
     Args:
         catalog (string, optional): filter for catalog. [NGC|IC|M]
-        type (string, optional): filter for object type. See OpenNGC types list.
-        constellation (string, optional): filter for constellation 
+        type (list, optional): filter for object type. See OpenNGC types list.
+        constellation (list, optional): filter for constellation 
             (three letter latin form - e.g. "And")
         minsize (float, optional): filter for objects with MajAx >= minSize(arcmin)
         maxsize (float, optional): filter for objects with MajAx < maxSize(arcmin) 
@@ -1039,10 +1039,12 @@ def listObjects(**kwargs):
         else:
             raise ValueError('Wrong value for catalog filter. [NGC|IC|M]')
     if "type" in kwargs:
-        paramslist.append(f'type = "{kwargs["type"]}"')
+        types = [f'"{t}"' for t in kwargs["type"]]
+        paramslist.append(f'type IN ({",".join(types)})')
 
     if "constellation" in kwargs:
-        paramslist.append(f'const = "{kwargs["constellation"].capitalize()}"')
+        constellations = [f'"{c.capitalize()}"' for c in kwargs["constellation"]]
+        paramslist.append(f'const IN ({",".join(constellations)})')
 
     if "minsize" in kwargs:
         paramslist.append(f'majax >= {kwargs["minsize"]}')
diff --git a/pyongc/scripts/ongc.py b/pyongc/scripts/ongc.py
index 04571f5..6c3c295 100644
--- a/pyongc/scripts/ongc.py
+++ b/pyongc/scripts/ongc.py
@@ -134,9 +134,11 @@ def separation(obj1, obj2):
 @click.option('--catalog', type=click.Choice(['NGC', 'IC', 'M']),
               help='List only objects from specific catalog')
 @click.option('--type',
-              help='List only objects of specific type. See OpenNGC types list.')
+              help=('List only objects of specific types. Accept multiple comma separated values. '
+                    'See OpenNGC types list.'))
 @click.option('--constellation',
-              help='List only objects in specific constellation.')
+              help=('List only objects in specific constellations. '
+                    'Accept multiple comma separated values.'))
 @click.option('--minsize', type=float,
               help='List only objects with major axis >= minsize (arcmin)')
 @click.option('--maxsize', type=float,
@@ -175,6 +177,11 @@ def search(out_file, **kwargs):
                     kwargs[d] = dms[0] + dms[1] * -1/60 + dms[2] * -1/3600
                 else:
                     kwargs[d] = dms[0] + dms[1] * 1/60 + dms[2] * 1/3600
+
+        for v in ['type', 'constellation']:
+            if kwargs[v] is not None:
+                kwargs[v] = [x.strip() for x in kwargs[v].split(',')]
+
         object_list = ongc.listObjects(**{k: v for k, v in kwargs.items() if (v is not None
                                                                               and v is not False)})
         if len(object_list) == 0:

Multiple values in listObjects() filters
Allow some filters like `type` and `constellation` in listObjects() method to accept multiple values (maybe in a comma separated values string or list)
diff --git a/tests/scripts/test_ongc.py b/tests/scripts/test_ongc.py
index a1016f2..9a1db66 100644
--- a/tests/scripts/test_ongc.py
+++ b/tests/scripts/test_ongc.py
@@ -185,6 +185,14 @@ def test_search_with_type_filter():
     assert result.output.endswith('NGC7830, Star in Psc\n')
 
 
+def test_search_with_multiple_types_filter():
+    runner = CliRunner()
+    result = runner.invoke(ongc.search, ['--type=*,**'])
+    assert result.exit_code == 0
+    assert 'WARNING: the result list is long. Do you want to see it via a pager?' in result.output
+    assert result.output.endswith('M040, Double star in UMa\n')
+
+
 def test_search_with_constellation_filter():
     runner = CliRunner()
     result = runner.invoke(ongc.search, ['--constellation=aql'])
@@ -193,6 +201,14 @@ def test_search_with_constellation_filter():
     assert result.output.endswith('NGC6941, Galaxy in Aql\n')
 
 
+def test_search_with_multiple_constellations_filter():
+    runner = CliRunner()
+    result = runner.invoke(ongc.search, ['--constellation=aql,cyg'])
+    assert result.exit_code == 0
+    assert 'WARNING: the result list is long. Do you want to see it via a pager?' in result.output
+    assert result.output.endswith('NGC7175, Open Cluster in Cyg\n')
+
+
 def test_search_with_minsize_filter():
     runner = CliRunner()
     result = runner.invoke(ongc.search, ['--minsize=5'])
diff --git a/tests/test_ongc.py b/tests/test_ongc.py
index 4680114..1560997 100644
--- a/tests/test_ongc.py
+++ b/tests/test_ongc.py
@@ -488,16 +488,22 @@ class TestDsoMethods(unittest.TestCase):
         """Test the listObjects() method with type filter applied.
         Duplicated objects are not resolved to the main object.
         """
-        objectList = ongc.listObjects(type='Dup')
+        objectList = ongc.listObjects(type=['Dup', ])
 
         self.assertEqual(len(objectList), 634)
         self.assertEqual(str(objectList[0]), 'IC0011, Duplicated record in Cas')
 
+    def test_list_objects_filter_multiple_types(self):
+        """Test the listObjects() method with multiple types filter."""
+        objectList = ongc.listObjects(type=['*', '**', ])
+
+        self.assertEqual(len(objectList), 792)
+
     def test_list_objects_filter_constellation(self):
         """Test the listObjects() method with constellation filter applied."""
-        objectList = ongc.listObjects(constellation='Boo')
+        objectList = ongc.listObjects(constellation=['and', 'Boo', ])
 
-        self.assertEqual(len(objectList), 532)
+        self.assertEqual(len(objectList), 738)
 
     def test_list_objects_filter_size(self):
         """Test the listObjects() method with size filters applied."""

pip install -e .[tests]
parse_log_pytest
requirements.txt
pytest mock
apt-get update apt-get install -y gcc
3.7
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
certifi @ file:///croot/certifi_1671487769961/work/certifi
charset-normalizer==3.4.1
click==8.1.8
coverage==6.5.0
coveralls==3.3.1
docopt==0.6.2
exceptiongroup==1.2.2
idna==3.10
importlib-metadata==6.7.0
iniconfig==2.0.0
mock==5.2.0
nose==1.3.7
numpy==1.21.6
packaging==24.0
pluggy==1.2.0
-e git+https://github.com/mattiaverga/PyOngc.git@4990ca95fa3accc8a82587ebe0e2bf04aeaa1ed3#egg=PyOngc
pytest==7.4.4
requests==2.31.0
tomli==2.0.1
typing_extensions==4.7.1
urllib3==2.0.7
zipp==3.15.0

name: PyOngc
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - charset-normalizer==3.4.1
      - click==8.1.8
      - coverage==6.5.0
      - coveralls==3.3.1
      - docopt==0.6.2
      - exceptiongroup==1.2.2
      - idna==3.10
      - importlib-metadata==6.7.0
      - iniconfig==2.0.0
      - mock==5.2.0
      - nose==1.3.7
      - numpy==1.21.6
      - packaging==24.0
      - pluggy==1.2.0
      - pytest==7.4.4
      - requests==2.31.0
      - tomli==2.0.1
      - typing-extensions==4.7.1
      - urllib3==2.0.7
      - zipp==3.15.0
prefix: /opt/conda/envs/PyOngc

tests/scripts/test_ongc.py::test_search_with_multiple_types_filter tests/scripts/test_ongc.py::test_search_with_multiple_constellations_filter tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_constellation tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_multiple_types tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_type
tests/scripts/test_ongc.py::test_view tests/scripts/test_ongc.py::test_view_details tests/scripts/test_ongc.py::test_view_not_found tests/scripts/test_ongc.py::test_view_bad_name tests/scripts/test_ongc.py::test_stats tests/scripts/test_ongc.py::test_stats_database_error tests/scripts/test_ongc.py::test_neighbors tests/scripts/test_ongc.py::test_neighbors_with_catalog_filter tests/scripts/test_ongc.py::test_neighbors_with_radius_filter tests/scripts/test_ongc.py::test_neighbors_no_results tests/scripts/test_ongc.py::test_neighbors_bad_name tests/scripts/test_ongc.py::test_neighbors_with_pager tests/scripts/test_ongc.py::test_separation tests/scripts/test_ongc.py::test_separation_bad_name tests/scripts/test_ongc.py::test_search tests/scripts/test_ongc.py::test_search_with_catalog_filter tests/scripts/test_ongc.py::test_search_with_type_filter tests/scripts/test_ongc.py::test_search_with_constellation_filter tests/scripts/test_ongc.py::test_search_with_minsize_filter tests/scripts/test_ongc.py::test_search_with_maxsize_filter tests/scripts/test_ongc.py::test_search_with_uptobmag_filter tests/scripts/test_ongc.py::test_search_with_uptovmag_filter tests/scripts/test_ongc.py::test_search_with_minra_filter tests/scripts/test_ongc.py::test_search_with_maxra_filter tests/scripts/test_ongc.py::test_search_with_minra_maxra_filter tests/scripts/test_ongc.py::test_search_with_mindec_filter tests/scripts/test_ongc.py::test_search_with_maxdec_filter tests/scripts/test_ongc.py::test_search_with_mindec_maxdec_filter tests/scripts/test_ongc.py::test_search_by_common_name tests/scripts/test_ongc.py::test_search_with_common_name tests/scripts/test_ongc.py::test_search_to_file tests/scripts/test_ongc.py::test_search_no_results tests/scripts/test_ongc.py::test_search_with_pager tests/scripts/test_ongc.py::test_search_database_error tests/scripts/test_ongc.py::test_nearby tests/scripts/test_ongc.py::test_nearby_with_catalog_filter tests/scripts/test_ongc.py::test_nearby_with_radius_filter tests/scripts/test_ongc.py::test_nearby_no_results tests/scripts/test_ongc.py::test_nearby_bad_name tests/scripts/test_ongc.py::test_nearby_with_pager tests/test_ongc.py::TestDsoClass::test_dso_creation_error tests/test_ongc.py::TestDsoClass::test_duplicate_resolving tests/test_ongc.py::TestDsoClass::test_fail_database_connection tests/test_ongc.py::TestDsoClass::test_getDec tests/test_ongc.py::TestDsoClass::test_getRA tests/test_ongc.py::TestDsoClass::test_get_PN_central_star_data tests/test_ongc.py::TestDsoClass::test_get_coordinates_nonexistent tests/test_ongc.py::TestDsoClass::test_get_coordinates_radians_successful tests/test_ongc.py::TestDsoClass::test_get_coordinates_successful tests/test_ongc.py::TestDsoClass::test_get_magnitudes tests/test_ongc.py::TestDsoClass::test_get_main_identifier tests/test_ongc.py::TestDsoClass::test_get_object_identifiers tests/test_ongc.py::TestDsoClass::test_get_object_notes tests/test_ongc.py::TestDsoClass::test_name_recognition_Barnard tests/test_ongc.py::TestDsoClass::test_name_recognition_Caldwell tests/test_ongc.py::TestDsoClass::test_name_recognition_ESO tests/test_ongc.py::TestDsoClass::test_name_recognition_Harvard tests/test_ongc.py::TestDsoClass::test_name_recognition_Hickson tests/test_ongc.py::TestDsoClass::test_name_recognition_LBN tests/test_ongc.py::TestDsoClass::test_name_recognition_M102 tests/test_ongc.py::TestDsoClass::test_name_recognition_MWSC tests/test_ongc.py::TestDsoClass::test_name_recognition_Melotte tests/test_ongc.py::TestDsoClass::test_name_recognition_Messier tests/test_ongc.py::TestDsoClass::test_name_recognition_NGC tests/test_ongc.py::TestDsoClass::test_name_recognition_PGC tests/test_ongc.py::TestDsoClass::test_name_recognition_UGC tests/test_ongc.py::TestDsoClass::test_object_print tests/test_ongc.py::TestDsoClass::test_xephem_format tests/test_ongc.py::TestDsoMethods::test__distance tests/test_ongc.py::TestDsoMethods::test__limiting_coords_hms tests/test_ongc.py::TestDsoMethods::test__limiting_coords_rad tests/test_ongc.py::TestDsoMethods::test__str_to_coords tests/test_ongc.py::TestDsoMethods::test__str_to_coords_not_recognized tests/test_ongc.py::TestDsoMethods::test_calculate_separation_friendly tests/test_ongc.py::TestDsoMethods::test_calculate_separation_raw tests/test_ongc.py::TestDsoMethods::test_get_neighbors tests/test_ongc.py::TestDsoMethods::test_get_neighbors_above0ra tests/test_ongc.py::TestDsoMethods::test_get_neighbors_bad_value tests/test_ongc.py::TestDsoMethods::test_get_neighbors_below0ra tests/test_ongc.py::TestDsoMethods::test_get_neighbors_negative_dec tests/test_ongc.py::TestDsoMethods::test_get_neighbors_with_filter tests/test_ongc.py::TestDsoMethods::test_list_all_objects tests/test_ongc.py::TestDsoMethods::test_list_objects_by_name tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_catalog_IC tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_catalog_M tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_catalog_NGC tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_dec_between tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_mag tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_maxdec tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_maxra tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_mindec tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_minra tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_ra_between tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_ra_between_crossing_zero tests/test_ongc.py::TestDsoMethods::test_list_objects_filter_size tests/test_ongc.py::TestDsoMethods::test_list_objects_with_name tests/test_ongc.py::TestDsoMethods::test_list_objects_with_no_size tests/test_ongc.py::TestDsoMethods::test_list_objects_without_name tests/test_ongc.py::TestDsoMethods::test_list_objects_wrong_catalog tests/test_ongc.py::TestDsoMethods::test_list_objects_wrong_filter tests/test_ongc.py::TestDsoMethods::test_nearby tests/test_ongc.py::TestDsoMethods::test_nearby_bad_value tests/test_ongc.py::TestDsoMethods::test_nearby_with_filter tests/test_ongc.py::TestDsoMethods::test_print_details_obj_PN tests/test_ongc.py::TestDsoMethods::test_print_details_obj_galaxy tests/test_ongc.py::TestDsoMethods::test_print_details_obj_nebula tests/test_ongc.py::TestDatabaseIntegrity::test_data_integrity
pyongc/ongc.py docs/cli/ongc.rst pyongc/scripts/ongc.py
pyongc/ongc.py docs/cli/ongc.rst pyongc/scripts/ongc.py