واجهة B2B اللحظية · WebSocket + REST

بديل Twitter API: واجهة تويتر (X) اللحظية
لبوتات التداول والمنصات والـ Agents

Xanguard B2B واجهة بيانات تويتر (X) اللحظية للمطورين. اتصال WebSocket واحد يدفع إليك بصيغة JSON التغريدات الجديدة للحسابات التي تراقبها وحذف التغريدات وتغيّر الملف الشخصي والمتابعين الجدد وأحداث المتابعة وإلغاء المتابعة، مع REST API لإدارة قائمة المراقبة. متوسط الاكتشاف في الباقات المدفوعة نحو 200 مللي ثانية (البيانات الفعلية). من 50 حساباً بـ $49 شهرياً وحتى 1,000 حساب، والدفع بعملة SOL والتفعيل تلقائي.

آخر مراجعة للأسعار: 5 أكتوبر 2026

أخي الغالي، يا من تبني بوتات التداول والمنصات، أهلاً بك أنت والـ Agent الخاص بك في Xanguard. أنا المطوّر، وأرد على كل رسالة بنفسي. للربط أو عرض السعر أو مطابقة الحقول راسلني مباشرة على تيليجرام: @notAdegen

مطوّر Xanguard · أرد على الرسائل الخاصة بنفسي

الرابط لا يفتح؟ افتح تيليجرام وابحث عن @B2B_Xanguard_bot

~200ms
متوسط زمن الاكتشاف
5 أنواع
من الأحداث اللحظية
1,000
حد الحسابات (والمزيد بالتفاوض)
$49
شهرياً لـ 50 حساباً (ابتداءً من)

خمسة أنواع من الأحداث اللحظية عبر WebSocket واحد

كل ما يحتاجه بوت التداول أو المنصة من تويتر: التغريدات، والحذف، وتغيّر الملف الشخصي، والمتابعون الجدد، والمتابعة وإلغاء المتابعة. وكلها JSON جاهز للاستخدام.

التغريدات twitter.post.new

تغريدات وردود واقتباسات وإعادات نشر، بمتوسط اكتشاف نحو 200 مللي ثانية. النص الكامل وروابط الوسائط والتغريدة المقتبَسة أو المردود عليها وبيانات الكاتب، مع استخراج عناوين العقود تلقائياً. في كل الباقات.

حذف تغريدة twitter.tweet.deleted

يصلك الحدث حين يحذف الحساب المراقَب تغريدة، مع معرّف التغريدة المحذوفة ونصها؛ وإذا تأكد الحذف دون معرفة أي تغريدة بالتحديد يكون هذان الحقلان null. في كل الباقات.

تغيّر الملف الشخصي twitter.profile.update

تغيير الاسم أو النبذة أو الصورة أو التغريدة المثبّتة، مع القيمة قبل التغيير وبعده. كثيراً ما يبدأ المشروع بتغيير روايته من ملفه الشخصي. من Pro فما فوق.

متابع جديد twitter.follower.new

يصلك حدث عند انضمام متابع جديد إلى الحساب المراقَب، مع تحديد من هو. مفيد لمعرفة من يتابع كبار المطورين بهدوء. من Pro فما فوق.

REST API

أضف حسابات المراقبة أو احذفها بمفتاح dt_ (POST /v1/dt/targets)، واستعلم عن الملفات الشخصية وسجل التغيّرات. قراءة عناوين العقود داخل الصور (OCR) في Enterprise.

اربط في 5 دقائق وابدأ باستلام الأحداث

بلا اجتماعات وبلا انتظار فريق مبيعات. تطلب الباقة من البوت وتحصل على المفتاح وتتصل.

1

اشترك

افتح @B2B_Xanguard_bot على تيليجرام، واختر الباقة وادفع بعملة SOL.

2

احصل على المفتاح

يُفعَّل الاشتراك تلقائياً بعد التأكيد على السلسلة، ويرسل لك البوت مفتاح API الذي يبدأ بـ dt_.

3

أضف الحسابات

أرسل في البوت /add مع المعرّف، أو استدعِ POST /v1/dt/targets.

4

اتصل بـ WebSocket

بعد الاتصال يصلك HELLO، فترسل LOGIN (op 2 مع المفتاح)، ثم تستقبل أحداث EVENT باستمرار.

بروتوكول opcode، وكود Python وNode جاهز للتشغيل

العنوان: wss://api.xanguard.tech/v1/dt/realtime/ws. تسلسل opcode متوافق مع TweetCatcher؛ يسمح كل مفتاح بحد أقصى 5 اتصالات متزامنة، ويُقطع الاتصال إذا لم تصل نبضة قلب (heartbeat) خلال 90 ثانية.

