Rate Limiter API

A simple library to easily manage rate limits of APIs without any hassles.

Rate Limiter API image

All Contributors MIT License npm version

Table of Contents



<script src="https://cdn.rawgit.com/abhisekp/rate-limiter-api/master/dist/rate-limiter-api.js"></script>

<script type="text/javascript">
  var rateLimiter = RateLimiterAPI()


$ {sudo -H} npm install -S rate-limiter-api
import RateLimiterAPI from 'rate-limiter-api'

Public Interface

import RateLimiterAPI from 'rate-limiter-api'

const rateLimiter = RateLimiterAPI({
  threshold: 5, // leave `threshold` amount of api requests intact (minimum: 1)

Pass an optional threshold value which would limit the total rate limits till the threshold is reached in the current session pulse till rate reset.

const request = rateLimiter.limit(requestHandler) //=> Promise

function requestHandler(responseHandler) {
    .then((response) => {
        rateLimit: response.headers.rateLimit,
        rateRemaining: response.headers.rateRemaining,
        rateReset: response.headers.rateReset,

      responseHandler(null, response.body)
    .catch((err) => {

The limit method is passed a requestHandler which would manage the request and then call the node-style responseHandler callback (which gets passed by the RateLimiter library to the requestHandler function) after the request is successful or unsuccessful accordingly.

The request method returns a Promise.

responseHandler(Error, response)
where the first parameter is the Error object and the seconds parameter is the response.

responseHandler callback must be called to continue getting responses.

Update the rate limits i.e. {rateLimit, rateRemaining, rateReset} got from the header using updateRateLimits method.

  .then((response) => {
    console.dir(response, {colors:1})
  .catch((error) => {

When the request completes, the Promise resolves and can be thenable to get the response or error.


1 text file.
1 unique file.
0 files ignored.

https://github.com/AlDanial/cloc v 1.66 T=0.04 s (22.7 files/s, 2516.9 lines/s)

Language files blank comment code
JavaScript 1 12 37 62

Technologies Used

Help & Support


Abhisek Pattnaik

💻 🎨 📖 💡

This project follows the all-contributors specification.

All types of Contributions are Welcome 🙏


MIT © Abhisek Patnaik

Tweet @abhisek
Know about/abhisekp
Chat with @abhisekp

Table of Contents ⮭
back to top ⮭