MENU navbar-image

Introduction

API documentation for the Smash Map website

This documentation aims to provide all the information you need to work with our API.

Game IDs

Game ID
64 4
Melee 1
Brawl 5
Project M 2
Project + 33602
3DS / WiiU 3
Ultimate 1386
HDR 34157
Rivals 2 53945

Authenticating requests

This API is not authenticated.

Events

List events with filtering, sorting, and pagination support.

Example request:
curl --request GET \
    --get "https://smash-map.com/api/events?games=1%2C+1386&name=Smash&type=offline&continents=NA%2CEU&countries=US%2CCA&orderBy=attendeesASC" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://smash-map.com/api/events"
);

const params = {
    "games": "1, 1386",
    "name": "Smash",
    "type": "offline",
    "continents": "NA,EU",
    "countries": "US,CA",
    "orderBy": "attendeesASC",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://smash-map.com/api/events'
params = {
  'games': '1, 1386',
  'name': 'Smash',
  'type': 'offline',
  'continents': 'NA,EU',
  'countries': 'US,CA',
  'orderBy': 'attendeesASC',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
  "data": [
    {
      "id": 1,
      "game": {
        "name": "Super Smash Bros. Melee",
        "color": "#A30010"
      },
      "address": {
        "country": {
          "name": "United States",
          "timezone": "America/Los_Angeles"
        },
        "name": "Anaheim Convention Center",
        "latitude": 33.8003,
        "longitude": -117.9211
      },
      "image": {
        "url": "https://smashmap.example.com/storage/images/events/1.png"
      },
      "is_online": false,
      "name": "Genesis 10",
      "iso_start_date_time": "2025-10-11T15:30:00-04:00", # Start date-time in ISO format
      "iso_end_date_time": "2025-10-11T23:00:00-04:00", # End date-time in ISO format
      "timezone_start_date_time": "11-10-2025 15:30:00", # How the front-end directly displays the start date-time
      "timezone_end_date_time": "23:00:00", # How the front-end directly displays the end date-time
      "timezone": "UTC -04:00",
      "attendees": 5000,
      "link": "https://start.gg/tournament/genesis-10",
      "user_subscribed": false
    }
  ],
  "links": {
    "first": "https://smashmap.example.com/api/events?page=1",
    "last": "https://smashmap.example.com/api/events?page=10",
    "prev": null,
    "next": "https://smashmap.example.com/api/events?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 10,
    "per_page": 12,
    "to": 12,
    "total": 120
  }
}
 

Example response (500):


{
    "message": "An error occurred while retrieving the events E 006",
    "error": "Error message details"
}
 

Request      

GET api/events

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

startDate   string  optional    

Filter events starting from this date (Y-m-d format).

endDate   string  optional    

Filter events ending before this date (Y-m-d format).

games   string  optional    

Comma-separated game IDs to filter by. Use "default" for no filter.

Example: 1, 1386

name   string  optional    

Search events by name (case-insensitive partial match).

Example: Smash

type   string  optional    

Event type filter.

  • "default": All events (no filter)
  • "online": Online-only events
  • "offline": In-person events
  • "followed": Events subscribed by the authenticated user

Example: offline

continents   string  optional    

Comma-separated continent codes to filter by. Use "default" for no filter.

Example: NA,EU

countries   string  optional    

Comma-separated country codes to filter by. Use "default" for no filter.

Example: US,CA

orderBy   string  optional    

Sort order for events.

  • "default": Sort by start date (ascending)
  • "attendeesASC": Sort by attendee count (ascending)
  • "attendeesDESC": Sort by attendee count (descending)
  • "dateASC": Sort by start date (ascending)
  • "dateDESC": Sort by start date (descending) Example: attendeesASC
lat   number  optional    

Latitude for location filtering. Must be used with lng and radius.

lng   number  optional    

Longitude for location filtering. Must be used with lat and radius.

radius   integer  optional    

Search radius in kilometers. Must be used with lat and lng.

paginate   string  optional    

Set to "false" to return all events without pagination. Defaults to true (12 per page).

Get event statistics in a format suitable for charts.

Example request:
curl --request GET \
    --get "https://smash-map.com/api/events/statistics?type=games" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://smash-map.com/api/events/statistics"
);