opNameDirectionNotes
10HELLOserver → clientSent right after connect, with heartbeat_interval (ms)
2LOGINclient → serverSend the API key within 15 s: {"op": 2, "d": "dt_..."}
4READYserver → clientAuth OK, with enabled modules and account count
0EVENTserver → clientLive event, d.event is the event type
1HEARTBEATclient → serverSend every heartbeat_interval
11HEARTBEAT_ACKserver → clientHeartbeat reply
3DISCONNECTserver → clientd.reason says why (e.g. invalid or expired key)

جدول البروتوكول وأمثلة الكود وبنية JSON أدناه بالإنجليزية عمداً لأنها كود يُنسخ كما هو.

Python (pip install websockets)
import asyncio, json
import websockets

URL = "wss://api.xanguard.tech/v1/dt/realtime/ws"
API_KEY = "dt_YOUR_KEY"

async def main():
    async with websockets.connect(URL) as ws:
        # op 10 HELLO: carries the heartbeat interval (ms)
        hello = json.loads(await ws.recv())
        interval = hello["d"]["heartbeat_interval"] / 1000

        # op 2 LOGIN: send the key within 15 s
        await ws.send(json.dumps({"op": 2, "d": API_KEY}))
        ready = json.loads(await ws.recv())
        if ready["op"] != 4:  # on failure you get op 3 DISCONNECT
            raise SystemExit(ready["d"].get("reason"))
        print("connected:", ready["d"]["modules"])

        # heartbeat on the interval; no heartbeat for 90 s = disconnect
        async def heartbeat():
            while True:
                await asyncio.sleep(interval)
                await ws.send(json.dumps({"op": 1}))
        hb = asyncio.create_task(heartbeat())

        async for raw in ws:
            msg = json.loads(raw)
            if msg["op"] != 0:  # only handle op 0 EVENT
                continue
            ev, d = msg["d"]["event"], msg["d"]["data"]
            if ev == "twitter.post.new":
                print(d["author"]["handle"], d["text"])
            elif ev == "twitter.tweet.deleted":
                print("deleted:", d["tweet_id"])
            elif ev == "twitter.profile.update":
                print("profile:", d["field"], d["updated"])

asyncio.run(main())
Node.js (npm i ws)
const WebSocket = require('ws');
const URL = 'wss://api.xanguard.tech/v1/dt/realtime/ws';
const ws = new WebSocket(URL);
let hb;

ws.on('message', (raw) => {
  const msg = JSON.parse(raw.toString());
  switch (msg.op) {
    case 10: // HELLO: send LOGIN, then heartbeat on the interval
      ws.send(JSON.stringify({ op: 2, d: 'dt_YOUR_KEY' }));
      hb = setInterval(
        () => ws.send(JSON.stringify({ op: 1 })),
        msg.d.heartbeat_interval
      );
      break;
    case 4: // READY: authenticated
      console.log('connected', msg.d.modules);
      break;
    case 3: // DISCONNECT: invalid or expired key, etc.
      console.error('disconnected:', msg.d.reason);
      break;
    case 0: { // EVENT: live event
      const { event, data } = msg.d;
      if (event === 'twitter.post.new') {
        console.log(data.author.handle, data.text);
      } else if (event === 'twitter.following.new') {
        console.log('new follow:', data.handle);
      }
      break;
    }
  }
});

ws.on('close', () => clearInterval(hb));

كيف يبدو الـ JSON

البيانات التالية أمثلة توضيحية، والحقول المعتمدة في توثيق الواجهة. قد تصل التغريدة أولاً بحدث twitter.post.new ثم يُستكمل بحدث twitter.post.update يحمل نفس data.id.

twitter.post.new
{
  "op": 0,
  "d": {
    "event": "twitter.post.new",
    "event_id": "evt_1234567890123456789",
    "task_info": {"handle": "example_dev"},
    "data": {
      "id": "1234567890123456789",
      "created_at": 1712000000000,
      "type": "post",
      "text": "gm, new release ships tonight",
      "media": [],
      "author": {
        "id": "1234567890",
        "handle": "example_dev",
        "name": "Example Dev",
        "stats": {"followers": 12000, "following": 800}
      },
      "in_reply_to": null,
      "quoted_tweet": null
    }
  }
}
twitter.following.new (Enterprise)
{
  "op": 0,
  "d": {
    "event": "twitter.following.new",
    "event_id": "evt_f_example_dev_1712000000000",
    "event_time": 1712000000000,
    "task_info": {"handle": "example_dev", "id": "1234567890"},
    "data": {
      "id": "2233445566",
      "handle": "example_founder",
      "name": "Example Founder",
      "bio": "building on Solana",
      "followers": 5400,
      "following": 310
    }
  }
}
twitter.profile.update (Pro+)
{
  "op": 0,
  "d": {
    "event": "twitter.profile.update",
    "event_id": "evt_p_example_dev_1712000000000",
    "task_info": {"handle": "example_dev"},
    "data": {
      "field": "bio",
      "prev": "Old bio text",
      "updated": "New bio text"
    }
  }
}
twitter.follower.new / twitter.tweet.deleted
{
  "op": 0,
  "d": {
    "event": "twitter.follower.new",
    "task_info": {"handle": "example_dev"},
    "data": {
      "id": "12345678",
      "handle": "newfollower",
      "name": "New Follower"
    }
  }
}

