Like、Retweet、はてなブックマーク、Google +1数取得方法のまとめ

FacebookのLike数やTwitterのRetweet数などを取得する方法を調べたのでまとめておきます。ただ、あくまで2012年1月24日時点の情報です。こういったものは、今後変更される可能性も高いと思います。

なお、下記において、【】で囲まれる部分は可変の部分です。例えば、「https://graph.facebook.com/【URL】」とあったら、【URL】の部分を目的に沿った値に置き換えて使用します。

目次

  1. Like数の取得
  2. Retweet数の取得
  3. はてなブックマーク数の取得
  4. Google +1数の取得

Like数の取得

FacebookのLike数は、FQL(Facebook Query Language)を使って以下のようなクエリを投げることで取得できます。

Like数を取得するためのFQLクエリ

SELECT total_count FROM link_stat WHERE url = '【URL】'

ただし、FQLを発行するためにはAccess Tokenが必要で、そのためにはFacebookのアプリに登録する必要があります。これだけの為にアプリ登録するのも面倒だったり、バッチ起動などでOAuthなどが面倒な場合、以下のURLを叩くことで取得することができます。

Like数を取得するためのURL

https://graph.facebook.com/【URL】

これを実行すると、以下のようなJSON形式のデータが返ってきます。

Like数取得用URLのレスポンス

{
   "id": "【URL】",
   "shares": 【Like数】
}

ただ、Like数がない場合は「shares」が返ってこないのには注意が必要です。

Like数がない場合のレスポンス

{
   "id": "【URL】"
}

この場合、「shares」というキーが存在するかどうかを確認する必要があるでしょう。

↑ 目次に戻る

Retweet数の取得

Retweet数は、Streaming APIを使って...とかは面倒なので、以下のURLを叩いて取得することができます。

Retweet数を取得するためのURL

http://urls.api.twitter.com/1/urls/count.json?url=【URL】

上記URLに対するレスポンスは以下のようなJSON形式のデータです。

Retweet数取得用URLのレスポンス

{"count":【Retweet数】,"url":"【URL】"}

これを各言語のJSONライブラリで読み込めば、簡単にRetweet数は取得することができます。なお、Retweet数に関してはLike数とは違い、0件でも「"count": 0, ...」と数値0が返ってきます。

↑ 目次に戻る

はてなブックマーク数の取得

はてなブックマークの取得には以下のURLを叩きます。

はてなブックマーク数を取得するためのURL

http://api.b.st-hatena.com/entry.count?url=【URL】

上記URLを叩くと以下のようなデータが返ってきます。

はてなブックマーク数取得用URLのレスポンス

【はてなブックマーク数】

ただし、これには注意が必要です。もし、指定したURLに一つもブックマークがついていない場合のレスポンスは、「0」ではなく「空の文字」でした。なので、何も考えずにこれをint型に変換しようとすると、例えばPythonの場合はValueErrorなど、int型に変換できない例外が発生します。なお、HTTPのステータスコード自体は200が返ってきました。

↑ 目次に戻る

Google +1数の取得

Google +1数は、リリースが一番新しいのが原因かはわかりませんが、一番面倒です。。。また、下に書きますが、数値に関する注意もあります。今後APIが整備されていくことを期待します。

それでは取得の方法です。Google +1も、Like数などと同様URLを叩きます。

Google +1数を取得するためのURL

https://plusone.google.com/u/0/_/+1/fastbutton?count=true&url=【URL】

で、問題が上記URLのレスポンスです。以下のようなレスポンスと貼付けたいところですが、あまりにもごちゃごちゃしていて、無駄な部分が多いので割愛させて頂きます。一部抜粋すると、以下のような部分があります。

Google +1数取得用URLのレスポンス(抜粋1)

window.__SSR = {c: 【Google +1数】.0 ,at:'

他にも、以下のような箇所もあります。

Google +1数取得用URLのレスポンス(抜粋2)

ld:[,[2,【Google +1数】,[],,0]

正規表現を使って、上記部分から【+1】数を抜き出せば取得できます。ただし、「window.__SSR」の方は、Google +1数がない場合は「c: 【Google +1数】」がなくなる点に注意が必要です。

Google +1数がない場合のレスポンス

window.__SSR = {at:

最後に、上に書いた「数値に関する注意」です。正確なことはわかりませんが、ページを作成した日辺りは+1の取得できる数値が安定しません。私が試した時には、画面に表示されている数と上記で取得できる数が乖離していました。+1ボタンクリックされたものが、上記取得方法に反映されるのにタイムラグがあるのかもしれません。1日2日経ったものは安定していたようなので、+1数を取得するには少し間を置いた方がいいかもしれません。

<

p class="back-to-index">↑ 目次に戻る

この記事が役に立った場合、シェアしていただけると励みになります!!