本文へスキップ

X のユーザーの全ツイートをダウンロードする

X アカウントの全ツイートをダウンロードするには、タイムラインをページネーションで取得し、ページごとに CSV に保存します。X 自身のタイムラインエンドポイントは最新の3,200投稿で止まるため、全履歴にはその上限のないエンドポイントが必要です。

結論: 自分のアカウントの全履歴は、X のアーカイブから無料で入手できます。ただし X によれば、数日かかることがあります。他人のアカウントの場合、公式 X API のユーザータイムラインは最新の3,200投稿で止まります。全投稿を取得するなら、Sorsa API の POST /user-tweets を使ってください。1リクエストで20投稿、上限なしで、1,000件あたり$0.07からです。100回分の無料リクエストで、最初の2,000投稿を取得できます。

エンドポイント
POST /user-tweets
1ページの件数
1リクエストあたり20投稿
料金
1,000投稿あたり$0.07から

#どの方法を使うべきか

方法は、2つの事実で決まります。誰のツイートが必要か、そして何件必要かです。自分のアカウントの全履歴は、X のアーカイブから無料で入手できます。他人の投稿は、公開タイムラインをたどるエクスポートで取得することになり、どこまで遡れるかは裏にあるエンドポイントによって変わります。

アカウントの最新の投稿なら、無料のツイートエクスポートツールが、20件ずつ CSV、Excel、JSON で保存します。表示回数、いいね、ブックマーク、X のラベルなど25列を含み、サインアップも拡張機能も不要です。下にハンドルを入力して試してみてください。

ツイートのエクスポート:任意のアカウントの最新20投稿

無料、登録不要、拡張機能不要。CSV、Excel、JSONの25列:本文、日付、表示回数、いいね、リポスト、返信、ブックマーク、メディアのリンク、Xのラベル。

このフォームは、入力したアカウントを設定した状態で無料のツイートエクスポートツールを開きます。

アカウントがこれまでに書いたすべての投稿を取得するのは、より大きな作業です。ある方法がそれをこなせるかどうかは、5つの数字で決まります。

  • どこまで遡れるか。 X 自身のユーザータイムラインエンドポイントが返すのは、最新の3,200投稿だけです。
  • 1,000投稿あたりの料金。 公式 X API は1投稿$0.005で課金するため、1,000投稿は$5.00です。
  • 利用者に何が必要か。 公式 X API では、開発者アカウント、アプリ、前払いクレジットが必要です。
  • 処理の速さ。 長い履歴には数百から数千のリクエストが必要なので、毎秒のリクエスト数が重要です。
  • 何を危険にさらすか。 ログイン中の X セッションを通じて読み取るツールは、そのアカウントが自動化された操作として警告される恐れがあります。予備のアカウントからのエクスポートを勧めるツールがあるのは、このためです。

#Sorsa API で全投稿をダウンロードする

公開アカウントの全履歴には、Twitter(X)API 兼スクレイピングツールである Sorsa API を使ってください。POST /user-tweets はタイムライン全体を、3,200件の上限なしで、1リクエスト20投稿ずつ取得します。料金は1,000投稿あたり$0.07からで、公式 X API の$5.00に対する価格です。

残りの3つの数字も満たします。Sorsa API に必要なのは開発者アカウントではなく API キー1つで、無料アカウントを含む全プランで毎秒20リクエストに対応し、X のログイン情報や Cookie も求めません。そのため、ダウンロードに自分の X アカウントが関わることはありません。

Sorsa API を使う4つの方法は、同じキーと同じ100回分の無料リクエストで動きます。無料ツールはキーすら不要で、X のアーカイブはサインインしているアカウントしか対象になりません。

