# List strategy backtests

`GET https://api.cryptohopper.com/v1/hopper/{id}/backtest`

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

Returns your strategy backtests (started with Start a strategy backtest), newest first, up to 50. The hopper ID is only checked: the list holds the strategy backtests of all your hoppers.

OAuth scope: `read`

Uses the backtest rate limit: one request per 2 seconds per token and app. Refused with 403 when you reached today's strategy backtest limit. start_time and end_time are Unix timestamps.

## Headers

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

## Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `id` | string | yes | Hopper ID. Must be one of your hoppers; arbitrage, market maker, copy, grid and AI bots are refused. |

## Example request

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

## Response

Example response (illustrative values):

```json
{
    "data": [
        {
            "id": "12665800",
            "backtest_type": "configtester",
            "exchange": "binance",
            "currency": "ETH",
            "base_currency": "USDT",
            "market": "ETHUSDT",
            "strategy": "My RSI strategy",
            "config": "{\"strategy\":\"My RSI strategy\",\"strategy_select\":\"user_4521\",\"trailing_buy\":0,\"trailing_buy_percentage\":0}",
            "candle_size": "300",
            "profit": "3.12",
            "take_profit": "2.00",
            "stop_loss": "1",
            "stop_loss_percentage": "5",
            "trailing_stop_loss": "0",
            "trailing_stop_loss_percentage": "0",
            "trailing_stop_loss_arm": "0",
            "trailing_stop_loss_only": "0",
            "sell_with_strategy": "0",
            "max_open_positions": "200",
            "successful_sells": "14",
            "loss_sells": "3",
            "average_sell_time": "0",
            "custom_period": "1",
            "start_time": "1754006400",
            "end_time": "1756598400",
            "date": "2026-09-01T10:20:00Z",
            "last_update": "2026-09-01 10:20:00"
        }
    ]
}
```

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