{
  "op": 0,
  "d": {
    "event": "twitter.tweet.deleted",
    "task_info": {"handle": "example_dev"},
    "data": {
      "tweet_id": "1234567890123456789",
      "text": "text of the deleted tweet"
    }
  }
}

قيم data.type: ‏post وreply وquote وrepost. وحقل field في تغيّر الملف الشخصي يكون أحد: ‏bio وname وavatar وpinned_tweet.

الباقة حسب الوحدات، والسعر حسب عدد الحسابات

اختر مستوى الوحدات أولاً ثم عدد الحسابات المراقَبة. الأسعار شهرية بالدولار وتُدفع بعملة SOL، وآخر مراجعة لها في 5 أكتوبر 2026.

Starter
من $49 شهرياً
  • أحداث التغريدات
  • أحداث الحذف
  • WebSocket + REST
Enterprise
من $249 شهرياً
  • كل ما في Pro
  • أحداث المتابعة وإلغاء المتابعة
  • قراءة عناوين العقود في الصور (OCR)
عدد الحسابات المراقَبةStarter
تغريدات + حذف
Pro
+ تغيّر الملف + متابعون جدد
Enterprise
+ متابعة وإلغاء متابعة
سعر الحساب في Starter
50 $49 $99 $249 $0.98
250 $229 $429 $979 $0.92
500 $449 $749 $1,649 $0.90
1,000 $849 $1,349 $2,849 $0.85

ما فوق 1,000 حساب يُتفاوض عليه بشكل منفصل. وهناك إضافة CA Search (بحث عن تغريدات آخر 24 ساعة بعنوان العقد أو اسم العملة أو كلمة مفتاحية، بحد أقصى 200 تغريدة لكل طلب): 1,000 طلب يومياً بـ $100 شهرياً، و2,000 طلب بـ $180، و5,000 طلب بـ $250. جدول الأسعار الكامل بالإنجليزية: B2B API pricing.

كم تكلّف مراقبة 200 حساب لحظياً شهرياً؟

أسعار الجهات الأخرى من مواقعها الرسمية وراجعناها في 20 سبتمبر 2026، وسعر X API الرسمي راجعناه في 5 أكتوبر 2026 (docs.x.com). والمرجع دائماً أحدث سعر على موقع الجهة نفسها.

الخيار200 حساب شهرياًملاحظات
Xanguard B2B Starter 250$229WebSocket + REST مع أحداث الحذف، حتى 250 حساباً
TweetStream (باقة Pro لـ 250 حساباً)$499السعر المعلن على موقعهم
twitterapi.io (باقة 150 حساباً + 50 إضافية)نحو $399الحساب الإضافي بـ $2
X API الرسمي (بالاستهلاك)نحو $210قراءة التغريدات فقط: 0.005 دولار للتغريدة، بتقدير 7 تغريدات يومياً لكل حساب؛ والمتابعات وتغيّر الملف الشخصي تُحسب بشكل منفصل، مع حدود معدّل

الانتقال من خدمات أخرى

  • TweetCatcher: يستخدم WebSocket تسلسل opcode متوافقاً (HELLO ثم LOGIN ثم EVENT مع نبضات القلب). بدّل العنوان والمفتاح وطابق بعض الحقول المختلفة، وغالباً ينتهي ذلك في أقل من ساعة. دليل الانتقال (بالإنجليزية)
  • twitterapi.io: غيّر عنوان الطلبات إلى api.xanguard.tech وأبقِ ترويسة X-API-Key وبنية البيانات كما هي. دليل الانتقال (بالإنجليزية)
  • مزوّدون آخرون: أرسل لي وثائق الواجهة التي تستخدمها أو عيّنة من بياناتها، وعادةً نجهّز مطابقة الحقول خلال ساعات، ونعمل على الربط معاً في المحادثة نفسها.

ما لا نوفّره حالياً

  • إعادة إرسال التغريدات التي فاتتك أثناء انقطاع اتصال WebSocket بعد إعادة الاتصال.
  • التزام مكتوب باتفاقية مستوى خدمة (SLA) للتوافر.
  • الإرسال إلى Discord بشكل أصلي؛ والدفع بعملة SOL فقط، بلا بطاقات.
