AdMob で app-ads.txt が not found と表示される理由
広告ネットワークのクローラーがファイルを見つける仕組み、よくある 6 つの原因、本当の問題とまだクロールされていないだけの状態の見分け方。
not found の結果は、ほとんどが機械的な原因です。ストアの掲載情報にデベロッパーのウェブサイトがない、URL がファイルのない場所を指している、リダイレクト、Content-Type の誤り、書式の誤った行、あるいはまだクロールされていないだけ(AdMob は 24 時間かかるとしています)。AppFoyer のサブドメイン上のファイルは AdMob によって確認されています。
数分で済ませる方法もあります
AppFoyer は、このガイドで扱っているページ(プライバシーポリシー、利用規約、サポート、アカウント削除、そして app-ads.txt)を、専用のサブドメインでホストします。自分のドメインもサーバーも要りません。アプリ 1 つまでは無料で、ストアが求めるものが有料プランの壁の向こうに置かれることは決してありません。
2026年10月12日 に確認。 ストアのポリシーは、予告なく変わることもあります。以下の内容はすべて公式ドキュメントにリンクしており、拠り所となるのはこのページではなくそちらです。両者が食い違う場合は、ストアが正しいものとしてください。 このガイドは英語からの翻訳です。ストアのドキュメントからの引用は原文の英語のまま掲載しています。
広告ネットワークが app-ads.txt を not found と報告する場合、原因はほぼ必ず次の 6 つの機械的な理由のいずれかです。ストアの掲載情報にデベロッパーのウェブサイトがない、ウェブサイトの URL がファイルのない場所を指している、ファイルの前にリダイレクトがある、Content-Type が誤っている、行の書式が誤っている、あるいは単にまだクロールが実行されていない。どれもアプリ、アカウント、広告ユニットの問題ではありません。
app-ads.txt は IAB の標準で、アプリの広告枠を販売している者がその権限を持っていることを広告ネットワークが確認するためのものです。ネットワークはこのファイルをストアの掲載情報に記載されたウェブサイトの URL を通じて見つけます。上記の原因がすべてアプリではなくその URL に関するものなのはそのためです。
クローラーがファイルを見つける仕組み
この流れには 3 つの段階があり、どこで途切れても同じメッセージになります。
- ネットワークがストアの掲載情報からデベロッパーのウェブサイトの URL を読み取る。
- そのドメインのルートにある
/app-ads.txtを取得する。 - ネットワークとあなたのパブリッシャー ID を記載した行を探す。
つまり、ファイルはアプリ、パッケージ名、AdMob アカウントから見つけられるのではありません。ストアの掲載情報に記載されたウェブサイトの URL から見つけられます。そこを間違えると、ほかのことは何も意味を持ちません。
よくある 6 つの原因
掲載情報にウェブサイトの URL がない。 最も多いケースです。ストアの掲載情報にデベロッパーのウェブサイトがなければ、クローラーには出発点がありません。App Store でのその項目は、必須の Support URL ではなく任意の Marketing URL です。詳しくは iOS アプリの app-ads.txt を参照してください。
URL がファイルのない場所を指している。 掲載情報には example.com とあるのに、ファイルは www.example.com にある、あるいはドメインのルートではなくページのパスにある、というケースです。
リダイレクト。 仕様ではファイルが直接配信されることを想定しています。リダイレクトの連鎖は、たとえ http → https や apex → www であっても、失敗のよくある原因です。掲載情報が指定するアドレスで、200 で配信してください。
Content-Type が誤っている。 プレーンテキストとして配信する必要があります。text/html で配信されたファイルや、ホスティングサービスがページで包んでしまったファイルは解析されません。
行そのものにタイプミスがある。 書式は厳格です —
domain, publisher id, relationship, certification id — カンマが 1 つ欠けたり余分なスペースが入ったりするだけで、その行は壊れます。
単にまだクロールが実行されていない。 ネットワークは独自のスケジュールで再クロールし、その間隔は通常、分ではなく日単位です。1 時間前にアップロードしたファイルが missing と表示されるのは、たいていまだ早いだけです。
10 秒で自分で確認する方法
curl -i https://your-domain.example/app-ads.txt
期待する結果は、200 OK、Content-Type: text/plain、Location: ヘッダーなし、本文にあなたの行があることです。curl で問題がないのにネットワークがまだ認識しない場合、問題はその手前にあります。掲載情報の URL か、クロールのスケジュールです。
サブドメインについて
仕様はストアの掲載情報で宣言されたドメインのルートを指しており、サブドメインにはそれ自身のルートがあります。したがって、掲載情報が宣言しているのがまさにそのアドレスであれば、yourapp.example.page/app-ads.txt からファイルを配信することは仕様上正当です。
AdMob はこれが依拠するルールを文書化しています。そのクローラーは “probe[s] up to one subdomain level from the developer website”(訳:デベロッパーのウェブサイトから 1 階層までのサブドメインを調べます)とされ、Firebase Hosting のようなプラットフォームのホスティングをファイルの置き場所として認めると明記しています。
AdMob は AppFoyer のサブドメイン上のファイルを確認しています。 2026 年 10 月、デベロッパーのウェブサイトが AppFoyer のアドレスである両ストアのアプリについて、AdMob は “app-ads.txt file found and verified” と報告しました。それ以前、2026 年 9 月 23 日のクロールでは、同じアプリのうち 1 つが not found と報告されていましたが、当社側で何も変更しないまま、現在は通過しています。AppFoyer のアドレスで AdMob が「not found」と表示する場合は、上記の原因を順に確認し、クロールに 24 時間の猶予を与えてください。ほかの広告ネットワークについては、まだ当社独自のクロール結果はありません。
AppFoyer がここで行うこと
当社はファイルをプレーンテキストで、リダイレクトなしで、仕様が求めるヘッダー付きで配信し、主要なネットワーク向けのプリセットを用意し、入力中に各行を検証します。特定のネットワークが受け入れることは約束しません。上の段落を参照してください。
公式の情報源
- Set up app-ads.txt — AdMob ヘルプ
- app-ads.txt / ads.txt specification — IAB Tech Lab