جمع بيانات X (تويتر): المنشورات والردود

احصل على الملفات الشخصية والمنشورات والردود والمجتمعات والنصوص المفرّغة للفيديوهات العامة من X (تويتر) بصيغة JSON عبر واجهة REST واحدة، دون تسجيل دخول أو باقة API مدفوعة.

إلياسآخر تحديث قراءة في 5 دقائق
الإجابة باختصار

أبسط طريقة للحصول على بيانات X (تويتر) العامة في 2026 هي واجهة API مستضافة لجمع البيانات: طلب HTTPS واحد يعيد لك ملفًا شخصيًا، أو منشورات حساب، أو الردود على منشور، أو منشورات مجتمع، أو النص المفرّغ لفيديو، بصيغة JSON. مع crawlfeed، يكلّف كل طلب على X رصيدًا واحدًا، ولا يحتاج إلا إلى مفتاح API، ويعيد البنية نفسها التي تعيدها بيانات Instagram وTikTok وYouTube.

لا تزال X (تويتر سابقًا) المكان الذي تنتشر فيه الأخبار أولًا، وتعلن فيه الشركات عن جديدها، وتدور فيه النقاشات علنًا. وهذا يجعل بياناتها قيّمة للمراقبة والأبحاث ووكلاء الذكاء الاصطناعي، ومزعجة في جمعها منذ أن أغلقت المنصة معظم وصولها المجاني. يشرح هذا الدليل كيف تجمع بيانات X العامة (الملفات الشخصية، والمنشورات، والردود، والمجتمعات، والنصوص المفرّغة للفيديوهات) بطلبات HTTPS عادية، مع شيفرة جاهزة للتشغيل بلغات cURL وJavaScript وPython.

لماذا يصعب الحصول على بيانات X؟

كانت X أسهل منصة للبحث، لكنها منذ 2023 أصبحت من أصعبها:

  • الواجهة الرسمية مدفوعة. تتطلب قراءة البيانات عبر X API باقة مدفوعة، والباقات الأدنى تضع سقفًا لعدد المنشورات التي يمكنك قراءتها. وتزداد التكلفة مع كل حساب تتابعه.
  • التصفح دون تسجيل دخول مقيّد. معظم الخطوط الزمنية والردود ونتائج البحث لا تظهر إلا بعد تسجيل الدخول، وتحدّ X بنشاط من الجلسات الآلية، فتحتاج أداة الجمع التي تبنيها بنفسك إلى حسابات وخوادم وسيطة وإصلاح مستمر.
  • بيانات تطبيق الويب متداخلة بعمق. تصل المنشورات والمنشورات المقتبسة والوسائط والأعداد بصيغة GraphQL تتغير بنيتها بين نقاط النهاية ومع الوقت.

إليك مقارنة بين الخيارات المعتادة:

الطريقةالحسابات العامة والردودالنصوص المفرّغة للفيديوهاتالصيانة
X API الرسميةنعم، ضمن حدود باقتكلاقليلة، لكن التكلفة تزداد مع الحجم
أداة جمع بيانات تبنيها بنفسكنعم، بجلسات مسجّلة الدخولبجهد إضافيكبيرة: حسابات، وخوادم وسيطة، ومحللات تتعطل
واجهة API لجمع البيانات (crawlfeed)نعمنعملا شيء من جهتك

يتبع باقي هذا الدليل الطريقة الأخيرة.

ما بيانات X التي يمكنك الحصول عليها؟

كل الطلبات أدناه متاحة على crawlfeed اليوم. يُولَّد الجدول من فهرس الواجهة نفسه، لذا فنقاط النهاية والأسعار هي بالضبط ما ستدفعه:

العمليةنقطة النهايةالمُعاملات المطلوبةالرصيد
الملف الشخصي/v1/x/profilehandle1
المنشورات/v1/x/postshandle1
منشور/v1/x/postid1
التعليقات/v1/x/commentspost_id1
الحسابات المرتبطة/v1/x/linked-profileshandle10
النص المفرّغ/v1/x/transcriptid1
الملخص/v1/x/summaryid4
المجتمع/v1/x/communityid1
منشورات المجتمع/v1/x/community/postsid1

تعود كل البيانات بالأنواع الموحّدة في crawlfeed (Profile وPost وComment وغيرها)، وهي نفسها على كل المنصات الـ26. ومُعرّف المنصة ببساطة x.

احصل على ملف شخصي من X

تحتاج إلى مفتاح API (تحصل الحسابات الجديدة على 100 رصيد مجاني) واسم المستخدم دون @:

curl -G https://api.crawlfeed.dev/v1/x/profile \
  -H "Authorization: Bearer $CRAWLFEED_KEY" \
  --data-urlencode "handle=nasa"

الاستجابة كائن Profile داخل الغلاف المعتاد. بعد الاختصار، ومع أرقام توضيحية، تبدو هكذا:

