Donut.Auction Public API
API v1Access active order listings on DonutSMP programmatically.
Code Examples
async function fetchAllOrders() {
const allOrders = [];
let cursor = "";
while (true) {
const response = await fetch(
`https://api.donut.auction/orders?cursor=${cursor}`
);
const data = await response.json();
allOrders.push(...data.orders);
if (!data.nextCursor) break;
cursor = data.nextCursor;
}
return allOrders;
}
// Usage
fetchAllOrders().then(orders => {
console.log(`Fetched ${orders.length} orders`);
console.log(orders);
});import requests
def fetch_all_orders():
all_orders = []
cursor = ""
while True:
response = requests.get(
f"https://api.donut.auction/orders?cursor={cursor}"
)
data = response.json()
all_orders.extend(data["orders"])
if not data.get("nextCursor"):
break
cursor = data["nextCursor"]
return all_orders
# Usage
if __name__ == "__main__":
orders = fetch_all_orders()
print(f"Fetched {len(orders)} orders")
print(orders)Rate Limiting
You may fetch all pages once every 30 minutes maximum. Please be respectful of our servers.
Terms of Use
By using this API, you agree to provide visible attribution by linking to donut.auction as the data source in any application, website, or project that uses this data.
Endpoints
GET
/ordersRetrieve active order listings from DonutSMP. Uses cursor-based pagination.
Base URL
https://api.donut.auction/ordersQuery Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| cursor | string | No | Pagination cursor. Leave empty for the first page. |
Response
{
"orders": [
{
"item": {
"itemId": "diamond",
"enchantments": []
},
"userName": "PlayerName",
"itemPrice": 4500,
"amountOrdered": 64,
"amountDelivered": 10,
"creationDate": "2026-01-30T12:05:00Z",
"expirationDate": "2026-02-06T12:05:00Z",
"lastUpdated": "2026-01-30T12:10:53.741Z"
},
{
"item": {
"itemId": "enchanted_book",
"enchantments": [
{ "name": "mending", "level": 1 }
]
},
"userName": "AnotherPlayer",
"itemPrice": 20000,
"amountOrdered": 10,
"amountDelivered": 2,
"creationDate": "2026-01-30T12:05:00Z",
"expirationDate": "2026-02-06T12:05:00Z",
"lastUpdated": "2026-01-30T12:10:53.866Z"
}
],
"nextCursor": "eyJJZCI6Ii4uLiJ9"
}Response Fields
| Field | Type | Description |
|---|---|---|
| orders | array | Array of order objects |
| orders[].item.itemId | string | Minecraft item identifier |
| orders[].item.enchantments | array | Array of enchantments with name and level |
| orders[].userName | string | Minecraft username of the buyer |
| orders[].itemPrice | number | Price per item (in-game currency) |
| orders[].amountOrdered | number | Total quantity requested |
| orders[].amountDelivered | number | Quantity already delivered |
| orders[].creationDate | string | ISO 8601 timestamp when order was created |
| orders[].expirationDate | string | ISO 8601 timestamp when order expires |
| orders[].lastUpdated | string | ISO 8601 timestamp of last update |
| nextCursor | string | null | Cursor for the next page. null if no more pages. |