Skip to content

This repo exposes an API that simplifies theme park wait times endpoints and returns one single easy to understand format for all data types, from park information to waiting and show times.

Notifications You must be signed in to change notification settings

timyboy12345/Themeparks-Node-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

87 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽก Themeparks API ๐ŸŽก

Using this API, you can request waiting times from theme parks all around the world. It communicates with public API's that the parks use internally for their apps.

Feel free to add new parks.

Example

To view the API, please go to the example API at https://tp.arendz.nl. This API is always up-to-date with the latest master-branch of this repo.

Supported parks

In the table below you will find the parks that are currently supported and the functions that they support. This list of included and non-included functions is also included in the API.

Park Type Ride Support Restaurants Support Shows Support Shops Support Halloween Support
๐Ÿ‡ง๐Ÿ‡ช Walibi Belgium ๐ŸŽก True True False True False
๐Ÿ‡ง๐Ÿ‡ช Bellewaerde ๐ŸŽก True True True True False
๐Ÿ‡ง๐Ÿ‡ช Bobbejaanland ๐ŸŽก True True False True False
๐Ÿ‡ง๐Ÿ‡ช Plopsalande de Panne ๐ŸŽก True True True True False
๐Ÿ‡จ๐Ÿ‡ฆ La Ronde, Montreal ๐ŸŽก True True True True False
๐Ÿ‡ฉ๐Ÿ‡ช Phantasialand ๐ŸŽก True True True True False
๐Ÿ‡ฉ๐Ÿ‡ช Holiday Park ๐ŸŽก True True True True False
๐Ÿ‡ฉ๐Ÿ‡ช LegoLand Deutschland ๐ŸŽก False False False False False
๐Ÿ‡ฉ๐Ÿ‡ช Hansa Park ๐ŸŽก True True True True False
๐Ÿ‡ฉ๐Ÿ‡ช Movie Park Germany ๐ŸŽก True True True True True
๐Ÿ‡ฉ๐Ÿ‡ฐ Tivoli ๐ŸŽก True True True False False
๐Ÿ‡ช๐Ÿ‡ธ Portaventura ๐ŸŽก True True True True False
๐Ÿ‡ช๐Ÿ‡ธ Ferrari Land ๐ŸŽก True True True True False
๐Ÿ‡ช๐Ÿ‡ธ Parque Warner ๐ŸŽก True True True True False
๐Ÿ‡ช๐Ÿ‡ธ Parque de Atracciones Madrid ๐ŸŽก True False True True False
๐Ÿ‡ช๐Ÿ‡ธ Parque Warner Beach ๐ŸŒŠ True True False True False
๐Ÿ‡ซ๐Ÿ‡ท Walibi Rhรดne-Alpes ๐ŸŽก True True False True False
๐Ÿ‡ซ๐Ÿ‡ท Disneyland Paris ๐ŸŽก True True True True False
๐Ÿ‡ซ๐Ÿ‡ท Walt Disney Studios Park ๐ŸŽก True True True True False
๐Ÿ‡ซ๐Ÿ‡ท Parc Asterix ๐ŸŽก True True True False False
๐Ÿ‡ซ๐Ÿ‡ท Futuroscope ๐ŸŽก True True True True False
๐Ÿ‡ซ๐Ÿ‡ท Marineland Cote D'azure ๐ŸŽก True True True True False
๐Ÿ‡ฌ๐Ÿ‡ง Thorpe Park ๐ŸŽก True True True True False
๐Ÿ‡ฌ๐Ÿ‡ง Alton Towers ๐ŸŽก True True True True False
๐Ÿ‡ฌ๐Ÿ‡ง Paultons Park ๐ŸŽก True True True True False
๐Ÿ‡ฌ๐Ÿ‡ง Chessington world of Adventures ๐ŸŽก True True True True False
๐Ÿ‡ฎ๐Ÿ‡น Gardaland ๐ŸŽก True True True False False
๐Ÿ‡ฎ๐Ÿ‡น Mirabilandia ๐ŸŽก True True False True False
๐Ÿ‡ณ๐Ÿ‡ฑ Efteling ๐ŸŽก True True True True False
๐Ÿ‡ณ๐Ÿ‡ฑ Toverland ๐ŸŽก True True True False True
๐Ÿ‡ณ๐Ÿ‡ฑ Walibi Holland ๐ŸŽก True True False True False
๐Ÿ‡ณ๐Ÿ‡ฑ DippieDoe ๐ŸŽก True False False False False
๐Ÿ‡ณ๐Ÿ‡ฑ Hellendoorn ๐ŸŽก True True True True False
๐Ÿ‡ณ๐Ÿ‡ฑ Ouwehands Dierenpark ๐Ÿฆ False False False False False
๐Ÿ‡ณ๐Ÿ‡ฑ Wildlands ๐Ÿฆ False False False False False
๐Ÿ‡ณ๐Ÿ‡ฑ Blijdorp ๐Ÿฆ False False True False False
๐Ÿ‡ณ๐Ÿ‡ฑ Apenheul ๐Ÿฆ False False False False False
๐Ÿ‡ณ๐Ÿ‡ฑ Safaripark Beekse Bergen ๐Ÿฆ False True False False False
๐Ÿ‡ณ๐Ÿ‡ฑ Speelland Beekse Bergen ๐ŸŽก True False False False False
๐Ÿ‡ต๐Ÿ‡ฑ Energylandia ๐ŸŽก True False True False False
๐Ÿ‡ธ๐Ÿ‡ช Liseberg ๐ŸŽก True True False True False
๐Ÿ‡ธ๐Ÿ‡ช Grona Lund ๐ŸŽก True False False False False
๐Ÿ‡บ๐Ÿ‡ธ Dollywood ๐ŸŽก True False False False False
๐Ÿ‡บ๐Ÿ‡ธ Silver Dollar City ๐ŸŽก True False False False False
๐Ÿ‡บ๐Ÿ‡ธ San Diego Zoo ๐Ÿฆ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Hersheypark ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Over Texas ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Over Georgia ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags St. Louis ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Great Adventure ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Magic Mountain ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Great America ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Fiesta Texas ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Hurricane Harbor, Arlington ๐ŸŒŠ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Hurricane Harbor, Los Angeles ๐ŸŒŠ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Hurricane Harbor, Chicago ๐ŸŒŠ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags America ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Discovery Kingdom ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags New England ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Hurricane Harbor, Jackson ๐ŸŒŠ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ The Great Escape ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags White Water, Atlanta ๐ŸŒŠ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Mรฉxico ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Hurricane Harbor, Oaxtepec ๐ŸŒŠ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Hurricane Harbor, Concord ๐ŸŒŠ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Frontier City ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Hurricane Harbor, Oklahoma City ๐ŸŒŠ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Darien Lake ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Hurricane Harbor, Phoenix ๐ŸŒŠ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Hurricane Harbor, SplashTown ๐ŸŒŠ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Hurricane Harbor, Rockford ๐ŸŒŠ True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Six Flags Wild Safari, Jackson ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Canada's Wonderland ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Carowinds ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Cedar Point ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Dorney Park ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ California's Great Adventure ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ King's Dominion ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Kings Island ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Knotts Berry Farm ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Michigans Adventure ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Valley Fair ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Worlds of Fun ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Seaworld San Antonio ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Seaworld San Diego ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Seaworld Orlando ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Bush Gardens Tampa Bay ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Bush Gardens Williamsburg ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Sesame Place Philadelphia ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Sesame Place San Diego ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Universal Studios Orlando ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Islands of Adventure ๐ŸŽก True True True True False
๐Ÿ‡บ๐Ÿ‡ธ Universal Studios Hollywood ๐ŸŽก True True True True False

