Contourner l'API payante de Twitter

Mis à jour le samedi 13 avril 2024 par johackim

Depuis que X (Twitter) a rendu son API payante, il est devenu difficile de récupérer le nombre de followers d'un compte. Voici une solution pour récupérer le nombre de followers d'un compte Twitter sans utiliser l'API de Twitter.

Depuis que le projet Nitter est arrêté, la solution présentée dans cet article ne fonctionne plus. Depuis, j'utilise l'API gratuite de Rapid API.

Au lieu de passer par Twitter directement, je passe par Nitter, un front-end open-source pour Twitter.

J'utilise cette technique sur mon blog pour afficher le nombre de followers de mon compte Twitter.

Avec une requête cURL

Si vous exécutez la commande suivante, vous obtiendrez le nombre de followers de mon compte Twitter :

curl -sL --insecure https://nitter.net/_johackim \
-H 'accept-encoding: deflate, gzip' \
-H 'accept-language: en' \
-H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36' \
--compressed | grep -oPz 'Followers[^%]*<span class="profile-stat-num">\d+'

Il suffit de modifier le nom d'utilisateur dans l'URL pour obtenir le nombre de followers d'un autre compte.

Avec Node.js

Voici un exemple de code pour récupérer le nombre de followers d'un compte Twitter avec Node.js :

yarn add -D node-fetch
// index.mjs
import https from 'https';
import fetch from 'node-fetch';
const getTwitterFollowers = async (username) => {
const httpsAgent = new https.Agent({ rejectUnauthorized: false });
const data = await fetch(`https://nitter.net/${username}`, {
agent: httpsAgent,
headers: {
Accept: '*/*',
'Accept-Language': 'en',
'Accept-Encoding': 'deflate, gzip',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
},
})
.then((res) => res.text())
.then((text) => {
const followersMatch = text.match(/Followers<\/span>\s*<span class="profile-stat-num">(\d+)/i);
return followersMatch?.[1]?.trim() || 0;
});
return data;
};
const followers = await getTwitterFollowers('_johackim');
console.log({ followers });
node index.mjs

Voilà, vous savez maintenant comment récupérer le nombre de followers d'un compte Twitter sans utiliser l'API payante de Twitter 😀 !

PS : Si jamais une instance ne fonctionne pas (ex: nitter.net), vous pouvez utiliser une autre instance.


Références :