Felo APIs
X Search API
Durchsuchen Sie X-Nutzer, Tweets, Timelines und Antworten mit Paginierungsmetadaten.
/v2/x/tweet/searchAuthentifizierung
Bearer API key
Inhaltstyp
application/json
Hinweise zu Limits
1 request per 10 seconds, 3 per minute, 10 per 10 minutes.
Die X Search API bietet Zugriff auf Daten von X (Twitter), einschließlich Benutzerprofilen, Tweet-Suche, Benutzer-Tweets und Tweet-Antworten.
Authentifizierung
Alle Anfragen erfordern einen API-Schlüssel im Authorization-Header:
Authorization: Bearer YOUR_API_KEYVerwendung mit KI-Agenten
Installieren Sie das vollständige Paket felo-ai, um einem Agenten X Search und jeden anderen verfügbaren Felo-Skill bereitzustellen. Der Installer ermittelt dynamisch jedes Paketverzeichnis mit SKILL.md, statt eine feste Skill-Liste zu pflegen. Installieren Sie alle gefundenen Skills in Codex ~/.codex/skills, Claude Code ~/.claude/skills, OpenClaw ~/.agents/skills oder Hermes Agent ~/.hermes/skills. Siehe die manuelle Einrichtungsanleitung für KI-Agenten für plattformspezifische Installation, API-Schlüssel und Prüfung.
1. Benutzerinformationen abrufen
Rufen Sie X-Benutzerprofile anhand des Benutzernamens im Batch ab.
Endpoint
POST https://openapi.felo.ai/v2/x/user/infoAnfrage-Textkörper
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
usernames | array of strings | Ja | Liste der nachzuschlagenden X-Benutzernamen |
Beispiel
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"]
}'Erfolgreiche Antwort (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"
}
]
}
}Felder des Benutzerobjekts
| Feld | Typ | Beschreibung |
|---|---|---|
user_id | string | X-Benutzer-ID |
username | string | X-Handle (ohne @) |
display_name | string | Anzeigename |
description | string | Benutzer-Bio |
followers_count | integer | Anzahl der Follower |
following_count | integer | Anzahl der gefolgten Konten |
tweet_count | integer | Gesamtzahl der Tweets |
verified | boolean | Ob das Konto verifiziert ist |
blue_verified | boolean | Ob das Konto eine Blue-Verifizierung hat |
verified_type | string | Verifizierungstyp |
profile_image_url | string | URL des Profilbilds |
cover_image_url | string | URL des Titelbilds |
created_at | string | Erstellungszeit des Kontos |
location | string | Standort des Benutzers |
url | string | Website-URL des Benutzers |
protected | boolean | Ob das Konto geschützt ist |
favorites_count | integer | Anzahl der Likes |
media_count | integer | Anzahl der Medienbeiträge |
can_dm | boolean | Ob Direktnachrichten geöffnet sind |
is_automated | boolean | Ob das Konto automatisiert ist |
pinned_tweet_ids | array of strings | IDs angepinnter Tweets |
2. Benutzer suchen
Durchsuchen Sie X-Benutzer nach Stichwort.
Endpoint
POST https://openapi.felo.ai/v2/x/user/searchAnfrage-Textkörper
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
query | string | Ja | Suchstichwort |
cursor | string | Nein | Paginierungs-Cursor aus der vorherigen Antwort |
Beispiel
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"
}'Erfolgreiche Antwort (200)
{
"status": "ok",
"message": null,
"data": {
"total": 50,
"has_next": true,
"next_cursor": "cursor_abc123",
"users": [
{
"user_id": "...",
"username": "...",
"display_name": "..."
}
]
}
}Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
total | integer | Gesamtzahl der Ergebnisse |
has_next | boolean | Ob weitere Ergebnisse verfügbar sind |
next_cursor | string | Cursor für die nächste Seite |
users | array | Liste der Benutzerobjekte (siehe Abschnitt 1) |
3. Tweets eines Benutzers abrufen
Rufen Sie Tweets eines bestimmten X-Benutzers ab.
Endpoint
POST https://openapi.felo.ai/v2/x/user/tweetsAnfrage-Textkörper
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
x_user_id | string | Nein | X-Benutzer-ID (geben Sie entweder x_user_id oder username an) |
username | string | Nein | X-Benutzername (geben Sie entweder x_user_id oder username an) |
limit | integer | Nein | Anzahl der zurückzugebenden Tweets |
cursor | string | Nein | Paginierungs-Cursor |
include_replies | boolean | Nein | Ob Antworten eingeschlossen werden |
Beispiel
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
}'Erfolgreiche Antwort (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"
}
]
}
}Felder des Tweet-Objekts
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Tweet-ID |
content | string | Textinhalt des Tweets |
author | object | Benutzerobjekt des Autors (siehe Abschnitt 1) |
created_at | string | Erstellungszeit des Tweets |
metrics | object | Interaktionsmetriken (siehe unten) |
replies | array | Antwort-Tweets (sofern verfügbar) |
conversation_id | string | ID des Konversations-Threads |
media_urls | array | Angehängte Medien |
hashtags | array of strings | Hashtags im Tweet |
mentions | array of strings | Erwähnte Benutzernamen |
urls | array of strings | URLs im Tweet |
url | string | Permalink zum Tweet |
source | string | Quelle des Tweets (z. B. "Twitter Web App") |
lang | string | Sprachcode des Tweets |
is_reply | boolean | Ob dies eine Antwort ist |
in_reply_to_id | string | ID des Tweets, auf den geantwortet wird |
in_reply_to_user_id | string | Benutzer-ID des Tweets, auf den geantwortet wird |
in_reply_to_username | string | Benutzername des Tweets, auf den geantwortet wird |
quoted_tweet | object | Zitiertes Tweet-Objekt (rekursiv) |
retweeted_tweet | object | Retweetetes Tweet-Objekt (rekursiv) |
is_limited_reply | boolean | Ob Antworten eingeschränkt sind |
Felder des Metrics-Objekts
| Feld | Typ | Beschreibung |
|---|---|---|
retweet_count | integer | Anzahl der Retweets |
favorite_count | integer | Anzahl der Likes |
reply_count | integer | Anzahl der Antworten |
quote_count | integer | Anzahl der Zitate |
view_count | integer | Anzahl der Aufrufe |
bookmark_count | integer | Anzahl der Lesezeichen |
4. Tweets suchen
Durchsuchen Sie X-Tweets nach Stichwort mit Unterstützung erweiterter Abfragen.
Endpoint
POST https://openapi.felo.ai/v2/x/tweet/searchAnfrage-Textkörper
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
query | string | Ja | Suchabfrage (unterstützt erweiterte Suchsyntax) |
query_type | string | Nein | Filter für den Abfragetyp |
since_time | integer | Nein | Filter für die Startzeit (Unix-Zeitstempel in Sekunden) |
until_time | integer | Nein | Filter für die Endzeit (Unix-Zeitstempel in Sekunden) |
limit | integer | Nein | Anzahl der zurückzugebenden Tweets |
cursor | string | Nein | Paginierungs-Cursor |
Beispiel
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
}'Erfolgreiche Antwort (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 }
}
]
}
}Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
total | integer | Gesamtzahl der Ergebnisse |
has_next | boolean | Ob weitere Ergebnisse verfügbar sind |
next_cursor | string | Cursor für die nächste Seite |
tweets | array | Liste der Tweet-Objekte (siehe Abschnitt 3) |
5. Antworten auf einen Tweet abrufen
Rufen Sie Antworten auf bestimmte Tweets ab.
Endpoint
POST https://openapi.felo.ai/v2/x/tweet/repliesAnfrage-Textkörper
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
tweet_ids | array of strings | Ja | Tweet-ID(s), deren Antworten abgerufen werden sollen |
cursor | string | Nein | Paginierungs-Cursor |
since_time | integer | Nein | Filter für die Startzeit (Unix-Zeitstempel) |
until_time | integer | Nein | Filter für die Endzeit (Unix-Zeitstempel) |
Beispiel
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"]
}'Erfolgreiche Antwort (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"
}
]
}
]
}
}Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
results | array | Liste der Antwort-Ergebnisobjekte |
results[].tweet_id | string | ID des ursprünglichen Tweets |
results[].total | integer | Gesamtzahl der Antworten |
results[].has_next | boolean | Ob weitere Antworten verfügbar sind |
results[].next_cursor | string | Cursor für die nächste Seite |
results[].replies | array | Liste der Antwort-Tweet-Objekte (siehe Abschnitt 3) |
Fehlercodes
| Code | HTTP-Status | Beschreibung |
|---|---|---|
UNAUTHORIZED | 401 | Der API-Schlüssel ist ungültig oder widerrufen |
X_SEARCH_FAILED | 400/500 | Die X-Suche-Anfrage ist fehlgeschlagen (prüfen Sie die Parameter oder den Downstream-Fehler) |
RATE_LIMIT_EXCEEDED | 429 | Zu viele Anfragen; versuchen Sie es nach kurzer Verzögerung erneut |
insufficient_credits | 402 | Nicht genügend Service-Guthaben, um die Anfrage abzuschließen |
Service-Guthaben und Rate-Limits
Kosten in Service-Guthaben
Jeder API-Aufruf zieht Service-Guthaben auf Grundlage der Anzahl der zurückgegebenen Ergebnisse ab:
| Endpoint | Kosten |
|---|---|
POST /x/user/info | 1 Service-Guthaben pro zurückgegebenem Benutzer |
POST /x/user/search | 1 Service-Guthaben pro zurückgegebenem Benutzer |
POST /x/user/tweets | 1 Service-Guthaben pro zurückgegebenem Tweet |
POST /x/tweet/search | 1 Service-Guthaben pro zurückgegebenem Tweet |
POST /x/tweet/replies | 1 Service-Guthaben pro zurückgegebener Antwort |
Service-Guthaben werden nach Abschluss der Anfrage auf Grundlage der tatsächlichen Ergebniszahl abgezogen. Wenn eine Anfrage 0 Ergebnisse zurückgibt, wird kein Service-Guthaben abgezogen.
Mindestguthaben: Ihr Konto muss über mindestens 10 Service-Guthaben verfügen, um eine X-API-Anfrage zu stellen. Anfragen mit weniger als 10 Service-Guthaben werden mit HTTP 402 abgelehnt.
Rate-Limits
Rate-Limits werden gemäß den aktuellen Richtlinien des API-Dienstes und des Kontos durchgesetzt. Bei Erreichen eines Rate-Limits gibt die API HTTP 429 zurück. Der Header Retry-After gibt die empfohlene Wartezeit in Sekunden an. Verwenden Sie die aktuelle Dienstdokumentation und die tatsächlichen API-Antworten, um Rate-Limits zu behandeln; ein Abonnement ist für die Nutzung der Plattform nicht erforderlich.