# Crypto Twitter alerts: track accounts and cashtags in real time

> Watch founders, exchanges and project accounts on X and get their posts within seconds, filtered by cashtags such as $BTC or $SOL. Python setup, latency check and a cashtag search for the rest of X.

HTML page: https://www.twittrapi.com/blog/crypto-twitter-alerts
Published 2026-10-14.

In crypto, a post from a founder, an exchange or a project account can move a price before the news reaches anywhere else. If your bot or your desk reacts to those posts, the question is how many seconds pass between the post and your code seeing it.

This guide covers two sources: account monitoring for the accounts you already know, and cashtag search for everything else on X. The [crypto trading page](https://www.twittrapi.com/use-cases/crypto-trading) gives the overview; this post has the code.

## Step 1: Choose the accounts and the speed

Start with a short list of accounts whose posts you act on: project and team accounts, exchanges (listings, delistings, maintenance), founders, and a few analysts. Watch them by username or user ID. There is no follower minimum, so a small project account is checked as often as an exchange with millions of followers.

The speed class sets how often each account is checked:

| Class | Guarantee | Typical |
| --- | --- | --- |
| Standard | We check at least every 60 s | 15–60 s |
| Fast | We check at least every 5 s | 2–5 s |
| Real-time | We check at least every 1 s | 0.5–1 s |

For trading, the Real-time class is the one that matters. It costs $19 a month for 10 accounts and $59 for 50:

| Accounts | Standard (60 s) | Fast (5 s) | Real-time (1 s) |
| --- | --- | --- | --- |
| 10 | $5 | $9 | $19 |
| 50 | $15 | $29 | $59 |
| 250 | $49 | $99 | $199 |
| 1,000 | $149 | $299 | $599 |
| 5,000 | $499 | $999 | $1,999 |

Book the plan under **Monitors** in the dashboard and add the accounts:

```python
import os
import requests

API = "https://api.twittrapi.com"
HEADERS = {"X-API-KEY": os.environ["TWITTRAPI_API_KEY"]}

accounts = ["binance", "coinbase", "solana", "VitalikButerin"]
r = requests.post(f"{API}/monitors/accounts", headers=HEADERS, json={"usernames": accounts}, timeout=30)
for result in r.json()["data"]:
    print(result["input"], result.get("status") or result.get("error"))
```

## Step 2: Receive the posts and pick out cashtags

Set your webhook as shown in the [webhook guide](https://www.twittrapi.com/blog/twitter-webhook-new-tweets#step-3-set-your-webhook) and verify every request's signature. Then extract the cashtags from the text. The tweet object has a `hashtags` list, but no separate field for cashtags, so match them in the text:

```python
import re
from datetime import datetime

CASHTAG = re.compile(r"(?<![\w$])\$([A-Za-z][A-Za-z0-9]{1,9})\b")
WATCH = {"BTC", "ETH", "SOL"}

def handle(event: dict) -> None:
    tweet = event["tweet"]
    if tweet.get("retweetOf"):
        return  # skip reposts, keep originals, replies and quotes
    tags = {m.upper() for m in CASHTAG.findall(tweet["text"])}
    hits = tags & WATCH
    created = datetime.fromisoformat(event["tweetCreatedAt"].replace("Z", "+00:00"))
    detected = datetime.fromisoformat(event["detectedAt"].replace("Z", "+00:00"))
    lag = (detected - created).total_seconds()
    print(f"{tweet['author']['username']} {sorted(hits) or '-'} {lag:.1f}s {tweet['url']}")
```

Call `handle(event)` from your webhook handler after the signature check, and answer the webhook before you do anything slow such as placing an order. Posts with no cashtag still arrive, because an exchange announcing a listing does not always use one. Decide per account whether you need the tag.

## Step 3: Measure your latency

`tweetCreatedAt` comes from X, `detectedAt` is when we saw the post. The difference is the detection delay: X's own delay before a post appears, plus our check interval. The `lag` printed above shows it for every event. Log it for a few days before you rely on a number, and add the time your webhook needs to reach your server.

X's timestamps have one-second precision, so a lag below one second can show as 0 or 1.

## Step 4: Cover the rest of X with cashtag search

Monitoring follows accounts. To catch a cashtag from accounts you do not know yet, poll search with `category=Latest` and `since_id`, so each call returns only posts you have not seen:

```python
import time

def poll(query: str, newest: str | None) -> str | None:
    q = f"{query} since_id:{newest}" if newest else query
    params = {"query": q, "category": "Latest", "format": "simple"}
    page = requests.get(f"{API}/search", headers=HEADERS, params=params, timeout=30).json()
    for t in reversed(page["data"]):
        print(t["author"]["username"], t["text"][:80])
    return page["data"][0]["id"] if page["data"] else newest

newest = None
while True:
    newest = poll("$SOL -filter:retweets min_faves:5", newest)
    time.sleep(15)
```

`min_faves:5` keeps out most spam. Every poll is one call, from $0.065 per 1,000 calls; one query every 15 seconds is about 173,000 calls a month. The [search guide](https://www.twittrapi.com/blog/search-twitter-without-developer-account) lists more operators.

## Send it where you trade

To get the posts in a Telegram group or a Discord channel instead of a log, use the relay from [tweet alerts in Discord, Telegram or Slack](https://www.twittrapi.com/blog/tweet-alerts-discord-telegram-slack) and call `wanted()` with your cashtag check.

## Frequently asked questions

### How fast are crypto tweet alerts?

The Real-time class checks each account at least once per second. X's own delay before a post appears comes on top. Compare `tweetCreatedAt` and `detectedAt` on your events to see what you get.

### Can I track a cashtag like $BTC directly?

Not with account monitoring, which follows accounts. Poll search for the cashtag with `since_id`, as in step 4, or watch the accounts that usually post about it.

### Can I watch small project accounts?

Yes. There is no follower minimum. Every public account in your plan is checked at the same interval.

### Is this trading advice?

No. This post shows how to get public posts quickly. What you do with them is your decision.

## Sources

- [Account monitoring docs](https://www.twittrapi.com/docs/monitoring) (events, timestamps, signatures)
- [Simple format: tweet fields](https://www.twittrapi.com/docs/simple-format#tweet)
- [Crypto trading use case](https://www.twittrapi.com/use-cases/crypto-trading)

TwittrAPI is not affiliated with X Corp. It reads only public data.
