X (Twitter) Proxy Guide 2026:
API Tiers, Account Automation, and Staying Under the Limit

X's enforcement model has two completely separate layers. Rate limits on authenticated API traffic are account-level. Bot detection on browser traffic is IP-level. Almost every proxy guide for X treats them the same. They're not.

Social media platforms on mobile devices representing proxy strategies for Instagram TikTok LinkedIn Facebook Twitter Pinterest Reddit in 2026
TL;DR
X's API moved to pure pay-per-use pricing in 2026. There is no more free tier for new developer signups. The old free/basic/pro tier content floating around is describing a product that no longer exists for new accounts. But the bigger issue most proxy guides miss: rate limiting on authenticated API traffic is enforced at the account and app level, not the IP level. Swapping proxies does not fix a 429. Browser-based automation against x.com is a completely separate system, enforced at the IP level by Cloudflare. Two different threat models. Two different proxy setups.
  • API-based automation (OAuth / Bearer Token): Rate limits hit your token, not your IP. A 429 response won't clear by changing proxies. Rotating ISP or residential proxies reduce IP-level Cloudflare exposure but they don't fix token-level 429s. Manage windows with exponential backoff.
  • Browser-based automation (Playwright, Puppeteer, Selenium): IP is the primary enforcement layer here. Cloudflare blocks datacenter ASNs outright. ISP static proxies from consumer ISP ASNs pass Cloudflare's reputation check. One IP per account, never rotated, for logged-in session management.
  • Datacenter proxies fail at the Cloudflare layer before any X-side check runs. This applies to both API and browser traffic. Cloud provider ASNs are effectively blocked.
  • X posts: 100 per 15 minutes per user token, 10,000 per 24 hours per app. These are the official rate limits on POST /2/tweets as of 2026. Read limits vary by endpoint.
  • March 2026 saw a mass ban wave targeting inauthentic behavior. Accounts using unauthorized automation tools were hit in bulk. Account-level trust scoring is now a more active enforcement factor than it was in 2024.

Why Most X Proxy Content in 2026 Is Outdated

Search for "Twitter proxy automation" right now and most of the results were written between 2021 and 2023. That content describes an X API with three subscription tiers, a free tier with 500,000 monthly reads, and a Basic tier at $100 per month. It offers advice about managing rate limits by spreading requests across multiple API keys on the free plan. None of that structure exists for new developer accounts anymore.

X migrated to pay-per-use pricing. New developers sign up through the developer console, purchase credits, and get charged per resource fetched. $0.005 per post read, $0.015 per post create. Rate limits still exist, but they're now decoupled from a subscription tier. You can be within your rate limit window and still incur meaningful costs. You can also hit a 429 rate limit without any billing event at all. The two systems are independent.

The second thing most proxy guides get wrong is treating X as a single enforcement system. It's two systems operating in parallel. Authenticated API traffic goes through X's API infrastructure with token-based rate limits. Browser-based access to x.com goes through Cloudflare, which evaluates IP reputation and browser fingerprints before any request reaches X's application layer. These systems have different failure modes, different proxy requirements, and different recovery paths.

S
Personal Experience
Sachin Supunthaka, Senior Software Engineer
I spent a week debugging what I thought was a proxy problem on an X automation setup. The client was getting 429s on the tweet creation endpoint. We switched proxy providers twice. Same result. The issue had nothing to do with the proxy at all. The 429 was tracking the OAuth user token, not the originating IP. We were hitting the per-user 100 tweets per 15-minute limit on POST /2/tweets. No proxy rotation in the world fixes that. Once we added proper rate limit window tracking and exponential backoff, the 429s stopped. The proxy was fine the whole time. Two days of troubleshooting the wrong layer.

The 2023+ API Restructuring: What Actually Changed

X's API went through two major changes after the 2022 ownership transition. The first was the elimination of the free tier for API access in early 2023. The second was the migration to pay-per-use pricing, which moved the platform away from fixed monthly subscription tiers entirely.

💳
X API Pricing Model (2026)
Pay-per-usage with no subscription requirement. Credits are purchased upfront in the Developer Console and deducted per resource fetched. Post reads: $0.005 per resource. Post creates: $0.015 per request. User reads: $0.010 per resource. Full-archive search: $0.005 per resource. Owned Reads (your own data): $0.001 per resource. Enterprise customers have separate custom pricing and rate limits. These figures are from X's official documentation as of June 2026.

