ソーシャルカウントの取得方法まとめ(全9サイト)

ソーシャルシェアボタンをオリジナルデザインにしたかったり、いいね!数のデータを元にランキングシステムなどを作りたい場合に役立つ「ソーシャルカウントの取得方法」をまとめました。取得方法はサーバーサイド(PHP)、クライアントサイド(Javascript)の両パターンを取り上げています。よろしければ参考にしてみて下さい!なお、Twitterのカウントは2015年11月20日以降、取得できなくなりました。

Twitter

Twitterのシェアカウントは、2015年11月20日に廃止されました。詳しくは、下記ページでTwitterの公式の発表をご参考下さい。

Facebook

取得方法

Facebookの場合は、下記のURLにリクエストを送ることで、シェア数とコメント数を取得することができます。

GET http://graph.facebook.com/?id={目的のURL}

URLにアクセスすると、次のJSONデータがブラウザに表示されるはずです。この例では、shares331625がシェア数、comments83がコメント数です。

JSON

{
"id": "https://www.google.com/",
"shares": 331625,
"comments": 83
}

Twitterと違い、カウント数が0のURLの場合、下記のようにsharecommentsのプロパティが存在しないので、注意が必要です。

JSON

{
"id": "https://www.goodsdddfdgfdfdgdfggle.com/"
}

下記サンプルページで、実際にどのようなデータを取得できるのか、確認することができます。

デモを見る (VIEW DEMO)

PHPの場合

PHPを利用して、Facebookのシェア数を取得するためのサンプルコードです。$countに、シェア数が代入されます。

PHP

