GET
https://api.cryptohopper.com/v1/hopper/{id}/backtest/{start}/{limit}
Same as List strategy backtests, with paging: returns your strategy backtests of all hoppers, newest first.
OAuth scope:
read About scopes
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.
Example request
curl "https://api.cryptohopper.com/v1/hopper/HOPPER_ID/backtest/START/LIMIT" \
-H "access-token: YOUR_ACCESS_TOKEN"
const response = await fetch('https://api.cryptohopper.com/v1/hopper/HOPPER_ID/backtest/START/LIMIT', {
method: 'GET',
headers: {
"access-token": "YOUR_ACCESS_TOKEN"
}
});
const data = await response.json();
import requests
response = requests.get(
"https://api.cryptohopper.com/v1/hopper/HOPPER_ID/backtest/START/LIMIT",
headers={
"access-token": "YOUR_ACCESS_TOKEN"
},
)
data = response.json()
$ch = curl_init('https://api.cryptohopper.com/v1/hopper/HOPPER_ID/backtest/START/LIMIT');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'access-token: YOUR_ACCESS_TOKEN',
],
]);
$data = json_decode(curl_exec($ch), true);
Parameters
Headers
| Name | Type | Required | Description |
|---|---|---|---|
access-token |
string | Required | The OAuth access token of the user. |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit |
string | Required | Number of backtests to return, default 50, maximum 500. |
start |
string | Required | Offset, default 0. |
id |
string | Required | Hopper ID. Must be one of your hoppers; arbitrage, market maker, copy, grid and AI bots are refused. |
Response
{
"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"
}
]
}