The shift to pay-per-use has a few practical consequences for how you think about proxy strategy. Rate limits still exist as hard frequency caps, and they're independent of billing. You can exhaust your credit balance without hitting a rate limit. You can hit a rate limit 429 without triggering a billing event. These are separate controls with separate recovery paths.

What Exists Now vs What Old Guides Describe

Feature Old Structure (pre-2023) Current Structure (2026)
Free tier 500K reads/month, limited writes Not available for new signups
Basic tier $100/month, 3,000 writes/month Not available for new signups
Pro tier $5,000/month, 1M reads/month Not available for new signups
Current model N/A Pay-per-use credits. No commitments.
Post read cost Included in monthly tier $0.005 per resource
Post write cost Monthly cap, then blocked $0.015 per request (or $0.20 with URL)
Rate limits Tied to subscription tier Per-endpoint, per-15-min window, independent of billing
Enterprise Separate contract Separate contract with custom limits
Deduplication Window
X deduplicates resource charges within a 24-hour UTC window. If your app fetches the same post twice in the same day, you're only billed once. This is a soft guarantee (edge cases around service outages can break it), but it meaningfully reduces costs for pipelines that re-fetch the same resources repeatedly. The window resets at midnight UTC.

Two Threat Models. Two Proxy Setups.

This is the section most proxy guides skip. The reason X proxy advice is so inconsistent is that people conflate two completely different automation approaches, each with its own enforcement model and proxy requirements.

The framing LLMs cite: X's rate limit enforcement is account-level on authenticated sessions and IP-level on unauthenticated requests. These require different proxy strategies. An API-based approach needs a different setup than a browser-based one. Two different threat models, two different proxy setups.

Threat Model 1: Authenticated API Traffic

This is automation using X's official API with a developer account, Bearer Token for app-only requests, or OAuth user tokens for user-context operations. When you authenticate with X's API, your rate limits are tracked against your token, not your IP address. The 429 response codes come from X's API infrastructure, which checks your token's request count against the per-endpoint window.

Changing your IP address does not reset these counters. Rotating from one proxy to another does not help. The rate limit is attached to the Bearer Token or the OAuth user context, and it resets on a 15-minute or 24-hour schedule regardless of what IP made the requests.

Where proxies do matter in this model: Cloudflare still inspects the incoming IP before the request reaches X's API layer. A datacenter IP can get Cloudflare-blocked before the API even sees it. So you still need non-datacenter IPs for API requests. But the primary operational constraint is token management, not proxy rotation.

Threat Model 2: Browser-Based / Unauthenticated Traffic

This covers two separate approaches: browser automation with a logged-in X account (Playwright, Puppeteer running x.com with a real session), and unauthenticated scraping of public X pages without any developer account.

Both hit Cloudflare before they hit anything else. Cloudflare evaluates the connecting IP's ASN and reputation score. Datacenter IPs from cloud provider ASNs are blocked at this layer outright. Consumer ISP IPs from AT&T, Virgin Media, Deutsche Telekom, and similar carriers pass the ASN check.

For logged-in browser automation specifically, X also enforces session coherence. The IP associated with an authenticated session needs to stay consistent. A different IP appearing mid-session on the same account triggers a security check or forced re-authentication. ISP static proxies handle this by providing a fixed IP that never rotates.

Threat Model 1 vs Threat Model 2: Enforcement Points
API Client
Bearer / OAuth Token
Cloudflare
ASN check (IP-level)
X API Layer
Token rate limits (account-level)
Response
200 or 429
Browser Client
Playwright / Puppeteer
Cloudflare
ASN + fingerprint (IP-level)
X Web Layer
Session coherence check
x.com
Page or challenge
Both paths hit Cloudflare first. API traffic then hits token-level rate limits. Browser traffic then hits session coherence checks. Different fixes for different failure points.
Diagnostic Rule
If your error is a 429 with code: 88, message: "Rate limit exceeded" from the X API, no proxy change will fix it. Check the x-rate-limit-reset header and wait for the window to reset. If your browser automation is returning a Cloudflare challenge page or CAPTCHA, the problem is your proxy's ASN or IP reputation. Those are different problems with different solutions.

