diff --git a/services/bstats/bstats-players.service.js b/services/bstats/bstats-players.service.js
new file mode 100644
index 0000000000000000000000000000000000000000..393bfb50bee868659046b6733b8f668544463469
--- /dev/null
+++ b/services/bstats/bstats-players.service.js
@@ -0,0 +1,70 @@
+'use strict'
+
+const BaseJsonService = require('../base-json')
+
+const Joi = require('joi')
+const schema = Joi.array()
+  .items(Joi.array().items([Joi.number().required(), Joi.number().required()]))
+  .required()
+
+module.exports = class BStatsPlayers extends BaseJsonService {
+  static get route() {
+    return {
+      base: 'bstats/players',
+      pattern: ':pluginid',
+    }
+  }
+
+  static get defaultBadgeData() {
+    return {
+      label: 'players',
+      color: 'blue',
+    }
+  }
+
+  async handle({ pluginid }) {
+    const json = await this.fetch({ pluginid })
+    const { players } = this.transform({ json })
+    return this.constructor.render({ players })
+  }
+
+  transform({ json }) {
+    const players = json[0][1]
+    return { players }
+  }
+
+  async fetch({ pluginid }) {
+    const url = `https://bstats.org/api/v1/plugins/${pluginid}/charts/players/data`
+
+    return this._requestJson({
+      schema,
+      options: {
+        qs: {
+          maxElements: 1,
+        },
+      },
+      url,
+    })
+  }
+
+  static render({ players }) {
+    return {
+      message: players,
+    }
+  }
+
+  static get category() {
+    return 'other'
+  }
+  static get examples() {
+    return [
+      {
+        title: 'bStats Players',
+        namedParams: {
+          pluginid: '1',
+        },
+        staticPreview: this.render({ players: 74299 }),
+      },
+    ]
+  }
+}
diff --git a/services/bstats/bstats-players.tester.js b/services/bstats/bstats-players.tester.js
new file mode 100644
index 0000000000000000000000000000000000000000..e74890abf9aa120dfd7b3a7e7ebf65259197a6e3
--- /dev/null
+++ b/services/bstats/bstats-players.tester.js
@@ -0,0 +1,14 @@
+'use strict'
+
+const Joi = require('joi')
+
+const t = (module.exports = require('../create-service-tester')())
+
+t.create('Players')
+  .get('/1.json')
+  .expectJSONTypes(
+    Joi.object().keys({
+      name: 'players',
+      value: Joi.number(),
+    })
+  )
diff --git a/services/bstats/bstats-servers.service.js b/services/bstats/bstats-servers.service.js
new file mode 100644
index 0000000000000000000000000000000000000000..2cdb9b45153b0c804dabfea819ba87eeee31a033
--- /dev/null
+++ b/services/bstats/bstats-servers.service.js
@@ -0,0 +1,70 @@
+'use strict'
+
+const BaseJsonService = require('../base-json')
+
+const Joi = require('joi')
+const schema = Joi.array()
+  .items(Joi.array().items([Joi.number().required(), Joi.number().required()]))
+  .required()
+
+module.exports = class BStatsServers extends BaseJsonService {
+  static get route() {
+    return {
+      base: 'bstats/servers',
+      pattern: ':pluginid',
+    }
+  }
+
+  static get defaultBadgeData() {
+    return {
+      label: 'servers',
+      color: 'blue',
+    }
+  }
+
+  async handle({ pluginid }) {
+    const json = await this.fetch({ pluginid })
+    const { servers } = this.transform({ json })
+    return this.constructor.render({ servers })
+  }
+
+  transform({ json }) {
+    const servers = json[0][1]
+    return { servers }
+  }
+
+  async fetch({ pluginid }) {
+    const url = `https://bstats.org/api/v1/plugins/${pluginid}/charts/servers/data`
+
+    return this._requestJson({
+      schema,
+      options: {
+        qs: {
+          maxElements: 1,
+        },
+      },
+      url,
+    })
+  }
+
+  static render({ servers }) {
+    return {
+      message: servers,
+    }
+  }
+
+  static get category() {
+    return 'other'
+  }
+  static get examples() {
+    return [
+      {
+        title: 'bStats Servers',
+        namedParams: {
+          pluginid: '1',
+        },
+        staticPreview: this.render({ servers: 57479 }),
+      },
+    ]
+  }
+}
diff --git a/services/bstats/bstats-servers.tester.js b/services/bstats/bstats-servers.tester.js
new file mode 100644
index 0000000000000000000000000000000000000000..69daf9393efa3eff4b25bb0b85dec94d18e2d443
--- /dev/null
+++ b/services/bstats/bstats-servers.tester.js
@@ -0,0 +1,14 @@
+'use strict'
+
+const Joi = require('joi')
+
+const t = (module.exports = require('../create-service-tester')())
+
+t.create('Servers')
+  .get('/1.json')
+  .expectJSONTypes(
+    Joi.object().keys({
+      name: 'servers',
+      value: Joi.number(),
+    })
+  )