本文へスキップ

Twitter リスト API:メンバーとツイートを取得する

Twitter リスト API は、公開 X リストを数値 ID で読み取り、メンバー、フォロワー、メンバーの最新ポストを1つにまとめたフィードを返します。公式 X API では、メンバー1人につき$0.010、ポスト1件につき$0.005が課金されます。

結論: ID はリストの URL の末尾にある数字で、1つのリストには最大5,000アカウントが入ります。X 公式のエンドポイントは1ページ100件で、開発者アカウントが必要です。1つのキーでリストを読み取るなら Sorsa API を使います。GET /list-members は1リクエストで200メンバーを返し、1,000件あたり$0.007からで、100回分の無料リクエストで2万メンバーをカバーできます。

エンドポイント
GET /list-members
1ページの件数
1リクエストあたり200メンバー
料金
1,000件あたり$0.007から

#Twitter リスト API で読み取れるもの

X リストは、独自のタイムラインを持つ、最大5,000アカウントの名前付きグループです。API は、公開リストの3つの部分を読み取れます。それぞれ別のエンドポイントから取得します。

  • メンバー: リストの作成者が追加したアカウント。スプレッドシートや CRM にエクスポートされるのは、この厳選されたアカウント群です。
  • フォロワー: リストのタイムラインを読むためにリストをフォローしている人で、X では購読者とも呼ばれます。メンバー自身のフォロワーではありません。アカウントのフォロワーについては、Twitter フォロワー APIのガイドを参照してください。
  • フィード: リストのタイムライン。全メンバーの最新ポストが1か所にまとまっています。

リスト ID は、リストのアドレスにある長い数字です。x.com/i/lists/1234567890123456789 の数字がそれで、リストへのリクエストはすべてこの ID から始まります。

x.com/i/lists/ 1234567890123456789 リストID: リストへのリクエストはすべてここから メンバー オーナーが追加したアカウント GET /list-members list_id 1リクエストで最大200メンバー フォロワー リストをフォローしている人 GET /list-followers list_link URLまたはID、1リクエストで最大200件 フィード 全メンバーの最新投稿 GET /list-tweets list_id 1リクエストで約20件
1つのリスト ID で、リストの3つの部分すべてを開けます。リンク全体も受け付けるのは /list-followers だけです。

X ヘルプセンター(新しいタブで開きます)にある数点のルールが、読み取れる範囲を決めます。リストは初期設定で公開で、公開リストは誰でもフォローできます。非公開リストを見られるのは作成したアカウントだけなので、どの API でも読み取れません。名前は25文字までです。他人のリストから抜けるには、その作成者をブロックするしかありません。

どのリスト用エンドポイントも返さない情報が2つあります。アカウントが追加された時期と、誰が抜けたかです。変化を追うには、メンバーを定期的にエクスポートし、id でファイルを比較します。アカウントは作成者が X アプリで一度選ぶだけで、コードに必要なのは ID だけなので、リストはTwitter のリアルタイム監視でも最も扱いやすい単位です。

#リストのメンバーを CSV にエクスポートする