لمن هذه الخدمة؟ لمنصات التداول، وبوتات التداول على تيليجرام، وأدوات النسخ والإشارات، ولوحات البيانات، ووكلاء الذكاء الاصطناعي (AI Agents) الذين يحتاجون بيانات تويتر لحظياً. وإذا كنت تريد فقط استلام التغريدات بنفسك على تيليجرام فبوت @Xanguard_bot يكفيك، وحساب واحد مجاناً.

الأسئلة الشائعة

نعم. كل باقات B2B تشمل حدث twitter.tweet.deleted عبر WebSocket، مع معرّف التغريدة ونصها إذا كان Xanguard قد رأى التغريدة قبل حذفها. الباقات من 49 دولاراً شهرياً لـ 50 حساباً. التفاصيل للمستخدم العادي في xanguard.tech/ar/deleted-tweets/
نعم. Xanguard B2B يدفع عبر اتصال WebSocket واحد تغريدات الحسابات التي تراقبها وحذفها وتغيّر ملفاتها الشخصية ومتابعيها الجدد وأحداث المتابعة وإلغاء المتابعة، مع REST API. الأسعار حسب عدد الحسابات والوحدات، وفي باقة Starter: 49 دولاراً شهرياً لـ 50 حساباً، و229 دولاراً لـ 250، و449 دولاراً لـ 500، و849 دولاراً لـ 1,000 حساب. الدفع بعملة SOL والتفعيل تلقائي.
وفق وثائق مطوّري X (docs.x.com، راجعناها في 5 أكتوبر 2026) أصبح X API الرسمي بالاستهلاك فقط، ولم تعد باقات Basic وPro الشهرية ظاهرة في صفحة الأسعار: 0.005 دولار لكل تغريدة تُقرأ، و0.010 دولار لكل مستخدم يُقرأ، بحد أقصى 3 ملايين تغريدة مقروءة شهرياً، وما فوق ذلك يتطلب التفاوض مع X على Enterprise. بتقدير 7 تغريدات يومياً لكل حساب، تكلّف مراقبة 50 حساباً قراءة التغريدات وحدها نحو 53 دولاراً شهرياً، وتُحسب قراءة المتابعات والملفات الشخصية بشكل منفصل وتخضع لحدود المعدّل. وإذا كان كل ما تحتاجه متابعة مجموعة حسابات محددة لحظياً، فالخدمة بالاشتراك الشهري حسب عدد الحسابات أبسط غالباً.
متوسط الاكتشاف في الباقات المدفوعة نحو 200 مللي ثانية، وأرقام p95 وp99 تُحدَّث كل ساعة في xanguard.tech/speed/. كل حدث تغريدة يحمل وقت نشرها الأصلي created_at (بالمللي ثانية)، فيمكنك مقارنته بوقت استلامك لتتحقق من التأخير بنفسك.
الفرق في الوحدات. Starter: التغريدات وحذفها. Pro: يضيف تغيّر الملف الشخصي والمتابعين الجدد. Enterprise: يضيف أحداث المتابعة وإلغاء المتابعة. الباقات الثلاث تشمل WebSocket وREST ويمكن اختيار 50 أو 250 أو 500 أو 1,000 حساب. استخراج عناوين العقود في كل الباقات، أما قراءة العناوين داخل الصور (OCR) فتتوفر في Enterprise فقط.
نعم. يستخدم WebSocket تسلسل opcode متوافقاً مع TweetCatcher (HELLO وLOGIN وREADY وEVENT وHEARTBEAT)، فيكفي تبديل العنوان والمفتاح ومطابقة بعض الحقول، وغالباً يتم ذلك في أقل من ساعة. ومستخدمو twitterapi.io يغيّرون عنوان الطلبات إلى api.xanguard.tech مع إبقاء ترويسة X-API-Key وبنية البيانات كما هي. أما مزوّدو الخدمة الآخرون فأرسل لنا وثائقهم وعادةً نجهّز مطابقة الحقول خلال ساعات.
افتح @B2B_Xanguard_bot على تيليجرام، واختر الباقة وادفع بعملة SOL. يُفعَّل الاشتراك تلقائياً بعد التأكيد على السلسلة، ويرسل لك البوت مفتاح API مباشرة، بلا اجتماعات وبلا انتظار فريق مبيعات. لا يوجد دفع بالبطاقات.

WebSocket واحد وJSON جاهز للاستخدام

من 50 حساباً بـ $49 شهرياً، والدفع بعملة SOL، ويصلك المفتاح تلقائياً بعد التأكيد على السلسلة.

الرابط لا يفتح؟ افتح تيليجرام وابحث عن @B2B_Xanguard_bot