2026年6月公開、2026年7月6日更新:X の現行の従量課金の料金(2026年4月の書き込みコストの変更を含む)と、X が2025年後半にリリースした公式の Python と TypeScript の XDK を反映しています。
2026年7月6日更新:Sorsa の料金を1,000件あたりのバッチレートに刷新し、100回分の無料リクエストの開始オファーを追加しました。
要点: 2026年に Node.js で Twitter/X データを取得する実用的な方法は4つあります。公式の TypeScript XDK、twitter-api-v2 ライブラリ、ベアラートークンでの素の fetch、または読み取り専用のサードパーティ REST API です。公式の経路はリソース単位で課金し OAuth 認証情報を必要とします。キーだけの API は読み取りの多い作業に向いています。
「twitter api nodejs」を検索して、手早い npm install とツイートを返すスニペットを期待していたなら、2026年の状況は古いチュートリアルが示唆するよりも雑然としています。X は料金モデルを変え、読み取りの課金方法を変え、そして初めて JavaScript 向けの公式 SDK を出荷しました。ランキング上位のほとんどの Node ガイドは、いまだに有料の開発者アカウントを通じた投稿を教えており、そのどれにも追いついていません。
当社は代替の Twitter/X API である Sorsa API をビルドして運用しているため、読み取り専用の経路は最も熟知した領域です。それは、ApiKey ヘッダーの中の1つの API キーで、OAuth フローも、待つべき開発者アカウントの承認もなく、プロフィール、ツイート、検索結果、フォロワーを1回の fetch 呼び出しからきれいな JSON として返します。読み取りの多い作業では、公式 X API のおよそ50分の1の安さで動き、すべてのプランで一律の毎秒20リクエストを保ち、バッチエンドポイントで1,000ツイートあたり約$0.02になり、フラットなプランは月額$49からです。すべての新規キーは100回分の無料リクエストを含み、クレジットカード不要で、支払う前に試せます。どのプロジェクトもその型に合うわけではありません。投稿が必要なものもあれば、コンプライアンスのために公式 API が必要なものもあり、単に内部の仕組みを理解したいチームもあります。本ガイドは、動作する Node.js のコード、現行の料金、そしてページネーションしてレート制限でバックオフする完全なコレクターとともに、4つの方法すべてを扱います。コードを書かずに呼び出しをテストすることも playground でできます。
目次
- 何が変わったか:2026年の X API と Node.js のツール
- Node.js で X API に最適なライブラリ
- どのアプローチを使うべきか?
- 方法1:公式の TypeScript XDK
- 方法2:twitter-api-v2
- 方法3:ベアラートークンでの素の fetch
- 方法4:読み取り専用の REST API
- ブラウザから X API を呼べる?
- Node.js でデータコレクターを作る
- 比較:4つの方法を並べて
- API 認証情報の取得方法
- 実践:Node のコレクターを公式 API から移す
- よくある質問
- 始め方
何が変わったか:2026年の X API と Node.js のツール {#what-changed-the-x-api-and-nodejs-tooling-in-2026}
2023年以降、Node 開発者にとって3つのことが変わりました。X API は無料枠のない従量課金に移り、今はリソースの読み取り単位で課金します。書き込みは2026年4月の更新後により高くなりました。そして X は、長年のコミュニティライブラリ twitter-api-v2 と並んで、Node で動く TypeScript パッケージを含む最初の公式 SDK を出荷しました。
従量課金がデフォルト。 新規登録に無料枠も$100の Basic プランもありません。前払いでクレジットを買い、リソース単位で支払います。投稿の読み取りあたり$0.005、ユーザープロフィールあたり$0.010、フォロワーまたはフォロー中のレコードあたり$0.010です。自分のアカウントのデータの読み取りはリソースあたり$0.001ですが、そのレートは他のアカウントを読むときには適用されません。また標準アカウントには月間200万投稿読み取りのハードキャップがあります。完全な内訳は、X API 料金の内訳 と なぜ X API の料金が上がったか の解説をご覧ください。
書き込みはより高くなった。 2026年4月の更新後、標準の投稿はリクエストあたり$0.015、URL を含む投稿は$0.20かかります。フォロー、いいね、引用投稿のアクションはセルフサーブの層から削除され、今は Enterprise 契約を必要とします。フォローバックボットや自動いいねは、標準の従量課金アカウントではもう不可能です。
X は公式 SDK をリリースした。 2025年後半、X は Python と TypeScript 向けのファーストパーティの XDK(X Developer Kit)を発表しました(開発者向けの発表で確認)。TypeScript XDK は、X が出荷した最初の公式 JavaScript クライアントです。v2エンドポイントを型付きモデルでラップし、ページネーションを扱い、ストリーミングをサポートします。
twitter-api-v2 はまだ動く。 コミュニティライブラリ twitter-api-v2 は v1.1 と v2 の両方をサポートし、読み取り・書き込み・DM のフローを動かし、最も広く使われている Node のラッパーであり続けています。既存のコードは現行の認証情報で動き続けます。
古いライブラリは死んでいる。 npm 上の twit と twitter のパッケージは2017年以降まともな更新がなく、v1.1 しか話しません。チュートリアルが npm install twit と告げるなら、それは時代遅れです。
Node.js で X API に最適なライブラリ {#the-best-library-for-the-x-api-in-nodejs}
ほとんどの Node プロジェクトには、twitter-api-v2 が最良の汎用ライブラリです。成熟し、完全に型付けされ、ベアラートークンと OAuth を通じて読み取り・書き込み・DM のフローをサポートします。API 仕様を正確に追うファーストパーティのツールが欲しいなら、公式の TypeScript XDK を使います。読み取り専用のデータ収集には、多くのチームがライブラリを飛ばして、素の fetch でサードパーティの REST API を呼び、OAuth を完全に取り除きます。
主要な選択肢の比較は次のとおりです。
| ライブラリ / ツール | 種類 | 最適な用途 | 備考 |
|---|---|---|---|
| 公式 TypeScript XDK | 公式 | 新規ビルド、ファーストパーティのサポート | 型付き、自動ページネーション、ストリーミング、Node・ブラウザ・React Native で動作。新しい(v0.5、2026年2月)。有料の X クレジットが必要。 |
| twitter-api-v2 | コミュニティ | 一般的な連携、ボット、スクリプト | 成熟、型付き、読み取り/書き込み/DM クライアント、ページネーションとレート制限のリトライを扱う。有料の X クレジットが必要。 |
| twit / twitter | コミュニティ | 避ける | 2017年以降メンテナンスされておらず、v1.1 のみ。 |
| fetch / axios(ラッパーなし) | 標準 | 最小限の依存、カスタムクライアント | ページネーションとエラー処理を自分で作る。サードパーティ API とよく合う。 |
| 読み取り専用の REST API | サードパーティ | 読み取りの多いデータ収集 | ヘッダーの中の1つのキー、OAuth なし、フラットなリクエスト単位の課金。読み取り専用。 |
公式 API を対象とするすべての選択肢は X の従量課金の料金を通じて課金するため、XDK、twitter-api-v2、素の fetch のどれで X を呼んでもコストは同じです。実際に制御できる変数は、何件のリソースを取得するかで、そこがバッチエンドポイントとフラットレートの API が計算を変えるところです。
どのアプローチを使うべきか? {#which-approach-should-you-use}
コードを書く前に経路を選びます。公式サポートでの読み書きには XDK か twitter-api-v2 を使います。最小限のセットアップで量のある読み取り専用データには、サードパーティの REST API が OAuth と審査待ちの行列を取り除きます。依存なしの完全な制御には、素の fetch とベアラートークンが動きます。選択はほぼ、読み取り対書き込みと、どれだけの量を取得するかです。
| 必要なもの… | 使うもの… |
|---|---|
| 完全な公式サポートでの読み書き | 公式 XDK または twitter-api-v2 |
| 規模のある読み取り専用データ、最小限のセットアップ | 読み取り専用のサードパーティ REST API |
| HTTP の完全な制御、依存ゼロ | 素の fetch とベアラートークン |
| 投稿、またはフォロー/いいね(Enterprise) | 公式 XDK または twitter-api-v2(OAuth 必須) |
プロジェクトが公開データを読むだけなら、サードパーティ API が OAuth の煩雑な手順を取り除きます。ヘッダーの中の1つのキーで、開発者アカウントの申請もクレジットの購入もなく、データの取得を始められます。投稿や書き込みアクションが必要なら、XDK か twitter-api-v2 を通じた公式 X API が経路です。ユーザーの代わりに投稿するサードパーティのプロバイダーはありません。代わりに Python で作業していますか。本ガイドの Python 版 をご覧ください。
方法1:公式の TypeScript XDK {#method-1-the-official-typescript-xdk}
TypeScript XDK は X の最初の公式 JavaScript SDK です。v2 API を型付きモデルでラップし、ページネーションを扱い、ストリーミングをサポートし、Node.js・ブラウザ・React Native で動作します。Node.js 16 以降を必要とし、ベアラートークン、OAuth 2.0 PKCE、OAuth 1.0a の認証をサポートします。
インストールします。
npm install @xdevplatform/xdk
ベアラートークンは公開データを読むのに十分です。プロフィールを照会します。
import { Client } from "@xdevplatform/xdk";
// App-only auth: a bearer token covers read-only access to public data
const client = new Client({ bearerToken: process.env.X_API_BEARER_TOKEN });
async function main() {
const user = await client.users.getByUsername("elonmusk");
console.log(user.data?.username, user.data?.name);
}
main();
SDK はリストエンドポイント向けにページネーターを出荷します。自動ページネーションでユーザーのフォロワーを取得します。
import { Client, UserPaginator } from "@xdevplatform/xdk";
const client = new Client({ bearerToken: process.env.X_API_BEARER_TOKEN });
const followers = new UserPaginator(async (token) => {
const res = await client.users.getFollowers("44196397", {
maxResults: 100,
paginationToken: token,
userfields: ["id", "name", "username"],
});
return { data: res.data ?? [], meta: res.meta, includes: res.includes, errors: res.errors };
});
for await (const follower of followers) {
console.log(follower.username);
}
XDK は検索とタイムライン向けに client.posts を、リアルタイムのフィード向けに client.stream も公開します。公式サポートが欲しく、書き込みアクセスが必要で、新規ビルドを始めるときの正しい選択です。トレードオフは、SDK が新しい(2026年2月時点で v0.5)こと、ドキュメントがまだ薄いこと、そしてすべての呼び出しで X のリソース単位の料金を支払うことです。
方法2:twitter-api-v2 {#method-2-twitter-api-v2}
twitter-api-v2 は何年もデフォルトの Node クライアントでした。v1.1 と v2 をサポートし、別々の読み取り専用・読み書き・DM のクライアントを公開し、ページネーションとレート制限のヘッダーを扱います。Python の Tweepy に最も近い Node の相当物です。
npm からインストールします。
npm install twitter-api-v2
ベアラートークンから読み取り専用クライアントを作り、プロフィールを照会します。
import { TwitterApi } from "twitter-api-v2";
const client = new TwitterApi(process.env.X_API_BEARER_TOKEN).readOnly;
const user = await client.v2.userByUsername("elonmusk", {
"user.fields": ["description", "public_metrics", "created_at"],
});
console.log(user.data.username, user.data.public_metrics?.followers_count);
直近7日間を検索します。search メソッドは、直接反復できるページネーターを返します。
const search = await client.v2.search("nodejs lang:en", {
max_results: 20,
"tweet.fields": ["created_at", "public_metrics"],
});
for await (const tweet of search) {
console.log(tweet.text);
}
ユーザーのフォロワーをページネーターとして取得します。
const followers = await client.v2.followers("44196397", { asPaginator: true });
for await (const follower of followers) {
console.log(follower.username);
}
twitter-api-v2 は、ほとんどの Node 開発者にとって安全なデフォルトです。実戦で試され、よく文書化され、ほぼどんな問題にも答えがあります。トレードオフは XDK と一致します。依然として有料の X 開発者アカウントが必要で、依然としてリソース単位で支払い、レート制限は公式 API から継承されます(エンドポイントによって、通常は15分の窓あたり300〜900リクエスト)。
方法3:ベアラートークンでの素の fetch {#method-3-plain-fetch-with-a-bearer-token}
ライブラリもラッパーもありません。Node 18 以降はグローバルの fetch を出荷するため、ベアラートークンで依存ゼロで X API v2 を直接呼べます。これは、リクエストの完全な制御が欲しい開発者や、パッケージのインストールが制限された環境で働く人に向いています。
最近のツイートを検索します。
// Node 18+ has global fetch, so no dependencies are needed
const headers = { Authorization: `Bearer ${process.env.X_API_BEARER_TOKEN}` };
const url = new URL("https://api.x.com/2/tweets/search/recent");
url.searchParams.set("query", "nodejs lang:en");
url.searchParams.set("max_results", "20");
url.searchParams.set("tweet.fields", "created_at,public_metrics");
const res = await fetch(url, { headers });
const data = await res.json();
for (const tweet of data.data ?? []) {
console.log(tweet.text);
}
公式 API はレスポンスの meta の中の next_token でページネーションします。幅広いクエリが暴走しないようにガードを付けて、すべての結果をページネーションします。
async function searchAll(query, maxPages = 10) {
const headers = { Authorization: `Bearer ${process.env.X_API_BEARER_TOKEN}` };
const all = [];
let nextToken;
let pages = 0;
do {
const url = new URL("https://api.x.com/2/tweets/search/recent");
url.searchParams.set("query", query);
url.searchParams.set("max_results", "100");
if (nextToken) url.searchParams.set("next_token", nextToken);
const res = await fetch(url, { headers });
const data = await res.json();
all.push(...(data.data ?? []));
nextToken = data.meta?.next_token;
pages += 1;
} while (nextToken && pages < maxPages);
return all;
}
これは、最小限の依存が欲しいときや、API の挙動をデバッグしているときに動きます。欠点は明らかです。ページネーション、エラーコード、レート制限、リトライを自分で扱います。本番のパイプラインには、結局ラッパーを作り直すことになります。この方法も X 開発者アカウントと従量課金クレジットを、読み取り専用アクセスにはベアラートークンを必要とします。
方法4:読み取り専用の REST API {#method-4-a-read-only-rest-api}
プロジェクトが公開の Twitter データを読むだけなら、サードパーティの REST API が公式 API を完全に飛ばします。OAuth も、申請のステップも、クレジット購入のワークフローもなく、ヘッダーの中の1つのキーと、返ってくる JSON だけです。読み取り専用のワークロードには、公式 API のセットアップのほとんどを取り除き、データ収集を素の HTTP 呼び出しに変えます。
これが 開発者アカウントなしで X データを取得する 実用的な経路です。fetch だけを使った Sorsa での見え方は次のとおりです。
ユーザープロフィールを取得します。
const headers = { ApiKey: process.env.SORSA_API_KEY };
const res = await fetch("https://api.sorsa.io/v3/info?username=elonmusk", { headers });
const user = await res.json();
console.log(`@${user.username}: ${user.display_name}`);
console.log(`Followers: ${user.followers_count}`);
完全なウェブのコマンドセットでツイートを検索します。検索エンドポイントは1ページあたり約20ツイートと、次のページ用の next_cursor を返します。
const res = await fetch("https://api.sorsa.io/v3/search-tweets", {
method: "POST",
headers: { ApiKey: process.env.SORSA_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query: "nodejs lang:en", order: "latest" }),
});
const { tweets, next_cursor } = await res.json();
for (const tweet of tweets) {
console.log(`${tweet.likes_count} likes: ${tweet.full_text}`);
}
複雑なクエリには、高度な検索と同じ方法でコマンドを組み合わせます。完全なリストは 検索コマンドのリファレンス にあり、エンドポイントは直近7日間だけでなく 完全なツイートアーカイブ を検索します。深い版が欲しいなら、API を通じてツイートを検索する の専用ガイドがあります。
フォロワーリストを取得します。1回のリクエストが最大200件のプロフィールを返します。
const headers = { ApiKey: process.env.SORSA_API_KEY };
const res = await fetch("https://api.sorsa.io/v3/followers?username=elonmusk", { headers });
const { users, next_cursor } = await res.json();
console.log(`Got ${users.length} followers in one request`);
バルクエンドポイントで最大100ツイートを1回の呼び出しで取得します。これは完全なツイートオブジェクト(指標と作者込み)を返し、1リクエストと数えます。
const res = await fetch("https://api.sorsa.io/v3/tweet-info-bulk", {
method: "POST",
headers: { ApiKey: process.env.SORSA_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({
tweet_links: ["1782368585664626774", "1782368585664626775"],
}),
});
const { tweets } = await res.json();
すべてのツイートレスポンスは完全な作者プロフィールと公開指標(likes_count、retweet_count、reply_count、quote_count、view_count)を運ぶため、API を通じてツイート指標を読む ことと フォロワーリストを取得する ことに追加の呼び出しはかかりません。ヘッダーは ApiKey、ベース URL は https://api.sorsa.io/v3、そしてレスポンスの形は API ドキュメント に正確に一致します。
ブラウザから X API を呼べる? {#can-you-call-the-x-api-from-the-browser}
いいえ。クライアントサイドの JavaScript から X API を安全に直接呼ぶことはできません。すべての認証済みリクエストがベアラートークンか OAuth シークレットを必要とし、ブラウザのコードの中の何もかもが、開発者ツールを開く誰にでも見えるからです。呼び出しはたいていの場合クロスオリジンでも失敗します。標準の修正は、認証情報を保持し、フロントエンドが必要とするデータだけを公開する小さなサーバーサイドのプロキシです。
形はシンプルです。Vercel、Cloudflare Workers、Netlify、または任意のホスト上のサーバーレス関数が、環境変数からシークレットを読み、API をサーバー側で呼び、ブラウザにきれいな JSON を返します。
// /api/tweets (serverless function, runs on the server, not in the browser)
export default async function handler(req, res) {
const r = await fetch("https://api.sorsa.io/v3/search-tweets", {
method: "POST",
headers: { ApiKey: process.env.SORSA_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query: req.query.q, order: "latest" }),
});
const data = await r.json();
res.status(200).json(data);
}
ブラウザはその後、データプロバイダーではなく自分の /api/tweets エンドポイントを呼び、キーはサーバーを決して離れません。公式 TypeScript XDK は技術的にはブラウザと React Native で動きますが、それはルールを変えません。ベアラートークンをクライアントのコードに出荷するとそれが露出するため、どのクライアントを使うにせよ、認証情報はサーバーのエンドポイントの背後に保ちます。
Node.js でデータコレクターを作る {#building-a-data-collector-in-nodejs}
本番のコレクターは、単一の呼び出しを超えて3つのものを必要とします。最初のページを超えて進むカーソルページネーション、幅広いクエリがクォータを使い果たさないためのページガード、そしてレート制限でのリトライです。以下は、検索エンドポイントに対する完全な読み取り専用コレクターで、next_cursor でページネーションし、429 でバックオフします。
async function collectTweets(query, maxPages = 20) {
const endpoint = "https://api.sorsa.io/v3/search-tweets";
const headers = { ApiKey: process.env.SORSA_API_KEY, "Content-Type": "application/json" };
const collected = [];
let cursor;
let pages = 0;
while (pages < maxPages) {
const body = { query, order: "latest" };
if (cursor) body.next_cursor = cursor;
const res = await fetch(endpoint, {
method: "POST",
headers,
body: JSON.stringify(body),
});
// Flat 20 requests per second limit: on a 429, wait a second and retry the same page
if (res.status === 429) {
await new Promise((r) => setTimeout(r, 1000));
continue;
}
const data = await res.json();
collected.push(...(data.tweets ?? []));
cursor = data.next_cursor;
pages += 1;
if (!cursor) break;
}
return collected;
}
// Usage
const tweets = await collectTweets("from:OpenAI -is:retweet");
console.log(`Collected ${tweets.length} tweets`);
Sorsa 側でコレクターを検索エンドポイントに対して作り直したとき、実際に重要だった変数はライブラリではなく、各呼び出しが何件のリソースを返すか、そして課金がそれにどう反応するかでした。フラットなリクエスト単位の制限は、エンドポイント別の窓よりもペース配分が簡単です。リセットのタイムスタンプを追う代わりに、429 で1秒待ちます。カーソルの仕組みは ページネーションガイド で、公式側は X API レート制限 のリファレンスで扱っています。同じループは、エンドポイントとボディを変えるだけで /user-tweets、/followers、/mentions にきれいに入れ替わります。
比較:4つの方法を並べて {#comparison-four-methods-side-by-side}
4つの方法は2つの軸できれいに分かれます。書き込めるかどうかと、どう課金されるかです。3つの公式 API の経路はすべて開発者アカウントを必要とし、リソース単位で課金します。読み取り専用の API は、書き込みアクセスを、単一のキーとフラットなリクエスト単位の課金と引き換えにします。
| 方法 | セットアップ | 認証 | 読み取り | 書き込み | 課金 |
|---|---|---|---|---|---|
| 公式 TypeScript XDK | 開発者アカウント、クレジット | ベアラー / OAuth 2.0 / OAuth 1.0a | あり | あり(投稿;フォロー・いいね・引用は Enterprise) | リソース単位 |
| twitter-api-v2 | 開発者アカウント、クレジット | ベアラー / OAuth | あり | あり | リソース単位 |
| 素の fetch | 開発者アカウント、クレジット | ベアラー / OAuth | あり | あり | リソース単位 |
| 読み取り専用の REST API | API キー、約3分 | 単一の ApiKey ヘッダー | あり | なし(読み取り専用) | フラットなリクエスト単位 |
この分かれ方が、どれを選ぶべきかを教えます。投稿や書き込みアクションの実行が必要なら、それは XDK か twitter-api-v2 を通じた公式 API の領分です。フラットで予測しやすい価格での読み取りの多いアクセスには、読み取り専用の API が安く単純な経路で、同じ公開データを返します。
読み取りのコスト差は、完全に課金単位から来ます。公式 API はレスポンスの中のすべての投稿とすべての作者プロフィールに課金します。フラットレートの API は、何件の項目を返そうと1リクエストに課金します。
| ワークロード | 公式 X API | 読み取り専用 API(Sorsa Pro) |
|---|---|---|
| 20ツイートを返す検索、作者データ込み | $0.30(20 × $0.005に20 × $0.010を加算) | 1リクエスト、約$0.002(作者込み) |
| 1,000件のフォロワープロフィール | 約$10(プロフィール単位) | 約$0.01(1ページ200件で5リクエスト) |
| ID による100ツイート、作者データ込み | $1.50(100 × $0.005に100 × $0.010を加算) | 1リクエスト、約$0.002(バルクエンドポイント) |
| 月次上限 | 200万投稿読み取り | プランによる(10,000〜500,000リクエスト) |
| レート制限 | 15分あたり300〜900(変動) | 毎秒20リクエスト、フラット |
読み取りの多い作業には、リソース単位のモデルは単純な仕事をする高価な方法で、それが、月およそ10,000読み取りを越えるとフラットなリクエスト単位のレートが勝つ理由です。書き込みは例外です。投稿と DM は公式 API にのみあるため、書き込みの多いプロジェクトは、読み取りコストにかかわらずそこに属します。
API 認証情報の取得方法 {#how-to-get-your-api-credentials}
公式 API には、developer.x.com で開発者アカウントを作り、開発者規約に同意し、ユースケースを記述し、Project と App を作って API キー、API シークレット、ベアラートークン、アクセストークンを生成します。無料枠がないため、最初の呼び出しの前にクレジットを買います。読み取り専用のサードパーティ API には、サインアップし、キーを生成し、それをヘッダーで渡します。申請も承認のステップもありません。新規キーは100回分の無料リクエストが付いてくるため、最初の呼び出しの前に買うものはありません。
どちらの認証情報も、ソースの中ではなく環境変数に保存します。
# .env
X_API_BEARER_TOKEN=your-x-bearer-token
SORSA_API_KEY=your-sorsa-api-key
既存の公式 API のコードを移しているなら、移行ガイド が公式のエンドポイントとフィールド名をそのフラットレートの相当物に対応付けるため、ロジックを書き直さずにトランスポートを入れ替えられます。
実践:Node のコレクターを公式 API から移す {#in-practice-moving-a-node-collector-off-the-official-api}
およそ12人のソーシャル分析スタートアップが、twitter-api-v2 で作られた夜間の Node コレクターを動かして相談に来ました。コードは問題なく、請求が問題でした。すべての実行が投稿の読み取りと作者プロフィールごとに支払い、月間200万投稿読み取りの上限が、追跡アカウントのリストが増えるにつれてチームに量を見張らせました。
修正は書き直しではなく、トランスポートの入れ替えでした。収集のロジックとスケジューリングを保ち、twitter-api-v2 クライアントを検索と /followers のエンドポイントに対する素の fetch のパターンに置き換え、OAuth を単一の ApiKey ヘッダーに落としました。各リクエストが、リソース単位で課金する代わりに最大20ツイートまたは200フォロワープロフィールを返すため、同じ夜間の取得が以前の何分の1か、読み取りの多い部分でおよそ30〜50分の1のコストになり、そして毎秒の制限が、ペースを配分すべき唯一のものとして月次上限に取って代わりました。読み取り専用のワークロードには、リソース単位のモデルは単純な仕事をする高価な方法だったのです。
よくある質問 {#faq}
Node.js 向けの公式 Twitter API SDK はある?
はい。2025年後半、X は npm install @xdevplatform/xdk でインストールする公式 TypeScript XDK をリリースし、それは Node.js・ブラウザ・React Native で動きます。X が出荷した最初の公式 JavaScript クライアントで、型付きモデル、自動ページネーション、ストリーミングを備えます。成熟したコミュニティライブラリ twitter-api-v2 は強力な代替であり続け、API v1.1 と v2 の両方をサポートします。
Twitter API に最適な npm パッケージは?
ほとんどの Node プロジェクトには、twitter-api-v2 が最良の汎用の選択です。成熟し、完全に型付けされ、読み取り・書き込み・DM のフローをサポートし、ページネーションとレート制限のリトライを扱います。API 仕様を追うファーストパーティのサポートには、公式 TypeScript XDK を使います。古い twit と twitter のパッケージは2017年以降メンテナンスされておらず、API v1.1 しか話さないため、避けます。
クライアントサイドの JavaScript で Twitter API を使える?
いいえ、直接には使えません。すべての認証済みの X API 呼び出しがベアラートークンか OAuth シークレットを必要とし、ブラウザのコードに置かれたあらゆる認証情報は、ページを調べる誰にでも露出し、加えてほとんどの呼び出しはクロスオリジンで失敗します。標準のパターンは、シークレットを保持し、API を呼び、フロントエンドが必要とするデータだけを返す、サーバーレス関数のような小さなサーバーサイドのプロキシです。
開発者アカウントなしで Node.js でツイートをどう取得する?
読み取り専用のサードパーティ REST API を呼びます。Sorsa では、サインアップし、API キーを取得し、それを ApiKey ヘッダーで渡し、検索エンドポイントにクエリを POST します。すべて1回の fetch 呼び出しからです。OAuth フローも、アプリ審査も、クレジット購入もなく、JSON は各ツイートに作者プロフィールを含んで JavaScript のオブジェクトにまっすぐ対応します。
2026年に Node.js アプリで Twitter API はいくらかかる?
公式 X API ではリソース単位で支払います。投稿の読み取りあたり$0.005、ユーザープロフィールあたり$0.010、標準の投稿あたり$0.015、URL 付きの投稿は$0.20で、月間200万投稿読み取りの上限があります。20ツイートを返す検索は、作者プロフィールを含めると$0.30かかります。Sorsa はリクエスト単位で課金し、それはバッチエンドポイントで1,000ツイートあたり約$0.02、1,000プロフィールあたり約$0.01になり、月額$49からのフラットなプランです。すべての新規キーは100回分の無料リクエストを含み、クレジットカード不要で、支払う前にテストできます。
Node.js で Twitter API のレート制限をどう扱う?
公式 API は15分の窓ごとにリクエストを制限し(エンドポイントによって通常300〜900)、達すると429 をリセットヘッダー付きで返します。twitter-api-v2 と XDK は自動でバックオフします。素の fetch では、ヘッダーを読んでリトライ前に待ちます。Sorsa のようなフラットレートの API は毎秒の制限(毎秒20リクエスト)を使うため、429 で1秒待って同じ呼び出しをリトライします。
twitter-api-v2 は X API v2 をサポートする?
はい。twitter-api-v2 は API v1.1 と v2 の両方を、別々の読み取り専用・読み書き・DM のクライアントと完全な TypeScript の型付けとともにサポートします。現行のベアラートークンと OAuth の認証で動きます。従量課金モデルの下では公式 API に無料枠がないため、購入したクレジットを持つ有料の X 開発者アカウントを必要とします。
始め方 {#getting-started}
方法を選んで、上の例の1つを実行します。
- 読み取り専用のデータ: Sorsa のダッシュボード からキーを取得し、
SORSA_API_KEYとして設定し、任意の方法4のスニペットを実行します。すべての新規キーは100回分の無料リクエストを含むため、これらの例は何かを買う前に動きます。構造化された X データが1分以内にターミナルに届き、クイックスタート が最初の呼び出しを案内します。プランと制限は 料金ページ にあります。 - 読み書き: developer.x.com で開発者アカウントを作り、クレジットを買い、ベアラートークンで XDK か twitter-api-v2 の例を実行します。
- プロバイダーの比較: 読み取り専用の選択肢のより広い見方は、Twitter API の代替の比較 をご覧ください。
監修:Keksich(Sorsa創業者、マーケター兼X APIリサーチャー)
本ガイドの検証方法 {#how-we-verified-this-guide}
当チームは、API を毎日運用しながら2026年6月に本ガイドを執筆し検証しました。公式 XDK の詳細(@xdevplatform/xdk パッケージ、Node.js 16以降のサポート、自動ページネーション、ストリーミング、そして3つの認証方法)は、X の TypeScript XDK ドキュメント とそのローンチの発表から来ています。twitter-api-v2 の機能(読み取り専用・読み書き・DM のクライアント、そして userByUsername、search、followers のメソッド)は、そのパッケージのドキュメントに対して確認しました。X API の料金は、2026年4月の書き込みコストの変更を含む現行の従量課金モデルを反映しています。Sorsa のエンドポイントの挙動、リクエスト単位のバッチ処理、プランの料金は Sorsa API のドキュメントから来ており、チームについての詳細は 会社概要ページ にあります。ダウンロード数や GitHub のスターのような動く数字は、引用ではなく記述しています。現行の価格には、製品内のドキュメントが信頼できる情報源です。