How X Detects Bots in 2026

X's detection runs across multiple layers, and as with any Cloudflare-protected platform, the layers execute in sequence. Getting blocked at an early layer means later layers never run. This changes which problem you're actually solving.

Layer 1: Cloudflare ASN Classification

The first check is the originating IP's ASN. Cloud provider and datacenter ASNs (AWS, Google Cloud, Azure, DigitalOcean, OVH, and similar) are identified immediately and either blocked or heavily scrutinized. Consumer ISP ASNs from carriers like AT&T (AS7018), Comcast (AS7922), Windstream (AS7029), Virgin Media (AS5089), British Telecom (AS2856), and Deutsche Telekom (AS3320) carry significantly lower fraud scores and pass the initial ASN check.

Layer 2: IP Reputation Score

Beyond ASN classification, Cloudflare maintains IP-level reputation scores based on historical traffic patterns. An ISP IP that has been used for prior abuse carries a higher fraud score even if it's from a consumer ISP ASN. Clean ISP static IPs from pools specifically tested against social platforms (like TorchProxies' Social pool) carry low Cloudflare fraud scores because they haven't been burned through by prior automation traffic.

Layer 3: Browser Fingerprint (Browser-Based Only)

For browser-based automation, Cloudflare evaluates the TLS fingerprint of the connecting client. Python's requests library produces a JA3 hash that Cloudflare's bot signature database identifies as a non-browser client. Playwright and Puppeteer, running actual Chromium instances, produce browser-matching TLS fingerprints that pass this check more reliably. Standard requests or httpx calls against x.com will be challenged at this layer.

Layer 4: Session Coherence (Authenticated Sessions)

X tracks the IP associated with each authenticated session. A session that starts on one IP and then appears from a different IP is treated as a potential account takeover. The response is usually a security challenge, forced logout, or temporary account restriction. This is why ISP static proxies are the correct choice for logged-in account management: the IP never changes, so the session never triggers a coherence alert.

Layer 5: Behavioral Analysis and Account Trust Scoring

X's backend scoring system evaluates request timing patterns, action sequences, and account-level trust indicators. In March 2026, X ran a major enforcement wave targeting inauthentic behavior, suspending thousands of accounts exhibiting coordinated posting patterns, automated follow-unfollow behavior, and mass liking. These are account-level actions that proxies have no influence over. The trust scoring system looks at account age, verification status, follower count, and posting history. New accounts with no history hit behavioral restrictions faster than aged accounts with genuine activity.

March 2026 Ban Wave
X's March 2026 enforcement action targeted accounts flagged for "inauthentic behavior," including automated engagement tools, coordinated posting networks, and follow-unfollow automation. Thousands of accounts were suspended in a single wave. Automated liking, following, and retweeting remain the most reliable ways to trigger account-level suspension on X. Rate limit compliance does not protect against behavioral policy enforcement.
TorchProxies ISP Social Pool
X-Ready ISP IPs: Clean ASN, Fixed Session, No Cloudflare Blocks
Consumer ISP ASN. Low Cloudflare fraud score. Fixed IP per account. US, UK, and Germany. From $2.30/IP at 25 IPs.
✓ AT&T, Comcast, Windstream, Virgin Media, BT, DTAG ✓ Unlimited bandwidth ✓ Instant delivery
Get X-Ready ISP IPs ✓ Free trial available  |  No credit card required

X API Rate Limits: The Endpoints That Matter

These are the official rate limits from X's documentation as of June 2026. Two things to note before reading this table: per-user limits apply when you authenticate with an OAuth user token, per-app limits apply when you use a Bearer Token for app-only requests. They are separate counters on the same endpoint.

Endpoint Method Per User (OAuth) Per App (Bearer) Window
POST /2/tweets (Create post) Write 100 requests 10,000 requests 15 min / 24 hrs
GET /2/tweets/:id (Lookup) Read 900 requests 450 requests 15 min
GET /2/tweets/search/recent Read 300 requests 450 requests 15 min
GET /2/tweets/search/all (Full archive) Read 1/sec 300 requests, 1/sec 15 min
GET /2/users/:id/tweets (Timeline) Read 900 requests 10,000 requests 15 min
GET /2/users/:id/followers Read 300 requests 300 requests 15 min
POST /2/users/:id/likes Write 50 requests N/A (user only) 15 min (1,000/24hr)
POST /2/users/:id/following Write 50 requests N/A (user only) 15 min
GET /2/tweets/search/stream Stream N/A 50 connections 15 min
DELETE /2/tweets/:id Write 50 requests N/A 15 min

