Felo APIs
X Search API
ค้นหาผู้ใช้ X, ทวีต, ไทม์ไลน์ และการตอบกลับ พร้อมข้อมูลเมตาการแบ่งหน้า
/v2/x/tweet/searchการยืนยันตัวตน
Bearer API key
ประเภทเนื้อหา
application/json
หมายเหตุเรื่องข้อจำกัด
1 request per 10 seconds, 3 per minute, 10 per 10 minutes.
X Search API ให้เข้าถึงข้อมูล X (Twitter) รวมถึงโปรไฟล์ผู้ใช้ การค้นหาโพสต์ โพสต์ของผู้ใช้ และการตอบกลับของโพสต์
การรับรองความถูกต้อง
ทุกคำขอต้องมีคีย์ API ใน header Authorization:
Authorization: Bearer YOUR_API_KEYใช้กับ AI Agent
ติดตั้งแพ็กเกจ felo-ai ที่ครบถ้วนเพื่อให้ Agent ใช้ X Search และ Felo Skill อื่น ๆ ที่มีให้ใช้ทั้งหมด ตัวติดตั้งจะค้นหาไดเรกทอรีแพ็กเกจทุกไดเรกทอรีที่มี SKILL.md แบบไดนามิก แทนการดูแลรายการ Skill แบบตายตัว ให้ติดตั้ง Skill ทั้งหมดที่ค้นพบใน Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills หรือ Hermes Agent ~/.hermes/skills ดูคู่มือการตั้งค่า AI Agent ด้วยตนเองสำหรับการติดตั้ง คีย์ API และคำแนะนำการตรวจสอบเฉพาะแพลตฟอร์ม
1. ดึงข้อมูลผู้ใช้
ดึงโปรไฟล์ผู้ใช้ X หลายบัญชีตามชื่อผู้ใช้
Endpoint
POST https://openapi.felo.ai/v2/x/user/infoเนื้อหาคำขอ
| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
usernames | array of strings | ใช่ | รายการชื่อผู้ใช้ X ที่ต้องการค้นหา |
ตัวอย่าง
curl -X POST 'https://openapi.felo.ai/v2/x/user/info' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"usernames": ["elonmusk", "OpenAI"]
}'การตอบกลับที่สำเร็จ (200)
{
"status": "ok",
"message": null,
"data": {
"total": 2,
"users": [
{
"user_id": "44196397",
"username": "elonmusk",
"display_name": "Elon Musk",
"description": "...",
"followers_count": 100000000,
"following_count": 500,
"tweet_count": 30000,
"verified": true,
"blue_verified": true,
"profile_image_url": "https://pbs.twimg.com/...",
"created_at": "2009-06-02T00:00:00Z",
"location": "Mars"
}
]
}
}ฟิลด์ของออบเจกต์ผู้ใช้
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
user_id | string | ID ผู้ใช้ X |
username | string | ชื่อผู้ใช้ X (ไม่รวม @) |
display_name | string | ชื่อที่แสดง |
description | string | ประวัติโดยย่อของผู้ใช้ |
followers_count | integer | จำนวนผู้ติดตาม |
following_count | integer | จำนวนบัญชีที่ติดตาม |
tweet_count | integer | จำนวนโพสต์ทั้งหมด |
verified | boolean | บัญชีได้รับการยืนยันหรือไม่ |
blue_verified | boolean | บัญชีมีการยืนยัน Blue หรือไม่ |
verified_type | string | ประเภทการยืนยัน |
profile_image_url | string | URL รูปโปรไฟล์ |
cover_image_url | string | URL รูปหน้าปก |
created_at | string | เวลาสร้างบัญชี |
location | string | ที่ตั้งของผู้ใช้ |
url | string | URL เว็บไซต์ของผู้ใช้ |
protected | boolean | บัญชีได้รับการป้องกันหรือไม่ |
favorites_count | integer | จำนวนการกดถูกใจ |
media_count | integer | จำนวนโพสต์สื่อ |
can_dm | boolean | เปิดรับ DM หรือไม่ |
is_automated | boolean | บัญชีเป็นระบบอัตโนมัติหรือไม่ |
pinned_tweet_ids | array of strings | ID โพสต์ที่ปักหมุด |
2. ค้นหาผู้ใช้
ค้นหาผู้ใช้ X ตามคำค้น
Endpoint
POST https://openapi.felo.ai/v2/x/user/searchเนื้อหาคำขอ
| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
query | string | ใช่ | คำค้น |
cursor | string | ไม่ | เคอร์เซอร์การแบ่งหน้าจากการตอบกลับก่อนหน้า |
ตัวอย่าง
curl -X POST 'https://openapi.felo.ai/v2/x/user/search' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "artificial intelligence"
}'การตอบกลับที่สำเร็จ (200)
{
"status": "ok",
"message": null,
"data": {
"total": 50,
"has_next": true,
"next_cursor": "cursor_abc123",
"users": [
{
"user_id": "...",
"username": "...",
"display_name": "..."
}
]
}
}ฟิลด์ของการตอบกลับ
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
total | integer | จำนวนผลลัพธ์ทั้งหมด |
has_next | boolean | มีผลลัพธ์เพิ่มเติมหรือไม่ |
next_cursor | string | เคอร์เซอร์สำหรับหน้าถัดไป |
users | array | รายการออบเจกต์ผู้ใช้ (ดูหัวข้อ 1) |
3. ดึงโพสต์ของผู้ใช้
ดึงโพสต์จากผู้ใช้ X ที่ระบุ
Endpoint
POST https://openapi.felo.ai/v2/x/user/tweetsเนื้อหาคำขอ
| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
x_user_id | string | ไม่ | ID ผู้ใช้ X (ระบุ x_user_id หรือ username อย่างใดอย่างหนึ่ง) |
username | string | ไม่ | ชื่อผู้ใช้ X (ระบุ x_user_id หรือ username อย่างใดอย่างหนึ่ง) |
limit | integer | ไม่ | จำนวนโพสต์ที่จะส่งกลับ |
cursor | string | ไม่ | เคอร์เซอร์การแบ่งหน้า |
include_replies | boolean | ไม่ | จะรวมการตอบกลับหรือไม่ |
ตัวอย่าง
curl -X POST 'https://openapi.felo.ai/v2/x/user/tweets' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"username": "elonmusk",
"limit": 20
}'การตอบกลับที่สำเร็จ (200)
{
"status": "ok",
"message": null,
"data": {
"total": 20,
"has_next": true,
"next_cursor": "cursor_def456",
"tweets": [
{
"id": "1234567890",
"content": "Tweet content here...",
"author": { "user_id": "...", "username": "elonmusk" },
"created_at": "2026-03-09T12:00:00Z",
"metrics": {
"retweet_count": 1000,
"favorite_count": 5000,
"reply_count": 200,
"quote_count": 100,
"view_count": 500000,
"bookmark_count": 50
},
"hashtags": ["AI"],
"mentions": ["OpenAI"],
"url": "https://x.com/elonmusk/status/1234567890",
"lang": "en"
}
]
}
}ฟิลด์ของออบเจกต์โพสต์
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
id | string | ID โพสต์ |
content | string | เนื้อหาข้อความของโพสต์ |
author | object | ออบเจกต์ผู้ใช้ที่เป็นผู้เขียน (ดูหัวข้อ 1) |
created_at | string | เวลาสร้างโพสต์ |
metrics | object | เมตริกการมีส่วนร่วม (ดูด้านล่าง) |
replies | array | โพสต์ตอบกลับ (หากมี) |
conversation_id | string | ID ของเธรดบทสนทนา |
media_urls | array | สื่อที่แนบมา |
hashtags | array of strings | แฮชแท็กในโพสต์ |
mentions | array of strings | ชื่อผู้ใช้ที่ถูกกล่าวถึง |
urls | array of strings | URL ในโพสต์ |
url | string | ลิงก์ถาวรไปยังโพสต์ |
source | string | แหล่งที่มาของโพสต์ (เช่น "Twitter Web App") |
lang | string | รหัสภาษาของโพสต์ |
is_reply | boolean | โพสต์นี้เป็นการตอบกลับหรือไม่ |
in_reply_to_id | string | ID ของโพสต์ที่ถูกตอบกลับ |
in_reply_to_user_id | string | ID ผู้ใช้ของโพสต์ที่ถูกตอบกลับ |
in_reply_to_username | string | ชื่อผู้ใช้ของโพสต์ที่ถูกตอบกลับ |
quoted_tweet | object | ออบเจกต์โพสต์ที่ถูกอ้าง (แบบเรียกซ้ำ) |
retweeted_tweet | object | ออบเจกต์โพสต์ที่ถูกรีทวีต (แบบเรียกซ้ำ) |
is_limited_reply | boolean | การตอบกลับถูกจำกัดหรือไม่ |
ฟิลด์ของออบเจกต์เมตริก
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
retweet_count | integer | จำนวนรีทวีต |
favorite_count | integer | จำนวนการกดถูกใจ |
reply_count | integer | จำนวนการตอบกลับ |
quote_count | integer | จำนวนการอ้างโพสต์ |
view_count | integer | จำนวนการดู |
bookmark_count | integer | จำนวนการบันทึก |
4. ค้นหาโพสต์
ค้นหาโพสต์ X ตามคำค้นพร้อมการรองรับคำค้นขั้นสูง
Endpoint
POST https://openapi.felo.ai/v2/x/tweet/searchเนื้อหาคำขอ
| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
query | string | ใช่ | คำค้น (รองรับไวยากรณ์การค้นหาขั้นสูง) |
query_type | string | ไม่ | ตัวกรองประเภทคำค้น |
since_time | integer | ไม่ | ตัวกรองเวลาเริ่ม (เวลาประทับ Unix เป็นวินาที) |
until_time | integer | ไม่ | ตัวกรองเวลาสิ้นสุด (เวลาประทับ Unix เป็นวินาที) |
limit | integer | ไม่ | จำนวนโพสต์ที่จะส่งกลับ |
cursor | string | ไม่ | เคอร์เซอร์การแบ่งหน้า |
ตัวอย่าง
curl -X POST 'https://openapi.felo.ai/v2/x/tweet/search' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "artificial intelligence",
"limit": 20
}'การตอบกลับที่สำเร็จ (200)
{
"status": "ok",
"message": null,
"data": {
"total": 20,
"has_next": true,
"next_cursor": "cursor_ghi789",
"tweets": [
{
"id": "...",
"content": "...",
"author": { "user_id": "...", "username": "..." },
"created_at": "2026-03-09T12:00:00Z",
"metrics": { "retweet_count": 100, "favorite_count": 500 }
}
]
}
}ฟิลด์ของการตอบกลับ
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
total | integer | จำนวนผลลัพธ์ทั้งหมด |
has_next | boolean | มีผลลัพธ์เพิ่มเติมหรือไม่ |
next_cursor | string | เคอร์เซอร์สำหรับหน้าถัดไป |
tweets | array | รายการออบเจกต์โพสต์ (ดูหัวข้อ 3) |
5. ดึงการตอบกลับของโพสต์
ดึงการตอบกลับสำหรับโพสต์ที่ระบุ
Endpoint
POST https://openapi.felo.ai/v2/x/tweet/repliesเนื้อหาคำขอ
| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
tweet_ids | array of strings | ใช่ | ID โพสต์ที่ต้องการดึงการตอบกลับ |
cursor | string | ไม่ | เคอร์เซอร์การแบ่งหน้า |
since_time | integer | ไม่ | ตัวกรองเวลาเริ่ม (เวลาประทับ Unix) |
until_time | integer | ไม่ | ตัวกรองเวลาสิ้นสุด (เวลาประทับ Unix) |
ตัวอย่าง
curl -X POST 'https://openapi.felo.ai/v2/x/tweet/replies' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"tweet_ids": ["1234567890"]
}'การตอบกลับที่สำเร็จ (200)
{
"status": "ok",
"message": null,
"data": {
"results": [
{
"tweet_id": "1234567890",
"total": 10,
"has_next": true,
"next_cursor": "cursor_jkl012",
"replies": [
{
"id": "...",
"content": "Great tweet!",
"author": { "user_id": "...", "username": "..." },
"created_at": "2026-03-09T12:30:00Z"
}
]
}
]
}
}ฟิลด์ของการตอบกลับ
| ฟิลด์ | ชนิด | คำอธิบาย |
|---|---|---|
results | array | รายการออบเจกต์ผลลัพธ์การตอบกลับ |
results[].tweet_id | string | ID โพสต์ต้นฉบับ |
results[].total | integer | จำนวนการตอบกลับทั้งหมด |
results[].has_next | boolean | มีการตอบกลับเพิ่มเติมหรือไม่ |
results[].next_cursor | string | เคอร์เซอร์สำหรับหน้าถัดไป |
results[].replies | array | รายการออบเจกต์โพสต์ตอบกลับ (ดูหัวข้อ 3) |
รหัสข้อผิดพลาด
| รหัส | สถานะ HTTP | คำอธิบาย |
|---|---|---|
UNAUTHORIZED | 401 | คีย์ API ไม่ถูกต้องหรือถูกเพิกถอน |
X_SEARCH_FAILED | 400/500 | คำขอค้นหา X ล้มเหลว (ตรวจสอบพารามิเตอร์หรือข้อผิดพลาดจากปลายทาง) |
RATE_LIMIT_EXCEEDED | 429 | คำขอมากเกินไป โปรดลองใหม่หลังรอช่วงสั้น ๆ |
insufficient_credits | 402 | เครดิตไม่เพียงพอต่อการทำคำขอให้เสร็จ |
เครดิตและขีดจำกัดอัตรา
ค่าใช้จ่ายเครดิต
การเรียก API แต่ละครั้งหักเครดิตตามจำนวนผลลัพธ์ที่ส่งกลับ:
| Endpoint | ค่าใช้จ่ายเครดิต |
|---|---|
POST /x/user/info | 1 เครดิตต่อผู้ใช้ที่ส่งกลับ |
POST /x/user/search | 1 เครดิตต่อผู้ใช้ที่ส่งกลับ |
POST /x/user/tweets | 1 เครดิตต่อโพสต์ที่ส่งกลับ |
POST /x/tweet/search | 1 เครดิตต่อโพสต์ที่ส่งกลับ |
POST /x/tweet/replies | 1 เครดิตต่อการตอบกลับที่ส่งกลับ |
เครดิตจะถูกหักหลังคำขอเสร็จสมบูรณ์ ตามจำนวนผลลัพธ์จริง หากคำขอส่งผลลัพธ์ 0 รายการ จะไม่มีการหักเครดิต
ข้อกำหนดยอดคงเหลือขั้นต่ำ: บัญชีของคุณต้องมีเครดิตอย่างน้อย 10 เครดิตจึงจะส่งคำขอ X API ใดก็ได้ คำขอที่มียอดน้อยกว่า 10 เครดิตจะถูกปฏิเสธด้วย HTTP 402
ขีดจำกัดอัตรา
ขีดจำกัดอัตราบังคับใช้ตามนโยบายบริการ API และนโยบายบัญชีปัจจุบัน เมื่อติดขีดจำกัดอัตรา API จะส่ง HTTP 429 header Retry-After ระบุเวลาที่แนะนำให้รอเป็นวินาที ใช้เอกสารบริการล่าสุดและการตอบกลับจริงของ API เพื่อจัดการขีดจำกัดอัตรา ไม่จำเป็นต้องสมัครสมาชิกเพื่อใช้แพลตฟอร์ม