方法用途得られるもの費用
API プレイグラウンドでの Sorsa APIコードなしで、アカウントの全投稿CSV、Excel、JSON 形式の20投稿ずつのページ最初の2,000投稿は無料、その後は1,000件あたり$0.07から
Sorsa API、POST /user-tweetsコードやスケジュール実行で、全投稿タイムライン全体、1リクエスト20投稿最初の2,000投稿は無料、その後は1,000件あたり$0.07から
Sorsa API、POST /search-tweetsアカウントの特定の期間2006年まで遡って、2つの日付の間の投稿1,000件あたり$0.07から
Sorsa API、POST /tweet-info-bulkすでにリンクを持っている投稿1リクエストで最大100投稿1,000件あたり$0.014から
ツイートエクスポートツール最新の20投稿を1回だけ20投稿の1ファイル無料
自分のデータの X アーカイブ自分のアカウントのすべてHTML と JSON の .zip(DM を含む)無料。X によれば数日かかることがある
  • API プレイグラウンドでの Sorsa API

    用途
    コードなしで、アカウントの全投稿
    得られるもの
    CSV、Excel、JSON 形式の20投稿ずつのページ
    費用
    最初の2,000投稿は無料、その後は1,000件あたり$0.07から
  • Sorsa API、POST /user-tweets

    用途
    コードやスケジュール実行で、全投稿
    得られるもの
    タイムライン全体、1リクエスト20投稿
    費用
    最初の2,000投稿は無料、その後は1,000件あたり$0.07から
  • Sorsa API、POST /search-tweets

    用途
    アカウントの特定の期間
    得られるもの
    2006年まで遡って、2つの日付の間の投稿
    費用
    1,000件あたり$0.07から
  • Sorsa API、POST /tweet-info-bulk

    用途
    すでにリンクを持っている投稿
    得られるもの
    1リクエストで最大100投稿
    費用
    1,000件あたり$0.014から
  • ツイートエクスポートツール

    用途
    最新の20投稿を1回だけ
    得られるもの
    20投稿の1ファイル
    費用
    無料
  • 自分のデータの X アーカイブ

    用途
    自分のアカウントのすべて
    得られるもの
    HTML と JSON の .zip(DM を含む)
    費用
    無料。X によれば数日かかることがある

#コードを書かずに全ツイートをダウンロードする

API プレイグラウンドは、フォームから Sorsa API のリクエストを送ります。User Tweets を選び、ハンドルを入力して実行し、投稿を CSV、Excel、JSON でエクスポートします。スクリプトを書くまでもない、1回限りのダウンロードに向いています。

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

  2. プレイグラウンドを開く。 API プレイグラウンドに移動し、上部にキーを貼り付けます。

  3. User Tweets を選ぶ。 アカウントのハンドルを、@ を付けずに入力します。

  4. ページ数を設定する。 1ページは20投稿の1リクエストなので、100ページで2,000投稿が返ります。実行前に、プレイグラウンドが費用を表示します。

  5. 実行してエクスポートする。 結果を CSV、Excel、JSON に切り替えて、ファイルを保存します。

何年分もの履歴があるアカウントは、日付で作業を分けてください。同じプレイグラウンドで、from: と期間を指定したツイート検索を、1回の実行につき1年分ずつ実行します。やり方は、後述の3,200件の上限のセクションで説明します。

#API で全ツイートをダウンロードする手順