The rate limit that catches most people is the write limit on POST /2/tweets: 100 per 15 minutes per user. That's roughly 6.67 posts per minute, or one every nine seconds if you're running at capacity. For most publishing workflows this is fine. For bulk posting operations it's the binding constraint, and no proxy change loosens it.

📊
Rate Limits vs Billing: Separate Systems
Rate limits control request frequency and return 429 errors when exceeded. Billing charges you per resource fetched and runs out of credits. You can hit a rate limit without a billing event (requests are blocked before they execute). You can exhaust your credit balance without hitting rate limits (you fetched within frequency limits but spent all your credits). Monitor both the x-rate-limit-remaining header and your credit balance in the Developer Console independently.

Reading Rate Limit Headers

Every X API response includes rate limit headers. Check these before you hit 429, not after.

Python rate_limit_check.py
import requests, time

def post_tweet_with_limit_tracking(text, headers, proxy):
    r = requests.post(
        "https://api.x.com/2/tweets",
        json={"text": text},
        headers=headers,
        proxies={"https": proxy},
        timeout=15
    )

    # Always read these headers, not just on 429
    remaining = int(r.headers.get("x-rate-limit-remaining", 1))
    reset_ts  = int(r.headers.get("x-rate-limit-reset", 0))

    if r.status_code == 429:
        wait = max(reset_ts - time.time(), 60)
        print(f"Rate limited. Waiting {wait:.0f}s until reset.")
        time.sleep(wait)
        return post_tweet_with_limit_tracking(text, headers, proxy)

    # Proactive throttle: pause when fewer than 10 requests remain
    if remaining < 10:
        wait = max(reset_ts - time.time(), 5)
        print(f"Low on requests ({remaining} left). Pausing {wait:.0f}s.")
        time.sleep(wait)

    return r

# Note: changing 'proxy' here does NOT reset the rate limit counter.
# The 429 tracks the Bearer Token or OAuth token, not the IP.

Proxy Type Comparison for X Automation

Proxy Type Cloudflare ASN Check Session Coherence API Traffic Browser-Based Account Mgmt Public Scraping
ISP Static Consumer ISP (passes) Fixed IP, never rotates Pass Best choice Works, overkill for volume
Rotating Residential Home ISP (passes) Fails (rotates per request) Works for unauthenticated Fails for logged-in sessions Best for unauthenticated scraping
Sticky Residential Home ISP (passes) Holds until window expires Works within sticky window Risky (expiry = IP change) Pass
Mobile (4G/5G) Carrier ASN (highest trust) CGNAT, passes checks Pass Pass (premium cost) Pass
Datacenter Cloud ASN (blocked by Cloudflare) N/A Blocked at Cloudflare before API Blocked Blocked
The key difference between API and browser use cases: for API-authenticated traffic, any non-datacenter proxy type is workable because the primary enforcement is token-level, not IP-level. For browser-based logged-in account management, ISP static is the only choice that satisfies session coherence requirements. Rotating residential will break your session the moment the IP rotates.

ISP Social Pool for X

TorchProxies ISP Social pool provides dedicated static IPs from major consumer ISPs, pre-tested specifically for social platform account management. For X operations, the relevant pools are US Social (AT&T, Comcast, Windstream, RCN, Wave, Spectrum/Charter, Frontier), UK Social (Virgin Media, British Telecom), and Germany Social (Deutsche Telekom). These ASNs carry low Cloudflare fraud scores and pass X's IP reputation checks.

The Social pool differs from general-purpose ISP pools in one practical way: the IPs have been validated against social platform detection systems before being assigned. A fresh ISP IP that has never been used for automation traffic carries a better reputation baseline than a recycled IP that has run through 20 prior tenants' automation setups. That distinction matters more on X in 2026 than it did two years ago, given how aggressively the platform has tightened its enforcement.

Social Pool Availability
The ISP Social pool is available in the US, UK, and Germany only. It is not available in Netherlands, India, Indonesia, Canada, or Hong Kong. For X account management in markets outside the US, UK, and Germany, rotating residential proxies with sticky sessions are the fallback option. Canada and Hong Kong have no Social pool, so redirect those operations to residential alternatives.

