# services (/docs/query/services)

Each `url` points to its hotkey's own document of its services and the
payments they accept; the chain does not check what it says. `spender` is
the spender customers name on gamma deposits for the service. `owner`
marks the subnet owner's hotkey while the owner owns it, whose spender new
deposits name by default. A url that is not printable text is returned as
0x-hex.

**Category:** Subnets

## Parameters [#parameters]

| Parameter | Type    | Description                    |
| --------- | ------- | ------------------------------ |
| `netuid`  | integer | Subnet whose services to list. |

## CLI [#cli]

```bash
btcli query services --netuid <integer> --json
```

## Python [#python]

Namespace method (autocomplete, signature help):

```python
import bittensor as bt

sub = bt.Subtensor()
result = sub.subnets.services(netuid=1)
```

Or dispatch by name, as an agent would:

```python
result = sub.read("services", netuid=1)
```

Async is the same surface awaited: `async with bt.Subtensor() as client:`.

## On-chain implementation [#on-chain-implementation]

* Storage [`SubtensorModule.Services`](/code/pallets/subtensor/src/lib.rs#L3210)
* Storage [`SubtensorModule.SubnetOwnerHotkey`](/code/pallets/subtensor/src/lib.rs#L2726)
* Storage [`SubtensorModule.SubnetOwner`](/code/pallets/subtensor/src/lib.rs#L2721)
* Storage [`SubtensorModule.Owner`](/code/pallets/subtensor/src/lib.rs#L1759)

Every file is browsable under [/code](/code) exactly as built into the runtime.