json
{
  "data": {
    "platform": "x",
    "handle": "nasa",
    "display_name": "NASA",
    "verified": true,
    "followers": 1234567,
    "following": 123,
    "posts_count": 12345,
    "bio": "…",
    "links": ["…"]
  },
  "meta": { "credits_used": 1, "credits_remaining": 99, "cache": "MISS", "data_age_s": 0 }
}

يكلّف الملف الشخصي رصيد واحد. الأعداد أرقام دائمًا، والحقل الذي لا تكشفه X يعود بالقيمة null بدل أن يختفي.

احصل على منشورات حساب

تعيد /v1/x/posts أحدث منشورات الحساب، من الأحدث إلى الأقدم، صفحةً في كل طلب:

curl -G https://api.crawlfeed.dev/v1/x/posts \
  -H "Authorization: Bearer $CRAWLFEED_KEY" \
  --data-urlencode "handle=nasa"

كل عنصر كائن Post يحتوي على text، وcreated_at، وlang، وmedia (صور وفيديوهات فيها url وthumbnail_url وduration_s)، وengagement (likes وcomments وshares وviews وsaves)، وhashtags، وmentions، وis_ad. وعلى X، يحسب shares إعادات النشر والاقتباسات معًا، ويحسب saves الإشارات المرجعية.

للانتقال إلى الصفحة التالية، مرّر قيمة meta.next_cursor في المُعامل cursor. وإذا غاب next_cursor فقد وصلت إلى النهاية. تُحتسب كل صفحة، فتوقف فور حصولك على ما تحتاجه:

javascript
let cursor;
const posts = [];
do {
  const params = new URLSearchParams({ handle: 'nasa', ...(cursor ? { cursor } : {}) });
  const res = await fetch(`https://api.crawlfeed.dev/v1/x/posts?${params}`, {
    headers: { Authorization: `Bearer ${process.env.CRAWLFEED_KEY}` },
  });
  const { data, meta } = await res.json();
  posts.push(...data);
  cursor = meta.next_cursor;
} while (cursor && posts.length < 200);

ولقراءة منشور واحد تعرفه مسبقًا، مرّر مُعرّفه إلى /v1/x/post. والمُعرّف هو الرقم الطويل في نهاية رابط المنشور.

احصل على الردود على منشور

هكذا تجمع الردود على تويتر. على X، الردود على المنشور هي تعليقاته، لذا مرّر مُعرّف المنشور في post_id:

curl -G https://api.crawlfeed.dev/v1/x/comments \
  -H "Authorization: Bearer $CRAWLFEED_KEY" \
  --data-urlencode "post_id=<post_id>"

يحتوي كل Comment على text، وauthor، وlikes، وcreated_at، وlang، وreply_to_id، فتستطيع إعادة بناء سلسلة الردود أو قياس كيف تحوّل مسار النقاش. وتتنقل الردود بين الصفحات عبر cursor، تمامًا كالمنشورات.

اقرأ مجتمعات X

مجتمعات X (Communities) مجموعات موضوعية لكلٍّ منها خلاصتها الخاصة. يغطيها طلبان:

  • المجتمع نفسه: تعيد /v1/x/community?id=… المجتمع ككائن Profile، فله الحقول نفسها التي للحساب.
  • منشوراته: تعيد /v1/x/community/posts?id=… المنشورات المشاركة فيه، مع التنقل بين الصفحات عبر cursor.
curl -G https://api.crawlfeed.dev/v1/x/community/posts \
  -H "Authorization: Bearer $CRAWLFEED_KEY" \
  --data-urlencode "id=<id>"

مرّر مُعرّف المجتمع أو رابطه في id. وتفيدك المجتمعات حين يتحاور جمهور متخصص فيما بينه بدل الخطوط الزمنية العامة.

احصل على النص المفرّغ لفيديو على X

للمنشورات التي تحتوي على فيديو، تعيد /v1/x/transcript النص المنطوق، مع التوقيتات حين تتوفر. مرّر مُعرّف المنشور أو رابطه:

curl -G https://api.crawlfeed.dev/v1/x/transcript \
  -H "Authorization: Bearer $CRAWLFEED_KEY" \
  --data-urlencode "id=<id>"

يكلّف النص المفرّغ رصيد واحد، مثل كل طلب آخر على X.

تعامل مع الأخطاء وحدّ الطلبات

الأخطاء بصيغة problem details وفق RFC 9457 مع code ثابت، فاعتمد على الرمز لا على نص الرسالة:

الرمزمعناهما العمل
not_foundاسم المستخدم أو المنشور غير موجود، أو أنه محميتحقق من المُعرّف، ولا تُعِد المحاولة
unauthorizedمفتاح API مفقود أو غير صحيحتحقق من ترويسة Authorization
rate_limitedأرسلت طلبات أسرع من حدّك المسموحانتظر retry_after ثانية
insufficient_creditsرصيدك أقل من سعر الطلباشحن رصيدك، فلم يُخصم شيء
upstream_timeoutتأخرت X كثيرًا في الردأعد المحاولة، فقد استُرد الرصيد