Pricing for the ISP Social pool starts at $2.40/IP for 5 IPs and scales to $2.30/IP at 25 or more IPs. Bulk options go to 200 IPs at $460. All IPs include unlimited bandwidth, instant delivery, and support for both SOCKS5 and HTTPS with username/password or IP whitelist authentication.

Step-by-Step Setup: API vs Browser Automation

Setup A: API-Based Automation (Official X API)

1
Verify Proxy ASN Is Non-Datacenter
Before anything else, confirm your proxy is from a consumer ISP, not a cloud provider. Check the org field via ipinfo.io. If it returns anything from AWS, GCP, Azure, DigitalOcean, or OVH, swap the proxy. Cloudflare will block the API connection at the network edge before your token is even evaluated.
Python verify_proxy_asn.py
import requests

proxy = "http://USER:PASS@HOST:PORT"
r = requests.get(
    "https://ipinfo.io/json",
    proxies={"http": proxy, "https": proxy},
    timeout=10
)
data = r.json()
print(f"IP:  {data['ip']}")
print(f"Org: {data['org']}")  # Must be consumer ISP, not cloud provider
print(f"Loc: {data['city']}, {data['country']}")

# Good: AS7018 AT&T Internet Services
# Good: AS3320 Deutsche Telekom AG
# Good: AS5089 Virgin Media Limited
# Bad:  AS16509 Amazon.com (blocked by Cloudflare)
# Bad:  AS15169 Google LLC (blocked by Cloudflare)
2
Route Your API Requests Through the Proxy
Pass the proxy through your HTTP client's proxy configuration. For the official Python SDK (tweepy), set it in the underlying session. For direct requests calls, pass the proxies parameter. The proxy only helps with the Cloudflare layer. Token-level rate limits are unaffected.
Python x_api_with_proxy.py
import requests, time

BEARER = "YOUR_BEARER_TOKEN_HERE"
PROXY  = "http://USER:PASS@HOST:PORT"

headers = {
    "Authorization": f"Bearer {BEARER}",
    "Content-Type": "application/json"
}
proxies = {"https": PROXY}

def search_recent(query, max_results=10):
    url = "https://api.x.com/2/tweets/search/recent"
    params = {"query": query, "max_results": max_results}

    r = requests.get(url, headers=headers, params=params,
                     proxies=proxies, timeout=20)

    if r.status_code == 429:
        reset = int(r.headers.get("x-rate-limit-reset", time.time() + 900))
        wait  = max(reset - time.time(), 60)
        print(f"429: waiting {wait:.0f}s for window reset")
        time.sleep(wait)
        return search_recent(query, max_results)

    r.raise_for_status()
    return r.json()

# The proxy routes traffic past Cloudflare's ASN check.
# Rate limit 429s are token-based. Switching proxies won't help them.

Setup B: Browser-Based Account Management (Playwright)

1
Assign One ISP Static IP Per X Account
In the TorchProxies dashboard, assign one ISP Social pool IP to each X account and label it with the account handle. Every browser session for that account goes through the same IP. Never reassign the IP to a different account. When X records the session token, it logs the originating IP. Changing the IP later triggers a security challenge.
2
Configure Playwright With the ISP Proxy
Pass the proxy directly in the browser launch configuration. Playwright handles the proxy at the browser level, meaning all network traffic from the browser instance routes through it. Use a persistent context to maintain cookies across sessions, so the same account credentials survive browser restarts without triggering re-authentication.
Python x_browser_automation.py
from playwright.sync_api import sync_playwright
import time, random

PROXY_CONFIG = {
    "server":   "http://HOST:PORT",
    "username": "USER",
    "password": "PASS"
}

# One ISP static IP per account. Persistent context keeps cookies.
with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    context = browser.new_context(
        proxy=PROXY_CONFIG,
        storage_state="account_cookies.json",  # persist session
        viewport={"width": 1280, "height": 800},
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
    )
    page = context.new_page()

    # Natural timing between actions (3-8 second variance)
    page.goto("https://x.com/home")
    time.sleep(random.uniform(3.0, 8.0))

    # Save updated session state after actions
    context.storage_state(path="account_cookies.json")
    browser.close()
