diff --git a/dwave/cloud/client.py b/dwave/cloud/client.py
index 05bd128..1c2df0d 100644
--- a/dwave/cloud/client.py
+++ b/dwave/cloud/client.py
@@ -697,10 +697,10 @@ class Client(object):
                 Force refresh of cached list of solvers/properties.
 
             order_by (callable/str/None, default='avg_load'):
-                Solver sorting key function (or :class:`Solver` attribute/item
-                dot-separated path). By default, solvers are sorted by average
-                load. To explicitly not sort the solvers (and use the API-returned
-                order), set ``order_by=None``.
+                Solver sorting key function (or :class:`~dwave.cloud.solver.Solver`
+                attribute/item dot-separated path). By default, solvers are sorted
+                by average load. To explicitly not sort the solvers (and use the
+                API-returned order), set ``order_by=None``.
 
                 Signature of the `key` `callable` is::
 
@@ -1035,7 +1035,7 @@ class Client(object):
         warnings.warn("'solvers' is deprecated in favor of 'get_solvers'.", DeprecationWarning)
         return self.get_solvers(refresh=refresh, **filters)
 
-    def get_solver(self, name=None, refresh=False, **filters):
+    def get_solver(self, name=None, refresh=False, order_by='avg_load', **filters):
         """Load the configuration for a single solver.
 
         Makes a blocking web call to `{endpoint}/solvers/remote/{solver_name}/`, where `{endpoint}`
@@ -1052,13 +1052,15 @@ class Client(object):
                 Dictionary of filters over features this solver has to have. For a list of
                 feature names and values, see: :meth:`~dwave.cloud.client.Client.get_solvers`.
 
-            order_by (callable/str, default='id'):
-                Solver sorting key function (or :class:`Solver` attribute name).
-                By default, solvers are sorted by ID/name.
+            order_by (callable/str/None, default='avg_load'):
+                Solver sorting key function (or :class:`~dwave.cloud.solver.Solver`
+                attribute/item dot-separated path). By default, solvers are sorted by average
+                load. For details, see :meth:`~dwave.cloud.client.Client.get_solvers`.
 
             refresh (bool):
-                Return solver from cache (if cached with ``get_solvers()``),
-                unless set to ``True``.
+                Return solver from cache (if cached with
+                :meth:`~dwave.cloud.client.Client.get_solvers`), unless set to
+                ``True``.
 
         Returns:
             :class:`.Solver`
@@ -1096,7 +1098,7 @@ class Client(object):
         # get the first solver that satisfies all filters
         try:
             logger.debug("Fetching solvers according to filters=%r", filters)
-            return self.get_solvers(refresh=refresh, **filters)[0]
+            return self.get_solvers(refresh=refresh, order_by=order_by, **filters)[0]
         except IndexError:
             raise SolverNotFoundError("Solver with the requested features not available")
 

Fix docs for order_by
In [`get_solver()`](https://github.com/dwavesystems/dwave-cloud-client/blob/a178c2f40f3d107c5b7e2a7ae43602fb24046016/dwave/cloud/client.py#L1055).
Unexpected behavior in order_by
```
>>> from dwave.cloud import Client
>>> client = Client.from_config(solver=dict(qpu=True))
>>> client.get_solver()
StructuredSolver(id='DW_2000Q_6')
>>> client.get_solver(order_by='-num_active_qubits')
UnstructuredSolver(id='hybrid_v1')
>>> client.get_solver(order_by='-num_active_qubits', qpu=True)
StructuredSolver(id='DW_2000Q_6')
```
I would have expected to see `StructuredSolver(id='DW_2000Q_6')` in all three examples, given `client = Client.from_config(qpu=True)`
diff --git a/tests/test_client.py b/tests/test_client.py
index 12f1726..e5536aa 100644
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -717,6 +717,19 @@ class FeatureBasedSolverSelection(unittest.TestCase):
         with self.assertRaises(TypeError):
             self.client.get_solvers(order_by=list)
 
+    def test_order_by_respects_default_solver(self):
+        """order_by used in isolation should not affect default_solver filters (issue #401)"""
+
+        with Client('endpoint', 'token', solver=dict(name='qpu2')) as client:
+            # mock the network call to fetch all solvers
+            client._fetch_solvers = lambda **kw: self.solvers
+
+            # the default solver is set on client
+            self.assertEqual(client.get_solver(), self.qpu2)
+
+            # the default solver should not change when we add order_by
+            self.assertEqual(client.get_solver(order_by='id'), self.qpu2)
+
     def test_order_by_string(self):
         # sort by Solver inferred properties
         self.assertEqual(self.client.get_solvers(order_by='id'), [self.hybrid, self.qpu1, self.qpu2, self.software])

pip install -e .[test]
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-xdist pytest-mock pytest-asyncio
apt-get update apt-get install -y gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
certifi==2025.1.31
charset-normalizer==3.4.1
click==8.1.8
coverage==7.8.0
dimod==0.12.20
-e git+https://github.com/dwavesystems/dwave-cloud-client.git@88e14e9b745957569d86ca8d8fcd1461ff7101b9#egg=dwave_cloud_client
exceptiongroup==1.2.2
execnet==2.1.1
homebase==1.0.1
idna==3.10
iniconfig==2.1.0
mock==5.2.0
numpy==2.0.2
packaging==24.2
plucky==0.4.3
pluggy==1.5.0
PySocks==1.7.1
pytest==8.3.5
pytest-asyncio==0.26.0
pytest-cov==6.0.0
pytest-mock==3.14.0
pytest-xdist==3.6.1
python-dateutil==2.9.0.post0
requests==2.32.3
requests-mock==1.12.1
six==1.17.0
tomli==2.2.1
typing_extensions==4.13.0
urllib3==2.3.0

name: dwave-cloud-client
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
  - 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=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - certifi==2025.1.31
      - charset-normalizer==3.4.1
      - click==8.1.8
      - coverage==7.8.0
      - dimod==0.12.20
      - exceptiongroup==1.2.2
      - execnet==2.1.1
      - homebase==1.0.1
      - idna==3.10
      - iniconfig==2.1.0
      - mock==5.2.0
      - numpy==2.0.2
      - packaging==24.2
      - plucky==0.4.3
      - pluggy==1.5.0
      - pysocks==1.7.1
      - pytest==8.3.5
      - pytest-asyncio==0.26.0
      - pytest-cov==6.0.0
      - pytest-mock==3.14.0
      - pytest-xdist==3.6.1
      - python-dateutil==2.9.0.post0
      - requests==2.32.3
      - requests-mock==1.12.1
      - six==1.17.0
      - tomli==2.2.1
      - typing-extensions==4.13.0
      - urllib3==2.3.0
prefix: /opt/conda/envs/dwave-cloud-client

tests/test_client.py::FeatureBasedSolverSelection::test_order_by_respects_default_solver
tests/test_client.py::ClientFactory::test_client_cert_from_config tests/test_client.py::ClientFactory::test_client_cert_from_kwargs tests/test_client.py::ClientFactory::test_client_type tests/test_client.py::ClientFactory::test_custom_kwargs tests/test_client.py::ClientFactory::test_custom_kwargs_overrides_config tests/test_client.py::ClientFactory::test_default tests/test_client.py::ClientFactory::test_headers_from_config tests/test_client.py::ClientFactory::test_headers_from_kwargs tests/test_client.py::ClientFactory::test_legacy_config_load_fallback tests/test_client.py::ClientFactory::test_solver_features_from_config tests/test_client.py::ClientFactory::test_solver_features_kwargs_override_config tests/test_client.py::ClientFactory::test_solver_name_from_config tests/test_client.py::ClientFactory::test_solver_name_overrides_config_features tests/test_client.py::FeatureBasedSolverSelection::test_anneal_schedule tests/test_client.py::FeatureBasedSolverSelection::test_availability_combo tests/test_client.py::FeatureBasedSolverSelection::test_category tests/test_client.py::FeatureBasedSolverSelection::test_default tests/test_client.py::FeatureBasedSolverSelection::test_derived_category_properties tests/test_client.py::FeatureBasedSolverSelection::test_derived_category_properties_without_category tests/test_client.py::FeatureBasedSolverSelection::test_lower_noise_derived_property tests/test_client.py::FeatureBasedSolverSelection::test_membership_ops tests/test_client.py::FeatureBasedSolverSelection::test_name tests/test_client.py::FeatureBasedSolverSelection::test_nested_properties_intermediate_key_lookup tests/test_client.py::FeatureBasedSolverSelection::test_nested_properties_leaf_lookup tests/test_client.py::FeatureBasedSolverSelection::test_num_qubits tests/test_client.py::FeatureBasedSolverSelection::test_online tests/test_client.py::FeatureBasedSolverSelection::test_order_by_callable tests/test_client.py::FeatureBasedSolverSelection::test_order_by_edgecases tests/test_client.py::FeatureBasedSolverSelection::test_order_by_string tests/test_client.py::FeatureBasedSolverSelection::test_parameter_availability_check tests/test_client.py::FeatureBasedSolverSelection::test_property_availability_check tests/test_client.py::FeatureBasedSolverSelection::test_range_boolean_combo tests/test_client.py::FeatureBasedSolverSelection::test_range_ops tests/test_client.py::FeatureBasedSolverSelection::test_regex tests/test_client.py::FeatureBasedSolverSelection::test_relational_ops tests/test_client.py::FeatureBasedSolverSelection::test_set_ops tests/test_client.py::FeatureBasedSolverSelection::test_solvers_deprecation
dwave/cloud/client.py
dwave/cloud/client.py