コードでは、ダウンロード全体が Sorsa API の POST /user-tweets を囲む1つのループです。ApiKey ヘッダーにキーを1つ入れ、1リクエストで20投稿を取得し、カーソルでアカウントの最初の投稿まで遡ります。カーソルとは、API が各ページと一緒に返すしおりのことで、次のリクエストで送ると、そのページの次が返ります。

  1. キーを取得する。 サインアップして、ダッシュボードからキーをコピーします。開発者アカウントの開設も、OAuth も、審査も不要です。

  2. 作業の規模を確認する。 GET /info(新しいタブで開きます) は tweets_count を含むプロフィールを返します。これを20で割ると、必要なリクエスト数になります。

    ターミナル
    curl -G "https://api.sorsa.io/v3/info" \
      -H "ApiKey: YOUR_API_KEY" \
      --data-urlencode "username=northfield_climatelab"
    
  3. 最初のページをリクエストする。 ハンドルを JSON として POST /user-tweets(新しいタブで開きます) に送ります。ハンドルの代わりに、ユーザー ID やプロフィールリンクも使えます。

    ターミナル
    curl -X POST "https://api.sorsa.io/v3/user-tweets" \
      -H "ApiKey: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"username": "northfield_climatelab"}'
    
    レスポンス200 OK
    {
      "tweets": [
        {
          "id": "2116531887928250368",
          "full_text": "October was our warmest month on record. #climatedata",
          "created_at": "2026-10-31T14:05:00Z",
          "lang": "en",
          "likes_count": 812,
          "retweet_count": 240,
          "reply_count": 61,
          "quote_count": 38,
          "view_count": 96400,
          "bookmark_count": 410,
          "is_reply": false,
          "is_quote_status": false,
          "entities": [
            {
              "type": "photo",
              "link": "https://pbs.twimg.com/media/Gx1nQ7aW8AAzk3T.jpg"
            }
          ],
          "user": {
            "username": "northfield_climatelab",
            "display_name": "Northfield Climate Lab",
            "followers_count": 48900,
            "tweets_count": 12400
          }
        }
      ],
      "next_cursor": "DAABCgABG8vZ0Qm__-oKAAIbuv3MBVvA0AgAAwAAAAIAAA"
    }
    
  4. カーソルをたどる。 返ってきた next_cursor を、次のリクエストのボディに入れます。カーソルのないレスポンスが最後のページで、タイムラインの取得が完了したことを示します。

    POST /user-tweets ハンドル + カーソル 20行を tweets.csvに書き込み カーソルを .cursorファイル保存 カーソルなし ファイル完成 保存したカーソルで繰り返し 途中で止まっても、スクリプトを再実行すれば保存済みカーソルから再開します。
    ページごとにカーソルを保存しておけば、止まったダウンロードも最初からやり直さず、続きから再開できます。
  5. 届いた行を順に書き込む。 次のスクリプトは、各ページを CSV に追記し、メディアのリンクを専用の列に入れ、ページごとにカーソルを保存します。そのため、止まった実行も続きから再開できます。

    import csv
    import os
    import time
    
    import requests
    
    API = "https://api.sorsa.io/v3/user-tweets"
    HEADERS = {"ApiKey": "YOUR_API_KEY"}
    FIELDS = ["id", "created_at", "full_text", "lang", "likes_count",
              "retweet_count", "reply_count", "quote_count", "view_count",
              "bookmark_count", "is_reply", "in_reply_to_username", "media"]
    
    
    def download(username, out="tweets.csv"):
        state = out + ".cursor"
        cursor = open(state).read().strip() if os.path.exists(state) else None
        first_run = not os.path.exists(out)
        with open(out, "a", newline="", encoding="utf-8") as f:
            rows = csv.DictWriter(f, FIELDS, extrasaction="ignore")
            if first_run:
                rows.writeheader()
            while True:
                body = {"username": username}
                if cursor:
                    body["next_cursor"] = cursor
                r = requests.post(API, headers=HEADERS, json=body, timeout=60)
                if r.status_code == 429:  # over 20 requests in a second
                    time.sleep(1)
                    continue
                r.raise_for_status()  # 403: key missing, wrong or used up
                page = r.json()
                for t in page.get("tweets") or []:
                    media = [e["link"] for e in t.get("entities") or []
                             if e.get("type") in ("photo", "video")]
                    rows.writerow({**t, "media": " ".join(media)})
                f.flush()
                cursor = page.get("next_cursor")
                if not cursor:
                    break
                with open(state, "w") as s:
                    s.write(cursor)
        if os.path.exists(state):
            os.remove(state)
    
    
    download("northfield_climatelab")
    

リプライとリポスト