リストをエクスポートするには、Twitter(X)API 兼スクレイピングツールである Sorsa API を使います。GET /list-members(新しいタブで開きます) は1リクエストで最大200メンバーを返すので、5,000メンバーの満杯のリストでも25リクエストで済みます。以下の手順で、全メンバーを1つの CSV ファイルに書き出します。

  1. リスト ID をコピーする。 x.com でリストを開き、アドレスバーの /lists/ の後ろの数字を取ります。

  2. キーを取得する。 サインアップして、ダッシュボードから API キーをコピーします。カードは不要で、最初の100リクエストは無料です。

  3. 最初のページをリクエストする。 ID を list_id として、API キーを ApiKey ヘッダーに付けて送ります。

    ターミナル
    curl -G "https://api.sorsa.io/v3/list-members" \
      -H "ApiKey: YOUR_API_KEY" \
      --data-urlencode "list_id=1234567890123456789"
    
    レスポンス200 OK
    {
      "users": [
        {
          "id": "1592041833471827968",
          "username": "dana_tracks_markets",
          "display_name": "Dana Tracks Markets",
          "description": "Rates, FX and the odd chart.",
          "location": "Chicago, IL",
          "followers_count": 48210,
          "followings_count": 612,
          "tweets_count": 15873,
          "verified": true,
          "protected": false,
          "created_at": "2014-03-09T16:22:41Z"
        }
      ],
      "next_cursor": "DAABCgABGc3yPLu__-0KAAIZsbqf"
    }
    
  4. カーソルをたどって行を書き出す。 next_cursor が空で返るまで、リクエストごとにそれを送り返し、届いたページを順に保存します。

    import csv
    import requests
    
    URL = "https://api.sorsa.io/v3/list-members"
    HEADERS = {"ApiKey": "YOUR_API_KEY"}
    FIELDS = ["id", "username", "display_name",
              "followers_count", "verified", "created_at"]
    
    
    def export_members(list_id, path="list_members.csv"):
        params = {"list_id": list_id}
        with open(path, "w", newline="", encoding="utf-8") as f:
            out = csv.DictWriter(f, fieldnames=FIELDS,
                                 extrasaction="ignore")
            out.writeheader()
            while True:
                r = requests.get(URL, headers=HEADERS,
                                 params=params, timeout=30)
                r.raise_for_status()
                page = r.json()
                out.writerows(page.get("users", []))
                cursor = page.get("next_cursor")
                if not cursor:
                    break
                params["next_cursor"] = cursor
    
    
    export_members("1234567890123456789")
    

各行は、公開プロフィールの全体です。プロフィール系エンドポイントが返すものと同じ id、ハンドル、自己紹介、所在地、各種カウント、作成日が入っています。ハンドルは変わることがありますが ID は変わらないので、ファイルのキーには id を使ってください。403 はキーがない、またはリクエストが残っていないことを、429 は1つのキーで1秒間に20リクエストを超えたことを意味するので、1秒待ってからもう一度送ります。

同じループで、GET /list-followers(新しいタブで開きます) からリストのフォロワーもエクスポートできます。こちらも1ページ最大200フォロワーです。パスを変え、リストは list_id ではなく list_link として送ってください。

知っておきたいこと

2つのパラメータは異なります。/list-members と /list-tweets は、数字だけの list_id を受け取ります。/list-followers は list_link を受け取り、リストの URL 全体でも数字でも構いません。完全なアドレスを list_id に貼り付けてしまうミスはよくあるので、先に数字だけに切り出してください。

#リストのツイートを1つのフィードとして読む

GET /list-tweets(新しいタブで開きます) は、リストのタイムラインを返します。全メンバーの最新ポストが1リクエストに約20件で、それぞれ本文、日時、いいね数、リプライ数、リポスト数、閲覧数と、投稿者のプロフィールが付きます。リストのアカウントが12でも5,000でも、1リクエストで全アカウントをカバーできます。

フィードには「since」の絞り込みがないので、モニターは先頭から読み、保存済みのポストに最初に当たったところで止めます。Snowflake ID、つまり X がすべてのポストに付ける番号は時間とともに増えるため、保存した最新の ID が、前回のチェックの終わりを示します。

リストフィード(新しい順) 12:04 新規: 保存 12:03 新規: 保存 12:01 新規: 保存 ここで停止 12:00 最終保存ID 11:57 保存済み 11:52 保存済み 最新IDを12:04として保存。5分後、次のチェックは再び先頭から読み、 12:04で停止します。新着が20件未満なら、1リクエストですべての新着投稿を取得できます。
先頭から読み、新しいものを保存し、すでにあるポストに最初に当たったら止めます。

次のループは、5分ごとにリストをチェックし、新しいポストを1回ずつ表示します。

Python
import time
import requests

