Skip to main content

ASTROWORLD API

Free, public Minecraft data API. JSON responses, CORS enabled, no auth required.

v1.0Java 26.2JSON

Base URL: https://api.astroworldmc.com

76
Mobs
64
Biomes
100
Items
40
Enchantments
24
Structures
57
Commands
36
Versions
111
Achievements
13
Trades

Endpoints

GET
/api/v1/mobs?search=&type=&category=

All 76 Minecraft mobs with stats, drops, behavior

GET
/api/v1/mobs/:id

Single mob by ID or name slug

GET
/api/v1/biomes?search=&dimension=&category=&rarity=

All 64 biomes with terrain, colors, spawns

GET
/api/v1/biomes/:name

Single biome by ID or name slug

GET
/api/v1/items?search=&category=

100 items with crafting recipes, stats, enchantments

GET
/api/v1/items/:id

Single item by ID or name slug

GET
/api/v1/enchantments?search=&category=

40 enchantments with levels, compatibility, effects

GET
/api/v1/enchantments/:id

Single enchantment by ID or name slug

GET
/api/v1/structures?search=&dimension=&category=&rarity=

24 structures with loot tables, locations, dangers

GET
/api/v1/structures/:id

Single structure by ID or name slug

GET
/api/v1/commands?search=&category=&permissionLevel=

57 commands with syntax, params, examples

GET
/api/v1/commands/:name

Single command by name

GET
/api/v1/versions?search=&type=&edition=

36 version entries with features and changelogs

GET
/api/v1/versions/:slug

Single version by slug (e.g. 1-21)

GET
/api/v1/achievements?search=&tab=&difficulty=

111 advancements with tabs, difficulty, rewards

GET
/api/v1/achievements/:slug

Single achievement by slug

GET
/api/v1/trades?search=

All villager professions with full trade tables

GET
/api/v1/trades/:id

Single profession trade data by ID

GET
/api/health

API health check

Pretty Print

Add ?pretty=true to any list endpoint for formatted JSON output. Single lookups such as /api/v1/mobs/creeper always come back compact.

Quick Start

JavaScript

const res = await fetch("https://api.astroworldmc.com/api/v1/mobs?search=creeper");
const data = await res.json();
console.log(data.data[0].name); // "Creeper"

Python

import requests

res = requests.get("https://api.astroworldmc.com/api/v1/mobs/creeper")
mob = res.json()["data"]
print(mob["name"])  # Creeper

curl

curl -s https://api.astroworldmc.com/api/v1/biomes?dimension=nether | jq '.data[].name'

Rate Limits

TierLimitWindow
Free100 requestsper minute per IP

Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

Response Format

Success (200)

{
  "success": true,
  "count": 76,
  "data": [...]
}

Error (404)

{
  "success": false,
  "error": "Mob not found"
}

Filtering and Lookups

Every list endpoint takes search, which matches part of the name and ignores case, so /api/v1/mobs?search=spider returns both Spider and Cave Spider. On versions it also looks at the update name: ?search=trails finds 1.20, Trails & Tales.

The other filters only return exact matches, and the value you send is lowercased first, so type=Hostile works as well as type=hostile. Filters combine: /api/v1/biomes?dimension=overworld&rarity=very_rare returns Eroded Badlands and Mushroom Fields.

EndpointFilterValues in the data
/mobstype, categorypassive, neutral, hostile, boss
/biomesdimensionoverworld, nether, end
/biomescategorytemperate, cold, warm, ocean, underground, beach_special, nether, end
/biomesraritycommon, uncommon, rare, very_rare
/itemscategorytool, weapon, armor, food, block, redstone, potion, music_disc, transportation, miscellaneous
/enchantmentscategorymelee, ranged, mining, armor, universal, special
/structuresdimensionoverworld, nether, end
/structurescategoryoverworld_surface, overworld_underground, ocean, nether, end
/structuresraritycommon, uncommon, rare, very_rare, unique
/commandscategoryplayer, world, server, data, display, logic, gameplay, special, time_weather, bossbar, execute
/commandspermissionLevel0, 2, 3, 4
/versionstypemajor-release, minor-release
/versionseditionjava
/achievementstabminecraft, nether, end, adventure, husbandry
/achievementsdifficultyeasy, medium, hard, expert

Single lookups take the ID or the name written as a slug. /api/v1/mobs/cave-spider, /api/v1/items/diamond-sword and /api/v1/biomes/cherry-grove all work, and biomes also answer to the full ID, minecraft:plains. Versions accept 1.21 as well as 1-21, commands are found by name without the slash, and trades by profession ID, such as /api/v1/trades/librarian.

