X(旧Twitter)の埋め込みタイムラインが表示されない!原因と対処法について

2025年2月ごろ、以前制作したWebサイトのX(旧Twitter)タイムラインの埋め込みが、突然表示されなくなっていることに気づきました。
特にこちら側でコードをいじった覚えもなく、その1週間前には問題なく表示されていました。
首をかしげながらChromeのコンソールログを確認してみると…

429エラー」という見慣れないステータスコードが出ていました。

実はこのエラー、2023年末ごろから徐々に報告が増えており、Xの仕様変更により特に何もしていなくても発生してしまうケースがある模様。

本記事では、実際に遭遇した事例をもとに、X埋め込みタイムラインが表示されなくなる「429エラー」の詳細と、現状で可能な対処法についてまとめました。
お悩みの方の判断材料になれば幸いです。

429エラーの正体:「Too Many Requests」

まず、問題が発生したページのコンソールを確認すると、以下のようなエラーが記録されていました。

twitter (タイムライン埋め込みのユーザー名):1 Failed to load resource: the server responded with a status of 429 ()

これは 「Too Many Requests」=リクエスト過多によるエラー で、X(Twitter)のAPIレート制限を超過した場合に発生します。

APIレート制限とは?

Xでは、アクションごとに15分間で許可されるリクエスト回数が決まっており、これを超えると429エラーが返される仕組みになっています。

たとえば以下のようなイメージ。

アクション(エンドポイント)レート制限(15分間)
ツイートの取得300件/ユーザーあたり
ツイートの投稿200件/ユーザーあたり

レート制限の詳細や他のエンドポイントの規定回数については、以下の公式ページをご参照ください。

X API レート制限

HTTPヘッダーを確認してみた

APIのレスポンスには、以下のようなHTTPヘッダーが含まれます。これを見ると、現在の制限状態やリセットまでの時間がわかります。
(ここら辺はChromeのデベロッパーツールなら、Networkパネル>Xのリソース>Headersタブから確認が可能)

  • x-rate-limit-limit: 15分の間に実行できる上限回数
  • x-rate-limit-remaining: 15分の間に実行できる残りリクエスト件数
  • x-rate-limit-reset: 制限がリセットされる時刻(UTCのエポック秒)

ちなみに、エポック秒はこちらのツールから簡単に日時に変換できます。

補足

UTCのエポック秒…UTC の 1970年1月1日 0時0分0秒 から経過した秒数を指すコンピュータシステム上での時刻表現の一種

私が確認した際は、

x-rate-limit-reset: 15分後のエポック秒
x-rate-limit-remaining: 0

つまり「残り回数ゼロ、あと15分待てばリセットされる」という状態でした。

しかし時間が経っても直らず

通常、15分でレート制限はリセットされるはずなんですが…

15分後に再読み込みしたところ、再び同じ429エラー
リセット時刻(x-rate-limit-reset)は再確認時点からの15分後を示しており、残りリクエスト数(x-rate-limit-remaining)は0
そしてまた次の15分後も…

タイムライン埋め込みの場合、おそらくレート制限は15分間あたり「900」回以上読み込んだ時だと考えられます。
つまり、本来リクエストしていないのにレート制限扱いを受けている可能性が高くなってきました

原因はX側の不具合?仕様変更?

調べてみると、同様の報告が国内外問わずいくつか見つかりました。

※Xのフォーラムは期限切れで回答が無いまま締め切りの状態

どうやら以前実施されたXの埋め込み機能の仕様変更によって、タイムライン埋め込みが不安定になり、

  • 実際にはレート制限を超過していないのに429エラーが出る
  • アカウントによって表示されたりされなかったりする
  • グイン状態や課金状況で結果が変わる場合もある(ログイン・課金済みでも表示されないという声もある)

といった事象が、1年以上前から報告されているようです。
ちなみに、2025/4/7現在でもXにてちらほら報告を見かけました。

現状の対処法は

レート制限を超えていないのにエラーが発生している以上、「こちら側でできる対処」はほぼありません。
対処案として考えられるのは以下のような対応です。

1. 一旦様子見

仕様変更により一時的にエラーが出ているだけで、いずれ自動的に表示される可能性があります。
実際私が最初に遭遇したサイトでは、数週間後に表示が復活していました。

2.Xの埋め込みをやめて、リンクに差し替える

表示が不安定なまま運用を続けるのはユーザー体験上よろしくないため、埋め込みタイムラインではなく、「Xの公式アカウントへのリンク」などに差し替えるのが無難だと思います。

結論:運用方針の見直しを推奨

もちろん、埋め込みタイムラインが表示されない原因が違うエラーの場合もあるので(JSの干渉とか)、今回はあくまで「429エラーが出ていて、特にレート制限にひっかかるような心当たりがない場合」のエラー詳細と対処法になります。

とはいえ、現状Xの埋め込みタイムラインは安定性に欠けると言えるので、タイムラインの埋め込みに頼った運用をしている場合は、運用方針を見直すといいかもしれません。
例)重要な情報発信は公式サイト内のブログやお知らせ欄で発信する 等

以上、本事象に遭遇された方の参考になれば幸いです。