يُستردّ رصيد الطلب الفاشل تلقائيًا، فلن تدفع مرتين عند إعادة المحاولة أبدًا.

أضف تحليل المشاعر واللهجة العربية

جزء كبير من النقاش على X يدور بالعربية. أضف enrich=arabic إلى طلب الملف الشخصي أو المنشورات أو الردود، وسيحصل كل عنصر على حقل enrichment فيه اللهجة والمشاعر والكيانات والموضوعات، مقابل 3 أرصدة إضافية لكل طلب. وهذا يكفي لترسم كيف تتبدل المشاعر في سلسلة ردود دون أن تدرّب مصنّفًا خاصًا بك.

استخدم بيانات X من Claude أو Cursor

إن كنت تفضّل السؤال على كتابة الشيفرة، فاربط خادم MCP من crawlfeed، وسيحصل مساعدك على الطلبات نفسها كأدوات:

bash
claude mcp add --transport http crawlfeed https://mcp.crawlfeed.dev/mcp \
  --header "Authorization: Bearer $CRAWLFEED_KEY"

ثم اسأل مثلًا: «ماذا نشر حساب ‎@nasa هذا الأسبوع، وماذا تقول الردود الأكثر إعجابًا؟». تجد طريقة الإعداد لكل عميل في دليلنا إلى MCP.

الخلاصة

لجمع بيانات X العامة، تعفيك واجهة API لجمع البيانات من دفع ثمن باقة API صُممت لاستخدام غير استخدامك، ومن صيانة أدوات جمع مبنية على حسابات مسجّلة. مع crawlfeed، يكلّف كل طلب على X رصيدًا واحدًا، والشيفرة نفسها تعمل مع TikTok وInstagram وYouTube وLinkedIn. المرجع الكامل في /docs/platforms/x.

أسئلة شائعة

كيف تجمع منشورات تويتر أو X وملفاتها الشخصية؟

أرسل طلب HTTPS واحدًا لكل ما تريده: /v1/x/profile?handle=… للملف الشخصي، و/v1/x/posts?handle=… لمنشورات حساب، و/v1/x/comments?post_id=… للردود على منشور. لا يحتاج كل طلب إلا إلى مفتاح API، ويكلّف رصيدًا واحدًا، ويعيد JSON بالبنية نفسها في كل منصة أخرى. ولا تحتاج من جهتك إلى تسجيل دخول في X ولا إلى متصفح أو خادم وكيل.

هل جمع بيانات X (تويتر) قانوني؟

جمع البيانات المتاحة للعموم قانوني عمومًا في كثير من الدول، لكنه يتوقف على مكانك، وعلى ما تجمعه، وعلى ما تفعله به. لا يعيد crawlfeed إلا البيانات العامة، ولا يسجّل الدخول إلى أي حساب أبدًا. وإذا خزّنت بيانات شخصية، فأنت مسؤول عن وجود أساس قانوني لذلك وفق قوانين مثل اللائحة العامة لحماية البيانات (GDPR)، وعن تلبية طلبات الحذف.

هل لدى X واجهة API رسمية لهذا؟

نعم، لكن الوصول إليها يُباع في باقات مدفوعة، والباقات الأدنى تحدّ من حجم ما يمكنك قراءته كل شهر. ولمنتج يحتاج إلى قراءة الحسابات العامة والردود عبر حسابات كثيرة، تكون واجهة API لجمع البيانات عادةً أسهل في تقدير ميزانيتها وفي صيانتها.

كم تكلّف بيانات X مع crawlfeed؟

يكلّف كل طلب على X رصيدًا واحدًا: ملف شخصي، أو صفحة من المنشورات، أو منشور واحد، أو صفحة من الردود، أو مجتمع، أو نص مفرّغ. تحصل الحسابات الجديدة على رصيد مجاني، ويُستردّ رصيد الطلبات الفاشلة.

ما مدى حداثة البيانات؟

نخزّن الاستجابات تخزينًا مؤقتًا لفترة قصيرة حتى تبقى الطلبات المتكررة سريعة ورخيصة. يخبرك الحقلان meta.cache وmeta.data_age_s بعمر الاستجابة، وإذا أردت البيانات الحديثة مباشرة من المصدر فأضف fresh=true مقابل ضعف السعر.

لماذا يسمّيها crawlfeed منشورات لا تغريدات؟

غيّرت X اسم التغريدات إلى منشورات، ويستخدم crawlfeed نوع Post واحدًا لكل المنصات. فالتغريدة أو الاقتباس يعود ككائن Post، والردود تحت المنشور تعود ككائنات Comment مرتبطة به عبر post_id.

جرّبه على بياناتك

كل الأمثلة أعلاه تعمل كما هي. تحصل الحسابات الجديدة على 100 رصيد مجاني، دون بطاقة دفع.

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