BG3 APIbg3.wiki ↗
Access Baldur's Gate 3 wiki data via API. Query classes, subclasses, spells, items, and quests with structured JSON responses from bg3.wiki.
What is the BG3 API?
The BG3 Wiki API exposes 9 endpoints covering classes, spells, items, and quests from bg3.wiki, each returning structured JSON with fields like proficiencies, spell school, item rarity, and quest sections. The get_spell endpoint returns damage dice, range, action cost, area of effect, saving throw type, and the list of classes that can cast it. The list_spells endpoint accepts optional filters for level, school, and class, making it practical for build-planning tools and character sheet generators.
curl -X GET 'https://api.parse.bot/scraper/842c17bb-e12a-4275-bd2b-f650c5ae8936/get_class?class_name=Barbarian' \ -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 bg3-wiki-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.
from parse_apis.baldur_s_gate_3_wiki_api import BG3Wiki, SpellSchool, ClassName, SpellLevel
wiki = BG3Wiki()
# List all character classes
for cls in wiki.characterclasses.list():
print(cls.name, cls.url)
# Get detailed info on a specific class
barbarian = wiki.characterclasses.get(name=ClassName.BARBARIAN)
print(barbarian.name, barbarian.summary)
print(barbarian.proficiencies.armor, barbarian.proficiencies.weapons)
# Navigate from subclass summary to full subclass details
for sc in barbarian.subclass_list:
subclass = sc.details()
print(subclass.name, subclass.parent_class)
for feat in subclass.features:
print(feat.name)
# Get a subclass directly
berserker = wiki.subclasses.get(name="Berserker")
print(berserker.name, berserker.parent_class, berserker.url)
# List evocation spells using enum
for spell in wiki.spells.list(school=SpellSchool.EVOCATION):
print(spell.name, spell.url)
# List cantrips using SpellLevel enum
for spell in wiki.spells.list(level=SpellLevel.CANTRIP):
print(spell.name, spell.url)
# Get full spell details
fireball = wiki.spells.get(name="Fireball")
print(fireball.name, fireball.level, fireball.school, fireball.damage, fireball.concentration)
# List items by category
for item in wiki.items.list_by_category(category="Amulets"):
print(item.name, item.url)
# Get item details
blade = wiki.items.get(name="Everburn Blade")
print(blade.name, blade.rarity, blade.damage, blade.damage_type)
# Get quest info
quest = wiki.quests.get(name="Escape the Nautiloid")
print(quest.name, quest.description)
for section in quest.sections:
print(section)
# Search the wiki
for page in wiki.wikipages.search(query="Fireball"):
print(page.title, page.snippet)
Retrieve detailed information for a specific character class, including proficiencies, progression table parameters, and subclasses. The progression object keys vary by class.
| Param | Type | Description |
|---|---|---|
| class_namerequired | string | Name of the class. Accepted values: Barbarian, Bard, Cleric, Druid, Fighter, Monk, Paladin, Ranger, Rogue, Sorcerer, Warlock, Wizard. |
{
"type": "object",
"fields": {
"url": "string, full wiki URL",
"name": "string, class name",
"summary": "string, short summary from the class template",
"subclasses": "array of objects with name field",
"description": "string, introductory description from the wiki",
"progression": "object containing class progression table parameters",
"proficiencies": "object containing armor, weapons, and saving_throws strings"
},
"sample": {
"data": {
"url": "https://bg3.wiki/wiki/Barbarian",
"name": "Barbarian",
"summary": "",
"subclasses": [
{
"name": "Berserker"
},
{
"name": "Wildheart"
}
],
"description": "Barbarian is a class in Baldur's Gate 3.\n\n",
"progression": {},
"proficiencies": {
"armor": "",
"weapons": "",
"saving_throws": ""
}
},
"status": "success"
}
}About the BG3 API
Classes and Subclasses
The get_class endpoint returns a class's name, a short summary, an introductory description, proficiencies (armor, weapons, saving throws), a progression table object, and an array of subclass names with links. The list_classes endpoint returns all playable classes as name/URL pairs. For subclass detail, get_subclass resolves a subclass name like Berserker or Oath of Devotion and returns its parent class, introductory description, and a list of subclass feature names.
Spells and Items
get_spell returns the full mechanical profile of a spell: level, school, range (in metres), damage dice, area of effect type, action cost, saving throw, and an array of class strings that can cast it. list_spells accepts three independent optional filters — level (0–6), school (e.g. Evocation), and class (e.g. Cleric) — and returns matching spell names with wiki URLs. For items, get_item returns name, type, rarity, weight, gold price, flavour quote, and for weapons specifically, damage dice and damage type. list_items_by_category accepts a category string such as Weapons, Amulets, or Armour; composite categories like Armour automatically aggregate Light, Medium, and Heavy subcategory results.
Quests and Search
get_quest retrieves a quest's introductory description and an array of section headings from its wiki page, and automatically follows wiki redirects so variant spellings still resolve correctly. search_wiki accepts a keyword query and returns up to 20 results, each with a page title, a context snippet showing where the search term appears, and the full wiki URL. This makes it useful for fuzzy lookups when the exact item or quest name is unknown.
The BG3 API is a managed, monitored endpoint for bg3.wiki — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bg3.wiki 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 bg3.wiki 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?+
- Generate class comparison tables using proficiencies and subclass lists from
get_class - Filter spells by school and level via
list_spellsto build a sortable spell browser for a companion app - Display full item stat cards — rarity, weight, price, damage dice — by calling
get_itemon user-selected gear - Power a quest checklist by pulling section headings from
get_questas progress milestones - Build a subclass picker UI by calling
get_subclassfor each entry returned in a class's subclasses array - Implement a wiki search bar in a BG3 companion app using
search_wikisnippets for autocomplete context - Aggregate all weapons in a damage category by iterating
list_items_by_categorywith subcategory filters
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does bg3.wiki have an official developer API?+
What does `get_spell` return, and how does `list_spells` filtering work?+
get_spell returns a single spell's level, school, range in metres, damage dice, area of effect, action cost, saving throw type, and an array of class names that can cast it. list_spells accepts three independent optional query parameters — level (0–6), school (e.g. Necromancy), and class (e.g. Wizard) — and can be used with any combination of them. Omitting all filters returns the full spell list.Does the API return monster or enemy stat blocks?+
Does `get_item` return location or loot-drop information for items?+
get_item returns type, rarity, weight, price, flavour quote, and for weapons, damage dice and damage type. Loot location and drop source data are not included in the current response. You can fork this API on Parse and revise it to add location fields from item wiki pages.How does `list_items_by_category` handle broad categories like Armour?+
Armour as the category automatically combines results from the Light Armour, Medium Armour, and Heavy Armour subcategories into one array. You can also pass a subcategory directly (e.g. Light Armour or Greatswords) to retrieve a narrower set. Each result includes the item name and its full wiki URL.