2026年7月更新:100回分の無料リクエストの開始オファーを追加し、Sorsa の料金を1,000件あたりの基準で言い直し、2026年4月20日の変更後の公式 X API の従量課金レートを反映しました。
要点: Twitter 画像スクレイパーは、公開の X 投稿からメディアファイル、写真、動画、GIF を抽出します。2026年の実用的な経路は、各ツイートのメディア URL を構造化されたレスポンスで返す API で、それを自分でダウンロードします。ブラウザツールは一度に1投稿を扱い、API はプロフィール全体、検索、バルクのジョブを扱います。
Twitter 画像のスクレイピングのほとんどのガイドは、2つの行き止まりの1つを指し示します。単一の投稿をつかむブラウザのボタンか、X が次にフロントエンドを変えたときに壊れる Python のスクリプトです。どちらもスケールせず、公式 X API は今や取得したリソース単位で課金するため、数千の投稿からメディアを取得するのは速く高価になります。
代替の Twitter/X API プロバイダーである Sorsa API は、異なる経路を取ります。各ツイートのメディアを構造化された entities 配列の中に返すため、単一のリクエストが検索クエリやプロフィールのタイムラインからすべての写真と動画の URL を表面化でき、ファイルを自分のスケジュールでダウンロードします。課金はフラットなリクエスト単位(1呼び出し = 1リクエスト)なので、メディアの収集はバッチ基準で1,000ツイートあたり$0.02から動作し、作者プロフィールがすべてのツイートレスポンスの中に追加料金なしで同梱されます。レート制限はすべてのプランで一律の毎秒20リクエスト、認証は OAuth ではなくヘッダーの中の1つの API キー、そして最初の100リクエストはクレジットカード不要で無料です。読み取りの多いメディアの作業では、それは公式 API の最大50分の1のコストに着地します。
本ガイドは、メディアスクレイパーが実際に返すもの、実行可能なコード付きの動く API の経路、なぜ人気の自前の方法が2026年に失敗するか、そして実際のコストの計算を扱います。
目次
- Twitter 画像スクレイパーがすること
- Twitter メディアをダウンロードする方法:手法
- API で Twitter メディアを取得する方法
- 自分のスクレイパーを作ること、そしてなぜ壊れるか
- 制限、コスト、エッジケース
- これが実際にどう見えるか
- 始め方
- よくある質問
Twitter 画像スクレイパーがすること {#what-a-twitter-image-scraper-does}
Twitter 画像スクレイパーは、写真、動画、アニメーション GIF を含む公開の X 投稿に付いたメディアを、各投稿の周りのメタデータとともに収集します。実際には、2つの異なる仕事をします。メディア URL を(ツイート、プロフィール、ハッシュタグ、または検索から)見つけ、それからそれらの URL から根底のファイルをダウンロードします。
その2ステップの分割は重要で、ほとんどのツールはそれをぼかします。データ層はリンクと投稿の詳細を JSON のような構造化された形式で返します。ダウンロード層は X のメディアサーバーから実際のバイトを取得します。良い API は最初のものをきれいに与えます。2番目は、自分で制御する素の HTTP ダウンロードです。
X は、公開の投稿から収集できる3つのメディアタイプを保存します。写真は pbs.twimg.com の CDN から提供される静止画像です。動画は MP4 ファイルです。アニメーション GIF は X 上では実際には GIF ではありません。プラットフォームはそれらを短い、無音の MP4 クリップに変換するため、別のタイプではなく動画のエンティティとして返ってきます。各メディア項目はまた、プレビューまたはサムネイルの URL を運び、完全なファイルの代わりに軽量な参照が欲しいときに有用です。
各投稿に付いてくる情報は、しばしば画像自体と同じくらい価値があります。作者プロフィール、投稿テキスト、タイムスタンプ、そしてエンゲージメントの数(いいね、リポスト、返信、表示)です。視覚的な感情分析、ブランド監視、そしてデータセット構築は、すべてファイルをフォルダーに投げ込むだけでなく、メディアをその文脈と組み合わせることに依存します。
Twitter メディアをダウンロードする方法:手法 {#how-to-download-twitter-media-the-methods}
X からメディアを取得する4つの手法のクラスが存在し、それらは規模と誰が作業をするかできれいに分かれます。単一投稿のダウンローダーは1つのツイートに、API はプロフィール、検索、繰り返しのジョブに合います。
| 方法 | 最適な用途 | 規模 | 必要な認証 | 出力 |
|---|---|---|---|---|
| ブラウザのダウンローダー(リンクを貼り付け) | 1投稿、たまの利用 | 単一のツイート | なし | ファイルのみ |
| ブラウザ拡張 | カジュアル、手動の収集 | 小 | なし | ファイルのみ |
| オープンソースのスクリプト(gallery-dl、yt-dlp) | 技術的なユーザー、アーカイブ | 中、脆い | ログイン済みのクッキー | ファイル+一部のメタデータ |
| マネージド API | プロフィール、検索、バルク、自動化 | 高、安定 | 1つの API キー | 構造化された JSON +メディア URL |
その表の散文版:1枚の画像を1回必要とするなら、リンクを貼り付けるツールで問題ありません。アカウントのすべての画像、ハッシュタグのすべてのメディア、または壊れずに毎日動くジョブが必要になった瞬間、構造化されたデータとページネーションが必要で、それが API が提供するものです。コードを書かずにデータをテストする無料のノーコードの選択肢は、メディアダウンローダーツール で、それは本ガイドの残りが使うのと同じ API を通じて単一のツイートから写真と動画を取得します。
メディアに特化したものを超えたスクレイピングの手法の完全な像は、より広い Twitter のスクレイピング方法 のガイドと Twitter スクレイパーの比較 が、トレードオフを詳しく扱います。
API で Twitter メディアを取得する方法 {#how-to-get-twitter-media-via-api}
API を通じてメディアを取得するのは5つのステップです。キーを取得し、ツイートを返すエンドポイントを呼び、各ツイートの entities 配列を読み、各 link をダウンロードし、そしてタイムラインの制限を超えるためにページネーションします。API は URL とメタデータを渡します。ダウンロードは、自分で行う標準の HTTP リクエストです。
API が返すすべてのツイートオブジェクトは entities 配列を運びます。各エントリーは type(photo、video、または url)、link(メディア URL)、そして preview(サムネイル)を持ちます。その構造がすべてです。
{
"id": "1782368585664626774",
"full_text": "Launch photos from this morning",
"created_at": "2026-05-01T10:30:00Z",
"entities": [
{
"type": "photo",
"link": "https://pbs.twimg.com/media/Gx1example.jpg",
"preview": "https://pbs.twimg.com/media/Gx1example.jpg?name=small"
}
],
"user": { "username": "nasa", "followers_count": 90000000 }
}
1つのツイート
単一ツイートエンドポイント を呼び、それから entities をループして各ファイルをダウンロードします。API キーは ApiKey ヘッダーに入ります。
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://api.sorsa.io/v3"
tweet = requests.post(
f"{BASE}/tweet-info",
headers={"ApiKey": API_KEY},
json={"tweet_link": "https://x.com/nasa/status/1782368585664626774"},
).json()
for item in tweet.get("entities", []):
if item["type"] in ("photo", "video"):
url = item["link"]
data = requests.get(url).content
name = url.split("/")[-1].split("?")[0]
with open(name, "wb") as f:
f.write(data)
フル解像度の写真には、元のサイズをリクエストします。X はデフォルトでリサイズされた版を提供し、pbs.twimg.com の URL でサイズのエイリアスを公開します。thumb(150x150)、small(680x680)、medium(1200x1200、デフォルト)、large(2048x2048)、そして orig(4096x4096)で、X Developers コミュニティに文書化されています。写真の URL に ?name=orig を付け加えて、保存された最大の版を取得します。
プロフィール全体
アカウントからすべての画像とクリップを収集するには、カーソルが尽きるまで next_cursor で ユーザーツイートエンドポイント をページネーションします。各ページは最大20ツイートを返します。
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://api.sorsa.io/v3"
HEADERS = {"ApiKey": API_KEY}
def media_urls(username):
cursor = None
while True:
body = {"username": username}
if cursor:
body["next_cursor"] = cursor
page = requests.post(f"{BASE}/user-tweets", headers=HEADERS, json=body).json()
for tweet in page.get("tweets", []):
for item in tweet.get("entities", []):
if item["type"] in ("photo", "video"):
yield item["link"]
cursor = page.get("next_cursor")
if not cursor:
break
for url in media_urls("nasa"):
print(url)
ハッシュタグまたは検索
アカウントではなくトピックのメディアを取得するには、クエリで API を通じてツイートを検索 し、filter:images や filter:videos のような標準の X のコマンドを使ってメディアを運ぶ投稿に絞り込みます。
body = {"query": "#sunset filter:images", "order": "latest"}
results = requests.post(f"{BASE}/search-tweets", headers=HEADERS, json=body).json()
X の高度な検索で動くのと同じコマンドがここで動きます。完全な Twitter 検索コマンドのチートシート が日付範囲、言語フィルターなどを扱います。
ID によるバルク
すでにツイート ID のリストがあるとき、バッチエンドポイント は1回のリクエストで最大100件を受け付け、完全なメディアと作者データとともにそれらすべてを返します。1回のバッチ呼び出しは枠に対する1リクエストと数え、そこがコストの利点が複利で効くところです。
自分のスクレイパーを作ること、そしてなぜ壊れるか {#building-your-own-scraper-and-why-it-breaks}
自前のスクレイパーは小さな単発のジョブには実行可能ですが、2026年に2つの人気の自前の経路はそれぞれハードな壁に当たります。公式 API のチュートリアルのアプローチは事実上死んでおり、クッキーベースのスクレイパーはアカウントを危険にさらし3,200ツイートで止まります。
最初の壁は古典的なチュートリアルです。多くの古いガイドは、いまだに Tweepy をインストールし、Twitter 開発者アカウントを作り、4つの OAuth キーでユーザーのタイムラインを取得するよう告げます。その無料の経路は、それらのガイドが記述する方法ではもう存在しません。X は2023年に無料 API アクセスを削除し、現行の API はリソース単位で課金するため、ほとんどの記事が教える「無料の Tweepy スクリプト」は、失敗するか静かに計測された請求に変わります。
2番目の壁は現代のスクレイパーです。今日の標準のオープンソースツールは gallery-dl で、動きますが、2つの深刻な落とし穴があります。今やログイン済みの X アカウントから auth-token クッキーを抽出してツールに渡すことを必要とし、それは X の規約に違反し、そのアカウントを停止の実際のリスクにさらします。そしてそれは X のタイムラインの制限を継承します。標準のタイムラインビューはアカウントあたりおよそ3,200ツイートに上限が設けられるため、より古いメディアは単にこの方法では到達できません。当社がメディアのジョブを実行したアカウント全般で、それらが毎回現れる2つの故障です。死ぬセッションと、3,200投稿の壁です。
API の経路は両方を回避します。アクセスは個人のセッションではなくサーバー側のキーなので、漏れるログインクッキーはありません。そしてプロフィールのタイムラインのエンドポイントはタイムラインビューを超えてページネーションするため、3,200で止まるのではなく、プロフィールを最初の投稿に向けて遡って歩けます。実際のニーズがメディアに特化したものではなく完全なアカウント履歴なら、完全なツイート履歴を取得する がそのワークフローを端から端まで扱います。
制限、コスト、エッジケース {#limits-cost-and-edge-cases}
公式 API を通じて自分でメディアをスクレイピングすることと、フラットレートの API を使うことのコスト差は大きいです。2つのプロバイダーが異なる単位で課金するからです。X は取得したリソース単位で課金します。フラットレートの API はリクエスト単位で課金し、単一のリクエストがそのメディアと作者プロフィールとともに最大100ツイートを運べます。
2026年4月20日の X の料金更新の現行レートを使った、並べての対比はこうです。
| 公式 X API(従量課金) | Sorsa API | |
|---|---|---|
| 課金単位 | 取得したリソース単位 | リクエスト単位(フラット) |
| メディア+作者付きの100ツイート | 約$1.50(各$0.005で100投稿 + 各$0.010で100作者読み取り)、加えて各$0.005のメディア読み取り | $0.00199、1回のバッチリクエスト(Pro) |
| レスポンス内のメディア URL | 課金(メディア:読み取り、各$0.005) | ツイートオブジェクトに込み |
| レスポンス内の作者プロフィール | 別課金(各$0.010) | 無料で込み |
| 認証 | OAuth 2.0 + ベアラートークン | 単一の API キーヘッダー |
| レート制限 | エンドポイントにより変動 | 一律の毎秒20リクエスト、すべてのプラン |
| 月次の読み取り上限 | 200万投稿読み取り | プランの枠(10Kから500Kリクエスト) |
| 書き込みアクション(投稿、DM、フォロー) | 投稿と DM;フォロー/いいね/引用は Enterprise のみ | なし、読み取り専用 |
平たく言えば要点:メディアと作者データ付きの100ツイートの読み取りは、公式 API のリソース単位のモデルでおよそ$1.50以上、対する Sorsa では単一のフラットレートのリクエストです。ワークフローに投稿、削除、DM の送信が伴うなら、それは公式 API の領分で、そこでの比較は意味をなしません。フラットで予測しやすい価格で公開のメディアを読みダウンロードすることには、それがまさに Sorsa が作られたものです。プランの料金 のページがこれをさらに分解します。
いくつかのエッジケースが、これのどれもそもそも機能するかを決めます。
非公開アカウントは対象外です。 保護されたアカウントは投稿を承認されたフォロワーに制限します。承認されたフォロワーでない限り、どの API、スクレイパー、またはダウンロードツールも、保護されたアカウントのメディアに到達できません。これは公式 X API、Sorsa、そして他のすべての方法に等しく当てはまります。
レート制限とリトライ。 Sorsa は、毎秒20リクエストを超えると 429 Too Many Requests を返します。修正は、ペナルティなしに1秒待ってリトライすることです。バッチエンドポイントは、そもそも必要なリクエスト数を減らします。
直接のファイルリンク。 ダウンロードのステップは、link フィールドの中の URL に対する素の HTTP GET です。写真は pbs.twimg.com に解決します。動画ファイルはより大きいため、大きなジョブにはメモリに読み込むのではなくディスクにストリームします。
合法性、簡単に。 公開データの収集はおおむね許容されると扱われますが、X の規約はスクレイピングを制限し、ダウンロードされたメディアはその作成者の著作権のままです。公開の画像を分析することは、それらを再公開することとは異なる姿勢で、プラットフォームの規約は依然として適用されます。これは一般情報で、法的助言ではありません。特定のユースケースを弁護士に確認してください。
これが実際にどう見えるか {#what-this-looks-like-in-practice}
あるおよそ6人規模のブランド分析チームは、おなじみのサイクルを経てこの方法にたどり着きました。このチームは、視覚的な感情のレビューのために、ブランドのメンションストリームからキャンペーンの画像と短いクリップをアーカイブしており、ログイン済みのアカウントの背後で gallery-dl のパイプライン上で動く ソーシャルリスニングのワークフロー でした。セッションは実行の途中で死に続け、最も忙しいハンドルでは3,200投稿の壁に当たり続けたため、アーカイブはつねに不完全で、誰かがつねにジョブのお守りをしていました。
収集をフラットレートの API に移すことで両方の問題が消えました。このチームはメディア URL を検索とプロフィールのタイムラインからバッチで取得し、ファイルを自分のスケジュールでダウンロードし、クッキーのセッションの維持を完全にやめました。データの請求は単一のフラットな月次の数字になり、その量でリソース単位の料金がかかったであろう額をはるかに下回りました。このような読み取りの多いメディアの作業には、フラットなモデルが最大50分の1のコストで動きます。例示のポイントは、同じ状況の誰にでも成り立ちます。ボトルネックは決してダウンロードではなく、それに供給する脆いデータ層でした。
始め方 {#getting-started}
データを見る最も速い方法は、先にリンクした無料のメディアダウンローダーツールです。ツイートのリンクを貼り付けると、写真と動画を返し、コードは要りません。ビルドするには、キーを取得し(最初の100リクエストは無料、クレジットカード不要で、アプリ審査も審査待ちの行列もないため、セットアップは約3分かかります)、最初の呼び出しは上に示した単一ツイートエンドポイントです。そこから、ジョブに応じてプロフィールまたは検索のエンドポイントに入れ替えます。
覚えておく価値のある数字:メディアはバッチ基準で1,000ツイートあたり$0.02から(Starter、Pro、Enterprise のプランにまたがって1,000あたり$0.049 / $0.02 / $0.018)、最初の100リクエストはクレジットカード不要で無料、すべてのプランで一律の毎秒20リクエスト、メディア URL と作者プロフィールがすべてのツイートレスポンスに込み、そして最大100ツイートを1つのリクエストに詰めるバッチエンドポイントです。完全なプランの詳細は上でリンクした料金ページにあり、API リファレンスガイド が本ガイドで示したすべてのフィールドを文書化します。
よくある質問 {#frequently-asked-questions}
Twitter/X から画像をスクレイピングできる?
はい。X 上の公開の画像、動画、GIF は、ブラウザツール、オープンソースのスクリプト、または API を通じて収集できます。API がスケーラブルな選択肢です。各ツイートのメディア URL とメタデータを構造化された JSON で返し、それらの URL からファイルをダウンロードします。非公開と保護されたアカウントは、承認されたフォロワーでない限り、どの方法でもアクセスできません。
Twitter の画像をスクレイピングするのは合法?
公に利用可能なデータの収集は多くの法域でおおむね許容されると扱われますが、X の利用規約はスクレイピングを制限し、ダウンロードするどのメディアも、それを投稿した人の著作権のままです。研究のために公開の画像を分析することは、それらを商業的に再公開することとは異なります。これは法的助言ではなく一般情報なので、特定のユースケースを資格のある弁護士に確認してください。
Twitter アカウントからすべての画像をどうダウンロードする?
アカウントのツイートをページネーションし、それぞれのメディアエンティティを読み、それからすべての写真と動画の URL をダウンロードします。ブラウザツールは1投稿で止まり、ほとんどのオープンソースのスクレイパーは3,200ツイートのタイムラインの制限で止まります。ページネーションする API エンドポイントは、その制限を超えてアカウントの最も古い投稿に向けてプロフィールを歩くため、アーカイブが完全になり得ます。
Twitter の動画と GIF もダウンロードできる?
はい。動画と GIF は写真と同じメディアエンティティを通じて来ます。X では、アニメーション GIF は短い無音の MP4 クリップとして保存されるため、別の GIF タイプではなく動画のエンティティとして返ってきます。Sorsa では、すべてのツイートレスポンスがそのメディア URL を含むため、1つのリクエストが写真、動画、GIF-MP4 を一緒に返せて、各ファイルをそのリンクからダウンロードします。
Twitter のメディアをスクレイピングするのにいくらかかる?
課金モデルによります。公式 X API は取得したリソース単位で課金します。投稿あたり約$0.005、作者プロフィールあたり$0.010、加えてメディアの読み取りです。Sorsa はフラットレートでリクエスト単位で課金し、それはバッチ基準で1,000ツイートあたり$0.02からのメディアになり、メディア URL と作者プロフィールが各レスポンスに込みです。最初の100リクエストはクレジットカード不要で無料です。読み取りの多いメディア収集には、フラットなモデルが最大50分の1のコストで動きます。
非公開の Twitter アカウントからメディアをスクレイピングできる?
いいえ。保護されたアカウントは投稿を承認されたフォロワーに制限し、認証されたフォロワーのセッションなしに、どの API、スクレイパー、またはダウンロードツールもそのメディアを取得できません。この制限は、公式 X API、Sorsa、そして他のすべての方法に同一に適用されます。公開のアカウントと公開の投稿のみが収集できます。
監修:Keksich(Sorsa創業者、マーケター兼X APIリサーチャー)
本ガイドは、Sorsa API を運用する実地の作業、稼働中の API のドキュメント、そして2026年7月の編集中の一次情報源に対する確認に基づいています。X の画像サイズのエイリアスは X Developers コミュニティに対して確認しました。公式 X API のリソース単位のレートは2026年4月20日の料金更新を反映しています。タイムラインの制限と gallery-dl の認証クッキーの挙動は、現行のオープンソースプロジェクトの議論に対して確認しました。料金とエンドポイントの詳細は、Sorsa 自身の料金と API リファレンスのドキュメントに対して確認しました。最終確認2026年7月8日。