Icy Veins APIicy-veins.com ↗
Retrieve WoW retail class guides from Icy Veins: stat priorities, talent builds with import codes, rotation steps, BiS gear, trinket tiers, gems, and enchants.
What is the Icy Veins API?
The Icy Veins API exposes World of Warcraft retail class guide data across 6 endpoints, covering every published spec from Arms Warrior to Restoration Druid. Starting with list_class_guides to discover all spec slugs by class and role, you can then pull structured stat priorities, talent import codes, rotation priority lists, best-in-slot gear per slot, trinket tier tables, and consumable recommendations — each tied to the current patch version as reported on the guide page.
curl -X GET 'https://api.parse.bot/scraper/d40d5fe7-115c-4269-b93a-f929ae854205/list_class_guides' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace icy-veins-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Icy Veins WoW class guide SDK — bounded, re-runnable."""
from parse_apis.icy_veins_com_api import IcyVeins, InputNotFound
client = IcyVeins()
# Browse all available spec guides, capped at 5.
for guide in client.guides.list(limit=5):
print(guide.class_name, guide.spec_name, guide.role, guide.spec_slug)
# Pick the first guide and drill into its details.
guide = client.guides.list(limit=1).first()
if guide is not None:
# Stat priorities for this spec.
stats = guide.stat_priority()
for ranking in stats.stat_priorities:
print(ranking.heading, ranking.priority_string)
for s in ranking.stats:
print(f" #{s.rank} {s.stat} {s.relation_to_next or ''}")
# Talent builds — each with an in-game import code.
talent_page = guide.talents()
for build in talent_page.builds:
print(build.name, build.import_code[:40] + "…")
# Best-in-slot gear for the first BiS tab.
gear = guide.bis_gear()
if gear.bis_lists:
bis = gear.bis_lists[0]
print(bis.name, bis.heading)
for slot in bis.items:
if slot.item_name is not None:
print(f" {slot.slot}: {slot.item_name} (from {slot.source})")
# Consumables — gems and flask/potion recommendations.
cons = guide.consumables()
for gem in cons.gems:
print(f"Gem: {gem.name} (id={gem.id})")
for cat in cons.consumables:
print(f"{cat.category}: {cat.text}")
# Rotation priority lists.
rot = guide.rotation()
for pl in rot.priority_lists:
print(pl.tab, pl.heading)
for step in pl.steps[:3]:
print(f" {step.step}. {step.text[:80]}")
# Point lookup by a known spec_slug, with error handling.
try:
dk = client.guide(spec_slug="blood-death-knight-pve-tank")
print(dk.class_name, dk.spec_name, dk.guide_url)
except InputNotFound:
print("Spec guide not found")
print("exercised: guides.list / guide / stat_priority / talents / bis_gear / consumables / rotation")
Lists every World of Warcraft spec guide currently published (one row per class specialization, e.g. Arms Warrior). Each row carries the class, spec, role (dps/tank/healing) and the spec_slug that every get_* endpoint in this API takes as input. One page request; not paginated. Optionally filtered to a single class by its display name (case-insensitive); an unknown class name yields an empty guides list.
| Param | Type | Description |
|---|---|---|
| class_name | string | Class display name to filter by, exactly as shown in classes (one shape: Warrior). Omitted = all classes. |
{
"type": "object",
"fields": {
"total": "integer count of rows in guides",
"guides": "array of spec guide rows: class_name, spec_name, role (dps|tank|healing), spec_slug (input for the get_* endpoints), guide_url (guide overview page), class_guide_url (class-level guide)",
"classes": "array of distinct class display names present in guides"
},
"sample": {
"data": {
"total": 2,
"guides": [
{
"role": "dps",
"guide_url": "https://www.icy-veins.com/wow/arms-warrior-pve-dps-guide",
"spec_name": "Arms",
"spec_slug": "arms-warrior-pve-dps",
"class_name": "Warrior",
"class_guide_url": "https://www.icy-veins.com/wow/warrior-guide"
},
{
"role": "tank",
"guide_url": "https://www.icy-veins.com/wow/protection-warrior-pve-tank-guide",
"spec_name": "Protection",
"spec_slug": "protection-warrior-pve-tank",
"class_name": "Warrior",
"class_guide_url": "https://www.icy-veins.com/wow/warrior-guide"
}
],
"classes": [
"Warrior"
]
},
"status": "success"
}
}About the Icy Veins API
Spec Discovery and Navigation
list_class_guides is the entry point. It returns every published spec guide as an array of rows, each with class_name, spec_name, role (dps, tank, or healing), a spec_slug used by all other endpoints, and the guide URL. The class_name parameter lets you filter to a single class (e.g. Warrior). The classes field in the response lists all distinct class names present, making it straightforward to enumerate available options.
Stat Priorities and Talent Builds
get_stat_priority returns structured stat priority data keyed by spec_slug. The stat_priorities array holds one entry per priority widget on the guide page — specs with multiple hero talent paths return multiple entries, each with a heading, an ordered stats array (each stat has rank, stat, key, and relation_to_next which is > or >=), and a compact priority_string. get_talent_builds returns the builds array, where each build carries a name (e.g. single-target, mythic+, raid) and an import_code ready to paste into the in-game talent UI. Both endpoints also return sections with page prose grouped by heading and last_updated as displayed on the guide.
Rotation and Gear Data
get_rotation structures the spec's ability priority list into priority_lists, each with a tab, heading, and steps array. Every step carries its text, referenced abilities (with spell IDs and names), and any conditions (talent toggle states). The talent_toggles array lists checkboxes present on the guide page (key, name, spell ID, default on/off), and presets describes any preset switches like covenant or hero talent variants. get_bis_gear organises best-in-slot data by bis_lists, one per tab (Overall, Raid, Mythic+, etc.). Each item row includes slot, item_name, item_id, source, enchant, and gems. The trinket_tiers array maps the guide's trinket ranking table, with tier labels and item references including IDs.
Gems, Enchants, and Consumables
get_consumables returns three structured arrays: gems (recommended gem items with IDs), enchants (per-slot best-enchant table with item IDs and cell text), and consumables (flattened by category — flasks, potions, food, augment runes — each with referenced item IDs). All six endpoints include a title field that embeds the current patch version string as shown on the guide page.
The Icy Veins API is a managed, monitored endpoint for icy-veins.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when icy-veins.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official icy-veins.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a WoW addon or companion app that shows current stat priorities and talent import codes for any spec without manual guide parsing.
- Automate gear auditing by comparing a player's equipped items against the
bis_listsitem IDs fromget_bis_gear. - Generate rotation reminder overlays keyed to
priority_listssteps and their referenced spell IDs fromget_rotation. - Populate a class-tier dashboard for a guild officer tool using role and spec data from
list_class_guides. - Track guide changes across patches by storing
last_updatedandtitlefields from each spec endpoint over time. - Pre-populate a consumables shopping list by category using the
consumablesarray and item IDs fromget_consumables. - Sync a Discord bot's
!biscommand with live trinket tier rankings from thetrinket_tiersarray inget_bis_gear.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Icy Veins have an official developer API?+
How does `list_class_guides` filtering work, and what does `spec_slug` look like?+
class_name parameter with a class display name exactly as returned in the classes array (e.g. Warrior, Death Knight) to narrow results. Omitting it returns all specs. The spec_slug in each row follows the pattern <spec>-<class>-pve-<role> (for example arms-warrior-pve-dps) and is the required input for every get_* endpoint.Does `get_rotation` expose talent-conditional rotation steps?+
priority_lists[*].steps carries a conditions array that records which talent toggles must be on or off for that step to apply. The talent_toggles array on the same response lists every toggle present on the guide page with its key, name, spell_id, and default_on state, so you can reconstruct conditional priority lists programmatically.Does the API cover Icy Veins guides for WoW Classic, Season of Discovery, or Diablo IV?+
Are all item fields in `bis_lists` always populated?+
enchant field. Similarly, trinket_tiers returns an empty array for specs whose guide page does not include a trinket ranking table.