既定では、POST /user-tweets はアカウント自身の投稿を返します。リプライも含めるには、ボディに "with_replies": true を追加します。リプライだけ、あるいはリポストだけをダウンロードするには、"type" を "replies" または "retweets" に設定します。リポストには、元の投稿が retweeted_status の下に完全な形で含まれます。

403 はキーがない、間違っている、またはリクエスト残量がないことを、429 は1秒に20リクエストを超えたことを示すので、スクリプトは1秒待って再試行します。失敗したリクエストは課金されません。リトライとページネーションについては、ほかのすべてのエンドポイントも含めて、Python での Twitter API のガイドで解説しています。

#ユーザーのツイートを3,200件より多く取得する方法

上限のないエンドポイントを使います。3,200件の制限は公式 X API のユーザータイムラインのもので、アカウントの最新の3,200投稿しか返しません。一方、Sorsa API の POST /user-tweets は、最初の投稿まで遡ってページを取得し続けます。

この数字は、X 自身のタイムラインのドキュメント(新しいタブで開きます)に書かれています("Up to 3,200 most recent Posts"、つまり最新の最大3,200投稿)。同じドキュメントには、従量課金の利用者向けに、2006年3月まで遡る全期間検索(新しいタブで開きます)も載っていますが、開発者アカウントとアプリが必要で、1投稿$0.005です。つまり、この上限は X のデータではなく1つのエンドポイントの性質であり、3,200件をすべてのツールに共通の壁だと書くガイドは、そのエンドポイントのことを述べているにすぎません。

例のアカウント: 2011年~2026年の投稿12.4K件 公式X API ユーザータイムライン 古い投稿8.2K件は返らない 最新3,200件 Sorsa API POST /user-tweets 12.4K件すべて、最初の投稿まで 3,200件の上限 2011 2014 2017 2020 2023 2026 左が古い投稿、右が最新
1万2,400投稿のアカウントでは、公式 X API のタイムラインは最新の3,200投稿で止まります。Sorsa API のタイムラインは最初の投稿まで続きます。

Sorsa API は、最新ページと同じレートで全履歴を提供します。1万2,400投稿のアカウントなら620リクエストで、$0.87からです。公式 X API の全期間検索で同じ投稿を取得すると$62.00かかり、月300万件の投稿読み取りで止まります。

期間を指定してダウンロードする

履歴の一部だけをダウンロードするには、日付でアカウントを検索します。from:、since:、until: を付けた POST /search-tweets(新しいタブで開きます) は、2006年まで遡って、2つの日付の間のそのアカウントの投稿を、同じカーソルで1リクエスト20件ずつ返します。

リクエストボディ
{
  "query": "from:northfield_climatelab since:2019-01-01 until:2020-01-01",
  "order": "latest"
}

1年ごとに期間を分けると、1回の実行が短くなり、再試行もしやすくなります。写真や動画のある投稿だけに絞るには filter:media を、リプライを除外するには -filter:replies を追加します。そのほかの演算子は、Twitter 検索演算子のガイドに一覧があります。2006年までのすべてのアカウントの、あるテーマの投稿を検索するのは別の作業で、Twitter の過去データで解説しています。

#全ダウンロードの費用

全ダウンロードの費用は、20投稿につき1リクエストです。1万2,400投稿のアカウントは620リクエストで、Sorsa API なら$0.87から、公式 X API は同じ投稿に1件$0.005で$62.00を課金します。

どの規模でも、Sorsa API は1,000投稿あたり$0.07から、公式 X API は$5.00です。100回分の無料リクエストで、2,000投稿までのアカウントなら取得できます。

アカウントの投稿数リクエスト数Sorsa API(から)公式 X API
3,200160$0.22$16.00
1万2,400620$0.87$62.00
5万2,500$3.50$250.00
20万1万$14.00$1,000.00
  • 3,200

    リクエスト数
    160
    Sorsa API(から)
    $0.22
    公式 X API
    $16.00
  • 1万2,400

    リクエスト数
    620
    Sorsa API(から)
    $0.87
    公式 X API
    $62.00
  • 5万

    リクエスト数
    2,500
    Sorsa API(から)
    $3.50
    公式 X API
    $250.00
  • 20万

    リクエスト数
    1万
    Sorsa API(から)
    $14.00
    公式 X API
    $1,000.00

