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

2025年2月ごろ、以前制作したWebサイトのX(旧Twitter)タイムラインの埋め込みが、突然表示されなくなっていることに気づきました。
特にこちら側でコードをいじった覚えもなく、その1週間前には問題なく表示されていました。
首をかしげながらChromeのコンソールログを確認してみると…
「429エラー」という見慣れないステータスコードが出ていました。
実はこのエラー、2023年末ごろから徐々に報告が増えており、Xの仕様変更により特に何もしていなくても発生してしまうケースがある模様。
本記事では、実際に遭遇した事例をもとに、X埋め込みタイムラインが表示されなくなる「429エラー」の詳細と、現状で可能な対処法についてまとめました。
お悩みの方の判断材料になれば幸いです。
Contents
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件/ユーザーあたり |
レート制限の詳細や他のエンドポイントの規定回数については、以下の公式ページをご参照ください。
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の埋め込みタイムラインは安定性に欠けると言えるので、タイムラインの埋め込みに頼った運用をしている場合は、運用方針を見直すといいかもしれません。
例)重要な情報発信は公式サイト内のブログやお知らせ欄で発信する 等
以上、本事象に遭遇された方の参考になれば幸いです。