X(Twitter)のポスト本文をログインなしで取得する経路

一言まとめ

x.com を直接取得すると HTTP 402 で弾かれる。fxtwitter → vxtwitter → Jina Reader → 検索エンジンのフレーズ一致、の順に落として本文を回収する。

作成 · 更新 · #x#twitter#scraping#fetch
目次 5 sections
  1. 01 前提
  2. 02 入力の正規化
  3. 03 フォールバック順
  4. 1. fxtwitter(第一選択)
  5. 2. vxtwitter(fx の予備)
  6. 3. Jina Reader(スレッド全体・プロフィール)
  7. 4. 検索エンジンのフレーズ一致(最終手段)
  8. 5. 手貼り
  9. 04 注意点
  10. 05 更新履歴

調査時点: 2026-06。各経路の生死は変わりやすいので、以下は当時の実測値として読む。

前提#

X の個別ポスト・スレッド・プロフィールは、ログインしていないクライアント(HTTP フェッチツール、LLM の WebFetch など)からは x.com / twitter.com を直接取得できない。2026-06 時点の実測では次の 3 つがすべて失敗した。

経路結果
https://x.com/<handle>/status/<id> を直接取得HTTP 402(常に)
公式 oEmbed https://publish.x.com/oembed?url=...HTTP 402
Nitter 系(xcancel.com など)HTTP 503(公開インスタンスが軒並み停止)

入力の正規化#

URL から <handle> と <id> を抜く。対象は https://x.com/<handle>/status/<id> と https://twitter.com/<handle>/status/<id> の 2 形で、? 以降のクエリと /photo/1 のような末尾は捨てる。ハンドルしか分からないときはプロフィール経路(Jina Reader)か検索から入る。

フォールバック順#

上から順に試し、取れた時点で止める。

1. fxtwitter(第一選択)#

GET https://api.fxtwitter.com/<handle>/status/<id>

構造化 JSON が返り、本文(text)・投稿者・engagement(likes / retweets / views)が入る。プロキシ不要で速い。スレッドの親ポスト 1 件ならこれで足りる。

2. vxtwitter(fx の予備)#

GET https://api.vxtwitter.com/<handle>/status/<id>

fxtwitter のミラー的な存在。fx が空かエラーのときだけ使う。

3. Jina Reader(スレッド全体・プロフィール)#

GET https://r.jina.ai/https://x.com/<handle>/status/<id>
GET https://r.jina.ai/https://x.com/<handle>

JS 描画を通すので、スレッド全文やプロフィールの直近ポスト一覧が取れる。engagement 数値は取りこぼすことがある。無料枠のため混雑時は不安定で、弾かれたら 4 へ。

4. 検索エンジンのフレーズ一致(最終手段)#

X の検索結果はページタイトルに本文を埋め込む。これを使って、URL 不明時は site:x.com <handle> <キーワード> で URL を特定し、本文回収は "<ポスト内の特徴的な一文>" の完全一致で引く。短〜中尺のポスト向きで、長文スレッドは末尾が切れる。URL が判明したら 1 に戻って fx で全文を取る。

5. 手貼り#

長文スレッド全部、リプライツリーの深部、最新の engagement 数値が必須のときは、本人にポストを開いて本文を貼ってもらうのが最終確実手。推測で埋めない。

注意点#

  • engagement 数値はどの経路でも古さ・取りこぼしがありうる。数値を出すときは「fx 取得時点」と添える。
  • 削除済み・非公開ポストはどの経路でも取れない。全経路で空が続いたら「取得不可(削除/非公開の可能性)」と返す。
  • 複数ポストの確認は 1 の取得を並列に投げてよい。

更新履歴#

  • 2026-06-28: 初版(ローカル調査ノート)
  • 2026-10-17: Wiki へ移植、概念ページとして再構成

同じトピック — ツール