任意のプロフィールにある投稿数を入力すると、自分のダウンロードの費用を試算できます。

Xのプロフィールで名前の下に表示される数です。または次から選択:

$62.00
公式X APIの場合
1,000投稿あたり$5.00(全期間検索経由)。ユーザータイムラインは最新の3,200件で止まります
最安 $0.87
Sorsa APIの場合
1リクエスト20投稿で620リクエスト、Starterの月間10Kの6%

無料の100リクエストで最初の2,000投稿をカバーできます。このアカウント全体に占める割合は16%です。

入力に合わせて、無料分と両方の料金が更新されます。1リクエストあたりの投稿数は20のままです。

課金は投稿ごとではなく、リクエストごとです。20件のページも、3件しかない最後のページも同じ料金で、失敗したリクエストには費用がかかりません。Starter プランの月間10,000リクエストで20万投稿を取得でき、各プランの1,000リクエストあたりの料金は料金ページに載っています。

1つのアカウントのページは、1つずつ順番に処理されます。各リクエストが直前のリクエストのカーソルを必要とするからです。複数のアカウントは並行してダウンロードでき、無料アカウントを含む全プランでキーあたり毎秒20リクエストまでです。

#ファイルの各行に入る内容

投稿は1件ずつ、テキスト、日時、カウント、メディア、投稿者を含む1つの JSON オブジェクトとして返るため、CSV の1行を作るのに2回目のリクエストは要りません。次のフィールドは、上のスクリプトが書き出すもので、公開 API リファレンスに基づいています。

フィールド内容例
id投稿の ID(文字列)。スプレッドシートで丸められないよう、テキストのまま保持する"2116531887928250368"
created_at投稿日時(UTC の ISO 8601)"2026-10-31T14:05:00Z"
full_text長い投稿を含む全文"October was our warmest..."
likes_count、retweet_count、reply_count、quote_countエンゲージメント数812
view_count、bookmark_count表示回数とブックマーク数96400
is_reply、in_reply_to_username誰かへの返信かどうかと、その相手false
quoted_status、retweeted_status引用またはリポストされた投稿の全体オブジェクト
entities写真、動画、リンク(それぞれ type と link を持つ)"photo"
made_with_ai、paid_partnership投稿に付く X のラベルfalse
user投稿者の完全なプロフィールオブジェクト
  • id

    内容
    投稿の ID(文字列)。スプレッドシートで丸められないよう、テキストのまま保持する
    例
    "2116531887928250368"
  • created_at

    内容
    投稿日時(UTC の ISO 8601)
    例
    "2026-10-31T14:05:00Z"
  • full_text

    内容
    長い投稿を含む全文
    例
    "October was our warmest..."
  • likes_count、retweet_count、reply_count、quote_count

    内容
    エンゲージメント数
    例
    812
  • view_count、bookmark_count

    内容
    表示回数とブックマーク数
    例
    96400
  • is_reply、in_reply_to_username

    内容
    誰かへの返信かどうかと、その相手
    例
    false
  • quoted_status、retweeted_status

    内容
    引用またはリポストされた投稿の全体
    例
    オブジェクト
  • entities

    内容
    写真、動画、リンク(それぞれ type と link を持つ)
    例
    "photo"
  • made_with_ai、paid_partnership

    内容
    投稿に付く X のラベル
    例
    false
  • user

    内容
    投稿者の完全なプロフィール
    例
    オブジェクト

CSV は、Excel や Google スプレッドシートでそのまま開けます。Node.js タブの JSON Lines ファイルは、ノートブックや AI のデータセットに向いています。スケジュールで自動的にシートを更新したい場合は、Twitter データを Google スプレッドシートにエクスポートをご覧ください。

知っておきたいこと