Parks on the planning

UK: Pleasure Beach, LegoLand Windsor, Drayton Manor IT: Cincetitta World, Mirabilandia ES: Puy de Fou Espana DE: Europapark, Rulantica, Heidi Park OO: Familypark FR: Puy de Fou DM: Legoland Billund, Djurs Sommerland, Farup Sommerland

Description

This API was build using the Nest framework. Find the docs at the NestJS Documentation

Running the app

# development
npm run start

# watch mode
npm run start:dev

# production mode
npm run start:prod

Adding a new park

If you have access to an API of a theme park/resort that is not yet included, you can include it yourself and create a pull request, or create an issue with all details needed to integrate the park (API Keys, URLs, ...)

Structure

To keep the code easy to understand, there is a structure to the files. This is used for all parks. If the park you're adding is part of a resort, the contents is placed within a folder named after the resort (for example disney)

...
src
  +-- _dtos # The dto files for API documentation
      +-- ...
  +-- _interfaces # The global interface and enum files
      +-- ...
  +-- _services # The global services
      +-- ...
  +-- controllers # All HTTP controllers
  +-- database # All models and repositories for the database connection
  +-- parks
      +-- {PARK_NAME} # The folder in which all files will be located
          +-- interfaces # All interfaces for this park
              +-- ...
          +-- {PARK_NAME}-transfer # A service which is used to translate park-provided objects to the POI interface structure 
              +-- {PARK_NAME}-transfer.service.spec.ts
              +-- {PARK_NAME}-transfer.service.ts
          +-- data # A folder which contains static assets if no API is available for this data
              +-- ...
          +-- {PARK_NAME}.service.spec.ts # All tests for this park
          +-- {PARK_NAME}.service.ts # The service for this park, which extends theme-park.service.ts 
  +-- schedules # All cron-jobs
