Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including msw-client with all npm packages installed. Try it out:

var mswClient = require("msw-client")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

msw-client v2.0.0

Magic Seaweed API forecast data client

Build Status Coverage Status Code Climate NPM Dependency Status devDependency Status



Node client library to allow easy communication with the Magic Seaweed API

You will Need to contact Magic Seaweed in order to get an API key. Please make sure you read their terms first.

See release notes for new release details.


Available on npm. NOTE: Version 2.0.0 is only supported in Node 5+. For versions lower than Node 5 use msw-client v1.4.1

firstly you need to install into your dependencies:

npm install msw-client --save

Constructor, API key and SpotId

Then simply create an instance of the client:

const MSW = require('msw-client');
const MswClient = new MSW({
    apikey: 'YOUR_API_KEY',
    spot_id: 2 // must be a number

Both apikey and spot_id are required.

spot_id indicates the spot / beach you want to get forecast data for

spot_id: 1449 // this is rest bay

To figure out your spot_id visit the surf report for that beach on the Magic Seaweed website and look at the url: - spot id is the last parameter

Once set in the constructor, the spot_id can be retrieved or updated at any point:

MswClient.getSpotId(); // 2
MswClient.setSpotId(3); // must be a number

To make a request simply call:

MswClient.request().then(data => {
}).catch(err => {

These will respond with an array of objects as documented MSW API


As of version 1.1.0 you can now set the unit to your country region so that measurements and temperature are returned as you would expect in your region.

e.g. temperature returns as F for US requests.

There are three valid unit types: 'uk', 'us' or 'eu'.

You can set units on the constructor:

const MSW = require('msw-client');
const MswClient = new MSW({
    apikey: 'YOUR_API_KEY',
    spot_id: 2 // must be a number
    units: 'us' // must be a string

or via the setUnits function

MswClient.getUnits(); // returns 'us';

If not set it will default to uk

MswClient.getUnits(); // returns 'uk';


You can also add fields to filter the data you want.

This can either be done via the constructor:

const MSW = require('msw-client');
const MswClient = new MSW({
    apikey: 'YOUR_API_KEY',
    spot_id: 2,
    fields: ['timestamp', 'wind'] // must be an array

or at any point in your code via functions:

MswClient.addField('timestamp'); // add single field by string name
MswClient.addFields(['timestamp', 'wind']); // add fields by array

You can also retrieve and remove fields:

MswClient.getFields(); // ['timestamp', 'wind'] returns fields array
MswClient.removeField('timestamp'); // remove single field by string name
MswClient.removeAllFields(); // I wonder what this does...

A list of fields are available based on the response data. More details here: MSW API

Feel free to submit issues and contribute.

Surfs Up!


RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free