ダウンロードできるのは公開投稿だけです。非公開アカウントの投稿、削除された投稿、投稿にいいねした人の一覧、アカウントがいいねやブックマークした投稿は X では非公開のため、どの API でも取得できません。ダウンロードの後に削除された投稿は、手元のファイルに残ります。

#X アカウントのメディアをすべてダウンロードする方法

POST /user-tweets でアカウントの投稿を読み、type が photo または video のエンティティをすべて保存します。各エンティティにはファイルへの直接の link が付いているので、テキストを保存するループでメディアも保存できます。

Python
import os

import requests


def save_media(tweets, folder="media"):
    os.makedirs(folder, exist_ok=True)
    for t in tweets:
        for e in t.get("entities") or []:
            if e.get("type") not in ("photo", "video"):
                continue
            name = t["id"] + "-" + e["link"].split("/")[-1].split("?")[0]
            data = requests.get(e["link"], timeout=60).content
            with open(os.path.join(folder, name), "wb") as f:
                f.write(data)

ダウンロードのループの中で、各ページの tweets を渡して呼び出します。開始前に GET /info でアカウントの media_count がわかるので、何個のファイルが来るかを把握できます。

各エンティティには preview(サムネイル)も付いており、投稿された内容を確認するだけなら、動画全体の代わりにこれを保存できます。スニペットのように、各ファイルに投稿の ID を付けておくと、各行の media 列に同じリンクが載っているので、後でメディアフォルダを CSV と結び付けられます。1件の投稿のメディアなら、投稿のリンクを無料のメディアダウンローダーに貼り付けてください。より大規模なメディアの処理は、API で Twitter のメディアをダウンロードのガイドで解説しています。

最大100件の投稿リンクまたは ID を POST /tweet-info-bulk(新しいタブで開きます) に送ると、すべての投稿が1リクエストで返ります。料金は1,000投稿あたり$0.014からで、公式 X API の$5.00の250分の1です。

ターミナル
curl -X POST "https://api.sorsa.io/v3/tweet-info-bulk" \
  -H "ApiKey: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tweet_links": [
        "https://x.com/northfield_climatelab/status/2116531887928250368",
        "2115035779691450372"]}'

手作業で集めた投稿、レポートの出典、残しておきたいスレッドに使えます。リンクは x.com または twitter.com の完全なアドレスでも、ID だけでも構わず、1つのリストに混在させられます。1,000投稿の保存は10リクエストです。各投稿は、投稿者を含め、タイムラインのページと同じフィールドで届きます。

大事な投稿は、見つけた日に保存してください。削除された、または非公開になった投稿のリンクは単に返ってこず、バッチの残りは通常どおり届きます。また、X で削除された投稿は、その後は誰も取得できません。

#自分のツイートをすべてダウンロードする方法

自分のアカウントなら、X のアーカイブをリクエストしてください。無料で、最初の投稿以降のすべての投稿に加え、DM、メディア、フォロワー、リストが、HTML と JSON のファイルとして .zip に入っています。X ヘルプセンター(新しいタブで開きます)には、次の手順が載っています。

  1. 自分の X データを開く。 「設定とプライバシー」、「アカウント」、「X のデータ」の順に開きます。

  2. 本人確認をする。 X がメールまたは電話に送るコードを入力します。

  3. データをリクエストする。 「データをダウンロード」の下で、X の横にある「データをリクエスト」を押します。

  4. .zip をダウンロードする。 ファイルの準備ができると、X がリンクをメールで送るか、プッシュ通知を送ります。ヘルプページによれば、数日かかることがあります。

アーカイブは、「これまで投稿したすべて」に応えるものです。今すぐ公開投稿をスプレッドシートで、表示回数やブックマーク数を列に入れて取得したい場合は、自分のハンドルに対して上の API の手順を実行してください。1リクエスト20投稿は同じで、メールを待つ必要はありません。

#今日、最初のアカウントをダウンロードする

