通販キーワードの分析データを無料でご提供する「Keyword Tool++」というサイトを続けています。
2018年当時、Yahooの商品検索APIには「type=ranking」属性を付けてあげると、Yahooショッピングの人気キーワードを100件ランキングで取得できるといった機能がありました。そのキーワードデータをcronで日次集信してグラフを作ったりして遊んだことがきっかけで作ったサイトです。
スタートから2年くらいは放ったらかしで動いてくれて、たまにアフィリエイトの収益まで出してくれていたのですが、2020年8月頃になってAPI側でこの人気キーワードの提供をやめてしまったらしく、データを取れなくなったことがありました。
日次で集信していたキーワードデータもなくなってしまい、分析ツールのグラフも作れなくなってきたため、サイトをもう閉めようかとは当時思ったのですが、たまたま楽天で検索キーワードのランキングページを見つけたこともあって、それを使ってなんとかサイトを続けることはできておりました。
当時の諸々は別記事でご紹介しています。興味があればご参照ください。
そんな感じで、通販キーワードのデータを求めて色々と奔走し続けてきましたが、先日ふとYahooデベロッパーサイトを眺めていたところ、「キーワードランキング(v2)API」という、キーワードのランキングデータ取得専用のAPIがいつの間にか公開されていたことに気が付きました。
どうやら2021年のはじめ頃から、キーワードのトレンド情報をYahooが提供し始めていたらしいです。しかも、今度はしっかり専用APIで提供してくれているということで、さすがYahooは太っ腹な感じです。
ということで、早速サイトで使うデータをYahooのAPI経由で取得するよう作り替えてみました。
そこで、この記事ではYahoo!の「キーワードランキング(v2)API」を使って、通販サイトの人気キーワードを取得する際のポイントなどについて少々まとめてみたいと思います。APIの使い方などは以前の記事に詳細を書いてあるので、APIを使ってサイト制作をやってみたいとお考えであれば、まずはそちらからご確認どうぞ。
キーワードランキング(v2)API
Yahoo!が提供する「キーワードランキング(v2)API」は、Yahoo!ショッピング内で検索された検索キーワードを、人気順や急上昇順に取得することができるAPIです。「Keyword Tool++」で通販キーワードのトレンド取得に使っているAPIはこのAPIになります。
高評価トレンドランキングAPI
ランキングを取得可能なAPIとしては、他に「高評価トレンドランキングAPI」というものが新たに提供されていました。
こちらはYahoo!ショッピング全体の「商品の」ランキング情報を取得可能なAPIで、レスポンスのデータも商品名・商品価格といった細かい商品データとなります。
キーワードランキングAPIと高評価トレンドランキングAPIで取れるデータの違いを分かりやすくすると、下表のような違いがあるイメージです。
ランキング | キーワードランキング(v2)API | 高評価トレンドランキングAPI |
---|---|---|
1 | ふるさと納税 | ふるさと納税 紋別市 オホーツク産ホタテ玉冷大 |
2 | おせち 2023 | TVで紹介 かに カニ 蟹 ズワイガニ お刺身OK カット生ずわい蟹 特盛 2.1kg 総重量3kg前後 FF |
「Keyword Tool++」のような、通販キーワードのトレンド分析用に使うのであれば、「キーワードランキング(v2)API」の方が使い勝手が良いですが、通販サイト全体での売れ筋商品情報や商品名キーワードを取得したいといった場合には、高評価トレンドランキングAPIを使う方が良さそうです。目的に合ったAPIでお試しください。
商品検索(v3)API
商品情報を取得するAPIとしては、他に「商品検索(v3)API」というものも用意がされています。
こちらでも商品のランキング情報を取得することはできますが、「&query」で何らかのキーワードをセットしてあげることが必須となっているため、特定キーワードやカテゴリでのランキングではなく、Yahooショッピング全体での人気商品を取得するといった場合には、「高評価トレンドランキングAPI」を使う必要があります。
ちなみに、「ディレクトリ型検索エンジンdtn」の検索では、この商品検索APIを使ってキーワード連動のアフィリエイト商品広告を作っています。サンプルは下でご確認ください。
キーワード「マスク」をdtn.jpで検索した場合
Yahoo APIの使い方
YahooショッピングAPIの仕様自体は、以前使った2020年頃とほぼ同じままでした。
APIの使い方については、以前にAPI経由のアフィリエイトで久々成果が発生した際に書いた記事で詳しくご紹介していますので、APIを使ってサイト制作をやってみたいという方は、当時の記事を先にご参照下さい。
2020年頃から変更されたポイントを中心に、以降はAPI使い方のご紹介をしたいと思います。
YahooのAPIを使うために必要なもの
デベロッパーサイトのご利用ガイドにも書かれていますが、APIを使うために必要なものが2つあります。Yahoo! JAPAN IDとアプリケーションIDの2つです。それぞれ無料で取得できるので、お持ちでない方は順に取得をして下さい。
Yahoo! JAPAN IDの取得
API利用にあたっては、Yahoo! JAPANが提供するアカウントが必須となります。Yahooのアカウントを既にほとんどの方がお持ちと思いますが、まだお持ちでない場合は、無料で登録ができるので先に取得をして下さい。
以前からの変更点として、昔はID/Passwordの登録だけでアカウントの取得をすることができましたが、今は携帯電話認証が必須とされていました。
ちなみに、YahooIDの取得にあたっては、無料で登録する以外にYahooプレミアム会員という有料サービスもあります。paypayモール、ヤフーショッピング、ヤフオクとかをよく使うのであれば、メリットもあるのでご検討どうぞ。
アプリケーションIDの取得
YahooのIDを取得すると、アプリケーションの登録ができるようになります。登録画面は2020年当時から今風に大きく様変わりをしており、登録する際の入力フォームもだいぶシンプルで分かりやすいものになっていました。
新しいアプリケーションを開発の旧画面
以前の登録画面では、最初に「サーバーサイド」のアプリケーションを作るのか、「クライアントサイド」のアプリケーションを作るかの選択があり、続く利用者情報を入力すれば、最終的に専用の「アプリケーションID」と「シークレット」をすぐ取得することができた気がします。
新しいアプリケーションを開発の新画面
新しくなったアプリケーションの登録画面では、「Yahoo ID連携」の利用有無が最初に聞かれるようになりました。
YahooのAPIでは、Yahoo ID連携というOAuth認証サービスが提供されていますが、これを使うか使わないかをまずは確認するように作りを変えたようです。
Yahoo! ID連携とは、あなたが運営するサイトの認証情報にYahoo IDを使えるというもので、「Yahoo! ID連携」という名前のAPIでサービスが提供されています。OAuthなので「クライアントID」「クライアントシークレット」を使ってID連携をするといった感じのようです。使ったことがないので、よく分かっておらずですみません。
旧管理画面で登録した時は、すぐに「クライアントID」「クライアントシークレット」も取得できていた気がしますが、どうやら今はプライバシーとセキュリティ強化のため、運営者情報をしっかり登録した人だけが使えるように管理が厳しくされたようです。
YahooのID連携APIには、Yahoo側に登録されている情報を引っ張っることができる「UserInfoAPI(属性取得API)」というものまで提供されているようなので、厳しくなるのも納得という感じです。
ちなみに、このID連携は、商用でも非商用でも・誰でも・無料で利用することが可能とのことなので、dtn.jpのような零細個人サイトでも使えるというもののようです。普通に法人運営していて運営者情報を開示しても問題ないのであれば、使ってみてはいかがでしょうか。
ID連携を利用しないで登録
さて、私のように単にショッピングAPIを使ってみたいだけの場合には、「ID連携を利用しない」を選択して進めば、以前のようにささっとアプリケーションを登録することができるようになっていました。
無事に登録が終了すると、ショッピングAPIで必要となる「Client ID」が取得できるのでメモっておきましょう。
以上で下準備は完了で、あとはプログラムを書けばOKです。
PHPでYahoo!ショッピングAPIを使おう
Yahoo APIのレスポンスデータは非常にきれいなデータが返ります。アプリケーションID(Clinet ID)をお持ちであれば、↓にセットするだけで即きれいなレスポンスを取ることができるので、まずは先ほど取得したアプリケーションのIDをセットして、ブラウザで試してみて下さい。
https://shopping.yahooapis.jp/ShoppingWebService/V2/queryRanking?appid=<あなたのアプリケーションID>&type=ranking
公式マニュアルのサンプルリクエストURL
サンプルPHPコード
PHPでキーワードランキング(v2)APIにリクエストを投げて、データを取得するコードサンプルをご紹介します。
サンプルコードのリクエストURLには、アフィリエイト用のバリューコマースIDを足してあります。APIで取れるレスポンスURLをアフィリエイトのURLにしてくれる優れ機能ですので、興味がある方は以前の記事を参考にバリューコマースと提携して、バリューコマースIDを組み込んでみて下さい。
ただし、たまに「affiliate_type=vc」を付けると謎のエラーを吐いてコケることがありました。これってバリューコマース側の問題なんでしょうかね。。とりあえず、そんなときはサンプルコードの「&affiliate_type=vc」以降をざっくり削ってお試しどうぞ。
{“Message”:”[ERROR-CODE:05]YJDN URL ERROR : YJDN用のURLの作成に失敗しました。”,”Code”:400}
バリューコマースアフィリエイトを付けた時に出るエラー
サンプルPHPコード
//APIリクエストURL
$APIUrl = "https://shopping.yahooapis.jp/ShoppingWebService/V2/queryRanking";
//あなたのアプリケーションID
$id = 'あなたの登録したID';
//あなたのバリューコマースID
$vcid = "//ck.jp.ap.valuecommerce.com/servlet/referral?sid=***&pid=***&vc_url=";
//リクエストURL生成
$q = $APIUrl.'?appid='.$id.'&type=ranking&hits=10&affiliate_type=vc&affiliate_id='.urlencode($vcid);
//JSONデータを取得
if($Buff = @file_get_contents($q)){
//データ取得用のオブジェクト
$json = new stdClass;
$ResultItem = new stdClass;
//JSONをデコード(オブジェクト)
$json = json_decode($Buff ,false);
//日付要素へのアクセスはこんな感じ
echo $json ->keyword_ranking->meta->start_date;
//オブジェクトにしたjsonへのアクセスサンプル
foreach($json->keyword_ranking->ranking_data as $ResultItem){
//キーワードへのアクセスはこんな感じ
echo $ResultItem->query;
}
}
APIのレスポンスデータは凄いきれなデータが返るので、上記コードを参考にするよりも、json_decode()した中身をvar_dump()で眺めつつ取りだす方が分かりやすいかもしれません。
おわりに
YahooのAPIは、無料で利用することができて、かつ、レスポンスで取れるデータもTwitter APIやinstagram graph APIのような雑な感じではないので、非常に使い勝手がよいAPIと思います。
パラメータをセットすればアフィリエイトのタグまで出力してくれる優れものですので、末永く無料のままでサービス提供してくれることを願うばかりです。