あらゆるアカウントに使える Twitter アナリティクス API
X のすべての公開ポストには、いいね、リポスト、リプライ、引用、閲覧数、ブックマークという6つのエンゲージメント数が付いていて、アナリティクス API ならどのアカウントのものでも取得できます。公式 X API は、返したポスト1件につき$0.005を課金します。
結論: この6つの数値は公開されているため、自分のものではないポストでも API で読み取れます。リンクのクリック数、プロフィールのクリック数、ポストからのフォローは投稿者だけのもので、X 自身のアナリティクスで30日間確認できます。Sorsa API の POST /tweet-info-bulk は、1リクエスト100ポストの6つの数値すべてを1,000件あたり$0.014から返し、100回分の無料リクエストで10,000ポストをカバーできます。
- エンドポイント
POST /tweet-info-bulk- 1ページの件数
- 1リクエストあたり100ポスト
- 料金
- 1,000件あたり$0.014から
#Twitter アナリティクス API が返すもの
Twitter アナリティクス API とは、X のポストやアカウントの裏にある数値を、ダッシュボードではなく JSON で返すエンドポイントです。各ポストのエンゲージメント数、各アカウントのフォロワー数とポスト数の合計、そして数え上げの対象となるポストそのものが含まれます。何を返せるかは、1つの区分で決まります。誰でも読める公開の数値と、投稿者だけが読める非公開の数値です。
まずブラウザで1つのアカウントのエンゲージメント率を見たい場合は、無料の Twitter エンゲージメント率計算ツールが最新のポストを読み取ります。このガイドの残りは、同じ作業を、任意の数のアカウントとポストについてコードで行います。
表は、それぞれの数値を持つフィールドに対応付けたものです。Sorsa API は、返すすべてのポストに6つの公開数値を含めます。公式 X API は、それらを public_metrics に、非公開のものを non_public_metrics に入れています。
| 指標 | Sorsa API のフィールド | 公式 X API のフィールド | 読める人 |
|---|---|---|---|
| いいね | likes_count | like_count | 誰でも |
| リポスト | retweet_count | retweet_count | 誰でも |
| リプライ | reply_count | reply_count | 誰でも |
| 引用 | quote_count | quote_count | 誰でも |
| 閲覧数 | view_count | impression_count | 誰でも |
| ブックマーク | bookmark_count | bookmark_count | 誰でも |
| リンクのクリック | なし | url_link_clicks | 投稿者 |
| プロフィールのクリック | なし | user_profile_clicks | 投稿者 |
いいね
- Sorsa API のフィールド
likes_count- 公式 X API のフィールド
like_count- 読める人
- 誰でも
リポスト
- Sorsa API のフィールド
retweet_count- 公式 X API のフィールド
retweet_count- 読める人
- 誰でも
リプライ
- Sorsa API のフィールド
reply_count- 公式 X API のフィールド
reply_count- 読める人
- 誰でも
引用
- Sorsa API のフィールド
quote_count- 公式 X API のフィールド
quote_count- 読める人
- 誰でも
閲覧数
- Sorsa API のフィールド
view_count- 公式 X API のフィールド
impression_count- 読める人
- 誰でも
ブックマーク
- Sorsa API のフィールド
bookmark_count- 公式 X API のフィールド
bookmark_count- 読める人
- 誰でも
リンクのクリック
- Sorsa API のフィールド
- なし
- 公式 X API のフィールド
url_link_clicks- 読める人
- 投稿者
プロフィールのクリック
- Sorsa API のフィールド
- なし
- 公式 X API のフィールド
user_profile_clicks- 読める人
- 投稿者
閲覧数も公開です。X 自身の指標ドキュメント(新しいタブで開きます)は、インプレッションを、通常のベアラートークンであらゆるポストについて読み取れる公開指標として挙げています。同じ人が1つのポストを2回見ると、2インプレッションと数えられます。
非公開の数値には3つの入り口があり、いずれもポストを書いたアカウントに結びついています。1つ目は x.com のアナリティクスダッシュボードです。2つ目は公式 X API の GET /2/tweets/analytics(新しいタブで開きます) で、自分のポスト ID を最大100件まで指定でき、合計値または1時間・1日・1週間ごとの時系列として、アカウントの OAuth トークンで署名して取得します。3つ目は、営業契約にもとづく X の Enterprise Engagement API(新しいタブで開きます) です。非公開の指標は、直近30日間のポストだけが対象です。
公開された数値の場合でも、公式 X API は開発者アカウントとアプリを用意したうえで、読み取ったポストごとに$0.005、1,000件あたり$5.00を課金します(X API の料金(新しいタブで開きます))。2026年11月22日からは、投稿者を付けて読み取ったポストは$0.015になります(X の通知(新しいタブで開きます))。アカウントのタイムラインは直近3,200件のポスト(新しいタブで開きます)で止まり、従量課金は月300万件のポスト読み取りが上限です。
#Sorsa API であらゆるアカウントのエンゲージメント指標を取得する
自分のものではないアカウントのエンゲージメント指標には、Twitter(X)API 兼スクレイピングツールの Sorsa API を使ってください。返すポストにはすべて6つの数値と投稿者の完全なプロフィールが付き、料金は1,000ポストあたり$0.014からで、公式 X API は$5.00です。ApiKey ヘッダー1つで、開発者アカウントと OAuth の代わりになります。全プランで毎秒20リクエストで動作し、自分の X アカウントが関与することはありません。
もっとも手早く始められるのは、アカウントのタイムラインです。1リクエストで最新のポストが数値付きで返り、カーソルをたどれば古いポストへ進めます。カーソルとは、各ページとともに API が返すトークンで、それを送り返すと次のページが取得できます。
-
キーを取得する。 サインアップして、ダッシュボードから API キーをコピーします。100回分の無料リクエストはすでに付いています。
-
アカウントのポストを取得する。 ハンドルを
POST /user-tweets(新しいタブで開きます) に送ります。1ページに最大20ポストが新しい順に入り、数値と投稿者のプロフィールが付いています。Terminal curl -X POST "https://api.sorsa.io/v3/user-tweets" \ -H "ApiKey: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"username": "harborline_roasters"}'Response200 OK { "tweets": [ { "id": "2116184394037384839", "full_text": "Winter blend ships Monday. First 200 orders get a tin.", "created_at": "2026-10-30T15:04:11Z", "lang": "en", "likes_count": 212, "retweet_count": 31, "reply_count": 24, "quote_count": 6, "view_count": 9640, "bookmark_count": 41, "is_reply": false, "is_quote_status": false, "conversation_id_str": "2116184394037384839", "user": { "id": "1503315520518280839", "username": "harborline_roasters", "display_name": "Harborline Roasters", "followers_count": 8450, "followings_count": 312, "tweets_count": 3921, "verified": false } } ], "next_cursor": "DAABCgABG5xQ2bW8AAAKAAIbmN8T0ZbQ6QgAAwAAAAIAAA" } -
必要な日付まで遡る。 次のボディに
next_cursorを入れて送り、空で返ってきたとき、またはポストが開始日より古くなったときに止めます。以下のループは、ポスト1件につき1行を CSV ファイルに書き出します。import csv import requests API = "https://api.sorsa.io/v3/user-tweets" HEADERS = {"ApiKey": "YOUR_API_KEY"} FIELDS = ["id", "created_at", "likes_count", "retweet_count", "reply_count", "quote_count", "view_count", "bookmark_count"] def account_posts(username, since="2026-10-01"): body, rows = {"username": username}, [] while True: r = requests.post(API, headers=HEADERS, json=body, timeout=30) r.raise_for_status() data = r.json() page = data.get("tweets", []) rows += [t for t in page if t["created_at"] >= since] old = all(t["created_at"] < since for t in page) if not data.get("next_cursor") or old: return rows body["next_cursor"] = data["next_cursor"] posts = account_posts("harborline_roasters") with open("metrics.csv", "w", newline="") as f: w = csv.DictWriter(f, fieldnames=FIELDS, extrasaction="ignore") w.writeheader() w.writerows(posts) print(len(posts), "posts written") -
実行ごとにスナップショットとして保存する。 カウントはポストの公開後も増え続けるので、取得のたびに日付を付けて保存します(ポスト ID、取得日時、6つの数値)。1日おきの2つのスナップショットを見れば、どのポストがまだ伸びているかがわかります。また、
created_atに対して1か月分のカウントをプロットすれば、アカウントのポストのリーチが伸びているか落ちているかが見えます。
429 は1秒間に20リクエストを超えたことを意味するので、1秒待ってから再送します。403 はキーがない、またはリクエストを使い切ったこと、401 はキーが誤っていることを意味します。失敗したリクエストに課金されることはありません。
#指標を最新に保つ:追跡中のポストを100件ずつ更新する
追跡するポストが決まったら、ID を指定してカウントを更新します。POST /tweet-info-bulk(新しいタブで開きます) は最大100件のポストリンクまたは ID を受け取り、すべてのポストを最新のカウント付きで1リクエストで返します。料金は1,000ポストあたり$0.014からです。この方法なら、100万ポスト分の指標が$14からで取得できます。
アカウントのタイムラインの最初のページは、その一部を無料でまかなってくれます。最新20ポストが現在のカウント付きで、すでに入っているからです。1日2回投稿するアカウントなら、そのリクエスト1つで直近10日分が最新に保たれます。それより古いポストだけにバッチ呼び出しが必要です。
curl -X POST "https://api.sorsa.io/v3/tweet-info-bulk" \
-H "ApiKey: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tweet_links": ["2116184394037384839", "2115861688481928839"]}'
Python では、ID リストを100件ずつのスライスに切り分け、それぞれを tweet_links として送ります。レスポンスは tweets 配列1つで、カーソルはありません。
HEADERS = {"ApiKey": "YOUR_API_KEY"}
def refresh(ids):
out = []
for i in range(0, len(ids), 100):
r = requests.post(
"https://api.sorsa.io/v3/tweet-info-bulk",
headers=HEADERS, json={"tweet_links": ids[i:i + 100]},
timeout=60)
r.raise_for_status()
out += r.json().get("tweets", [])
return out
カードは、ポストのリストを1回走査した場合の比較です。すべてのポストの6つの数値を、1回ずつ読み取ります。
公式 X API
$5,000
100万 ポストの指標の場合
1ポスト $0.005
Sorsa API
$14から
100万 ポストの指標の場合
1,000件あたり$0.014から
#API でリプライ、引用、リツイートしたユーザーを取得する
カウントが示すのは、何人がエンゲージしたかです。あと3つのエンドポイントで、それが誰で、何を書いたかがわかります。どれもポストのリンクまたは ID を受け取り、各リプライと引用は、独自のカウントと投稿者付きの完全なポストとして返ります。
| 知りたいこと | Sorsa API のエンドポイント | 返ってくるもの |
|---|---|---|
| ポストへのリプライ | /comments(新しいタブで開きます) | 1ページ最大20件のリプライ。関連度、新着順、いいね数で並べ替え可能 |
| ポストの引用ポスト | /quotes(新しいタブで開きます) | 1ページ最大20件の引用。追加された本文付き |
| リポストしたアカウント | /retweeters(新しいタブで開きます) | フォロワー数付きのプロフィール。新しい順 |
| 多数のアカウントの合計 | /info-batch(新しいタブで開きます) | 1リクエストあたり最大100プロフィール |
ポストへのリプライ
- Sorsa API のエンドポイント
/comments(新しいタブで開きます)- 返ってくるもの
- 1ページ最大20件のリプライ。関連度、新着順、いいね数で並べ替え可能
ポストの引用ポスト
- Sorsa API のエンドポイント
/quotes(新しいタブで開きます)- 返ってくるもの
- 1ページ最大20件の引用。追加された本文付き
リポストしたアカウント
- Sorsa API のエンドポイント
/retweeters(新しいタブで開きます)- 返ってくるもの
- フォロワー数付きのプロフィール。新しい順
多数のアカウントの合計
- Sorsa API のエンドポイント
/info-batch(新しいタブで開きます)- 返ってくるもの
- 1リクエストあたり最大100プロフィール
それぞれが別の問いに答えます。Likes で並べ替えたリプライなら、いちばん多くいいねされた返信が1ページ目に来るので、1リクエストでポストがオーディエンスにどう受け取られたかがわかります。引用には人々が付け加えたコメントが入っていて、トーンやセンチメントの元データになります。リツイートしたユーザーのフォロワー数を合計すれば、ポストが間接的に届いたオーディエンスの規模になります。
BASE = "https://api.sorsa.io/v3"
HEADERS = {"ApiKey": "YOUR_API_KEY"}
def pages(path, body, key, limit=10):
for _ in range(limit):
r = requests.post(f"{BASE}/{path}", headers=HEADERS,
json=body, timeout=30)
r.raise_for_status()
data = r.json()
yield from data.get(key, [])
if not data.get("next_cursor"):
return
body = {**body, "next_cursor": data["next_cursor"]}
post = "https://x.com/harborline_roasters/status/2116184394037384839"
top = list(pages("comments", {"tweet_link": post, "order_by": "Likes"},
"tweets", limit=1))[:5]
quotes = list(pages("quotes", {"tweet_link": post}, "tweets"))
fans = list(pages("retweeters", {"tweet_link": post}, "users"))
reach = sum(u.get("followers_count", 0) for u in fans)
print(len(quotes), "quotes,", len(fans), "retweeters,", reach, "reach")
公式 X API では、引用ポストは GET /2/tweets/:id/quote_tweets から1件$0.005、リツイートしたユーザーは GET /2/tweets/:id/retweeted_by から1件$0.010、つまり1,000アカウントあたり$10.00で取得します。この2つのエンドポイントは、どちらも15分間に75リクエストまでです(X API のレート制限(新しいタブで開きます))。リプライには専用のエンドポイントがなく、conversation_id を検索して取得しますが、直近検索では7日前までしか遡れません。
2つの用途は、それぞれ専用のページで解説しています。1つのアカウントがフォロー、リツイート、引用、リプライをしたかどうかを確認するには、Twitter 検証 API のガイドが、1回のチェックで答えを出します。コードを使わずにポストのリプライを読みたい場合は、X のコメントを見る方法を参照してください。
#API のデータからエンゲージメント率を計算する方法
エンゲージメント率とは、ポストに反応した人の割合のことで、API のフィールドから一般的な2つの計算ができます。閲覧数ベースでは、いいね、リポスト、リプライ、引用を足し、閲覧数で割って100を掛けます。フォロワー数ベースでは、同じ合計を投稿者の followers_count で割ります。この値はすべてのポストの user オブジェクトに入っています。
上のレスポンスのポストを例にします。いいね212、リポスト31、リプライ24、引用6で、インタラクションは273です。閲覧数9,640に対しては2.83%、フォロワー数8,450に対しては3.23%になります。Twitter エンゲージメント率計算ツールも同じ2つの式を使っているため、コードと無料ツールは、どのアカウントでも一致します。
from statistics import median
def engagement(posts):
followers = posts[0]["user"]["followers_count"]
for t in posts:
acts = (t["likes_count"] + t["retweet_count"]
+ t["reply_count"] + t["quote_count"])
views = t["view_count"] or 1
t["er_views"] = round(100 * acts / views, 2)
t["er_followers"] = round(100 * acts / followers, 2)
return median(t["view_count"] for t in posts)
率とあわせて、閲覧数の中央値も報告してください。1つのバイラルなポストは平均を何か月も押し上げますが、中央値なら典型的なポストの実力がわかります。公開から2日たっていないポストは、閲覧数がまだ伸びている最中なので、中央値から除外します。
知っておきたいこと
閲覧数が数えるのは人ではなく画面です。X はポストが画面に表示されるたびにインプレッションを1つ数えるため、同じ読者が2回スクロールで通り過ぎれば、2閲覧になります。閲覧数ベースの率は、規模が近いアカウント同士で比較し、オーディエンスの比較にはフォロワー数ベースの率を使ってください。
#X のアナリティクスパイプラインの月額コスト
アナリティクスパイプラインの費用は、3つの数字で決まります。追跡するアカウント数、各アカウントが1日に公開するポスト数、そして各ポストを何日間読み直すかです。スライダーを動かして、両方の API での1か月分を確認してください。
1日あたり約6秒分のリクエスト(毎秒20リクエスト):アカウントごとにタイムライン1ページ、古い投稿はIDで1リクエスト100件。
アカウントごとに毎日タイムライン1ページ、古い投稿は1リクエスト100件で更新。公式X APIは返したすべての投稿を1件$0.005で再取得します。
差が生まれる原因は単位です。公式 X API は、返したポストごと、読み直した日ごとに課金し、月300万件のポスト読み取りで止まります。それを超えると、月約$42,000からの Enterprise 契約しか残りません。Sorsa API はリクエストに課金し、1リクエストでID 指定なら最大100ポスト、タイムラインなら20ポストを取得できます。
競合、クライアント、クリエイターを対象にしたダッシュボードには、Sorsa API を選んでください。ツイートの指標は、$5.00ではなく1,000ポストあたり$0.014からです。全プランで毎秒20リクエストで動作し、API キー1つで開発者アカウントの代わりになり、同じキーでリプライ、引用、リツイートしたユーザー、2006年まで遡る検索も読み取れます。読み取り専用なので、あなたの X アカウントに触れることもありません。
#1つのアカウントだけでなく、トピックを分析する
エンゲージメント分析は、会話に対しても使えます。トピックに関するポストを検索し、カウントで順位を付けます。POST /search-tweets(新しいタブで開きます) は X 独自の検索演算子を受け付け、6つの数値と投稿者付きで1ページ約20ポストを返し、2006年まで遡れます。
curl -X POST "https://api.sorsa.io/v3/search-tweets" \
-H "ApiKey: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "\"cold brew\" min_faves:50 lang:en", "order": "popular"}'
期間を指定するには、クエリに since: と until: を追加します。投稿者ごとにインタラクションを合計すれば、誰がそのトピックを動かしているかがわかります。同じ期間でブランドごとにクエリを1つずつ実行すれば、シェア・オブ・ボイスも出せます。演算子は Twitter 検索 API のガイドに、同じデータをベンチマークにする方法は Twitter 競合分析にまとめています。
#まず1つのアカウントから今日始める
すべての公開ポストのいいね、リポスト、リプライ、引用、閲覧数、ブックマークは、どのアカウントのものでも API で読み取れます。投稿者だけのものとして残るのは、クリックとフォローだけです。Sorsa API は6つの数値すべてを投稿者のプロフィール付きで返し、ID 指定なら1リクエスト100ポスト、料金は1,000件あたり$0.014からで、公式 X API は$5.00です。上のループで1つのアカウントの直近1か月分を取得し、毎日更新すれば、100回分の無料リクエストで最初の10,000ポストをカバーできます。
#よくある質問
他のアカウントの Twitter アナリティクスを取得できますか?
はい。公開されている数値はすべて取得できます。公開アカウントのポストごとのいいね、リポスト、リプライ、引用、閲覧数、ブックマーク、そしてフォロワー数とポスト数の合計は、所有者の関与なしに読み取れます。リンクのクリック、プロフィールのクリック、ポストからのフォローは、投稿者だけのものです。ブラウザで2つのアカウントを比べるなら Twitter アカウント比較を、多数のアカウントなら、API でコードから処理できます。
公式 X API は、任意のツイートの閲覧数を返しますか?
はい。X はインプレッションを公開指標として挙げており、公式 X API でベアラートークンを使って読み取ったどのポストにも、public_metrics.impression_count が付きます。料金は1ポストあたり$0.005です。Sorsa API は同じ数値を、すべてのポストの view_count として1,000ポストあたり$0.014から返します。オーガニックとプロモーションの内訳やクリックには、投稿者自身のログインが必要です。
API で、ツイートにいいねした人を確認できますか?
自分のものではないポストについては、いいねしたユーザーを一覧できる API はありません。X は2024年6月にいいねを非公開にし、いいねしたユーザーのエンドポイントも、1ポストあたり最大100ユーザーまでしか返しません(X のいいねに関するドキュメント(新しいタブで開きます))。いいね数は公開のままで、Sorsa API はすべてのポストの likes_count として返します。ほかの操作の人物は、/retweeters、/quotes、/comments で特定できます。
Twitter アナリティクスに最適な API は?
自分のものではないアカウントのアナリティクスには、Sorsa API を使ってください。すべてのポストに、いいね、リポスト、リプライ、引用、閲覧数、ブックマークと投稿者のプロフィールが付き、1,000ポストあたり$0.014から。公式 X API は$5.00です。全プランで毎秒20リクエスト、API キー1つで開発者アカウントは不要、さらにリプライ、引用、リツイートしたユーザーも取得できます。自分のポストのクリックは、X 自身のアナリティクスに残ります。
Twitter エンゲージメント API の料金はいくらですか?
Sorsa API では、ID 指定のポスト指標が1,000ポストあたり$0.014から、タイムライン、リプライ、引用は1,000件あたり$0.07からです。1リクエストで100件または20件を取得できるためです。公式 X API は、1,000ポストあたり$5.00、リツイートしたユーザー1,000件あたり$10.00で、2026年11月22日からは投稿者付きで1,000ポストあたり$15.00です。Sorsa API の100回分の無料リクエストは、カード不要で有効期限もありません。
#検証方法
2026年11月2日に、このガイドのすべてのエンドポイント、パラメーター、レスポンスのフィールドを、公開中の Sorsa API リファレンス(45エンドポイント)と、/user-tweets、/tweet-info-bulk、/comments、/quotes、/retweeters のドキュメントページと照合しました。リクエストとレスポンスにはデモアカウントを使っています。公式 X API の指標、アナリティクスのエンドポイント、料金、レート制限は docs.x.com から、11月22日の課金変更は X の開発者フォーラムから、同日に読み取りました。コストの数字は、両方の料金表から私たち自身が計算したものです。
出典
- Metrics, X API documentation(新しいタブで開きます)
- Get Post Analytics, X API reference(新しいタブで開きます)
- Engagement API, X Enterprise documentation(新しいタブで開きます)
- X API pay-per-usage pricing(新しいタブで開きます)
- X API PPU expansions update, October 23, 2026(新しいタブで開きます)
- Rate limits, X API documentation(新しいタブで開きます)
- Timelines, X API documentation(新しいタブで開きます)
- Likes, X API documentation(新しいタブで開きます)
- User Tweets, Sorsa API reference(新しいタブで開きます)
- Tweet Data (Batch), Sorsa API reference(新しいタブで開きます)