公開アカウントのすべての投稿は、ハンドル1つとループ1つで取得できます。Sorsa API は、3,200件の上限なしで1リクエスト20投稿を返し、1,000件あたり$0.07からです。公式 X API は$5.00で、最初の2,000投稿は無料です。まず今必要なアカウントから始め、毎秒20リクエストで次のアカウントを並行して追加してください。そのほかの種類のダウンロードも、X からツイート、フォロワー、プロフィールを取得する方法のガイドで同じように扱っています。

#よくある質問

他人のアカウントの全ツイートをダウンロードできますか?

はい、公開アカウントならできます。Sorsa API の POST /user-tweets はハンドルを受け取り、タイムラインのすべての投稿を1リクエスト20件ずつ返します。投稿は X で公開されているため、アカウント側の許可は不要です。非公開アカウントの投稿は、承認したフォロワーにしか表示されないため、ダウンロードできません。非公開アカウントに対するリクエストが何も返さなかった場合、費用はかかりません。

ユーザーの全ツイートを無料でダウンロードする方法はありますか?

はい、3つあります。無料のツイートエクスポートツールは、サインアップなしでアカウントの最新の20投稿を保存します。Sorsa API のアカウントにはどれも、100回分の無料リクエストが付きます。カード不要・有効期限なしで、公開アカウントの最初の2,000投稿に十分です。自分のアカウントなら、X のアーカイブが無料で完全ですが、X によれば届くまで数日かかることがあります。

ユーザーの全ツイートをダウンロードするには、どの API を使えばよいですか?

Sorsa API を使ってください。POST /user-tweets は3,200件の上限なしで、1リクエスト20投稿を、1,000投稿あたり$0.07からで返します。公式 X API は1,000件あたり$5.00で、ユーザータイムラインは最新の3,200投稿で止まります。Sorsa API に必要なのは、開発者アカウントと OAuth ではなく API キー1つで、全プランで毎秒20リクエストに対応します。

非公開アカウントのツイートをダウンロードできますか?

できません。非公開アカウントの投稿は、承認したフォロワーにしか見えないため、公式 X API を含め、どの API でも取得できません。Sorsa API は公開データのみを読み取り、誰の X ログイン情報も求めません。非公開アカウントへのリクエストが空で返った場合は、課金されません。

他人のいいねやブックマークをダウンロードできますか?

できません。X は、アカウントがいいねした投稿の一覧とブックマークを非公開にしているため、どの API でも取得できません。ダウンロードできるのは、各投稿のいいね数とブックマーク数(likes_count と bookmark_count)と、GET /info を通じて得られる、アカウントがいいねした投稿の総数(favourites_count)です。

ツイートをダウンロードしたことは、アカウントに知られますか?

いいえ。Sorsa API で公開投稿を読み取っても、アカウントには何も送られず、自分の X アカウントも使われません。リクエストは、自分のキーから Sorsa API に送られるだけです。アカウントの通知には何も表示されず、自分の X アカウントは関与しません。

#検証方法

このガイドのリクエストはすべて、2026年11月2日時点の公開 Sorsa API リファレンスから書き、各エンドポイント、ボディのフィールド、ページサイズ、レスポンスのフィールドをリファレンスと照合しました。レスポンスは、リファレンスに記載された形式に沿って架空のアカウント向けに短くした例で、この記事のためにライブキーで実行したものではありません。X の3,200件の上限、料金、アーカイブの手順は、同日に読んだ docs.x.com と X ヘルプセンターに基づいており、すべての費用は、Sorsa API の1,000リクエストあたり$1.40と、X の1投稿$0.005からの計算です。

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

変更点
  • 結論を先頭に置いて全面的に書き直しました。3,200件の上限を X 自身のドキュメントで裏付け、API プレイグラウンドによるノーコードの方法、再開できる Python と Node.js のスクリプト、任意の規模のアカウントに使える費用の試算、メディアとリンクによる投稿保存のセクションを追加し、すべての料金を docs.x.com で確認しました。2026-04-06: 初公開。