...

After the right files have been added, the park has to be added to the constructor of parks.service.ts so Nest knows the park exists and is ready to be included with the other parks.

Using other services

Some parks use a single API URL to return all data. For these parks, the through-pois-theme-park.service.ts file was created. This service can be usefull if a park returns data from for example restaurants, rides and shows in a single response. This way, you don't have to create all the methods by hand, but just implement the getPois() method.

Some parks use services provided by themeparks.io. For these parks, a specific service was created called themeparks-io-theme-park.service.ts. This service can easily implement new themeparks.io parks by providing some basic information, since all data is returned in a standardized format.

Attractions IO

Some parks use a service provided by attractions io. For these parks, a special AioThemeparkService was created. You need a few details from the app, including API key and build details, and you can include the park in the API.

Formats

The API returns parks, restaurants, rides and others points of interest (POIs) in a standardized way, these are detailed below.

Park Format

export interface ThemePark {
  id: string;
  name: string;
  description: string;
  image: string;
  countryCode: string;
  supports?: ThemeParkSupports;
}

Poi Format

export interface Poi {
  id: string;
  category: PoiCategory;
  rideCategory?: RideCategory;
  original_category?: string;
  title: string;
  subTitle?: string;
  description?: string;
  area?: string;
  createdAt?: string;
  location?: {
    lat: number,
    lng: number
  },
  entrance?: {
    id?: string,
    world?: {
      lat: number,
      lng: number
    },
    map?: {
      lat: number,
      lng: number
    }
  };
  exit?: {
    id?: string,
    world?: {
      lat: number,
      lng: number
    },
    map?: {
      lat: number,
      lng: number
    }
  };
  maxAge?: string;
  maxSize?: string;
  minAge?: number;
  minSize?: number;
  minSizeEscort?: number;
  tags?: string[];
  image_url?: string;
  website_url?: string;
  fastpass?: boolean;
  singlerider?: boolean;
  featured?: boolean;
  photoPoint?: boolean;

  images?: string[];

  waitingTimes?: WaitingTimes;

  showTimes?: ShowTimes;

  openingTimes?: PoiOpeningTime[];

  original: any;
}

Api URLs

Since the data of themeparks is copyrighted, API url's aren't included in this documentation. These can be retrieved by doing some research on your own and filling out the .env file.

About

This repo exposes an API that simplifies theme park wait times endpoints and returns one single easy to understand format for all data types, from park information to waiting and show times.

Topics

Resources

Stars

Watchers

Forks