When a crypto project's dev changes their Twitter/X bio from "Building the future of DeFi" to a blank, something is about to happen — and it's usually not good. Profile changes on Twitter/X are one of the most reliable early signals for rug pulls, rebrands, pivots, and partnerships.
Twitter/X has no API for detecting profile changes. Xanguard delivers alerts within seconds of a change — bio, display name, avatar, or pinned tweet.
Why Profile Changes Are Trading Signals
Rug Pull Pattern
In the run-up to a rug pull, dev accounts often: remove their bio, change their display name, delete their avatar, or unpin their project tweet. Detecting these changes gives you time to exit before the dump.
What Each Change Means
| Change | Bullish Signal | Bearish Signal |
|---|---|---|
| Bio update | Added new project/partnership info | Cleared bio, removed project mentions |
| Name change | Rebrand to match new launch | Name cleared or changed to random text |
| Avatar change | New branding, professional update | Reverted to default or deleted |
| Pinned tweet | New launch announcement pinned | Unpinned project tweet, pinned unrelated content |
Detection Speed
Changes are delivered within seconds.
Event Format (WebSocket)
{
"op": 0,
"d": {
"event": "twitter.profile.update",
"event_id": "evt_p_example_dev_1712000000",
"task_info": { "handle": "example_dev" },
"data": {
"field": "description",
"prev": "Building the future of DeFi",
"updated": ""
}
}
}
Fields tracked: description (bio), name (display name), avatar, pinned_post, banner_url, location, website
Quick Start: Python
import asyncio, websockets, json
async def monitor_profiles():
async with websockets.connect('wss://api.xanguard.tech/v1/dt/realtime/ws') as ws:
hello = json.loads(await ws.recv())
await ws.send(json.dumps({"op": 2, "d": "dt_YOUR_API_KEY"}))
ready = json.loads(await ws.recv())
async def heartbeat():
while True:
await asyncio.sleep(hello["d"]["heartbeat_interval"] / 1000)
await ws.send(json.dumps({"op": 1}))
asyncio.create_task(heartbeat())
while True:
msg = json.loads(await ws.recv())
if msg["op"] == 0 and msg["d"]["event"] == "twitter.profile.update":
data = msg["d"]["data"]
handle = msg["d"]["task_info"]["handle"]
print(f"@{handle} changed {data['field']}:")
print(f" Before: {data['prev']}")
print(f" After: {data['updated']}")
asyncio.run(monitor_profiles())
Who Uses This
- Crypto Trading Bots: Automated rug pull detection based on profile change patterns
- DeFi Protocols: Monitor partner and team account profiles for unauthorized changes
- Research Platforms: Track influencer narrative shifts through bio changes
- Brand Monitoring: Detect impersonation attempts via name/avatar changes
Pricing
Profile change detection is included in B2B Pro and Enterprise plans, from $99/mo (see B2B Realtime). For individual users it is also available in @Xanguard_bot as the Profile Watch add-on, from $35/mo for 35 accounts. All plans are paid in SOL.
Get Started
- For API/WebSocket access: @B2B_Xanguard_bot
- For Telegram alerts: @Xanguard_bot (add Profile Watch from the add-ons menu)
- Add accounts, connect to WebSocket, and start receiving profile change events
Frequently Asked Questions
Twitter/X has no native profile change API. Xanguard monitors profiles continuously and delivers alerts via WebSocket and REST API the moment any change is detected — bio, display name, avatar, or pinned tweet.
Profile changes are delivered within seconds. Alerts include both the old and new values, so you can immediately see what changed and assess whether it's a bullish or bearish signal.
Bio cleared, display name changed to random text, avatar reverted to default, and pinned project tweet removed. These changes often come shortly before a dev dumps their tokens.
Yes. Xanguard's Profile Watch monitors hundreds of accounts simultaneously. All profile change events are delivered through Telegram (Profile Watch) or the B2B WebSocket and REST API (Pro and Enterprise plans) with full before-and-after data.