URL = "https://api.sorsa.io/v3/list-tweets"
HEADERS = {"ApiKey": "YOUR_API_KEY"}
LIST_ID = "1234567890123456789"


def new_posts(seen, max_pages=10):
    """Read the feed from the top until a post we already have."""
    fresh, params = [], {"list_id": LIST_ID}
    for _ in range(max_pages):
        r = requests.get(URL, headers=HEADERS,
                         params=params, timeout=30)
        r.raise_for_status()
        page = r.json()
        for tweet in page.get("tweets", []):
            if tweet["id"] in seen:
                return fresh
            fresh.append(tweet)
        cursor = page.get("next_cursor")
        if not cursor:
            break
        params["next_cursor"] = cursor
    return fresh


seen = set()
while True:
    for t in reversed(new_posts(seen)):
        seen.add(t["id"])
        print(t["created_at"], "@" + t["user"]["username"],
              t["full_text"][:80])
    time.sleep(300)  # check again in 5 minutes

本番では、seen をデータベースに保管し、直近の数千件の ID までに抑えてください。max_pages の上限により、何も保存されていない最初の実行でも、読み取りは200ポストまでに収まります。

フィードは新着を追うためのものです。リストの古いポストを読むには、検索を使います。メンバーのハンドルを OR でつないだ from: コマンドに入れ、バッチに分けて、期間を指定した上で POST /search-tweets(新しいタブで開きます) に送ります。コマンドはTwitter 検索 APIのガイドで説明しており、アーカイブは2006年までさかのぼれます。

#1つのリストが、全アカウントのポーリングより有利な理由

リストのフィードは、アカウントがいくつ入っていても、1回のチェックにつき1リクエストです。各アカウントのタイムラインを読む方法では、1回のチェックにつきアカウントごとに1リクエストかかります。500アカウントを5分ごとにチェックすると、1つずつ読む場合は月430万リクエスト、リスト1つなら8,640リクエストです。ただし、チェックの間に届く新着が20件未満の場合に限ります。

速度も、もう1つの制約になります。毎秒20リクエストなら、1つのキーで1分に1,200のタイムラインを読めるため、5,000アカウントを1周するには4分以上かかります。リストのフィードなら、同じ問いに1リクエストで、リストが混み合っていても数リクエストで答えられます。

リスト内のアカウント数

チェック間隔

アカウントごとの1日の投稿数

アカウントごとに1リクエスト

4.3M 月間リクエスト数

1回のチェック
500リクエスト、毎秒20で25秒
カバーするプラン
Scale、月5M

リストのフィード1つ

8,640 月間リクエスト数

1回のチェック
新規投稿約9件につき1リクエスト
カバーするプラン
Starter、月10K

リストのフィードなら、リクエストは500分の1で済みます(同じ500アカウントの場合)。

リストの規模、チェック間隔、アカウントの投稿頻度を選んでください。活発なリストは1回のチェックで追加のページが必要になり、静かなリストは1ページで済みます。

1回のチェックあたりのページ数は、新しいポストの数に応じてしか増えません。前回のチェック以降に届いた約20ポストにつき、1リクエストです。リストが見るのは、選んだアカウントの投稿です。誰が書いたかを問わず、ブランド名を含むすべてのポストを捉えるには、代わりに Twitter メンション APIでブランド名を検索してください。

#リストのデータは1,000件あたりいくらか

リストのメンバーとフォロワーは、Sorsa API で1,000件あたり$0.007から、リストのポストは1,000件あたり$0.07からです。公式 X API は、従量課金の料金表(新しいタブで開きます)で、メンバーまたはフォロワー1,000件あたり$10.00、ポスト1,000件あたり$5.00を課金します。

2026年11月22日からは、X はそれらのポストと一緒に返されるすべての投稿者プロフィールにも、1件$0.010を課金します(10月23日の X の通知(新しいタブで開きます))。Sorsa API では、投稿者のプロフィールは追加料金なしですべてのポストに含まれます。

