Cross-venue arbitrage (legacy)
curl --request GET \
--url https://api.probsights.com/v1/arbitrage/current \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.probsights.com/v1/arbitrage/current"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.probsights.com/v1/arbitrage/current', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"event_id": "<string>",
"interval_code": "<string>",
"buy_yes_market": "<string>",
"buy_no_market": "<string>",
"gross_cents": 123,
"fee_cents": 123,
"net_cents": 123,
"roi_percent": 123
}Arbitrage
Cross-venue arbitrage (legacy)
Find fee-adjusted Kalshi ↔ Polymarket arbitrage opportunities.
GET
/
v1
/
arbitrage
/
current
Cross-venue arbitrage (legacy)
curl --request GET \
--url https://api.probsights.com/v1/arbitrage/current \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.probsights.com/v1/arbitrage/current"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.probsights.com/v1/arbitrage/current', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"event_id": "<string>",
"interval_code": "<string>",
"buy_yes_market": "<string>",
"buy_no_market": "<string>",
"gross_cents": 123,
"fee_cents": 123,
"net_cents": 123,
"roi_percent": 123
}Cross-exchange BTC interval arbitrage scanner (Kalshi ↔ Polymarket). Returns a
JSON array sorted by
net_cents descending.
Pairs active windows on matching interval_code values (5m, 15m, 1h, 24h,
1w) and returns fee-adjusted edges where buying YES on one venue and NO on the
other costs less than $1.
Scope is BTC interval and matched binary markets. opinion is always null.
Requires a Trader subscription — see Authentication.
Request
https://api.probsights.com/v1/arbitrage/current
Query parameters
Response
Returns a JSON array of opportunity objects.Examples
15-minute opportunities with min edge
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.probsights.com/v1/arbitrage/current?min_net_cents=0.5&interval_code=15m&limit=20"
import requests
response = requests.get(
"https://api.probsights.com/v1/arbitrage/current",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"min_net_cents": 0.5, "interval_code": "15m", "limit": 20},
)
opps = response.json()
Fee model
Arb legs are modeled as taker orders (buying at the ask):| Exchange | Formula (1 contract) | Rounding |
|---|---|---|
| Kalshi | 0.07 × price × (1 − price) | Round up to next cent |
| Polymarket (crypto) | 0.07 × price × (1 − price) | Round to 5 dp; min charge 0.00001 |