Back to blog
Technical

Understanding Twitter API Rate Limits

January 10, 2025
8 min read

Twitter's API has strict rate limits. Understanding them is crucial to building automation that doesn't get banned. Here's what you need to know.

What Are Rate Limits?

Rate limits control how many API requests you can make in a given time period. Twitter uses them to:

  • Prevent abuse and spam
  • Ensure fair usage across all users
  • Protect their infrastructure
  • Maintain platform quality

Twitter API Access Tiers

As of 2024, Twitter offers these API tiers:

Free Tier (Deprecated for most uses)

  • 1,500 tweets per month
  • Read-only for most endpoints
  • Very limited for automation

Basic Tier ($100/month)

  • 3,000 posts per month
  • 10,000 tweets read per month
  • 1 app environment
  • Write permissions included

Pro Tier ($5,000/month)

  • 300,000 posts per month
  • 1,000,000 tweets read per month
  • 3 app environments
  • Full API access

Common Rate Limits by Endpoint

Posting Tweets

  • Limit: 2,400 tweets per day (100 per 15 minutes)
  • Window: 24 hours
  • Advice: Stay well below this (aim for 50-100 per day max for automation)

Liking Tweets

  • Limit: 1,000 likes per day
  • Safe Rate: 50-100 per day for automation

Retweeting

  • Limit: 600 retweets per day
  • Safe Rate: 30-50 per day

Following Accounts

  • Limit: 400 follows per day
  • Note: Also subject to follow ratios (can't follow 10k if you have 100 followers)

Reading Timeline

  • Limit: 180 requests per 15 minutes (user timeline)
  • Limit: 900 requests per 15 minutes (home timeline)

How Rate Limits Work

Time Windows

Most limits are based on rolling time windows. If you hit the limit, you must wait until the oldest request falls outside the window.

HTTP Headers

Twitter returns rate limit info in response headers:

x-rate-limit-limit: 180
x-rate-limit-remaining: 175
x-rate-limit-reset: 1642438200
  • x-rate-limit-limit: Total requests allowed in window
  • x-rate-limit-remaining: Requests left
  • x-rate-limit-reset: When limit resets (Unix timestamp)

HTTP 429 Error

When you exceed a rate limit, Twitter returns a 429 Too Many Requests error.

What to do: Wait until the reset time before retrying. Don't spam retries.

Best Practices to Avoid Rate Limits

1. Implement Exponential Backoff

If you get a 429 error, wait before retrying. Increase wait time exponentially:

  • First retry: Wait 1 minute
  • Second retry: Wait 2 minutes
  • Third retry: Wait 4 minutes
  • And so on...

2. Monitor Your Usage

Track how many requests you're making. Log rate limit headers and set alerts when you're close to limits.

3. Cache Responses

Don't fetch the same data repeatedly. Cache responses and reuse them within a reasonable timeframe.

4. Batch Operations

Some endpoints support batch operations. Use them instead of making individual requests.

5. Prioritize Important Actions

If you have limited quota, prioritize:

  • Original content over engagement
  • Quality interactions over quantity
  • User-initiated actions over automated ones

Practical Example: Safe Automation Rate

Scenario: Managing 10 Accounts

Let's say you're automating engagement across 10 accounts. Here's a safe approach:

Per Account Per Day:

  • 10 likes (Total: 100/day across 10 accounts)
  • 5 retweets (Total: 50/day)
  • 3 replies (Total: 30/day)

Spread Over Time:

  • Distribute actions over 12-16 hours
  • Random delays between actions (5-30 minutes)
  • Never all at once

Result:

This gives you ~180 actions per day while staying well below limits and looking organic.

What Happens If You Violate Rate Limits?

First Offense

  • Temporary API lockout (15 minutes to a few hours)
  • 429 errors until reset

Repeated Violations

  • Longer lockouts (24-72 hours)
  • API access revoked
  • Account suspension (in extreme cases)

Coordinated Abuse

  • Permanent account ban
  • Developer account termination
  • Legal action (for serious cases)

How to Handle Rate Limit Errors

Detect the Error

if (response.status === 429) {
  const resetTime = response.headers['x-rate-limit-reset'];
  const waitTime = resetTime - Math.floor(Date.now() / 1000);
  console.log(`Rate limited. Wait ${waitTime} seconds`);
}

Queue Actions

Instead of failing, queue actions for later execution after the reset time.

Notify Users

If running a service, inform users about rate limit delays. Be transparent.

Tools to Monitor Rate Limits

  • Twitter's Developer Portal: Shows your usage in real-time
  • Custom Logging: Track all API calls and responses
  • Third-Party Monitors: Some tools visualize API usage

Conclusion

Twitter's rate limits exist for good reason. Respect them by:

  • Staying well below maximum limits
  • Implementing proper error handling
  • Using exponential backoff for retries
  • Monitoring your usage continuously
  • Prioritizing quality over quantity

Remember: It's better to do less automation safely than to push limits and risk suspension.

Try X Automation

All the best practices from this guide are built into our platform. Safe automation, rate limiting, and AI content generation included.