Professional Rate Limiting for Express.js Applications

Protect your APIs with intelligent rate limiting. Monitor usage, prevent abuse, and scale with confidence.

mdi-clock Signup mdi-file-document View Documentation
mdi-circle mdi-circle mdi-circle app.js
const express = require('express');
const apimeter = require('apimeter');

const app = express();

// Apply rate limiting to all routes
app.use(apimeter({
  apiKey: 'your-api-key-here'
}));

//All your routes here

app.listen(3000);

Powerful Features for Modern APIs

Everything you need to secure and monitor your applications

{{ feature.title }}

{{ feature.description }}

Built for Developers

We understand the challenges of building scalable APIs. Apimeter is designed with developer experience at its core.

mdi-lightning-bolt 5-minute setup - Get started in minutes, not hours
mdi-code-tags Simple API - Clean, intuitive interface that just works
mdi-book-open-variant Comprehensive docs - Everything you need to succeed
mdi-heart Developer support - We're here to help you build great things

Choose Your Plan

Scale with confidence at every stage of your journey

Most Popular

{{ plan.name }}

{{ plan.price }} {{ plan.duration }}

{{ plan.requestLimit }}

{{ feature }} {{ plan.cta }}

Welcome Back

Sign in to your Apimeter account

{{ loginError }} Sign In

Don't have an account? Signup

Start Your Free Trial

Get started with 30 days free

{{ signupError }} Start Free Trial

Already have an account? Sign in

Dashboard

Monitor your API usage and performance

Client Usage Summary mdi-refresh Refresh mdi-account-alert User Limit Breaches
mdi-account-check

No user breaches detected

Configuration

Manage your rate limiting settings

{{ isEditingConfig ? 'Edit Configuration' : 'Add New Configuration' }} Cancel {{ configError }} {{ configSuccess }} {{ isEditingConfig ? 'Save Configuration' : 'Add Configuration' }} Current Configurations mdi-refresh Refresh

Subscription

Manage your billing and subscription

Current Plan: {{ user.plan }}

API Key: {{ user.apiKey }}

Trial ends: {{ user.trialEnds == 'Not Applicable' ? 'Not Applicable' :formatDate(user.trialEnds) }}

Upgrade Plan
Current Plan

{{ plan.name }}

{{ plan.price }} {{ plan.duration }}

{{ plan.requestLimit }}

{{ feature }} {{ plan.name === user.plan ? 'Current Plan' : plan.cta }}

Apimeter - Professional Rate Limiting for Express.js

Managed rate limiting as a service for your Express.js applications.

mdi-rocket-launch Quick Start

Installation

npm install apimeter

Basic Usage

const express = require('express');
const apimeter = require('apimeter');

const app = express();

// Apply rate limiting to all routes
app.use(apimeter({
  apiKey: 'your-api-key-here'
}));

app.get('/api/users', (req, res) => {
  res.json({ users: [] });
});

app.listen(3000);
mdi-key Getting Your API Key Sign up at https://apimeter.dev Verify your email and complete onboarding Copy your API key from the page titled 'Subscription' Start with 30-day free trial - no credit card required mdi-cog Configuration Options
app.use(apimeter({
  apiKey: 'your-api-key',           // Required: Your Apimeter API key
  clientIdHeader: 'x-client-id',    // Optional: You own header for client identification if you want to set up different limits for each of your consumers
}));
mdi-target Client-Specific Rate Limiting

Apimeter supports different rate limits for different clients:

// Client A gets different limits than Client B
app.use(apimeter({
  apiKey: 'your-api-key',
  clientIdHeader: 'x-client-id'
}));

// Your API consumers send requests with client identification:
// curl -H "x-client-id: mobile-app" /api/data
// curl -H "x-client-id: web-app" /api/data

Configure client limits on Apimeter.dev → Configuration

mdi-chart-line Rate Limit Headers

Apimeter automatically adds standard rate limiting headers to responses:

HTTP/1.1 200 OK
X-Rate-Limit-Limit: 1000
X-Rate-Limit-Remaining: 999
Content-Type: application/json
mdi-block-helper Rate Limit Exceeded Response

When rate limits are exceeded, clients receive:

HTTP/1.1 429 Too Many Requests
X-Rate-Limit-Limit: 1000
X-Rate-Limit-Remaining: 0
Content-Type: application/json
mdi-shield-check Error Handling

Apimeter uses a fail-open design - if the service is temporarily unavailable, your API continues working without rate limiting.

mdi-chart-bar Monitoring & Analytics

Access detailed analytics in your Apimeter Dashboard:

Real-time usage monitoring Rate limit breaches tracking Client-specific analytics Historical data and trends Usage alerts and notifications (Coming soon)
mdi-refresh Limit Management

Rate limits are enforced at two levels:

Plan limit - Overall requests per minute for your account Client limit - Per-client limits you configure The stricter limit always applies.
mdi-wrench Troubleshooting

Common Issues