エクスポート数

公式 X API

$500

リストメンバー5万人の場合

メンバー1人あたり$0.010

Sorsa API

$0.35から

リストメンバー5万人の場合

1,000件あたり$0.007から

1,000分の1のコスト

リスト API を決める要素は、料金、セットアップ、リクエストレート、取得量、X アカウントの安全性の5つです。Sorsa API は、そのすべてで優位に立ちます。

比較項目Sorsa API公式 X API
メンバーまたはフォロワー(1,000件あたり)$0.007から、1リクエスト200件$10.00、1ページ100件
リストのポスト(1,000件あたり)$0.07から、1リクエスト約20件$5.00、さらに2026年11月22日から投稿者1人につき$0.010
5,000メンバーの満杯のリスト$0.035から$50.00
セットアップAPI キー1つ開発者アカウント、アプリ、ベアラートークン、前払いのクレジット
リクエストレート全プラン毎秒20リクエストリストのエンドポイントごとに15分あたり900リクエスト
取得量の上限月間最大1,000万リクエストまでのプラン、それ以上は相談可課金サイクルあたり300万ポストの読み取り、それ以降は Enterprise
X アカウント一切触れない:ログインもクッキーも不要開発者アカウントとそのアプリ
  • メンバーまたはフォロワー(1,000件あたり)

    Sorsa API
    $0.007から、1リクエスト200件
    公式 X API
    $10.00、1ページ100件
  • リストのポスト(1,000件あたり)

    Sorsa API
    $0.07から、1リクエスト約20件
    公式 X API
    $5.00、さらに2026年11月22日から投稿者1人につき$0.010
  • 5,000メンバーの満杯のリスト

    Sorsa API
    $0.035から
    公式 X API
    $50.00
  • セットアップ

    Sorsa API
    API キー1つ
    公式 X API
    開発者アカウント、アプリ、ベアラートークン、前払いのクレジット
  • リクエストレート

    Sorsa API
    全プラン毎秒20リクエスト
    公式 X API
    リストのエンドポイントごとに15分あたり900リクエスト
  • 取得量の上限

    Sorsa API
    月間最大1,000万リクエストまでのプラン、それ以上は相談可
    公式 X API
    課金サイクルあたり300万ポストの読み取り、それ以降は Enterprise
  • X アカウント

    Sorsa API
    一切触れない:ログインもクッキーも不要
    公式 X API
    開発者アカウントとそのアプリ

リストのデータなら Sorsa API を使います。メンバーは1リクエスト200件で1,000件あたり$0.007から、リスト全体のフィードは1,000件あたり$0.07からで、必要なのはキー1つだけです。失敗したリクエストに課金されることはありません。Sorsa API は REST API で、キーを付けた1回のリクエストできれいな JSON が返ります。ブラウザーで動かすものは何もなく、ご自身の X アカウントが危険にさらされることもありません。

#X コミュニティはどうなっていますか?

X は2026年4月23日に、利用の少なさとスパムの多さを理由に、コミュニティを終了すると発表しました(TechCrunch(新しいタブで開きます))。終了日は最初が5月6日、その後が5月30日でした。しかし機能はどちらの日も過ぎて存続し、7月下旬の時点でもまだ稼働していて、X から新しい日付は示されていません。

Sorsa API のリファレンスには、今もコミュニティ用のエンドポイントが5つ載っています。コミュニティのポストを取得する POST /community-tweets(新しいタブで開きます)、メンバーを取得する POST /community-members(新しいタブで開きます)、1アカウントを確認する POST /check-community-member(新しいタブで開きます) などです。ドキュメントでは、これらを使った新しいワークフローを作る前に、どれがデータを返すかをサポートに確認するよう案内しています。キャンペーンでのメンバーシップ確認については、エンゲージメント検証 APIのガイドで説明しています。

継続して動かす必要があるものは、代わりにアカウントをリストに入れてください。リストは終了の対象ではなく、上で紹介したすべてのリスト用エンドポイントで、今日も読み取れます。

