MHCT
Community-collected data from MouseHunt Community Tools (MHCT). Live endpoints are cached for up to 72 hours, or 6 hours with a rolling time filter.
MHCT measures rates out of 10,000, where 10000 means 100%. Divide by 100 to
get a percentage.
Get mouse attraction rates
Live attraction rates for a mouse, by location, stage, and cheese. Replace :id with the mouse type or ID.
Append a time filter to the ID, e.g. /mhct/948-3_months or /mhct/948-hlwn_22; the default is all_time, and /mhct/filters lists them all. Unknown IDs and mice with no data return an empty array.
Properties
- Name
locationTypestringDescriptionLocation name. - Name
stageTypestringDescriptionLocation stage, ornullwhen not applicable. - Name
cheeseTypestringDescriptionCheese used. - Name
total_huntsTypeintegerDescriptionNumber of hunts the rate is based on. - Name
rateTypeintegerDescriptionAttraction rate out of 10,000 (divide by 100 for a percentage).
Request
const response = await fetch('https://api.mouse.rip/mhct/948')
Response
[
{
"location": "Prickly Plains",
"stage": null,
"total_hunts": 12500,
"rate": 10000,
"cheese": "Flamin' Queso"
}
]
Get item drop rates
Live drop rates for an item, by location, stage, and cheese. Replace :id with the item type or ID.
Append a time filter to the ID as with mouse attraction rates, e.g. /mhct/item/3058-3_months. The default is all_time.
Properties
- Name
locationTypestringDescriptionLocation name. - Name
stageTypestringDescriptionLocation stage, ornullwhen not applicable. - Name
cheeseTypestringDescriptionCheese used. - Name
total_huntsTypeintegerDescriptionNumber of hunts the rate is based on. - Name
total_catchesTypeintegerDescriptionNumber of catches in the sample. - Name
total_dropsTypeintegerDescriptionNumber of drops in the sample. - Name
drop_pctTypestringDescriptionDrop rate as a percentage. - Name
min_amtTypeintegerDescriptionMinimum quantity dropped. - Name
max_amtTypeintegerDescriptionMaximum quantity dropped.
Request
const response = await fetch('https://api.mouse.rip/mhct/item/3058')
Response
[
{
"location": "Floating Islands",
"stage": "Low Tier Loot",
"cheese": "Cloudy Cheesecake",
"total_hunts": 8000,
"total_catches": 6200,
"total_drops": 1240,
"drop_pct": "20.00",
"min_amt": 1,
"max_amt": 3
}
]
MHCT mouse redirect
An HTML page that redirects to the mouse's attraction page on mhct.win, not JSON. Replace :id with the mouse type or ID; the time filter suffix works here too, e.g. /mhct/redirect/948-3_months.
Request
const response = await fetch('https://api.mouse.rip/mhct/redirect/948')
Response
<html><head><meta http-equiv="refresh" content="0;url=https://mhct.win/attractions.php?mouse=1000&timefilter=all_time"></head></html>
Redirect to an item on MHCT
An HTML page that redirects to the item's loot page on mhct.win, not JSON. Replace :id with the item type or ID; the time filter suffix works here too.
Request
const response = await fetch('https://api.mouse.rip/mhct/redirect/item/3058')
Response
<html><head><meta http-equiv="refresh" content="0;url=https://mhct.win/loot.php?item=3058&timefilter=all_time"></head></html>
Get convertible contents
The possible rewards (and odds) from opening a convertible item. Replace :id with the item type or ID.
Properties
- Name
idTypeintegerDescriptionReward item ID (0if unknown). - Name
nameTypestringDescriptionReward item name. - Name
minTypeintegerDescriptionMinimum quantity awarded. - Name
maxTypeintegerDescriptionMaximum quantity awarded. - Name
chanceTypestringDescriptionChance of receiving the reward, as a percentage.
Request
const response = await fetch('https://api.mouse.rip/mhct/convertibles/super_brie_cheese')
Response
[
{
"id": 114,
"name": "SUPER|brie+",
"min": 70,
"max": 70,
"chance": "100.00"
}
]
Get where an item comes from in convertibles
The convertibles (chests, bags, eggs, and so on) that can contain an item, most likely first. The reverse of convertible contents. Replace :id with the item type or ID. Retired convertibles are left out unless include_retired=true. Known items with no sources return an empty array.
Query parameters
- Name
include_retiredTypebooleanDescriptionInclude retired content: maps and items MHCT marks(Retired), and items the game marksinactiveorremoved. Left out by default.
Properties
- Name
idTypeintegerDescriptionThe convertible's item ID, ornullif it isn't in/items. - Name
typeTypestringDescriptionThe convertible's item type, ornull. - Name
nameTypestringDescriptionThe convertible's name, as MHCT has it. - Name
chanceTypenumberDescriptionChance an opening contains the item, as a percentage. - Name
minTypeintegerDescriptionMinimum quantity when it does. - Name
maxTypeintegerDescriptionMaximum quantity when it does. - Name
single_opensTypeintegerDescriptionNumber of single openings sampled. - Name
retiredTypebooleanDescriptionWhether the convertible is retired. Onlytruewithinclude_retired=true.
Request
const response = await fetch('https://api.mouse.rip/mhct/convertible-sources/dragonbane_potion')
Response
[
{
"id": 3304,
"type": "boiling_cauldron_weapon",
"name": "Boiling Cauldron Trap",
"chance": 0.6,
"min": 1,
"max": 1,
"single_opens": 24775,
"retired": false
},
{
"id": null,
"type": null,
"name": "Boiling Cauldron Trap (2025-2026)",
"chance": 0.36,
"min": 1,
"max": 1,
"single_opens": 33940,
"retired": false
},
...
]
Get the mice on a map
The mice on one treasure map (or, for a Scavenger Hunt, the items), with how often each appears. Replace :id with the MHCT map ID, the map's name, or its slug (e.g. rare_map). Updated weekly.
Properties
- Name
mhct_idTypeintegerDescriptionMHCT map ID. - Name
nameTypestringDescriptionMap name. - Name
miceTypearray of valuesDescriptionMice on the map, each withid,type,name,rate(out of 10,000),seen, andtotal. - Name
itemsTypearray of valuesDescriptionFor a Scavenger Hunt, the items on it instead of mice, with the same fields.
Request
const response = await fetch('https://api.mouse.rip/mhct/map/10th_birthday_event_map')
Response
{
"mhct_id": 145,
"name": "10th Birthday Event Map",
"mice": [
{
"id": 18,
"type": "birthday",
"name": "Birthday",
"rate": 10000,
"seen": 10,
"total": 10
},
{
"id": 925,
"type": "time_tailor",
"name": "Time Tailor",
"rate": 10000,
"seen": 10,
"total": 10
},
...
]
}
Get MHCT IDs
Everything MHCT tracks, keyed by MHCT item type, with the game's ID and type where the name matches. The types are mouse (attraction), mousemaps (map objectives, including Scavenger Hunt items), loot, convertible, itemconvertibles (items that come out of convertibles), and map. Updated weekly.
Request
const response = await fetch('https://api.mouse.rip/mhct/ids')
Response
{
"mouse": [
{
"mhct_id": 1,
"name": "Crystal Queen",
"kind": "mouse",
"id": 727,
"type": "crystal_queen"
},
{
"mhct_id": 2,
"name": "Crystal Lurker",
"kind": "mouse",
"id": 725,
"type": "crystal_lurker"
},
...
],
"mousemaps": [
{
"mhct_id": 1,
"name": "Abominable Snow",
"kind": "mouse",
"id": 1,
"type": "abominable_snow"
},
{
"mhct_id": 2,
"name": "Acolyte",
"kind": "mouse",
"id": 2,
"type": "acolyte"
},
...
],
"loot": [
{
"mhct_id": 2,
"name": "Ticket to the Burroughs Bazaar",
"kind": "item",
"id": 2,
"type": "bazaar_map_piece"
},
{
"mhct_id": 3,
"name": "Key to the Town of Digby",
"kind": "item",
"id": 3,
"type": "digby_map_piece"
},
...
],
"convertible": [
{
"mhct_id": 139,
"name": "Magical Blue Pepper Plant",
"kind": "item",
"id": 139,
"type": "blue_pepper_plant_convertible"
},
{
"mhct_id": 140,
"name": "Champions Chest",
"kind": "item",
"id": 140,
"type": "champions_chest_convertible"
},
...
],
"itemconvertibles": [
{
"mhct_id": 32,
"name": "Wooden Base with Target",
"kind": "item",
"id": 32,
"type": "wooden_base_with_target"
},
{
"mhct_id": 34,
"name": "500 Pound Spiked Crusher",
"kind": "item",
"id": 34,
"type": "500_pound_spiked_crusher_weapon"
},
...
],
"map": [
{
"mhct_id": 6,
"name": "Arduous Slayer Map",
"kind": "map",
"id": null,
"type": null
},
{
"mhct_id": 8,
"name": "Arduous Map",
"kind": "map",
"id": null,
"type": null
},
...
]
}
Get MHCT IDs for one item type
One of the lists from /mhct/ids. Replace :type with mouse, mousemaps, loot, convertible, itemconvertibles, or map.
Properties
- Name
mhct_idTypeintegerDescriptionMHCT's ID. For mice and maps, MHCT numbers them itself; for items, it's usually the game's item ID. - Name
nameTypestringDescriptionThe name MHCT uses. - Name
kindTypestringDescriptionmouse,item, ormap. - Name
idTypeintegerDescriptionThe game's ID, ornullif the name doesn't match anything in/miceor/items(maps never have one). - Name
typeTypestringDescriptionThe game's type (slug), ornull.
Request
const response = await fetch('https://api.mouse.rip/mhct/ids/loot')
Response
[
{
"mhct_id": 2,
"name": "Ticket to the Burroughs Bazaar",
"kind": "item",
"id": 2,
"type": "bazaar_map_piece"
},
{
"mhct_id": 3,
"name": "Key to the Town of Digby",
"kind": "item",
"id": 3,
"type": "digby_map_piece"
},
...
]
Get time filters
The time filters MHCT offers, for the -filter suffix on mouse attraction rates and item drop rates, newest event first. rolling filters cover a recent window and keep changing; event filters cover a past event. Updated weekly.
Properties
- Name
idTypestringDescriptionThe filter, e.g.hlwn_25. - Name
nameTypestringDescriptionIts name on MHCT, e.g.Halloween 2025. - Name
kindTypestringDescriptionall_time,rolling, orevent.
Request
const response = await fetch('https://api.mouse.rip/mhct/filters')
Response
[
{
"id": "all_time",
"name": "All Time",
"kind": "all_time"
},
{
"id": "3_days",
"name": "Last 3 Days",
"kind": "rolling"
},
...
]
Get MHCT mappings
Game IDs and type slugs mapped to the IDs MHCT uses.
Properties
- Name
miceTypeobjectDescriptionMouse ID → MHCT mouse ID. - Name
itemsTypeobjectDescriptionItem ID → MHCT item ID. - Name
typeTypeobjectDescriptionType slug → ID mappings.
Request
const response = await fetch('https://api.mouse.rip/mhct/mappings')
Response
{
"items": {
"1267": "1281",
"2027": "2026",
"2028": "2026",
"2029": "2026",
"2030": "2026",
"2031": "2026"
},
"itemType": {
"hgcash": 384,
"friend": 502,
"zzt_key": 348,
...
},
"mice": {
"1": "384",
"2": "165",
"3": "539",
...
},
"type": {
"abominable_snow": 1,
"acolyte": 2,
"aged": 3,
...
}
}
Get all convertibles
Every convertible item and its possible contents. For one convertible, use /mhct/convertibles/:id.
Properties
- Name
idTypeintegerDescriptionItem ID. - Name
typeTypestringDescriptionItem type (slug). - Name
mhct_idTypeintegerDescriptionMHCT item ID. - Name
nameTypestringDescriptionItem name. - Name
convertiblesTypearray of valuesDescriptionPossible rewards, each withitem,min_item_quantity,max_item_quantity,single_opens, andtimes_with_any.
Request
const response = await fetch('https://api.mouse.rip/mhct/convertibles')
Response
[
{
"id": 805,
"type": "valentines_2012_gift_basket_convertible",
"mhct_id": 805,
"name": "<3 Gift Basket",
"convertibles": [
{
"item": "super_brie_cheese",
"min_item_quantity": 70,
"max_item_quantity": 70,
"single_opens": 20,
"times_with_any": 20,
"total": 20,
"total_items": 1400,
"total_quantity_when_any": 1400,
"gold_value": 15893,
"sb_value": 1
},
{
"item": "dlu_collectible",
"min_item_quantity": 1,
"max_item_quantity": 1,
"single_opens": 20,
"times_with_any": 20,
"total": 20,
"total_items": 20,
"total_quantity_when_any": 20,
"gold_value": null,
"sb_value": null
},
...
]
},
{
"id": 3375,
"type": "10_pack_of_lunar_lantern_candles_convertible",
"mhct_id": 3375,
"name": "10 Pack of Lunar Lantern Candles",
"convertibles": [
{
"item": "lny_unlit_lantern_stat_item",
"min_item_quantity": 10,
"max_item_quantity": 10,
"single_opens": 10,
"times_with_any": 10,
"total": 25,
"total_items": 250,
"total_quantity_when_any": 100,
"gold_value": null,
"sb_value": null
}
]
},
...
]
Get reverse convertibles
The inverse of /mhct/convertibles — for each reward item, the convertibles it can come from.
Properties
- Name
idTypestringDescriptionItem ID. - Name
typeTypestringDescriptionItem type (slug). - Name
mhct_idTypeintegerDescriptionMHCT item ID. - Name
nameTypestringDescriptionItem name. - Name
convertiblesTypearray of valuesDescriptionConvertibles this item drops from, each withconvertible,total,total_items,single_opens,times_with_any, and quantity fields.
Request
const response = await fetch('https://api.mouse.rip/mhct/reverse-convertibles')
Response
[
{
"id": "cash25_stat_item",
"type": "cash25_stat_item",
"mhct_id": 932,
"name": "$25 Cash Prize",
"convertibles": [
{
"convertible": "Mystery Pot of Gold",
"total": 180,
"total_items": 9,
"single_opens": 180,
"times_with_any": 9,
"min_item_quantity": 1,
"max_item_quantity": 1,
"total_quantity_when_any": 9
}
]
},
{
"id": "tenth_birthday_storm_wrought_ballista_skin",
"type": "tenth_birthday_storm_wrought_ballista_skin",
"mhct_id": 2586,
"name": "10th Birthday Storm Wrought Ballista Trap Skin",
"convertibles": [
{
"convertible": "2018 Birthday Treasure Chest",
"total": 540,
"total_items": 5,
"single_opens": 512,
"times_with_any": 5,
"min_item_quantity": 1,
"max_item_quantity": 1,
"total_quantity_when_any": 5
},
{
"convertible": "Gilded 2018 Birthday Treasure Chest",
"total": 7,
"total_items": 1,
"single_opens": 7,
"times_with_any": 1,
"min_item_quantity": 1,
"max_item_quantity": 1,
"total_quantity_when_any": 1
},
...
]
},
...
]
Get mapper
Every treasure map and the mice that appear on it, with how often.
Properties
- Name
mhct_idTypeintegerDescriptionMHCT map ID. - Name
nameTypestringDescriptionMap name. - Name
miceTypearray of valuesDescriptionMice on the map, each withid,type,name,rate(out of 10,000),seen, andtotal.
Request
const response = await fetch('https://api.mouse.rip/mhct/mapper')
Response
[
{
"mhct_id": 145,
"name": "10th Birthday Event Map",
"mice": [
{
"id": 18,
"type": "birthday",
"name": "Birthday",
"rate": 10000,
"seen": 10,
"total": 10
},
{
"id": 925,
"type": "time_tailor",
"name": "Time Tailor",
"rate": 10000,
"seen": 10,
"total": 10
},
...
]
},
{
"mhct_id": 117,
"name": "10th Birthday Map",
"mice": [
{
"id": 18,
"type": "birthday",
"name": "Birthday",
"rate": 10000,
"seen": 1010,
"total": 1010
},
{
"id": 924,
"type": "time_punk",
"name": "Time Punk",
"rate": 9812,
"seen": 991,
"total": 1010
},
...
]
},
...
]
Get reverse mapper
For each mouse, the maps it can appear on along with appearance rates.
Properties
- Name
idTypeintegerDescriptionMouse ID. - Name
typeTypestringDescriptionMouse type (slug). - Name
mhct_idTypeintegerDescriptionMHCT mouse ID. - Name
nameTypestringDescriptionMouse name. - Name
mapsTypearray of valuesDescriptionMaps the mouse appears on, each withmap,rate(out of 10,000),seen, andtotal.
Request
const response = await fetch('https://api.mouse.rip/mhct/reverse-mapper')
Response
[
{
"id": 903,
"type": "thunderlord",
"mhct_id": 1040,
"name": "⚡Thunderlord⚡",
"maps": [
{
"map": "Origin of Dragons Map",
"rate": 10000,
"seen": 16291,
"total": 16291
},
{
"map": "Moussu Picchu Map",
"rate": 8178,
"seen": 5615,
"total": 6866
},
...
]
},
{
"id": 1,
"type": "abominable_snow",
"mhct_id": 1,
"name": "Abominable Snow Mouse",
"maps": [
{
"map": "M1000 Team Research Expedition Map",
"rate": 10000,
"seen": 5687,
"total": 5687
},
{
"map": "Athletic Lunar List Map",
"rate": 8276,
"seen": 24,
"total": 29
},
...
]
},
...
]