APIThrottle
Intelligent rate limiting with behavioral scoring. Automatically detects and blocks bots while giving trusted users higher limits.
Interactive Demo
Simulate API traffic to see how the scoring engine adapts to block bots and suspicious behavior.
Client Reputation
Current Decision
Response Header:
X-Throttle-Status: allowIntegration
https://apithrottle.workerscando.workers.dev/api/throttleWrap your API calls with the throttle proxy to get instant protection.
curl "https://apithrottle.workerscando.workers.dev/api/throttle?url=https://your-api.com/users" \
-H "X-API-Key: your-key"How it works
Bot Fingerprinting
Analyzes IP, JA3 (TLS), and User-Agent to create a unique fingerprint for every client.
Behavioral Scoring
Assigns a trust score (0-100) based on request frequency patterns and regularity.
Adaptive Limits
Trusted users get higher limits (90 req/min), while bots get strict limits (18 req/min).
API Reference
/api/throttle?url=...Proxy your API request with intelligent rate limiting. All headers are forwarded to the target.
X-Throttle-Status: allow | soft | blockX-Throttle-Score: 0-100 (client trust score)X-Throttle-Classification: trusted | normal | suspicious | botX-Throttle-Remaining: requests remaining in window/api/checkCheck your current throttle status without making a proxied request. Useful for monitoring.
/api/statsView rate limit configuration and global analytics (if enabled).
Deploy Your Own
Want to run this on your own Cloudflare account? Here's how to deploy your own API Throttle worker in minutes:
Clone the Worker
cd apithrottle
Create KV Namespace
Copy the returned ID and paste it in wrangler.toml
Deploy to Cloudflare
Your worker will be live at https://apithrottle.YOUR-SUBDOMAIN.workers.dev
Use It!
Replace your direct API calls with the throttle proxy. Your APIs are now protected from spam, bots, and abuse—completely free on Cloudflare's edge network.
Default Rate Limits
Customize these values in the LIMITS config in src/index.ts
Wanna contribute or learn? Here's the code
Support me on Twitter for daily updates
Wanna learn why it's the best solution? Read the docs