/api/market/orders
/api/market/orders
Returns paginated public market orders.
Method
GET
Query Parameters
page={number}
limit={number}
Response Structure
{
"orders": [
{
"id": 43022,
"userId": 14316,
"username": "Mucha",
"hubId": 10,
"orderType": "buy",
"offerResource": "silicates",
"offerAmount": 100000,
"offerRemaining": 100000,
"requestResource": "ore",
"requestAmount": 397000,
"baseResource": "ore",
"quoteResource": "silicates",
"limitPrice": 0.2518891687657431,
"baseAmount": 397000,
"baseRemaining": 397000,
"quoteAmount": 100000,
"status": "active",
"expiresAt": "2026-09-02T08:48:49.244Z",
"createdAt": "2026-08-26T08:48:49.243Z"
}
],
"pagination": {
"total": 207,
"limit": 25,
"offset": 0,
"hasMore": true
}
}
Notes
- Confirmed from the
MarketOrdermodel and consuming market view. - The addon paginates until
pagination.hasMorebecomes false. - No fee or commission fields are currently observed here.
Arbitrage Check With Fee
If you want to test whether a cycle of up to three trades can still be profitable despite a 5% market fee per transaction, model each order as a directed edge:
requestResource -> offerResource- gross edge rate =
offerAmount / requestAmount - fee-adjusted buyer rate =
offerAmount / (requestAmount * 1.05)
A cycle is profitable if the product of all fee-adjusted edge rates is greater than 1.0.
Example for a three-step cycle:
ore -> hydrogen -> silicates -> ore
Profit condition:
(H_per_O / 1.05) * (S_per_H / 1.05) * (O_per_S / 1.05) > 1
This repository now includes a helper script that evaluates exactly that on a saved /api/market/orders response:
pwsh ./scripts/analyze-market-arbitrage.ps1 -InputPath ./market-orders.json
The script:
- accepts either a raw
ordersarray or an object with anordersproperty - keeps the best active order per directed resource pair
- checks 2-step and 3-step cycles
- reports only fee-adjusted profitable cycles, or the best near-misses if none are profitable
Live Verification
- Verified 2026-08-26 on
s0:GET /api/market/orders?page=1&limit=25->200. - Example above is a real response with every array truncated to its first item.
- Live array sizes at capture time:
orders=25.