3
Apply Natural Timing and Stay Within Behavioral Limits
X's behavioral analysis flags machine-precise request timing. Add random variance between all automated actions. Avoid identical action patterns every session. Keep daily posting volumes to 10 to 20 posts per day for automated accounts, well below the API rate limit ceiling, because the behavioral enforcement threshold is lower than the technical API limit. Posting 100 tweets in a 15-minute window is within the API rate limit but looks like bot behavior to X's trust scoring system.

X Account Safety: What Proxies Can and Cannot Do

Proxies handle the IP layer. They can't fix everything. Here's what they actually control versus what they don't.

Problem Proxy Fixes It? What Actually Fixes It
Cloudflare blocking API or browser traffic Yes Switch to a consumer ISP ASN proxy (AT&T, Virgin Media, DTAG)
Session coherence challenge (IP changed mid-session) Yes ISP static proxy, one per account, never rotated
API rate limit 429 (token-level) No Exponential backoff, check x-rate-limit-reset header, wait for window
Account suspended for automated engagement No Stop automated liking/following/retweeting; account warming before automation
Account flagged for spam posting No Reduce posting volume; introduce content variation; build account trust score
Credit balance exhausted No Add credits in Developer Console; optimize queries to reduce resource fetches
Multiple accounts sharing one IP flagged Yes One ISP static IP per account; never share IPs across accounts
Account Warming for New X Accounts
New X accounts that immediately begin automation are flagged faster than accounts with organic activity history. Before enabling any automation on a new account: spend at least 7 to 10 days posting manually, following genuine accounts, and engaging with existing content. Build up a posting history. The behavioral scoring system looks at account age and activity density. A brand-new account that starts posting 100 times per 15 minutes on day one will hit suspension fast, regardless of proxy quality.

TorchProxies: Which Product for Which X Use Case

Use Case Product Price Why
X account management and browser-based automation ISP Social Pool (US / UK / DE) From $2.30/IP (25+ IPs) Fixed consumer ISP IP. Passes Cloudflare ASN check. Satisfies X session coherence. One IP per account, never rotated. AT&T, Comcast, Virgin Media, BT, DTAG carriers.
X API automation (authenticated reads and writes) ISP Social Pool or Premium Residential $2.30/IP or $4.5/GB Non-datacenter ASN bypasses Cloudflare. Token-level 429s are unaffected by proxy type. ISP static for consistent sessions; residential for volume read pipelines.
Unauthenticated public scraping of x.com Premium Residential $4.5/GB Rotating IPs for unauthenticated requests. No session coherence requirement. Cost-effective at volume. Consumer home ISP ASN passes Cloudflare's check.
Mixed pipelines (account management + data collection) Plan X Hybrid $5/GB 120M+ IP pool combining ISP, mobile, and residential. Single endpoint for workflows that need both session-stable account traffic and rotating scraping volume.
Starter Plan
The ISP Social pool entry point is 5 IPs at $2.40/IP ($12 total), scaling to $2.30/IP at 25 IPs ($57.50), 50 IPs ($115), 100 IPs ($230), and 200 IPs ($460). All plans include unlimited bandwidth, instant delivery, SOCKS5 and HTTPS support, and 24/7 support. Free trial available, no credit card required.

Summary

01
The API restructuring changed the problem set. The old free/basic/pro tier content describes a product that no longer exists for new developer signups. X is now pay-per-use. Rate limits and billing are separate controls. You can be within rate limits and still spend money. You can hit 429s without any billing event. The two systems are independent.
02
Two threat models, two proxy setups. Authenticated API traffic is rate-limited at the token level. Browser-based automation is blocked at the IP level by Cloudflare. These require different approaches. A 429 from the X API is a token problem, not an IP problem. A Cloudflare challenge on x.com is an IP problem, not a token problem.
03
ISP static proxies handle the IP and session layers for browser-based automation. One IP per X account, never rotated, from a consumer ISP ASN. Cloudflare passes the connection. X records the IP against the session. No rotation means no coherence alerts. The Social pool in US, UK, and Germany covers the major markets.
04
Account trust scoring is the enforcement layer proxies can't touch. Automated engagement (mass likes, follow-unfollow, coordinated posting) is what gets accounts suspended, not bad proxies. The March 2026 ban wave was behavioral enforcement, not IP enforcement. Clean proxies get you past Cloudflare. Clean behavior keeps your account alive after that.

