Attraction
Mouse attraction rates from MH-Tools and MHCT, per population: a location, stage, cheese and charm. - means no stage or no charm.
Get attraction populations
One record per population, queryable like the other collections. Filter on location, stage, cheese, charm or source; q searches the location, stage, cheese, charm and mouse names. Sort on location, stage, cheese, charm, source, sample_size or rate.
Query parameters
- Name
qTypestringDescriptionCase-insensitive partial text search. - Name
mouseTypestringDescriptionMouse type or name; comma-separated or repeated. Returns only populations that attract it, lists only that mouse in each, and adds itsrate, which you can sort on.
Properties
- Name
locationTypestringDescriptionLocation type. - Name
location_nameTypestringDescription - Name
stageTypestringDescriptionStage name, or-for no stage. - Name
cheeseTypestringDescriptionCheese type. - Name
cheese_nameTypestringDescription - Name
charmTypestringDescriptionCharm type, or-for no charm. - Name
charm_nameTypestringDescriptionCharm name, empty for no charm. - Name
sourceTypestringDescriptionmh-toolsormhct. - Name
sample_sizeTypeinteger | nullDescriptionHunts the rates are based on;nullwhen the source doesn't report it. - Name
rateTypenumberDescriptionThat mouse's attraction rate as a percentage. Only present when filtering bymouse. - Name
miceTypearray of objectDescriptionThe mice attracted, highest rate first.NametypeTypestringDescriptionMouse type.NamenameTypestringDescriptionMouse name.NamerateTypenumberDescriptionAttraction rate as a percentage.
Request
const response = await fetch('https://api.mouse.rip/attraction?mouse=burglar&sort=-rate&limit=1')
Response
[
{
"location": "bazaar",
"location_name": "Bazaar",
"stage": "-",
"cheese": "gilded_cheese",
"cheese_name": "Gilded Cheese",
"charm": "gilded_trinket",
"charm_name": "Gilded Charm",
"source": "mhct",
"sample_size": 113,
"mice": [
{
"type": "burglar",
"name": "Burglar Mouse",
"rate": 26.5487
}
],
"rate": 26.5487
}
]
Get attraction rates by location
The same rates nested as location → stage → cheese → charm → mouse → percentage. Filters keep the hierarchy and percentages, and remove empty branches; no matches returns {}.
Values match case-insensitively. Repeat a parameter for several values (location=bazaar&location=zugzwang_library); different filters combine with AND. Commas don't separate values.
Query parameters
- Name
locationTypearray of stringDescriptionEnvironment slug, e.g.bazaarorcursed_city. - Name
stageTypearray of stringDescriptionExact stage name, or-for no stage. - Name
cheeseTypearray of stringDescriptionCheese type slug. - Name
charmTypearray of stringDescriptionCharm type slug, or-for no charm. - Name
mouseTypearray of stringDescriptionMouse type slug. - Name
vTypestringDescriptionOptional cache token; not a filter.
Request
const response = await fetch('https://api.mouse.rip/attraction/location?location=bazaar&cheese=super_brie_cheese&charm=-')
Response
{
"bazaar": {
"-": {
"super_brie_cheese": {
"-": {...}
}
}
}
}
Get attraction rates for a location
Just that location's stages, with the same filters as /attraction/location. Unknown locations return 404.
Request
const response = await fetch('https://api.mouse.rip/attraction/location/bazaar?cheese=super_brie_cheese&charm=-')
Response
{
"-": {
"super_brie_cheese": {
"-": {
"burglar": 20.28,
"bionic": 16.88,
"granite": 16.42,
"steel": 16,
"master_burglar": 8.14,
"mutated_white": 5.18,
"mutated_grey": 4.65,
"nibbler": 3.24,
"crown_collector_mouse": 3.13,
"mutated_brown": 2.41,
"dwarf": 1.67,
"zombie": 1.59,
"black_widow": 0.4
}
}
}
}
Get attraction sources and coverage
Where each population came from and its sample size, using the same hierarchy through charm, plus source timestamps, thresholds, and counts of the populations left out. MHCT entries also have per-mouse encounter counts, first and last hunt times (Unix seconds), and the MHCT stages pooled into the population.
Request
const response = await fetch('https://api.mouse.rip/attraction/meta')
Response
{
"mh_tools": {
"url": "https://github.com/tsitu/MH-Tools",
"retrieved_at": "2026-10-10T17:21:04.047Z"
},
"mhct": {
"url": "https://backups.mhct.win/nightly/hunthelper_nightly.txt.zip",
"data_through": "2026-11-11T08:32:55.000Z",
"window_days": 365,
"min_hunts": 100,
"method": "Mouse encounters / all attracted hunts, including failed catches; failed attractions excluded.",
"dimensions": [
"location",
"all recorded stage tags",
...
],
"limitations": "Observed proportions pool other equipment and hunt details; they are estimates, not guaranteed game probabilities.",
"excluded_locations": {
"zugzwang_tower": "Chess progress and Pawn Pincher traps alter the population.",
"iceberg": "Base-specific populations need an equipment adapter.",
"rift_valour": "Floor type must be resolved within each floor range.",
"epilogue_falls": "Zone quality is stored in hunt details."
},
"dropped_populations": {
"missing_stage": 405,
"requires_detail_adapter": 3193,
"small_sample": 38322
}
},
"population_counts": {
"mh-tools": 1937,
"mhct": 4056
},
"populations": {
"bazaar": {
"-": {
"super_brie_cheese": {...},
"gouda_cheese": {...},
"brie_cheese": {...},
"swiss_cheese": {...},
"marble_cheese": {...},
"mozzarella_cheese": {...},
"cheddar_cheese": {...},
"white_cheddar_cheese": {...},
"gilded_cheese": {...}
}
},
"calm_clearing": {
"-": {
"cherry_cheese": {...},
"super_brie_cheese": {...},
"gouda_cheese": {...},
"brie_cheese": {...},
"swiss_cheese": {...},
"marble_cheese": {...},
"mozzarella_cheese": {...},
"cheddar_cheese": {...},
"white_cheddar_cheese": {...}
}
},
"cape_clawed": {
"-": {
"super_brie_cheese": {...},
"gouda_cheese": {...},
"brie_cheese": {...},
"swiss_cheese": {...},
"crunchy_cheese": {...},
"gumbo_cheese": {...},
"shell_cheese": {...}
}
},
...
}
}
Older name for rates by location
The same as /attraction/location, including its filters.
Query parameters
- Name
locationTypearray of stringDescriptionEnvironment slug, e.g.bazaarorcursed_city. - Name
stageTypearray of stringDescriptionExact stage name, or-for no stage. - Name
cheeseTypearray of stringDescriptionCheese type slug. - Name
charmTypearray of stringDescriptionCharm type slug, or-for no charm. - Name
mouseTypearray of stringDescriptionMouse type slug. - Name
vTypestringDescriptionOptional cache token; not a filter.
Sources
MH-Tools is the preferred source. MHCT fills in only populations MH-Tools doesn't have; its rates are never mixed into an MH-Tools population. /attraction/meta gives each population's source and sample size.
MHCT rates use the last 365 days of hunts, with at least 100 attracted hunts per population. They count catches and failed catches, not failures to attract. MHCT stages are renamed to the matching MH-Tools stage, and finer MHCT splits (Sunken City depths, Furoma Rift batteries, Train Station steps, Bountiful Beanstalk room loot, Moussu Picchu weather) are pooled into it. Stages without a clear MH-Tools match keep their MHCT name, with simultaneous tags joined by +.
Rates are observed proportions, not exact game odds, and other equipment and hunt details are pooled. Zugzwang's Tower, Iceberg, Valour Rift, and Epilogue Falls use MH-Tools data only. A missing population does not mean a 0% attraction rate.