SEO API
12 のツールで、アプリケーションやエージェントに SEO データを提供します。キーワードの検索数と上位表示の難しさ、ドメインに検索トラフィックをもたらすキーワードとページ、競合、リンク元、Domain Rating、サイトの訪問数を取得できます。各ツールは /v1/seo/ 以下の 1 つの POST で、BeatAPI API キーを使い、1 回のレスポンスで結果を返します。エージェントは同じツールをケイパビリティとして利用できます。
クイックスタート
認証
すべての呼び出しで、BeatAPI API キーを Authorization: Bearer <key> として送信します。キーは sk- プレフィックスの有無を問いません。キーはダッシュボード → API Keys で作成できます。すべてのツールは https://api.beatapi.io で提供され、アカウントの残高から課金されます。
ツールを選ぶ
Domain Rating とサイトの総訪問数については、Domain Rating とサイトトラフィックを参照してください。
リアルタイムの検索結果ページを取得するツールはありません。特定のキーワードでのドメインの順位を確認するには、ranked-keywords を contains 付きで呼び出します。返されるのは最後に記録された順位で、リアルタイムの順位ではありません。
国と言語
country と language は市場を選びます。市場とは、その国のその言語による Google 検索です。キーワードツールと domain-overview、ranked-keywords、top-pages、competitors で指定できます。被リンクツールには市場がなく、どちらのフィールドも拒否されます。
対象外の国や言語は 400 bad_request で拒否され、メッセージでその市場の言語を確認できます:language 'de' is not covered in us; use one of: en, es
limit と offset
keyword-ideas、ranked-keywords、top-pages、competitors、backlinks は行をページ単位で返します。
これらのレスポンスには limit と offset が含まれ、判明している場合は利用可能な全行数を示す total も含まれます。
レスポンス
すべてのツールは同期的に応答します。結果は POST のレスポンスに含まれるため、ポーリングは不要です。ほとんどの呼び出しは数秒で完了します。
usage.price_usd は確定した課金額(米ドル)です。billing_unit は常に request、quantity は常に 1 です。billed_rows は課金の対象になった行数を示します。
データにない数値は行から省略されるため、使う前にフィールドの有無を確認してください。未知のリクエストフィールドは 400 bad_request で拒否されます。誤字のあるフィールドを黙って無視すると、意図と異なる質問に答えることになるためです。
キーワードツール
キーワードの概要
POST https://api.beatapi.io/v1/seo/keyword-overview
手元のキーワードの検索ボリューム、CPC、競合度、難易度、検索意図、月別の履歴を返します。誰も検索しないキーワードは返らず、ゼロにはなりません。
レスポンスはクイックスタートにあります。各行のフィールドは次のとおりです。
キーワード候補
POST https://api.beatapi.io/v1/seo/keyword-ideas
シードキーワードに関連するキーワードを、関連性の高い順に返します。各行のフィールドは keyword-overview から monthly_searches を除いたものです。
キーワード難易度
POST https://api.beatapi.io/v1/seo/keyword-difficulty
多数のキーワードの keyword_difficulty だけを一度に返します。フィールドは keyword-overview と同じです。
ドメインツール
4 つのツールはいずれも example.com のような domain と、country、language を受け取ります。
ドメインの概要
POST https://api.beatapi.io/v1/seo/domain-overview
1 つの市場におけるドメインのオーガニック検索と有料検索のフットプリントです。検索トラフィックのみで、サイトの総訪問数ではありません。
記録のないドメインでは has_data: false が返り、organic も paid も返りません。これはデータがないことを示し、トラフィックがゼロという意味ではありません。この場合も課金されます。
ランクインキーワード
POST https://api.beatapi.io/v1/seo/ranked-keywords
1 つの市場でドメインが順位を持つキーワードを、検索ボリュームの多い順に返します。
各行には keyword-ideas のフィールドに加えて、次のフィールドがあります。
上位ページ
POST https://api.beatapi.io/v1/seo/top-pages
ドメインのページを、推定検索トラフィックの多い順に返します。フィールドは domain、limit、offset、country、language です。各行には url と、そのページのフットプリントのフィールドがあります。
競合ドメイン
POST https://api.beatapi.io/v1/seo/competitors
同じ検索キーワードを競合するドメインを返します。フィールドは domain、limit、offset、country、language です。対象のドメイン自体と、youtube.com や wikipedia.org のような最大規模の総合サイトは行から除外され、total は残りの件数を示します。
被リンクツール
被リンクの概要
POST https://api.beatapi.io/v1/seo/backlink-summary
ドメインのリンクプロファイルです。フィールドは domain のみです。
ドメインの記録がない場合、has_data は false になり、ほかのフィールドは返りません。この場合も課金されます。
被リンクの一覧
POST https://api.beatapi.io/v1/seo/backlinks
ドメインへのリンクを強い順に返します。
数値の読み方
- 検索トラフィック:
search_traffic_estimateは推定検索トラフィックで、サイトの総訪問数ではありません。 - 推定値: トラフィックと価値の数値は推定値で、サイトの実測値ではありません。
- リンクの権威性:
link_authorityはこのデータセット独自の尺度で 0~1000 の値を取ります。 - キーワード難易度はこのデータセット独自の尺度です。他のツールのスコアと比較しないでください。
- 欠損はゼロではありません: 値がない数値は不明を意味し、ゼロではありません。
- リアルタイムの検索結果ページはありません: リアルタイムの検索結果ページを取得するツールはありません。特定のキーワードでのドメインの順位を確認するには、
ranked-keywordsをcontains付きで使います。返されるのは最後に記録された順位で、リアルタイムの順位ではありません。 - Domain Rating とサイトトラフィックについては、これらの数値の読み方を参照してください。
課金
Domain Rating とサイトトラフィックには別の料金があります。
domain-overviewとbacklink-summaryは 1 件のレコードを返し、これを 1 行として数えます。has_dataがfalseの場合は 0 行です。100 行を返すranked-keywordsの呼び出しは $0.048 です。- 何も見つからなかった呼び出しにも呼び出しごとの料金がかかります。拒否されたリクエスト(
400)と失敗した呼び出し(503)は課金されません。 - 呼び出しの実行前に、残高が最大料金(
limitのすべての行、または送信したすべてのキーワード)を満たしている必要があります。その後、実際に返した分だけ課金されます。 - クライアントが同じリクエストを再試行する可能性がある場合は、
Idempotency-Keyヘッダーを送信してください。同じキーを異なるボディで再利用すると409 idempotency_conflictで拒否されます。
エージェント
SEO データ専用の MCP ツールはありません。BeatAPI MCP エンドポイント https://beatapi.io/mcp で、エージェントは capabilities_search、capabilities_inspect、capabilities_run を次の参照とともに使います。
Domain Rating とサイトトラフィックの参照はそれらのツールとともに記載しています。
Inspect は入力スキーマと現在の料金を示します。input はツールのリクエストボディで、Run は結果を返します。
同じ 3 つの呼び出しは REST でも利用できます:POST /v1/capabilities/search、/v1/capabilities/inspect、/v1/capabilities/run。Capabilities API を参照してください。
エラー
エラーは BeatAPI 標準のエラー形式で、すべてのエラーに retryable が含まれます。再試行の方針はエラーを参照してください。
503 は課金されません。BeatAPI が 502 を返すことはありません。
Domain Rating とサイトトラフィック
さらに 3 つのツールが同じ方法で利用できます。キーは同じで、結果はレスポンスで返り、usage とエラーも同じです。domain を受け取り、市場がないため country と language は拒否されます。limit と offset もありません。
Domain Rating
POST https://api.beatapi.io/v1/seo/domain-rating
domain_rating は 0~100 の値を取ります。link_rank はリンクに基づくドメインの世界順位で、値が小さいほど強いドメインです。
Domain Rating の履歴
POST https://api.beatapi.io/v1/seo/domain-rating-history
不明なドメインでは has_data: false、空の results、billed_rows: 1 が返ります。
サイトトラフィック
POST https://api.beatapi.io/v1/seo/site-traffic
ウェブサイトの全チャネルからの推定総訪問数を、流入元、国、順位、エンゲージメントとともに返します。
これらの数値の読み方
- 2 種類のトラフィック:
search_traffic_estimateは推定検索トラフィックで、site_visits_estimateは全チャネルからの総訪問数です。これらは異なる指標なので、合算したり比較したりしないでください。訪問数はユニークビジター数ではありません。 - 2 種類の権威スコア:
link_authorityはこのデータセット独自の尺度で 0~1000 の値を取り、domain_ratingは 0~100 の値を取ります。相互に換算することはできません。 - 記録なし:
has_data: falseはドメインの記録がないことを示し、レーティングやトラフィックがゼロであることとは異なります。新しいサイトのレーティングが0でも、link_rankがある場合があります。
これらのツールの料金
has_dataがfalseでも、domain-ratingとsite-trafficは課金されます。不明なドメインのdomain-rating-historyは月を返しませんが、1 か月分の $0.004 がかかります。- 拒否されたリクエスト(
400)と失敗した呼び出し(503)は課金されません。 domain-rating-historyの実行前に、残高が 24 か月分の履歴の料金を満たしている必要があります。その後、実際に返した分だけ課金されます。