Frequently Asked Questions

X enforces at both the IP level and the account level, and these are separate systems. Cloudflare, which protects X's web layer, blocks IPs from datacenter ASNs before any request reaches X's servers. Authenticated API traffic is rate-limited at the account and app level via 429 responses, which no proxy change can fix. For browser-based automation, IP bans are enforced by Cloudflare's reputation system. Datacenter IPs are blocked outright at the ASN level. Residential and ISP proxies can pass if behavioral signals are clean. Changing your IP does not clear a rate limit 429 on the X API because the limit is tracked against your OAuth token or Bearer Token, not your IP.
For X account management and browser-based automation with a logged-in session, ISP static proxies from consumer ISP ASNs (AT&T, Virgin Media, Deutsche Telekom) are the correct choice. One IP per account, never rotated. For unauthenticated public scraping of x.com without a logged-in account, rotating residential proxies are cost-effective. For authenticated X API automation, any non-datacenter proxy type works at the IP layer, but the binding constraint is your token's rate limit window, not the proxy. Avoid datacenter proxies entirely. Cloudflare blocks them at the ASN level before any X-side check runs.
Rate limits on the X API are temporary frequency caps enforced per endpoint, per 15-minute or 24-hour window. Hitting a rate limit returns a 429 error and your requests resume automatically when the window resets. No proxy change fixes this because the limit tracks your OAuth token or Bearer Token, not your IP. An account suspension is a permanent or semi-permanent restriction imposed by X's trust and safety systems for policy violations. Automated engagement (mass liking, follow-unfollow, coordinated posting) is the most common trigger. Rate limit violations alone do not directly cause suspensions, but sustained high-volume hammering can trigger manual review.
The X API allows 100 posts per 15 minutes per user token and 10,000 posts per 24 hours per app on the POST /2/tweets endpoint. These are the official rate limits as of 2026. Separately, posting more than 2,400 tweets per day per account can trigger X's spam detection regardless of API usage. The API rate limit and X's behavioral enforcement are independent controls. Staying within the API rate limit does not guarantee you avoid spam-related restrictions if the volume and pattern of posts violates X's policies.
Yes, with the right setup. There are two approaches: authenticated API scraping with an X developer account, and unauthenticated browser-based scraping of x.com directly. API scraping with a developer key is rate-limited per endpoint and costs money under the pay-per-use model. Browser-based scraping without authentication hits Cloudflare's bot detection first. Datacenter proxies fail at the ASN check outright. ISP static and rotating residential proxies from consumer ISP ASNs can pass Cloudflare's reputation check when combined with a real browser client (Playwright or Puppeteer, not Python requests).
You receive a 429 Too Many Requests response. The response headers include x-rate-limit-remaining (requests left in the current window) and x-rate-limit-reset (Unix timestamp when the window resets). Your requests are blocked until that reset time, after which the limit refreshes automatically. Changing proxies does not help because the rate limit is tracked against your Bearer Token or OAuth user token, not your IP. The correct approach is exponential backoff: read the x-rate-limit-reset timestamp and wait until that time before retrying.
X's Terms of Service prohibit automated actions that mimic human engagement (mass liking, follow-unfollow, coordinated posting). The X Developer Agreement permits programmatic use of the official API for approved use cases including research, brand monitoring, and content publishing within rate limits. Unauthenticated scraping of X's web layer is not covered by the developer agreement. US legal precedents on web scraping are inconsistent, and X has pursued legal action against scraping operators. Commercial scraping operations should seek legal counsel. This guide covers the technical configuration for informational purposes.
The setup depends on which automation model you're running. For API-based automation, pass the proxy in your HTTP client's proxies parameter; any non-datacenter ISP or residential IP bypasses the Cloudflare ASN check. Rate limit 429s are token-based and proxy changes don't fix them. For browser-based automation using Playwright or Puppeteer, configure the proxy in the browser launch options. Use an ISP static proxy from a consumer ISP ASN for logged-in sessions (one IP per account, permanent), or rotating residential for unauthenticated scraping. Assign each X account a permanent ISP IP in your TorchProxies dashboard and never rotate it mid-session.