Rate limiting not working? • Verify your API key is correct • Ensure middleware is applied before your routes Getting 401 errors? • Confirm your API key is valid • Check if your subscription is active Headers not appearing? • Middleware must be applied before route handlers • Check for conflicting middleware Need help? Email: support@apimeter.dev
mdi-code-tags Example Applications

Basic API Server

const express = require('express');
const apimeter = require('apimeter');

const app = express();

app.use(express.json());
app.use(apimeter({ apiKey: '' }));

app.get('/api/users', (req, res) => {
  res.json({ users: ['Alice', 'Bob'] });
});

app.post('/api/users', (req, res) => {
  res.json({ message: 'User created', id: 123 });
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

Multi-tenant Application

const express = require('express');
const apimeter = require('apimeter');

const app = express();

// Rate limit by tenant
app.use(apimeter({
  apiKey: process.env.APIMETER_API_KEY,
  clientIdHeader: 'x-tenant-id'
}));

app.get('/api/:tenantId/data', (req, res) => {
  // x-tenant-id header determines rate limits
  res.json({ data: 'tenant-specific-data' });
});

app.listen(3000);

Ready to get started?

Sign up for free and get your API key in under 2 minutes! 🚀

mdi-clock Signup

Privacy Policy

Effective Date: October 2025

This Privacy Policy describes how Apimeter ("we," "our," or "us") collects, uses, and protects information when you use our API‑based rate limiting service available at www.apimeter.io ("Service").

1. Information We Collect

We collect:

  • Account details such as name, email, and billing information.
  • Usage logs including IP addresses, request counts, headers, and timestamps to enforce rate limits and monitor performance.
  • Payment and subscription data securely handled by our payment partner, Cashfree Payments.
  • Diagnostic and analytics data to improve uptime and performance.

2. How We Use Information

  • To authenticate users, manage subscriptions, and enforce quotas.
  • To improve API performance and notify you of service updates.
  • To detect abuse or unauthorized use.
  • To comply with Indian legal or regulatory obligations.

3. Data Retention

We retain basic logs and billing data only as long as required for legitimate operational or legal reasons. Logs beyond 30 days are anonymized or deleted.

4. Data Sharing

We may share limited data with:

  • Payment processors (for billing).
  • Infrastructure providers (for cloud hosting and logging).

These third parties are bound by strict confidentiality and data‑protection terms.

5. Cookies

Our website and dashboard may use cookies or tokens to maintain sessions. You can disable cookies in your browser settings, but parts of the site may not work correctly.

6. Security

We use HTTPS, encryption, and restricted access controls to protect your data. Although we take all necessary precautions, no online system is completely secure.

7. User Rights

You may request access to or deletion of your personal information by contacting support@apimeter.io. EU users have rights under GDPR; Indian users are covered under the Digital Personal Data Protection Act 2023.

8. Policy Updates

We may update this Privacy Policy occasionally. Changes will be posted on this page with an updated effective date.

9. Contact

For questions, email support@apimeter.dev.

Terms and Conditions

Effective Date: October 2025

Welcome to Apimeter ("Service," "Platform," "we," "our," or "us"). By signing up or using our services at www.apimeter.io ("Website"), you agree to the following terms and conditions.

1. Use of Service

We provide rate‑limiting and API usage management tools accessible via our cloud‑based API. You may not use the Service for unlawful activities, to disrupt networks, or to bypass limitations imposed.

2. Account and Access

You are responsible for maintaining the confidentiality of your credentials. Any activity under your account is your responsibility until you notify us of unauthorized access.

3. Subscription and Payments

Paid plans are billed in advance on a recurring basis. Fees are non‑refundable except where required by law. You authorize us and our payment processors to charge your chosen method for any applicable fees.

4. Service Availability

While we strive for 99.9% uptime, the Service is provided "as is." Temporary downtime may occur for maintenance or unforeseen issues.

5. Limits and Fair Use

Each plan includes specific request limits and throughput caps. Consistently exceeding limits may trigger temporary throttling.

6. Intellectual Property

All software, code, and related materials remain our sole property. You receive a non‑exclusive license to use the Service solely for internal business purposes.

7. Data and Privacy

We process limited log data strictly for analytics and operational reliability. Refer to our Privacy Policy for details.

8. Termination

We may suspend or terminate accounts that violate these terms or cause service disruption. Customers may terminate their subscription anytime; however, no prorated refunds apply.

9. Disclaimer of Warranty

We make no warranties regarding uninterrupted or error‑free service. Your use of the platform is at your own risk.

10. Limitation of Liability

To the maximum extent permitted by law, we are not responsible for any indirect or consequential damages arising from use of our service.

11. Changes to Terms

We may update these Terms periodically. Continued use after changes constitutes acceptance of the revised Terms.

12. Governing Law

These Terms are governed by Indian law, with Hyderabad courts having exclusive jurisdiction.

Upgrade Subscription

Choose your new plan:

Cancel Upgrade
{{ snackbar.message }}