Integration guide for third-party Evony bots — ESB, Ragebot, GNBots, and more.
https://iscope.app/api/mechanist
All endpoints are prefixed with /api/mechanist/
Send your API key in one of these ways:
# Option 1: X-API-Key header (recommended)
curl -H "X-API-Key: iscope_abc123..." https://iscope.app/api/mechanist/monsters
# Option 2: Query parameter
curl "https://iscope.app/api/mechanist/monsters?api_key=iscope_abc123..."
All data endpoints return JSON. Data is refreshed after each scan cycle (approximately every 75 minutes).
All regular monsters on the map.
{
"server_id": 1497,
"server_name": "Server 1497",
"generated_at": "2026-03-10T17:28:00",
"total": 65107,
"data": [
{
"wx": 731, "wy": 389, "level": 50,
"entity_name": "Takeda Fire Cavalry",
"entity_type": "monster",
"hp_pct": null,
"alliance_name": null,
"scanned_at": "2026-03-10T17:23:09"
}
]
}
All boss monsters (Ymir, Goblins, etc.).
Fields: wx, wy, level, entity_name, hp_pct, scanned_at
All event monsters (Knight Bayard, Sphinx, etc.).
Fields: wx, wy, level, entity_name, entity_type, scanned_at
All resource tiles (farms, sawmills, quarries, iron mines, gold mines).
Fields: wx, wy, level, resource_type, entity_name, occupier_name, is_free, scanned_at
All barbarian castles (regular + Arctic).
Fields: wx, wy, level, entity_name, scanned_at
Combined dump of all data types in a single response.
Contains: monsters, bosses, events, resources, barbarians arrays plus *_total counts.
| Code | Meaning |
|---|---|
| 200 | Success — data returned |
| 401 | Missing or invalid API key |
| 403 | Subscription inactive or API key locked to another device |
| 400 | No server selected — log into the portal and select a server first |
| 404 | Cache not yet generated — wait for next scan cycle |
Base URL: https://iscope.app/api/mechanist
API Key: iscope_xxxx...
Auth Header: X-API-Key
Mechanist API URL: https://iscope.app/api/mechanist/all
API Key: iscope_xxxx...
Method: GET, Header: X-API-Key
Scanner API: https://iscope.app/api/mechanist
Key: iscope_xxxx...
curl -H "X-API-Key: iscope_xxxx..." https://iscope.app/api/mechanist/monsters | jq '.total'
import requests
API_KEY = "iscope_xxxx..."
BASE = "https://iscope.app/api/mechanist"
r = requests.get(f"{BASE}/monsters", headers={"X-API-Key": API_KEY})
data = r.json()
print(f"Found {data['total']} monsters")
for m in data['data'][:5]:
print(f" ({m['wx']},{m['wy']}) {m['entity_name']} Lv{m['level']}")
Data is refreshed after each scan cycle, approximately every 75 minutes.
No. Each account gets exactly one API key. It cannot be regenerated or changed. Keep it safe!
Your API key is locked to the first device (IP address) that uses it. Contact support on Discord to request a reset.
There is no strict rate limit, but data only changes every ~75 minutes. Polling more frequently than once per minute is unnecessary.