#最初のリストを取得する

リストの ID をコピーし、GET /list-members に1回リクエストを送れば、最大200件のプロフィールが JSON で返ります。Sorsa API は、リストのメンバーとフォロワーを1リクエスト200件で1,000件あたり$0.007から、フィード全体を1,000件あたり$0.07から読み取れます。キーは1つで、全プラン毎秒20リクエストです。100回分の無料リクエストで、料金を支払う前に、満杯のリスト4つ分にあたる2万メンバーをエクスポートできます。

#よくある質問

Twitter リストのデータを取得するのに最適な API は何ですか?

Sorsa API は、そのために作られています。GET /list-members と GET /list-followers は1リクエストで200アカウントを1,000件あたり$0.007から返し、GET /list-tweets はリスト全体の最新ポストを1つのフィードで1,000件あたり$0.07から返します。開発者アカウントや OAuth の代わりに API キー1つで使え、全プラン毎秒20リクエストで動作し、X アカウントには一切触れません。

Twitter リストの ID はどうやって調べますか?

x.com でリストを開き、アドレスバーを見てください。x.com/i/lists/1234567890123456789 の /lists/ の後ろの数字が、リスト ID です。Sorsa API の /list-members と /list-tweets は、その数字を list_id として受け取ります。/list-followers は list_link を受け取り、URL 全体でも数字だけでも構わないので、アドレスをそのまま貼り付けられます。

非公開の Twitter リストのメンバーは取得できますか?

いいえ。非公開の X リストを見られるのは作成したアカウントだけなので、どの API でもそのメンバー、フォロワー、ポストは読み取れません。作成者が非公開に切り替えない限り、リストは公開です。Sorsa API は公開リストをすべて ID で読み取りますが、非公開リストからはデータを取得できず、失敗したリクエストに課金されることもありません。

Twitter リストには何アカウント入りますか?

X リストには最大5,000メンバーが入ります。Sorsa API の GET /list-members は1リクエスト200件で返すので、満杯のリストでも25リクエストでエクスポートでき、すべてのアカウントに付く100回分の無料リクエストで、満杯のリスト4つ分をカバーできます。X ヘルプセンターには、リスト名は25文字までで、数字で始めることはできないとも書かれています。

API でリストのメンバーを追加・削除できますか?

はい、公式 X API で可能です。POST /2/lists/{id}/members でアカウントを追加し、DELETE /2/lists/{id}/members/{user_id} で削除します。料金は1リクエスト$0.005で、15分あたり最大300リクエスト、リストの作成者のトークンが必要です。Sorsa API は設計上、読み取り専用なので、2つを組み合わせてください。リストの管理は X で、読み取りは Sorsa API で行います。

#本ガイドの調査と検証の方法

このページのエンドポイント、パラメータ、ページサイズはすべて、2026年11月2日に Sorsa API の最新の API リファレンスと照合し、リクエストもそれに基づいて書きました。掲載したレスポンスは、リファレンスの形式に架空のデータを入れたもので、実際の呼び出しの出力ではありません。公式 X API の料金、ページサイズ、レート制限は同日に読んだ docs.x.com から、11月22日の課金変更は10月23日付の X 開発者フォーラムの通知からのものです。コミュニティの日付は、2026年4月23日の TechCrunch の記事と、7月下旬の作成者のステータス更新に基づいています。

Sorsa APIチーム 読み取り専用のX(Twitter)APIとスクレイピングツール、Sorsa APIを開発・運営しています。2022年から本番稼働し(旧TweetScout API)、累計60億リクエスト以上を処理しています。 Sorsa APIについて

変更点
  • ゼロから書き直しました。新しいコードでリストのメンバー・フォロワー・フィードを取得し、X の料金と制限を docs.x.com で確認し、リストとアカウント個別取得の比較計算ツールと、コミュニティの現状を追加しています。
  • 初公開。