App Storeで実際に検索されている語を無料で調べる方法
Appleはオーガニックの検索語を公開しない。App Store Connectのアナリティクスにも、2024年から提供されているAnalytics Reports APIにも、検索語の列は存在しない。実際の語が見られるのはApple Ads AdvancedのSearch Termsレポートだけで、これは出稿しないと開かない。代わりに使えるのがApp Storeの検索サジェストで、返る順序が検索ボリュームの代理指標になる。この方法で実需要90語を集め、自分のアプリの順位まで調べた。結果は90語すべて圏外だった。コードと生データを全部出す。
- Appleの3つの経路(App Analytics / Analytics Reports API / Apple Ads)がそれぞれなぜ使えないか、実際に叩いた結果つき。
- 検索サジェスト(MZSearchHints)から実需要語を取るコード。ストアフロント指定が無いと空が返るという地雷つき。
- 自分のアプリが何位に出るかを iTunes Search API で調べるコードと、その限界。
- 実際に出た日本語の需要90語と、全語で圏外だったという結果。
- キーワード欄を推測でなく実データで埋め直した差分。
App Store Connectを開くと「App Storeの検索」から何人来たかは分かる。だが何と打たれたのかは分からない。うちのアプリは30日間で検索由来のインプレッションが788回あったのに、その788回がどんな語だったのか、公式には一切見えない。調べた結果と、代わりに使った方法を残す。
Appleの公式な経路は、3つとも塞がっている
① App Store Connect のアナリティクス
アナリティクス → 獲得 → ソースで、流入元が4つに分かれる。
App Storeの検索 / App Storeの閲覧 / 参照元Web / 参照元アプリ
それぞれに表示回数・プロダクトページ閲覧・初回ダウンロードが出るので、検索経由で何人来たかまでは分かる。検索語は出ない。
② Analytics Reports API(2024年〜)
詳細レポートをまとめて取れるAPIがある。期待して叩いたが、まず権限で弾かれた。
GET /v1/apps/{id}/analyticsReportRequests
403 FORBIDDEN_ERROR
"The API key in use does not allow this request"
権限の広いキーを作れば通る。ただしその前に、そもそも検索語の列があるのかを確認した。App Store Discovery and Engagement レポートの列はこうなっている。
App Apple Identifier / App Name / Counts / Date / Device / Engagement Type / Event / Page Title / Page Type / Platform Version / Source Info / Source Type / Territory / Unique Counts
検索語の列は無い。Source Type に「App Store search」という値はあるが、検索経由だったという事実までで、打たれた語は含まれない。Source Info は参照元アプリ/Webを指すもので、キーワードではない。
つまり権限を取り直してもこの質問には答えられない。ここで時間を使わないほうがいい。
③ Apple Ads Advanced
実際の検索語が見られる唯一の場所が、Apple Ads Advanced の Search Terms レポートだ。ただし出稿しないと開かない。「検索マッチ」型のキャンペーンを回すと、Appleが関連すると判断した語で自動的に露出させ、その語を報告してくれる。広告効果以上に「Appleが自分のアプリをどう理解しているか」が読めるので価値は高い。ただし有料であり、得られるのは広告経由の検索語で、オーガニックの検索語そのものではない。
なおアカウント作成だけなら無料で、出稿しなくてもSearch Popularity(1〜100)は見られる。語ごとの人気度が分かるので、キーワード選定の答え合わせには使える。
無料で使えるもの:App Storeの検索サジェスト
検索欄に文字を打つと候補が出る。あれはAPIで取れる。そして並び順がおおむね検索の多い順なので、Appleが数値を出さない検索ボリュームの代理指標になる。
https://search.itunes.apple.com/WebObjects/MZSearchHints.woa/wa/hints ?term=<語>&clientApplication=Software ヘッダ: X-Apple-Store-Front: 143462-1,29 ← 日本
このヘッダが最大の地雷だ。付けないと、200は返るのにhintsが空配列になる。クエリにcountry=JPを付けても効かない。日本のストアフロントIDは143462。応答はXML plistなので、Pythonならplistlibで読める。
import plistlib, urllib.parse, urllib.request
def hints(term):
url = ('https://search.itunes.apple.com/WebObjects/'
'MZSearchHints.woa/wa/hints?' + urllib.parse.urlencode(
{'term': term, 'clientApplication': 'Software'}))
req = urllib.request.Request(url, headers={
'User-Agent': 'iTunes/12.12 (Macintosh; OS X 14.0)',
'X-Apple-Store-Front': '143462-1,29'})
with urllib.request.urlopen(req, timeout=20) as r:
d = plistlib.loads(r.read())
return [h['term'] for h in d.get('hints', []) if h.get('term')]
実際に出た需要
体組成まわりの種12語から、検索語90件が集まった。人気順にそのまま出す(2026年8月13日取得)。
| 順 | 「体脂肪」から | 「体型」から |
|---|---|---|
| 1 | 体脂肪率 測定アプリ | 体型加工 |
| 2 | 体重 体脂肪率管理 | 体型管理 |
| 3 | 体脂肪率 | 体型 |
| 4 | 体脂肪管理 | 体型記録 |
| 5 | 体脂肪 | 体型加工無料 |
| 6 | 体脂肪 記録 | 体型加工アプリ |
| 7 | 体脂肪計算 | 体型 写真 |
| 8 | 体脂肪率計算 | 体型測定 |
| 9 | 体脂肪率 記録 | 体型補正 |
| 10 | 体重 体脂肪 | 体型分析ai |
順位は日によって入れ替わる。同じコードを2日後(8月15日)に再実行したところ、「体脂肪」では3位だった体脂肪率が5位に下がり体脂肪 記録が3位に上がった。「体型」では体型記録が4位から2位に上がっている。1回の取得を固定の真実として扱わないこと。順位の細かい差ではなく、上位に居続ける語の集合を見るのが正しい使い方だと思う。
ここで一つ、狙う棚を間違えかけていたことが分かった。「体型」で最も打たれているのは「体型加工」——体を細く見せる写真加工アプリを探している人だ。うちの製品とは真逆の需要になる。「体型記録」は4番手で、想定より筋が悪い棚だった。
一方「体脂肪」の棚は上位10語すべてが自分の土俵だった。ここが本丸だと分かった。
自分のアプリは何位に出るのか
各語で iTunes Search API を叩き、自分の bundleId が何番目に出るかを数えた。
https://itunes.apple.com/search ?term=<語>&country=jp&media=software&limit=50
この並びは App Store 本体のランキングとは別物だ。順位の1つ2つの差に意味は無く、「上位に出るか出ないか」の粗い判定にしか使えない。使う前に、自分のブランド名で検索してアプリが返ってくることを確認しておくといい。インデックスされていること自体の担保になる。
結果
検索語 90 件中、自分のアプリが出るのは 0 件 (各語おおむね45件目まで確認) 「bodilab」(ブランド名) → 1位
ブランド名では1位に出る。インデックスはされている。ランキングで負けているだけだ。App Store Connect側では検索由来のインプレッションが788回あるので、おそらく45位より下か、もっと長い裾野の語で露出している。
なぜ全語で圏外だったのか
理由ははっきりしている。
| 指標 | 実測 |
|---|---|
| 公開日 | 2026年7月12日(約1ヶ月) |
| 評価数 | 0 |
| 初回ダウンロード(30日) | 11 |
評価0件はランキングで致命的だ。そして0件だった理由は単純で、レビュー依頼を一度も実装していなかった。ライブラリすら入っていなかった。誰にも訊いていないのだから0なのは当然だった。
この状態でキーワードをどう並べ替えても、競合語で上位には出ない。調べる前は「キーワードが悪いのでは」と思っていたが、順序が違った。
それでもキーワードは直した
効くのは後になるとしても、根拠の無い語が枠を占めているのは無駄なので、90語と突き合わせて入れ替えた。キーワード欄は100文字しかない。
| 操作 | 語 | 根拠 |
|---|---|---|
| 追加 | 測定 / 管理 / 体重 / 計算 | 「体脂肪率 測定アプリ」が1位、「体脂肪管理」4位、「体型管理」2位、「体重 体脂肪率管理」2位 |
| 削除 | DEXA / GLP1 / フィジーク / 腹筋 | 90件のどこにも現れなかった |
とくに管理は、以前「記録で代替できる」と判断して自分で削っていた語だった。データに反していた。推測で足し引きしていたことが、突き合わせて初めて分かった。
なお、アプリ名やサブタイトルに既にある語をキーワード欄に入れるのは二重取りで枠の無駄になる。突き合わせるときは名称側も一緒に見たほうがいい。
この方法の限界
- サジェストは検索語そのものではない。「よく打たれている語」の並びであって、自分のアプリがどの語で見つけられたかは分からない。
- 順位判定は代理指標。iTunes Search API は App Store 本体のランキングとは別物で、粗い判定にしか使えない。
- ボリュームの数値は出ない。順位しか分からないので、1位と10位がどれだけ違うのかは判断できない。数値が要るなら Apple Ads の Search Popularity を見るしかない。
- 種の選び方に依存する。今回は12語しか投げていない。種を変えれば別の需要が出る。
- 順位が日々動く。2日空けて再実行しただけで上位10語の並びが入れ替わった。単発の取得を固定値として扱ってはいけない。
- n=1。1つのアプリ・1つのカテゴリ・1回の測定でしかない。
次にやること
- レビュー依頼を実装する。実装済みで、次のバージョンに入る。満足の合図が出た人にだけ訊く設計にした。Appleは年3回までしかレビューシートを出さず、超過分は黙って無視されるので、枠を無駄撃ちすると本当に欲しい機会を失う。
- 一覧での見え方を直す。検索結果に788回出てページ閲覧は37回(4.7%)だった。一覧で見えるのはアイコン・アプリ名・スクリーンショット1〜3枚目だけなので、そこを先に直した。
- この調査を定期的に回す。需要語は動く。同じ手順で測り直せるようにスクリプトにしてある。
作っているアプリ
Bodilab AI は、毎週おなじ条件で撮った1枚から体脂肪率・除脂肪量・12部位を推定し、前回と並べて何が変わったかを示すアプリです。
体組成はAIによる推定であり、医療診断ではありません。
よくある質問
App Storeでどんな語で検索されたかは分かりますか?
オーガニックの検索語を知る公式の方法はありません。App Store Connectのアナリティクスは流入元を4種類に分けるところまで、Analytics Reports APIにも検索語の列は無く、実際の語が見られるのは Apple Ads Advanced の Search Terms レポートだけです(出稿が必要)。
App Storeの検索サジェストはAPIで取得できますか?
できます。MZSearchHints に term と clientApplication=Software を渡します。ただし X-Apple-Store-Front ヘッダでストアフロント(日本は143462)を指定しないと空配列が返ります。country=JP をクエリに付けても効きません。
自分のアプリが何位に出るかを無料で調べられますか?
iTunes Search API で粗く調べられます。ただし App Store 本体のランキングとは別物なので、「上位に出るか出ないか」の判定にだけ使ってください。
検索順位が上がらない一番の原因は何ですか?
公開直後は評価数0が大きく効きます。うちは11ダウンロード・評価0件で、実需要90語すべて圏外でした。キーワードの並べ替えでは解決しません。
キーワードは何を根拠に選べばいいですか?
サジェストに実際に現れる語を根拠にするのが、無料でできる方法としては最も確実です。突き合わせると、入れるべき語と外すべき語がはっきりします。
Bodilab AI