<?php
	// チェックするURL
	$url = 'https://www.yahoo.com/' ;

	// リクエストURL
	$request_url = 'http://graph.facebook.com/?id=' . rawurlencode( $url ) ;

	// データをJSON形式で取得する (cURLを使用)
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;					// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータの整理
	$json = substr( $res1, $res2['header_size'] ) ;					// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;			// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// JSONデータを連想配列に直す
	$array = json_decode( $json , true ) ;

	// カウントプロパティが存在する場合
	if( isset($array['shares']) ) {
		$count = $array['shares'] ;

	// カウントプロパティが存在しない場合は0扱い
	} else {
		$count = 0 ;

	}

	// URLを表示用に整形 (検証用)
	foreach( array( 'url', 'request_url' ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// 表示用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;
	$html .= '<dl>' ;
	$html .= 	'<dt>調べたURL</dt>' ;
	$html .= 		'<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
	$html .=	'<dt>リクエストURL</dt>' ;
	$html .= 		'<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
	$html .= 	'<dt>取得結果</dt>' ;
	$html .= 		'<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
	$html .= '</dl>' ;

	// 検証用
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

JavaScriptの場合

JavaScriptを利用して、シェア数を取得するためのサンプルコードです。

HTML

HTML

<h2>実行結果</h2>
<dl>
	<dt>取得した結果<dt>
		<dd><mark id="result">0</mark></dd>
</dl>

jQueryを使用する場合

jQueryを利用します。クロスブラウザ対応に優れているので、サイト上でjQueryを使用していて、古いブラウザ(IE8以前など)をフォローしたい人は有用です。

jQuery

// チェックするURL
var url = 'https://www.yahoo.com/' ;
 
// Ajax通信
$.ajax({
	// オプションの指定
	url: '//graph.facebook.com/?id=' + encodeURIComponent( url ) ,
	dataType: 'jsonp' ,

	// 取得に成功した時の処理
	success:function( obj )	{
		var count = 0 ;

		//データが存在する場合だけ代入
		if( obj.shares ) {
			count = obj.shares ;
		}

		// アラート表示
		// alert( 'カウント数は' + count + 'です!' ) ;

		// ツイートカウントをHTML([ID=result]の要素内)へ書き出す
		$('#result').html( count ) ;
	} ,

	//取得に失敗した時の処理
	error:function() {
		alert("通信に失敗しました…。");

	} ,

	//完了した時の処理
	complete:function() {
		return false ;

	}

}) ;

デモを見る (VIEW DEMO)

jQueryを使用しない場合

jQueryを利用しません。古いブラウザ(IE8以前)には対応していません。サイト上で、jQueryを使っていない人に有用です。

JavaScript

// チェックするURL
var url = 'https://www.yahoo.com/' ;

// インスタンスの作成
xhr = new XMLHttpRequest() ;

// タイムアウト時の処理
xhr.ontimeout = function() {
	xhr.abort() ;	// 通信中止
} ;

// 通信エラー時の処理
xhr.onerror = function() {
	alert( '通信に失敗しました…。' ) ;
}

// 処理内容
xhr.onreadystatechange = function() {
	// 通信が完了したら…
	if ( xhr.readyState == 4 ) {

		// リクエストが成功した場合
		if ( xhr.status == 200 && xhr.response ) {
			var obj = xhr.response ;	// JSONを代入
			var count = 0 ;		// 初期値

			// [shares]プロパティの判定
			if( obj.shares ) {
				count = obj.shares ;
			}

			// アラート表示
			// alert( 'カウント数は' + count + 'です!' ) ;

			// カウントをHTML([ID=result]の要素内)へ書き出す
			document.getElementById( 'result' ).innerHTML = count ;

		// リクエストが失敗した場合
		} else {
			alert( "リクエストに失敗しました…。ステータスコード [" + xhr.status + "]" ) ;

		} 
	}
}
xhr.open( "GET", "//graph.facebook.com/?id=" + encodeURIComponent( url ) ) ;	// リクエスト内容
xhr.timeout = 15000 ;			// タイムアウトの秒数 (15秒)
xhr.responseType = 'json';		// 取得するデータタイプの指定
xhr.send() ;					// 通信開始

デモを見る (VIEW DEMO)

Google+

取得方法

Google+の場合は、決まり事のようなものだと思って下さい。TwitterやFacebookのように、手軽にカウントを取得するためのURLがありません。PHPを利用して次項(PHPの場合)の通り、取得して下さい。その前に、実際にどのようなデータを取得できるのかを確認したい人は、下記サンプルデモページでご確認下さい。URLを調整して、様々な結果を確認できます。

デモを見る (VIEW DEMO)

PHPの場合

PHPを利用して、Google+の+1数を取得するためのサンプルコードです。$countに目的のカウントが代入されます。

PHP

<?php
	// チェックするURL (デフォルト)
	$url = 'https://www.google.com/' ;

	// リクエストURL
	$request_url = "https://clients6.google.com/rpc?key=AIzaSyCKSbrvQasunBoV16zDH9R33D88CeLr9gQ" ;

	// データをJSON形式で取得する (cURLを使用)
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
	curl_setopt( $curl, CURLOPT_POST, 1 ) ;
	curl_setopt( $curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $url . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]' ) ;
	curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Content-type: application/json' ) ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;						// タイムアウトの秒数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータの整理
	$json = substr( $res1, $res2['header_size'] ) ;					// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;			// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// JSONデータからカウント数を取得
	$array = json_decode( $json, true ) ;

	// カウント(データが存在しない場合は0扱い)
	if( isset($array[0]['result']['metadata']['globalCounts']['count']) ) {
		$count = (int)$array[0]['result']['metadata']['globalCounts']['count'] ;

	} else {
		$count = 0 ;

	}

	// URLを表示用に整形 (検証用)
	foreach( array( 'url', 'request_url' ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// 出力用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;
	$html .= '<dl>' ;
	$html .= 	'<dt>調べたURL</dt>' ;
	$html .= 		'<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
	$html .=	'<dt>リクエストURL</dt>' ;
	$html .= 		'<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
	$html .= 	'<dt>取得結果</dt>' ;
	$html .= 		'<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
	$html .= '</dl>' ;

	// 検証用
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

はてなブックマーク

取得方法

続いて、はてなブックマークのカウント数を取得する方法です。取得するには、下記のURLにリクエストを送ります。

GET http://api.b.st-hatena.com/entry.count?url={目的のURL}

はてなブックマークの場合、JSONデータではなく、ダイレクトでカウント数を返してくれます。ブラウザに表示されるのはカウント数のみです。

1076

カウント数が0の場合は下記のように0ではなく空白を返します。そのため、「データが空の場合は0扱いにする」といった条件分けの処理が必要ですね。

(空データ)

どのようにデータを取得できるのか確認したい人は、下記のサンプルデモページをご覧下さい。

デモを見る (VIEW DEMO)

PHPの場合

PHPを利用して、はてなブックマークのはてブ数を取得するためのサンプルコードです。

PHP

<?php
	// チェックするURL
	$url = 'https://www.yahoo.com/' ;

	// リクエストURL
	$request_url = 'http://api.b.st-hatena.com/entry.count?url=' . rawurlencode( $url ) ;

	// データをJSON形式で取得する (cURLを使用)
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;						// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータの整理
	$count = substr( $res1, $res2['header_size'] ) ;				// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;			// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// データが正数じゃない場合は0扱い
	if( !$count ) {
		$count = 0 ;
	}

	// URLを表示用に整形 (検証用)
	foreach( array( 'url', 'request_url' ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// 表示用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;
	$html .= '<dl>' ;
	$html .= 	'<dt>調べたURL</dt>' ;
	$html .= 		'<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
	$html .=	'<dt>リクエストURL</dt>' ;
	$html .= 		'<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
	$html .= 	'<dt>取得結果</dt>' ;
	$html .= 		'<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
	$html .= '</dl>' ;

	// 検証用
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>レスポンスデータの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($count!='') ? $count : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

JavaScriptの場合

JavaScriptを利用して、はてなブックマークのはてブ数を取得するためのサンプルコードです。なお、2015年11月現在、はてなブックマークがSSL通信に対応していないため、当サイト(https://)からは取得できません。従って下記デモページでは通信に失敗してしまいますが、HTTPから始まるウェブサイト上では動作します。

HTML

HTML

<h2>実行結果</h2>
<dl>
	<dt>取得した結果<dt>
		<dd><mark id="result">0</mark></dd>
</dl>

jQueryを使用する場合

jQueryを利用します。クロスブラウザ対応に優れているので、サイト上でjQueryを使用していて、古いブラウザ(IE8以前など)をフォローしたい人は有用です。

jQuery

// チェックするURL
var url = 'https://www.youtube.com/' ;

// Ajax通信
$.ajax({
	// オプションの指定
	url: 'http://api.b.st-hatena.com/entry.count?url=' + encodeURIComponent( url ) ,
	dataType: 'text' ,

	// 取得に成功した時の処理
	success:function( count )	{
		//データが存在する場合だけ代入
		if( !count ) {
			count = 0 ;
		}

		// アラート表示
		// alert( 'カウント数は' + count + 'です!' ) ;

		// ツイートカウントをHTML([ID=result]の要素内)へ書き出す
		$('#result').html( count ) ;
	} ,

	//取得に失敗した時の処理
	error:function() {
		alert("通信に失敗しました…。");

	} ,

	//完了した時の処理
	complete:function() {
		return false ;

	}

}) ;

デモを見る (VIEW DEMO)

jQueryを使用しない場合

jQueryを利用しません。古いブラウザ(IE8以前)には対応していません。サイト上で、jQueryを使っていない人に有用です。

JavaScript

// チェックするURL
var url = 'https://www.youtube.com/' ;

// インスタンスの作成
xhr = new XMLHttpRequest() ;

// タイムアウト時の処理
xhr.ontimeout = function () {
	xhr.abort() ;	// 通信中止
} ;

// 通信エラー時の処理
xhr.onerror = function() {
	alert( '通信に失敗しました…。' ) ;
}

// 処理内容
xhr.onreadystatechange = function() {
	// 通信が完了したら…
	if ( xhr.readyState == 4 ) {

		// リクエストが成功した場合
		if ( xhr.status == 200 ) {
			var count = xhr.response ;		// 初期値

			// [shares]プロパティの判定
			if( !count ) {
				count = 0 ;
			}

			// アラート表示
			// alert( 'カウント数は' + count + 'です!' ) ;

			// カウントをHTML([ID=result]の要素内)へ書き出す
			document.getElementById( 'result' ).innerHTML = count ;

		// リクエストが失敗した場合
		} else {
			alert( "リクエストに失敗しました…。ステータスコード [" + xhr.status + "]" ) ;

		} 
	}
}
xhr.open( "GET", 'http://api.b.st-hatena.com/entry.count?url=' + encodeURIComponent( url ) ) ;	// リクエスト内容
xhr.timeout = 15000 ;			// タイムアウトの秒数 (15秒)
xhr.responseType = 'text';		// 取得するデータタイプの指定
xhr.send() ;					// 通信開始

デモを見る (VIEW DEMO)

Pinterest

取得方法

続いて、PinterestのPINの数を取得する方法です。下記のURLにリクエストを送ると、「そのページに存在する全画像のピンの合計数」を取得することができます。

GET http://api.pinterest.com/v1/urls/count.json?url={目的のURL}

次のように、receiveCount(〜)の中に入る形で、カウント数のJSONデータが返ってきます。PHPで取得する場合はこのreceiveCount()の部分は単純に邪魔なので、正規表現などで削除してやる必要がありますねー。

receiveCount(
	{
		"count": 68873,
		"url": "http://500px.com/popular"
	}
)

カウント数が0の場合も0というデータを返却してくれるので、条件分けは必要なさそうです。

receiveCount(
	{
		"count": 0,
		"url": "http://500hhkpx.com/popular"
	}
)

PinterestのPIN数をどのように取得できるのか、確認したい人は、下記ボタンよりサンプルデモのページに移動して下さい。

デモを見る (VIEW DEMO)

PHPの場合

PHPを利用して、PinterestのPIN数を取得するためのサンプルコードです。

PHP

<?php
	// チェックするURL
	$url = 'https://500px.com/' ;

	// リクエストURL
	$request_url = 'https://api.pinterest.com/v1/urls/count.json?url=' . rawurlencode( $url ) ;

	// データをJSON形式で取得する (cURLを使用)
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;					// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータの整理
	$json = substr( $res1, $res2['header_size'] ) ;					// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;			// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// receiveCount(〜)を削除
	$json = rtrim( $json , ');' ) ;
	$json = ltrim( $json , 'receiveCount(' ) ;

	// JSONデータを連想配列に直す
	$array = json_decode( $json , true ) ;

	// カウントプロパティが存在する場合
	if( isset($array['count']) ) {
		$count = $array['count'] ;

	// カウントプロパティが存在しない場合は0扱い
	} else {
		$count = 0 ;

	}

	// URLを表示用に整形 (検証用)
	foreach( array( 'url', 'request_url' ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// 表示用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;
	$html .= '<dl>' ;
	$html .= 	'<dt>調べたURL</dt>' ;
	$html .= 		'<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
	$html .=	'<dt>リクエストURL</dt>' ;
	$html .= 		'<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
	$html .= 	'<dt>取得結果</dt>' ;
	$html .= 		'<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
	$html .= '</dl>' ;

	// 検証用
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

JavaScriptの場合

JavaScriptを利用して、PinterestのPIN数を取得するためのサンプルコードです。

HTML

HTML

<h2>実行結果</h2>
<dl>
	<dt>取得した結果<dt>
		<dd><mark id="result">0</mark></dd>
</dl>

jQueryを使用する場合

jQueryを利用します。クロスブラウザ対応に優れているので、サイト上でjQueryを使用していて、古いブラウザ(IE8以前など)をフォローしたい人は有用です。JSONでデータを受け取る指定をすることで、receiveCount(〜)部分は取り除かれるようです。

jQuery

// チェックするURL
var url = 'https://500px.com/' ;
 
// Ajax通信
$.ajax({
	// オプションの指定
	url: '//api.pinterest.com/v1/urls/count.json?url=' + encodeURIComponent( url ) ,
	dataType: 'jsonp' ,

	// 取得に成功した時の処理
	success:function( obj )	{
		var count = 0 ;

		//データが存在する場合だけ代入
		if( obj.count ) {
			count = obj.count ;
		}

		// アラート表示
		// alert( 'カウント数は' + count + 'です!' ) ;

		// ツイートカウントをHTML([ID=result]の要素内)へ書き出す
		$('#result').html( count ) ;
	} ,

	//取得に失敗した時の処理
	error:function() {
		alert("通信に失敗しました…。");

	} ,

	//完了した時の処理
	complete:function() {
		return false ;

	}

}) ;

デモを見る (VIEW DEMO)

jQueryを使用しない場合

jQueryを利用しません。古いブラウザ(IE8以前)には対応していません。サイト上で、jQueryを使っていない人に有用です。ピュアなJavaScriptの場合、PHPと同様に、receiveCount(〜)部分の削除処理が必要です。

JavaScript

// チェックするURL
var url = 'https://500px.com/' ;

// インスタンスの作成
xhr = new XMLHttpRequest() ;

// タイムアウト時の処理
xhr.ontimeout = function () {
	xhr.abort() ;	// 通信中止
} ;

// 通信エラー時の処理
xhr.onerror = function() {
	alert( '通信に失敗しました…。' ) ;
}

// 処理内容
xhr.onreadystatechange = function() {
	// 通信が完了したら…
	if ( xhr.readyState == 4 ) {

		// リクエストが成功した場合
		if ( xhr.status == 200 && xhr.response ) {
			var text = xhr.response ;	// JSONを代入
			var count = 0 ;		// 初期値

			// receiveCount(〜)を削除
			text = text.substr( 13 ) ;
			text = text.substr( 0 , (text.length-1) ) ;

			// JSONを解析
			obj = JSON.parse( text ) ;

			//データが存在する場合だけ代入
			if( obj.count ) {
				count = obj.count ;
			}

			// アラート表示
			// alert( 'カウント数は' + count + 'です!' ) ;

			// カウントをHTML([ID=result]の要素内)へ書き出す
			document.getElementById( 'result' ).innerHTML = count ;

		// リクエストが失敗した場合
		} else {
			alert( "リクエストに失敗しました…。ステータスコード [" + xhr.status + "]" ) ;

		} 
	}
}
xhr.open( "GET", '//api.pinterest.com/v1/urls/count.json?url=' + encodeURIComponent( url ) ) ;	// リクエスト内容
xhr.timeout = 15000 ;			// タイムアウトの秒数 (15秒)
xhr.responseType = 'text';		// 取得するデータタイプの指定
xhr.send() ;					// 通信開始

デモを見る (VIEW DEMO)

Linkedin

取得方法

日本のウェブサイトではなかなか見かけませんが、Linkedinのシェアカウント数を取得する方法も紹介しちゃいます。次のURLにリクエストを送って下さい。

GET http://www.linkedin.com/countserv/count/share?url={目的のURL}

pinterestと同じケースで、IN.Tags.Share.handleCount(〜);の中に入る形で、カウント数のJSONデータが返ってきます。countプロパティの1109がシェア数です。PHPの場合はこのIN.Tags.Share.handleCount(〜);を取り除く必要があります。

IN.Tags.Share.handleCount(
	{
		"count": 1109,
		"fCnt": "1,109",
		"fCntPlusOne": "1,110",
		"url": "https:\/\/www.google.co.jp"
	}
);

カウント数が0の場合も0というデータを返却してくれます。

IN.Tags.Share.handleCount(
	{
		"count": 0,
		"fCnt": "1,109",
		"fCntPlusOne": "1,110",
		"url": "https:\/\/www.goregrth4ey5ogle.co.jp"
	}
);

実際の動作を確認したい人は、下記のサンプルデモをご覧下さい。

デモを見る (VIEW DEMO)

PHPの場合

PHPを利用して、Linkedinのシェア数を取得するためのサンプルコードです。

PHP

<?php
	// チェックするURL (デフォルト)
	$url = 'https://www.yahoo.com/' ;

	// パラメータによる指定がある場合は上書き
	if( isset( $_GET['url'] ) && !empty( $_GET['url'] ) && is_string( $_GET['url'] ) ) {
		$url = $_GET['url'] ;
	}

	// リクエストURL
	$request_url = 'http://www.linkedin.com/countserv/count/share?url=' . rawurlencode( $url ) ;

	// データをJSON形式で取得する (cURLを使用)
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;						// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータの整理
	$json = substr( $res1, $res2['header_size'] ) ;					// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;			// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// IN.Tags.Share.handleCount(〜)を削除
	$json = rtrim( $json , ');' ) ;
	$json = ltrim( $json , 'IN.Tags.Share.handleCount(' ) ;

	// JSONデータを配列に直す
	$array = json_decode( $json , true ) ;

	// カウント
	$count = $array[ 'count' ] ;

	// 出力用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;
	$html .= '<dl>' ;
	$html .= 	'<dt>調べたURL</dt>' ;
	$html .= 		'<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
	$html .=	'<dt>リクエストURL</dt>' ;
	$html .= 		'<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
	$html .= 	'<dt>取得結果</dt>' ;
	$html .= 		'<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
	$html .= '</dl>' ;

	// URLの指定
	$html .= '<h2>URLの指定</h2>' ;
	$html .= '<p>URLを入力して、プログラムを実行してみて下さい。</p>' ;
	$html .= '<form>' ;
	$html .= 	'<p><input name="url" type="url" value="' . $url . '"></p>' ;
	$html .= 	'<p><button>チェックする</button></p>' ;
	$html .= '</form>' ;

	// 検証用
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

JavaScriptの場合

JavaScriptを利用して、Linkedinのシェア数を取得するためのサンプルコードです。

HTML

HTML

<h2>実行結果</h2>
<dl>
	<dt>取得した結果<dt>
		<dd><mark id="result">0</mark></dd>
</dl>

jQueryを使用する場合

jQueryを利用します。クロスブラウザ対応に優れているので、サイト上でjQueryを使用していて、古いブラウザ(IE8以前など)をフォローしたい人は有用です。JSONでデータを受け取る指定をすることで、IN.Tags.Share.handleCount(〜)部分は取り除かれるようです。

jQuery

// チェックするURL
var url = 'https://www.google.com/' ;
 
// Ajax通信
$.ajax({
	// オプションの指定
	url: '//www.linkedin.com/countserv/count/share?url=' + encodeURIComponent( url ) ,
	dataType: 'jsonp' ,

	// 取得に成功した時の処理
	success:function( obj )	{
		var count = 0 ;

		//データが存在する場合だけ代入
		if( obj.count ) {
			count = obj.count ;
		}

		// アラート表示
		// alert( 'カウント数は' + count + 'です!' ) ;

		// ツイートカウントをHTML([ID=result]の要素内)へ書き出す
		$('#result').html( count ) ;
	} ,

	//取得に失敗した時の処理
	error:function() {
		alert("通信に失敗しました…。");

	} ,

	//完了した時の処理
	complete:function() {
		return false ;

	}

}) ;

デモを見る (VIEW DEMO)

jQueryを使用しない場合

LinkedInの場合、クロスオリジン制約(違うサーバーからの通信を受け付けない)があるため、jQueryを使わないで取得することができません。正確には、私の力不足で、取得方法が分かりません…。もし、「こうやればできるよ」という方がいらっしゃいましたら、教えていただければ幸いですm(__)m

Feedly

取得方法

Feedlyの購読者数を取得してみましょう!次のURLにリクエストを送ることで、購読者数を取得することができます。なお、指定する「フィードのURL」はURLエンコードをする必要があります。

GET http://cloud.feedly.com/v3/feeds/feed%2F{フィードのURL}

リクエストすると、フィードの情報を含んだJSONデータが返却されます。その中のsubscribersというプロパティに、購読者数の情報があります。サンプルの場合だと、購読者数は5,717人ですねー。

JSON

{
"subscribers": 5717
}

購読者数が0人の場合、次のように空データが返るので、条件分けが必要になります。

[ ]

実際の動作を確認したい人は、下記のサンプルデモをご覧下さい。

デモを見る (VIEW DEMO)

PHPの場合

PHPを利用して、Feedlyの購読者数を取得するためのサンプルコードです。

PHP

<?php
	// チェックするフィードのURL
	$url = 'http://blog.evernote.com/jp/feed/' ;

	// リクエストURL
	$request_url = 'http://cloud.feedly.com/v3/feeds/feed%2F' . rawurlencode( $url ) ;

	// データをJSON形式で取得する (cURLを使用)
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;					// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータの整理
	$json = substr( $res1, $res2['header_size'] ) ;					// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;			// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// JSONデータを連想配列に直す
	$array = json_decode( $json , true ) ;

	// カウントプロパティが存在する場合
	if( isset($array['subscribers']) ) {
		$count = $array['subscribers'] ;

	// カウントプロパティが存在しない場合は0扱い
	} else {
		$count = 0 ;

	}

	// URLを表示用に整形 (検証用)
	foreach( array( 'url', 'request_url' ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// 表示用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;
	$html .= '<dl>' ;
	$html .= 	'<dt>調べたURL</dt>' ;
	$html .= 		'<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
	$html .=	'<dt>リクエストURL</dt>' ;
	$html .= 		'<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
	$html .= 	'<dt>取得結果</dt>' ;
	$html .= 		'<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
	$html .= '</dl>' ;

	// 検証用
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

Buffer

取得方法

Bufferでのシェアカウントを取得する方法を紹介します。次のURLにGETメソッドでリクエストを送れば、シェアされた回数を取得できます。

GET https://api.bufferapp.com/1/links/shares.json?url={目的のURL}

取得できるJSONデータは次の通りです。このshareというプロパティに含まれているのが、求めたいカウントです。サンプルの場合、Bufferを経由してシェアされた回数が5回ということになります。

JSON

{
"shares": 5
}

カウントが0の場合も、次のように0というデータを返してくれます。

JSON

{
"shares": 0
}

Bufferのカウント数取得の動作確認をしたい人は、下記サンプルデモをご利用下さい。

デモを見る (VIEW DEMO)

PHPの場合

PHPを利用して、Bufferのシェア数を取得するためのサンプルコードです。

PHP

<?php
	// チェックするURL
	$url = 'https://www.google.com/' ;

	// リクエストURL
	$request_url = 'https://api.bufferapp.com/1/links/shares.json?url=' . rawurlencode( $url ) ;

	// データをJSON形式で取得する (cURLを使用)
	$curl = curl_init() ;
	curl_setopt( $curl, CURLOPT_URL, $request_url ) ;
	curl_setopt( $curl, CURLOPT_HEADER, 1 ) ;						// ヘッダーを取得する
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;			// 証明書の検証を行わない
	curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;			// curl_execの結果を文字列で返す
	curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;					// タイムアウトの秒数
	curl_setopt( $curl, CURLOPT_FOLLOWLOCATION , true ) ;			// リダイレクト先を追跡するか?
	curl_setopt( $curl, CURLOPT_MAXREDIRS, 5 ) ;					// 追跡する回数
	$res1 = curl_exec( $curl ) ;
	$res2 = curl_getinfo( $curl ) ;
	curl_close( $curl ) ;

	// 取得したデータの整理
	$json = substr( $res1, $res2['header_size'] ) ;					// 取得したデータ(JSONなど)
	$header = substr( $res1, 0, $res2['header_size'] ) ;			// レスポンスヘッダー (検証に利用したい場合にどうぞ)

	// JSONデータを連想配列に直す
	$array = json_decode( $json , true ) ;

	// カウントプロパティが存在する場合
	if( isset($array['shares']) ) {
		$count = $array['shares'] ;

	// カウントプロパティが存在しない場合は0扱い
	} else {
		$count = 0 ;

	}

	// URLを表示用に整形 (検証用)
	foreach( array( 'url', 'request_url' ) as $variable_name ) {
		${ $variable_name } = htmlspecialchars( ${ $variable_name } , ENT_QUOTES , 'UTF-8' ) ;
	}

	// 表示用
	$html = '' ;

	// 出力
	$html .= '<h2>実行結果</h2>' ;
	$html .= '<dl>' ;
	$html .= 	'<dt>調べたURL</dt>' ;
	$html .= 		'<dd><a href="' . $url . '" target="_blank">' . $url . '</a></dd>' ;
	$html .=	'<dt>リクエストURL</dt>' ;
	$html .= 		'<dd><a href="' . $request_url . '" target="_blank">' . $request_url . '</a></dd>' ;
	$html .= 	'<dt>取得結果</dt>' ;
	$html .= 		'<dd><mark>' . number_format( $count ) . '</mark></dd>' ;
	$html .= '</dl>' ;

	// 検証用
	$html .= '<h2>取得したデータ</h2>' ;
	$html .= '<h3>JSONの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( ($json!='') ? $json : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;
	$html .= '<h3>レスポンスヘッダーの内容</h3>' ;
	$html .= '<textarea>' ;
	$html .= 	( $header ? $header : '取得できませんでした…。' ) ;
	$html .= '</textarea>' ;

	// ブラウザに[$html]の内容を出力
	// 運用時はHTMLのヘッダーとフッターを付けましょう。
	echo $html ;

デモを見る (VIEW DEMO)

JavaScriptの場合

JavaScriptを利用して、PinterestのPIN数を取得するためのサンプルコードです。

HTML

HTML

<h2>実行結果</h2>
<dl>
	<dt>取得した結果<dt>
		<dd><mark id="result">0</mark></dd>
</dl>

jQueryを使用する場合

jQueryを利用します。クロスブラウザ対応に優れているので、サイト上でjQueryを使用していて、古いブラウザ(IE8以前など)をフォローしたい人は有用です。

jQuery

// チェックするURL
var url = 'https://www.yahoo.com/' ;
 
// Ajax通信
$.ajax({
	// オプションの指定
	url: '//api.bufferapp.com/1/links/shares.json?url=' + encodeURIComponent( url ) ,
	dataType: 'jsonp' ,

	// 取得に成功した時の処理
	success:function( obj )	{
		var count = 0 ;

		//データが存在する場合だけ代入
		if( obj.shares ) {
			count = obj.shares ;
		}

		// アラート表示
		// alert( 'カウント数は' + count + 'です!' ) ;

		// ツイートカウントをHTML([ID=result]の要素内)へ書き出す
		$('#result').html( count ) ;
	} ,

	//取得に失敗した時の処理
	error:function() {
		alert("通信に失敗しました…。");

	} ,

	//完了した時の処理
	complete:function() {
		return false ;

	}

}) ;

デモを見る (VIEW DEMO)

jQueryを使用しない場合

LinkedInの場合と同様、Bufferのカウント数取得用APIは、クロスオリジン制約があるため、私の知識では、jQueryを使わずに取得することができませんでした。取得方法を知っている方がいらっしゃいましたら、教えていただければ幸いですm(__)m

ダウンロード

この記事で紹介してきたサンプルプログラムを配布しています。よろしければ、自身のウェブサイトでカスタマイズしてご活用下さい。