クイックノート

ちょっとした発見・アイデアから知識の発掘を

【R】他所のサイトのアクセス数をAPIから取得する【SimilarWeb】

自分のサイトのアクセス数は Google Analytics などでカウントできますが、
他のサイトのアクセス数を調べたいと思うこともあります。

SimilarWeb というサイトでは、
世界中のサイトのアクセス数を収集して、公開してくれています。

その仕組みは視聴率を測るようなもので、
SimilarWeb でアクセス数を測るためのモニターさんが何人かいて、
モニターさんがアクセスしたサイトを SimilarWeb が集めることで、
アクセス数を概算しています。

全ての人のアクセスを集めているわけではないので、
元々アクセスが少ないサイトだと、
モニターさんから取れるデータがほとんどなくなってしまうので、
精度が落ちてしまうこともあります。

ともあれ、SimilarWeb にアクセスして、
調べたいサイトの URL を入力すれば、
そのサイトのアクセス数を知ることができます。

これを手で行うと、少々面倒なので、
API を使って自動化してみましょう。

SimilarWeb のアカウントを作る

まずは、SimilarWeb で API を利用するためのアカウントを作成します。 手順は以下の通りです。

  1. 下の SimilarWeb の API を提供しているページにアクセスします。 https://www.similarweb.com/corp/developer/

  2. ページにアクセスしたら、画面中央の「Get Started」をクリックします。

  3. 有料版と無料版がありますが、とりあえず無料版を選択します。

  4. 画面に従ってアカウントを作成します。

アカウントが作成されると、下のようなページにアクセスできるようになります。

f:id:u874072e:20180705181021p:plain

API のキーを取得する

API を使うためには、「キー」が必要となります。
このキーでアカウントとの対応が付けられていて、
API の使用回数などが管理されることになります。

※無料版では使用回数に上限があります。

API キーの取得方法は下の通りです。

  1. https://pro.similarweb.com/#/home/modules にアクセスしてログイン
  2. 右上の人のマークをクリックして「アカウント」をクリック f:id:u874072e:20180705181412p:plain:w300
  3. 左のメニューから「APIマネジメント」を選択f:id:u874072e:20180705181533p:plain:h300
  4. 「新規キーを生成する」をクリック
  5. 表示された英数字列がAPIキー

APIキーは、APIを使用するときに使うので、
保管しておきましょう。

API を使ってデータを取得する

それでは、R からAPIを使ってSimilarWebのデータを取得してみましょう。

利用するパッケージ

R から欲しいデータの URL にアクセスすることになります。
この時、データはJSON形式で返ってくることになります。

そこで、HTTP通信を行うためにrvestパッケージ、
JSON を扱うためにjsonliteパッケージを利用します。

library(rvest)
library(jsonlite)

API を使ったデータ取得

SimilarWeb では、URL を使ってデータを提供しています。
サイトへのアクセス数を取得する場合には、以下の URL にアクセスします。

https://api.similarweb.com/v1/website/{{domain}}/
total-traffic-and-engagement/visits?
api_key={{key}}&start_date={{start_date}}&end_date={{end_date}}&
main_domain_only=false&granularity=daily

{{domain}} には、アクセス数を調べたいドメイン名を、
{{key}} には、上で取得したAPIキーを、
{{start_date}}, {{{end_date}} には、データを取得する期間の最初と最後を、
2018-03 のように、「年-月」で指定します。

他のオプションや、サイトのカテゴリなどのデータを取得するAPIについては、
下のサイトを参考にして下さい。

https://www.similarweb.com/corp/developer/estimated_visits_api

R でデータを取得する場合は、次のようなコードで取得します。

domain = "google.com"
key = "keykeykeykeykey"
end = "2018-03"
start = "2018-05"

q = sprintf("https://api.similarweb.com/v1/website/%s/total-traffic-and-engagement/visits?api_key=%s&start_date=%s&end_date=%s&main_domain_only=false&granularity=daily",
              domain,key,start,end)
page = read_html(q)
json_text = page %>% html_text()
  
x = fromJSON(json_text)

key には、取得したAPIキーの文字列を指定します。

URL にアクセスすると、JSON形式のデータをテキストで書いたページが得られるので、
fromJSONでパースしています。

x$visits に、日付とその日のアクセス数が記録されたデータフレームが格納されます。

データ例

試しに、google.com のアクセス数を見てみましょう。

上のコードを実行して、アクセス数のデータを取得した後、
単純に、その時系列をプロットします。

plot(as.Date(x$visits$date),x$visits$visits,type="o",xlab="date",ylab="visits")

f:id:u874072e:20180706102815p:plain

誰もが使う Google だと、それほどアクセス数に代わり映えがないのかと思いきや、
意外と変化が多い面白そうがグラフが得られました。

上がったり下がったりしているのは、おそらく、平日と休日でしょうか。
ちょうど、7日分の周期で上下を繰り返しているように見えますね。
休日よりも平日の方がアクセス数が多いということは、
学校や職場での仕事上の調べものを Google でする人が多いということですね。

また、4月中旬を境に、アクセス数が増加している様子が分かります。
Google は 4月16日にアルゴリズムのアップデートを実施していますが、
それと関連があるのでしょうか。これは謎ですね。

まとめ

SimilarWeb でアクセス数の情報をAPIから取得する方法についてまとめました。

無料版を利用の場合は、取得できる回数に制限があるので気を付けましょう。
データを取得する期間の長さや、
月毎、週毎、日毎、のように細かくデータを取っても、
URLへの一回のアクセスが一回としてカウントされるので、
一度に長い期間、細かいデータを取るのが回数の節約につながりそうです。

プライバシーポリシー