# Get hoppers of users

`GET https://api.cryptohopper.com/v1/hopper`

Part of [Hoppers](https://www.cryptohopper.com/api-documentation/api-reference/hoppers.md) in the Cryptohopper API reference.

Returns all hoppers of the user with their subscription, status, exchange and base currency. Grid bots also include their markets, quote currency and open order count.

OAuth scope: `read`

last_loaded_config is a boolean that tells whether the hopper has a loaded config name, not the name itself.

## Headers

| Name | Type | Required | Description |
|---|---|---|---|
| `access-token` | string | yes | The OAuth access token of the user. |

## Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `exchange` | string | no | Only return hoppers on this exchange, e.g. binance. |
| `enabled` | string | no | Only return enabled (1) or disabled (0) hoppers. |
| `config_error` | string | no | 1 returns only hoppers with a config error, 0 only hoppers without one. Leave out to return all. |
| `name` | string | no | Only return hoppers whose name contains this text and matches it closely. |

## Example request

```bash
curl "https://api.cryptohopper.com/v1/hopper" \
  -H "access-token: YOUR_ACCESS_TOKEN"
```

## Response

Example response (illustrative values):

```json
{
    "data": {
        "hoppers": [
            {
                "id": "123456",
                "open_positions_count": "3",
                "name": "My BTC bot",
                "exchange": "binance",
                "hopper_id": "123456",
                "subscription_id": "456789",
                "plan_id": "2",
                "payment_term": "month",
                "payment_method_id": "1",
                "start_time": "2026-09-01 10:00:00",
                "end_time": "2026-10-01 10:00:00",
                "subscription_status": "Active",
                "auto_renewal": "Yes",
                "subscription": "Adventure",
                "plan_name": "Adventure",
                "plan_description": "Adventure plan",
                "product_id": "None",
                "last_loaded_config": true,
                "image": "https://cdn.cryptohopper.com/images/hoppers/binance-usdt.jpg",
                "base_currency": "USDT",
                "buying_enabled": 1,
                "selling_enabled": 1,
                "enabled": 1,
                "set_default": "1",
                "error_message": null,
                "last_signal": "",
                "last_signal_encoding": "ASCII",
                "config_error": "0",
                "total_cur": "1523.45000000",
                "created": "2025-03-14 09:21:07",
                "bot_type": "0",
                "user_id": "654321",
                "allowed_coins": [
                    "BTC",
                    "ETH"
                ],
                "paper_trading": 0,
                "copy_manager": 0,
                "start_balance": "1000.00000000"
            }
        ]
    }
}
```

| Field | Type | Description |
|---|---|---|
| `data` | array of object |  |
| &nbsp;&nbsp;`id` | string |  |
| &nbsp;&nbsp;`name` | string |  |
| &nbsp;&nbsp;`exchange` | string |  |
| &nbsp;&nbsp;`base_currency` | string |  |
| &nbsp;&nbsp;`buying_enabled` | integer |  |
| &nbsp;&nbsp;`selling_enabled` | integer |  |
| &nbsp;&nbsp;`enabled` | integer |  |
| &nbsp;&nbsp;`error_message` | string |  |
| &nbsp;&nbsp;`config_error` | string |  |
| &nbsp;&nbsp;`created` | string |  |
| &nbsp;&nbsp;`start_balance` | string |  |

Status codes: 200, 401, 403, 404, 429, 500, 501. Errors return JSON with `status`, `error` and `message`, plus a numeric `code` when the error comes from the API itself rather than the gateway.
