GET
https://api.cryptohopper.com/v1/hopper/{id}/arbitrage/market/results
Returns the latest market (three-trade) arbitrage opportunities the bot found in its last scan, with the time of that scan.
OAuth scope:
read About scopes
Before the bot's first scan, found is 0 and result is the text "Your hopper has not started searching for market arbitrages yet."
Example request
curl "https://api.cryptohopper.com/v1/hopper/HOPPER_ID/arbitrage/market/results" \
-H "access-token: YOUR_ACCESS_TOKEN"
const response = await fetch('https://api.cryptohopper.com/v1/hopper/HOPPER_ID/arbitrage/market/results', {
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/arbitrage/market/results",
headers={
"access-token": "YOUR_ACCESS_TOKEN"
},
)
data = response.json()
$ch = curl_init('https://api.cryptohopper.com/v1/hopper/HOPPER_ID/arbitrage/market/results');
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 |
|---|---|---|---|
id |
string | Required | Hopper ID of an arbitrage bot. |
Response
{
"data": {
"found": "1",
"last_update": "2026-09-25T10:15:00Z",
"result": [
{
"exchange": "binance",
"trade_1_base_currency": "USDT",
"trade_1_currency": "ETH",
"trade_1_order_type": "buy",
"trade_1_pair": "ETHUSDT",
"trade_1_rate": 2500.12,
"trade_2_base_currency": "BTC",
"trade_2_currency": "ETH",
"trade_2_order_type": "sell",
"trade_2_pair": "ETHBTC",
"trade_2_rate": 0.0385,
"trade_3_base_currency": "USDT",
"trade_3_currency": "BTC",
"trade_3_order_type": "sell",
"trade_3_pair": "BTCUSDT",
"trade_3_rate": 65200,
"percentage": 0.4
}
]
}
}