twitterapi.io (lecture seule)
Compétence en lecture seule maintenue par l'équipe twitterapi.io. Elle couvre uniquement les données publiques X/Twitter : elle ne se connecte jamais à un compte X, ne gère jamais de cookies, mots de passe ou proxies, et ne publie, aime, suit ou envoie jamais de messages.
twitterapi.io est une API REST tierce indépendante pour les données publiques X, non affiliée à X Corp. Si vous avez besoin de l'API officielle de X, elle se trouve sur https://developer.x.com.
Quand utiliser cette compétence
- Rechercher des publications avec les opérateurs de recherche X (
from:,since_time:,min_faves:,lang:…) - Consulter les profils utilisateurs, abonnés, abonnements
- Obtenir les publications récentes, réponses, citations, retweeteurs, contexte de fil
- Tendances, listes, communautés
- Créer des tableaux de bord, des ensembles de données de recherche ou des tâches de surveillance sur des données publiques
Informations essentielles
| URL de base | https://api.twitterapi.io |
| En-tête d'authentification | x-api-key: VOTRE_CLÉ (depuis https://twitterapi.io/dashboard) |
| Documentation | https://docs.twitterapi.io |
| Tarifs | paiement par appel, voir https://twitterapi.io/pricing |
| Serveur MCP hébergé | https://mcp.twitterapi.io/mcp (12 outils en lecture seule) |
Sécurité
Lire la clé API depuis la variable d'environnement TWITTERAPI_IO_KEY. Ne jamais la coder en dur, l'imprimer ou la commiter. Si elle est absente, demander à l'utilisateur d'en créer une sur le tableau de bord.
Exemple minimal
curl -s "https://api.twitterapi.io/twitter/user/info?userName=jack" \
-H "x-api-key: $TWITTERAPI_IO_KEY"
import os, requests
BASE = "https://api.twitterapi.io"
HEADERS = {"x-api-key": os.environ["TWITTERAPI_IO_KEY"]}
r = requests.get(f"{BASE}/twitter/tweet/advanced_search",
headers=HEADERS,
params={"query": "from:jack", "queryType": "Latest"},
timeout=30)
r.raise_for_status()
for t in r.json().get("tweets", []):
print(t["createdAt"], t["text"][:80])
Points d'accès en lecture
Les noms de paramètres diffèrent selon le point d'accès (certains en camelCase, d'autres en snake_case). Recopiez-les exactement comme indiqué.
| Capacité | Méthode | Chemin et paramètre clé |
|---|---|---|
| Utilisateur par nom d'utilisateur | GET | /twitter/user/info?userName= |
| Profil étendu | GET | /twitter/user_about?userName= |
| Utilisateurs par IDs | GET | /twitter/user/batch_info_by_ids?userIds= |
| Rechercher des utilisateurs | GET | /twitter/user/search?query= |
| Publications récentes | GET | /twitter/user/last_tweets?userName= (ou userId=) |
| Mentions | GET | /twitter/user/mentions?userName= |
| Abonnés | GET | /twitter/user/followers?userName=&pageSize=200 |
| Abonnements | GET | /twitter/user/followings?userName= |
| Publications par IDs | GET | /twitter/tweets?tweet_ids= |
| Réponses | GET | /twitter/tweet/replies?tweetId= |
| Citations | GET | /twitter/tweet/quotes?tweetId= |
| Retweeteurs | GET | /twitter/tweet/retweeters?tweetId= |
| Contexte de fil | GET | /twitter/tweet/thread_context?tweetId= |
| Recherche avancée | GET | /twitter/tweet/advanced_search?query=&queryType=Latest |
| Tendances | GET | /twitter/trends?woeid=1 |
| Publications d'une liste | GET | /twitter/list/tweets?listId= |
| Membres d'une liste | GET | /twitter/list/members?list_id= |
| Publications d'une communauté | GET | /twitter/community/tweets?community_id= |
| Solde du compte | GET | /oapi/my/info |
Modèles d'utilisation
Pagination
Les points d'accès à des listes renvoient has_next_page et next_cursor. Passez next_cursor en paramètre cursor ; arrêtez-vous lorsque has_next_page est faux. Définissez toujours une limite de pages pour qu'un bogue ne puisse pas paginer indéfiniment.
Erreurs
400→ un paramètre requis est manquant ou la requête de recherche est invalide (ledetailde la réponse indique quoi corriger)401/403→x-api-keymanquante ou erronée402→ crédits insuffisants ; arrêtez-vous et dites à l'utilisateur de recharger (ne réessayez pas)429→ limite de débit atteinte ; réessayez avec un backoff5xx→ erreur transitoire ; réessayez avec un backoff
Sensibilité au coût
Chaque appel est facturé. Avant une boucle qui pourrait s'exécuter longtemps (tous les abonnés d'un grand compte, des mois de recherche), estimez le nombre d'appels et confirmez avec l'utilisateur.
Anti-patrons
- Ne normalisez pas les noms de paramètres ; recopiez-les depuis le tableau
- Ne réessayez pas sur une erreur
402 - Ne journalisez ni ne commitez la clé API