const params = {
    "type": "games",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://smash-map.com/api/events/statistics'
params = {
  'type': 'games',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "data": {
        "labels": [
            "64",
            "Melee",
            "Brawl",
            "Project M",
            "Project +",
            "3DS / WiiU",
            "Ultimate",
            "HDR",
            "Rivals 2"
        ],
        "datasets": [
            {
                "data": [
                    12,
                    450,
                    80,
                    95,
                    150,
                    60,
                    800,
                    30,
                    120
                ],
                "backgroundColor": [
                    "#FAC41A",
                    "#A30010",
                    "#660d02",
                    "#3B448B",
                    "#6FD19C",
                    "#AFC1EE",
                    "#F18A41",
                    "#015500",
                    "#B19EEF"
                ],
                "hoverBackgroundColor": [
                    "#D8A504",
                    "#82000C",
                    "#510A01",
                    "#2F366F",
                    "#3EC17A",
                    "#6A8CDF",
                    "#E46810",
                    "#013D00",
                    "#9A85D1"
                ]
            }
        ],
        "eventCount": 1797
    },
    "message": "Statistics retrieved with success"
}
 

Example response (200):


(type=months) {
  "data": {
    "labels": ["January", "February", "March", "April", "May", "June"],
    "datasets": [
      {
        "label": "64",
        "backgroundColor": ["#FAC41A"],
        "hoverBackgroundColor": ["#D8A504"],
        "data": [2, 3, 4, 2, 1, 0]
      },
      {
        "label": "Melee",
        "backgroundColor": ["#A30010"],
        "hoverBackgroundColor": ["#82000C"],
        "data": [80, 95, 120, 85, 70, 0]
      },
      {
        "label": "Brawl",
        "backgroundColor": ["#660d02"],
        "hoverBackgroundColor": ["#510A01"],
        "data": [10, 15, 20, 18, 17, 0]
      },
      {
        "label": "Project M",
        "backgroundColor": ["#3B448B"],
        "hoverBackgroundColor": ["#2F366F"],
        "data": [20, 25, 30, 20, 0, 0]
      },
      {
        "label": "Project +",
        "backgroundColor": ["#6FD19C"],
        "hoverBackgroundColor": ["#3EC17A"],
        "data": [30, 40, 50, 30, 0, 0]
      },
      {
        "label": "3DS / WiiU",
        "backgroundColor": ["#AFC1EE"],
        "hoverBackgroundColor": ["#6A8CDF"],
        "data": [5, 8, 10, 7, 30, 0]
      },
      {
        "label": "Ultimate",
        "backgroundColor": ["#F18A41"],
        "hoverBackgroundColor": ["#E46810"],
        "data": [150, 200, 250, 150, 50, 0]
      },
      {
        "label": "HDR",
        "backgroundColor": ["#015500"],
        "hoverBackgroundColor": ["#013D00"],
        "data": [5, 8, 9, 8, 0, 0]
      },
      {
        "label": "Rivals 2",
        "backgroundColor": ["#B19EEF"],
        "hoverBackgroundColor": ["#9A85D1"],
        "data": [25, 35, 40, 20, 0, 0]
      }
    ],
    "eventCount": 0
  },
  "message": "Statistics retrieved with success"
}
 

Example response (500):


{
    "message": "An error occurred while retrieving the events statistics E 010",
    "error": "Error message details"
}
 

Request      

GET api/events/statistics

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

type   string  optional    

The type of statistics to retrieve.

  • "games": Event count by game
  • "months": Event count by month for the next 6 months, broken down by game

Example: games