The trade data covers the 13 villager professions that have a workstation. The wandering trader is not part of it.

What Each Resource Returns

A list wraps its results in data next to a count; a single lookup puts the object itself under data and has no count. A field that does not apply is null rather than missing, like the durability of a food item or the tamingMethod of a mob nobody can tame.

ResourceFields
mobsname, id, type, category, hp, damage (easy, normal, hard), xpDrop (min, max), spawnBiomes, spawnConditions, drops (item, count, chance), behavior, weaknesses, tameable, tamingMethod, breedable, breedingItem, versionAdded, notes
biomesname, id, dimension, category, temperature, precipitation, terrainFeatures, uniqueBlocks, spawningMobs, structuresFound, colors (grass, water, foliage, sky), rarity, versionAdded, notes
itemsname, id, category, stackSize, durability, description, obtainedBy, craftingRecipe (pattern, ingredients, output, station), enchantable, applicableEnchantments, foodValue (hunger, saturation), fuelValue, versionAdded, notes
enchantmentsname, id, maxLevel, description, effectPerLevel, applicableItems, incompatibleWith, obtainedFrom, weight, treasureOnly, curseOf, category, versionAdded, notes
structuresname, id, dimension, category, biomes, rarity, yLevel (min, max), features, hostileMobs, loot (item, chance, count), uniqueLoot, howToFind, dangers, rewards, versionAdded, notes
commandsname, syntax, description, parameters (name, type, optional, description), permissionLevel, category, examples (code, explanation), commonMistakes, relatedCommands, versionAdded, notes
versionsslug, name, edition, releaseDate, type, updateName, majorFeatures, notableChanges, notableFixes, previousVersion, nextVersion
achievementsslug, name, id, description, tab, icon, howToComplete, parent, difficulty, xpReward, prerequisites, rewards, isChallenge, isGoal, versionAdded
tradesid, name, workstation, description, biomeSpecific, levels (level, name, trades with gives, givesAmount, receives, receivesAmount, maxUses and edition, plus priceEmeralds, gives2 and notes where they apply)

Two fields that look alike use different scales. A drop chance on a mob is a percentage, so the iron ingot a zombie drops at 2.5 means 2.5%. A loot chance on a structure is a fraction between 0 and 1, so the bread in a village chest at 0.62 means 62%.

Trade levels run Novice, Apprentice, Journeyman, Expert and Master. Each trade has an edition of both or java, and the java ones exist only in Java Edition.

Errors, Limits and CORS

The limit is 100 requests per IP address per minute. That minute starts with your first request, and request 101 inside it gets status 429, a Retry-After header with the seconds that are left, and this body:

{
  "success": false,
  "error": "Rate limit exceeded. Max 100 requests per minute."
}

Every API response carries X-RateLimit-Remaining, so a script can pause before it runs out. Only paths under /api/ count toward the limit; opening this page does not.

A lookup that finds nothing returns 404 with an error that names what was missing, such as Mob not found or Version not found. All routes answer the OPTIONS preflight with 204 and send Access-Control-Allow-Origin: *, which is why the API works from JavaScript in a browser without a proxy.

For uptime checks there is /api/health. It returns status ok, the current timestamp and the API version, 1.0.0.

Common Questions

Do I need an API key?

No. There is no sign-up and no key; you call the URLs directly. The free tier does ask for a visible dofollow link to api.astroworldmc.com on any page that uses the data.

How many requests can I make?

100 per minute from one IP address. Request 101 inside the same minute gets a 429 response with a Retry-After header, and every response tells you how many requests are left in X-RateLimit-Remaining.

Can I use the API from JavaScript in the browser?

Yes. Every route sends Access-Control-Allow-Origin: * and answers the OPTIONS preflight with 204, so fetch works from any origin.

How does search work?

search matches part of the name and ignores case, so ?search=spider on /api/v1/mobs returns Spider and Cave Spider. On /api/v1/versions it also matches the update name. The other filters need an exact value, such as rarity=very_rare.

Why does my lookup return 404?

Single lookups need the ID or the name as a slug, such as cave-spider or 1-21. Commands are looked up without the slash, so /api/v1/commands/give works, and the trade data covers the 13 villager professions but not the wandering trader.

Attribution

The free tier requires a visible dofollow link on any page that uses this API:

<a href="https://api.astroworldmc.com">Powered by Astroworld API</a>