Everything you need to pull slot, emoji, and match data straight from Reelagio.
https://reelagio.comList slots with optional search and filtering. Returns up to 50 slots per request.
Query Parameters:
limit - Number of results (default: 20, max: 50)
search - Match slot name, provider, description, theme or feature
provider - Filter by exact provider name (ignored when search is set)
minRtp - Minimum RTP percentage
sortBy - rtp (default), popularity, maxWin, or newestExamples:
GET https://reelagio.com/api/slots?limit=10GET https://reelagio.com/api/slots?provider=Pragmatic Play&minRtp=96GET https://reelagio.com/api/slots?search=bonanza&sortBy=popularityResponse:
{
"slots": [
{
"id": "...",
"number": 76,
"name": "Fire Portals",
"slug": "fire-portals",
"provider": "Pragmatic Play",
"rtp": 96.04,
"volatility": "high",
"maxWin": 10000,
"theme": [...],
"features": [...],
"emojiTags": ["๐ฅ", "๐งโโ๏ธ"],
"popularity": 101
}
],
"count": 10,
"total": 187
}count is the number returned; total is how many slots match. Use GET /api/slots/[id] for a slot's full details.features includes megaways, cluster pays and scatter pays when the slot uses that mechanic, and search matches them too.
Get a specific slot by ID or slug
GET https://reelagio.com/api/slots/cmfcts4we001ddoumjxzez8pj// By IDGET https://reelagio.com/api/slots/wild-swarm// By slugResponse includes full slot details:
{
"id": "...",
"name": "Wild Swarm",
"slug": "wild-swarm",
"provider": "Push Gaming",
"rtp": 97.03,
"volatility": "High",
"maxWin": 4569,
"emojiTags": ["๐ฅ", "๐", "๐"],
"theme": ["adventure"],
"features": ["free spins"],
"description": "...",
"review": "...",
"rating": 4.5,
"pros": [...],
"cons": [...]
}Redirects to a slot matching the emoji(s)
Examples:
GET https://reelagio.com/api/play/๐// Single emojiGET https://reelagio.com/api/play/๐๐๐// Multiple emojisNote: This endpoint performs a 302 redirect to the matching slot page
Find slots matching specific emoji combinations (1โ5 emojis, up to 30 results). Results are a weighted shuffle, so better matches are more likely to come first but order varies between calls; sort by matchScore for a ranked list.
Request Body:
{
"emojis": ["๐", "๐", "๐"]
}Response:
{
"success": true,
"data": {
"slots": [
{
"id": "cmfcueq8d000812s0nl48q6nn",
"name": "Big Bass Vegas Double Down Deluxe",
"slug": "big-bass-vegas-double-down-deluxe",
"url": "/slot/big-bass-vegas-double-down-deluxe",
"provider": "Pragmatic Play",
"matchScore": 340,
"emojiTags": ["๐ ", "๐ฐ", "๐"],
"rtp": 96.7,
"volatility": "high",
"maxWin": 5000
}
],
"emojis": ["๐", "๐", "๐"],
"bestMatch": { "name": "...", "url": "/slot/..." },
"totalMatches": 30
},
"message": "Slots matched successfully"
}Get emoji usage statistics across all slots
Query Parameters:
format=aggregated (default) - Returns emoji usage counts
format=raw - Returns raw emoji mappings from databaseAggregated Response (default):
GET https://reelagio.com/api/emojis{
"emojis": [
{
"emoji": "๐ฒ",
"count": 48,
"category": "Uncategorized"
},
{
"emoji": "๐",
"count": 45,
"category": "Uncategorized"
}
],
"total": 131,
"totalUsage": 1205
}Get emojis grouped by category
GET https://reelagio.com/api/emojis/categories{
"categories": {
"luck": ["๐", "๐ฒ", "๐"],
"wealth": ["๐", "๐ฐ", "๐ต"],
"energy": ["๐ฅ", "โก", "โ๏ธ"]
}
}Get detailed emoji statistics and analytics
GET https://reelagio.com/api/emojis/stats{
"totalEmojis": 131,
"totalUsage": 1205,
"averagePerSlot": 7.1,
"mostUsed": {
"emoji": "๐ฒ",
"count": 48
},
"leastUsed": {
"emoji": "โฉ๏ธ",
"count": 1
}
}A read-only Model Context Protocol server, so AI assistants (Claude, ChatGPT, Cursor and other MCP clients) can look up slot specs directly. Add it as a remote MCP server / custom connector. No API key needed.
https://reelagio.com/api/mcpTransport: Streamable HTTP, stateless (POST JSON-RPC, JSON responses, no sessions). Tools:
search_slots - filter by name, provider, themes, features, volatility, gameType, emoji, minMaxWin, bonusBuy
get_slot - full spec sheet for one slot (id, slug or name)
similar_slots - slots that play alike, with the reasons for each match
list_vocabulary - valid providers, themes, features and emoji tags with slot countsExample (Claude Code):
claude mcp add --transport http reelagio https://reelagio.com/api/mcpRaw request:
POST https://reelagio.com/api/mcp
Content-Type: application/json
{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"similar_slots","arguments":{"slot":"gates-of-olympus","limit":3}}}Returns catalogue specs and reelagio.com slot page links only (no casino links). Counts toward the public API rate limit.
Legacy redirect endpoint with query parameters
Query Parameters:
emoji - Single emoji or emoji stringExamples:
GET https://reelagio.com/api/v1/redirect?emoji=๐GET https://reelagio.com/api/v1/redirect?emoji=๐๐ฐInfo: This is a legacy endpoint. Use /api/play/[emojis] for new implementations.
Lucky spin - redirects to a random slot matching criteria
Query Parameters (all optional):
emoji - Filter by emoji
provider - Filter by provider name
volatility - Filter by volatility level
minRtp - Minimum RTP percentageExamples:
GET https://reelagio.com/api/v1/spin// Random slotGET https://reelagio.com/api/v1/spin?volatility=high&minRtp=96Note: Returns 302 redirect to a random matching slot
All public API endpoints are rate limited to prevent abuse. Rate limits apply per IP address.
Rate limit headers are included in all API responses:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 55
X-RateLimit-Reset: 1735689600
X-RateLimit-Window: minuteWhen you exceed the rate limit, you'll receive:
{
"error": "Rate limit exceeded",
"message": "Too many requests. Limit: 60 per minute",
"retryAfter": 1735689600
}Exceeding the burst limit also returns 429, but as a plain HTML page without a JSON body. Wait a second or two and retry.
Note: Admin endpoints require authentication and have their own separate limits.
Browser requests from other websites are not allowed: cross-origin (CORS) access is limited to reelagio.com.
You can still:
Example request from a server or script:
fetch('https://reelagio.com/api/slots?limit=5')
.then(res => res.json())
.then(data => console.log(data.slots));JavaScript/TypeScript example:
// Find slots with specific emojis
async function findSlots(emojis) {
const response = await fetch('/api/match', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ emojis })
});
return response.json();
}
// Redirect to a slot game
function playSlot(emoji) {
window.location.href = `/api/play/${emoji}`;
}
// Usage
findSlots(['๐', '๐']).then(data => {
console.log('Matching slots:', data.slots);
});
playSlot('๐'); // Redirects to a random slot with ๐