Skip to content
📈📉 Shhhh...we're counting your subscribers!
JavaScript CSS
Branch: master
Clone or download

Latest commit

Latest commit 8dcc41b Mar 29, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add sponsoring Mar 28, 2020
docs Fix dead link in docs Mar 29, 2020
styles Implement dynamic shadow and 3d effect Mar 18, 2020
utils Add unsplash logo Mar 29, 2020
.eslintrc.js Prettify with prettier Mar 23, 2020
.gitignore Init repo (Windows) Mar 15, 2020
.prettierrc Prettify with prettier Mar 23, 2020 Init repo (Windows) Mar 15, 2020
LICENSE Create LICENSE Mar 15, 2020 Add unsplash logo Mar 29, 2020
index.js Add support for APIs that doesn't return a number Mar 29, 2020
package.json Fix pre-commit hooks Mar 25, 2020
wrangler.toml Add Twitter and sspai API Mar 15, 2020
yarn.lock Add pre-commit lint and fixes Mar 23, 2020


Serverless Function to Count How Many People are Subscribed to You in Your Favorite Services

Now on Cloudflare Workers Uptime Robot status Deploy Netlify

🚩 API endpoint · 🚦 Status monitor · 📖 Documentation

Table of contents

Why I did this?

I initially wanted to combine the subscriber numbers of Feedly and Inoreader — two of the most popular RSS providers, to calculate how many people are subscribed to my blog's RSS. Then it occured to me: I could actually make this into a "Hub", where you can provide a service name, a query key, and out comes the total subscribers of all your services...Hence, I proudly introduce: Substats!


  • 🧊 Serverless deployment, minimum overhead (powered by Cloudflare)
  • 🚀 Ultra-fast reachablility for all services (even in mainland China!)
  • 🎈 Simple integration, easy-to-use API with nice badges provided by

Further reading


📖 For a detailed documentation on the query format, please see: Docs | Substats Query format.

API endpoint

🚦 Only 'GET' requests are handled in order to integrate with badges.

Single query

You can make a single query to request your RSS subscribers on Feedly. (Inoreader support is coming!)

GET /?source=feedly&queryKey=

Which returns:

{ "status": 200, "data": { "totalSubs": 13, "subsInEachSource": { "feedly": 13 }, "failedSources": {} } }

You can then use the numbers in data.totalSubs in a dynamic badge:

Multiple sources with a single query string

GET /?source=feedly|inoreader|newsblur&queryKey=

Which returns:

  "status": 200,
  "data": {
    "totalSubs": 49,
    "subsInEachSource": {
      "feedly": 17,
      "inoreader": 29,
      "newsblur": 3
    "failedSources": {}

Enter the badge! (NewsBlur is too slow to load, below is a static badge for demo purposes.)

Multiple queries

GET /?source=telegram&queryKey=realSpencerWoo&source=sspai&queryKey=spencerwoo&source=twitter&queryKey=realSpencerWoo

Which returns:

  "status": 200,
  "data": {
    "totalSubs": 1552,
    "subsInEachSource": {
      "telegram": 786,
      "sspai": 638,
      "twitter": 128
    "failedSources": {}

And of course, our badges!

Supported services

📖 For a detailed documentation on the API request rules of each service, please see: Docs | Substats API Details.

afdian bilibili coolapk feedly github inoreader instagram medium neteaseMusic newsblur reddit sspai steam telegram twitter unsplash weibo zhihu



This is a serverless function deployed on Cloudflare Workers. Please check: Docs | How to contribute if you want to contribute.


This project exists thanks to all the people who contribute.


Thank you for considering donations and sponoring our project. We currently support sponsoring via Open Collective.

Backers Sponsors
Support this project by becoming a backer. Thank you to all our backers! 🙏 [Become a backer] Support this project by becoming a sponsor. Your logo will show up here with a link to your website. 🌏 [Become a sponsor]


微信支付 支付宝支付
微信支付 支付宝支付




All APIs used in this project are by no means in any relationship with the original content provider. APIs are subject to change. Your mileage may vary, so use this at your own risk.

📈📉 Substats ©Spencer Woo. Released under the MIT License.

Authored and maintained by Spencer Woo.

@Portfolio · @Blog · @GitHub

You can’t perform that action at this time.