Skip to content

Instantly share code, notes, and snippets.

@jonathanmoore
Created May 8, 2012 23:17
Show Gist options
  • Save jonathanmoore/2640302 to your computer and use it in GitHub Desktop.
Save jonathanmoore/2640302 to your computer and use it in GitHub Desktop.
Get the share counts from various APIs

Share Counts

I have always struggled with getting all the various share buttons from Facebook, Twitter, Google Plus, Pinterest, etc to align correctly and to not look like a tacky explosion of buttons. Seeing a number of sites rolling their own share buttons with counts, for example The Next Web I decided to look into the various APIs on how to simply return the share count.

If you want to roll up all of these into a single jQuery plugin check out Sharrre

Many of these API calls and methods are undocumented, so anticipate that they will change in the future. Also, if you are planning on rolling these out across a site I would recommend creating a simple endpoint that periodically caches results from all of the APIs so that you are not overloading the services will requests.

Twitter

GET URL:

http://cdn.api.twitter.com/1/urls/count.json?url=http://stylehatch.co

Returns:

{
	"count":528,
	"url":"http://stylehatch.co/"
}

Facebook

GET URL:

http://graph.facebook.com/?id=http://stylehatch.co

Returns:

{
   "id": "http://stylehatch.co",
   "shares": 61
}

Pinterest

GET URL:

http://api.pinterest.com/v1/urls/count.json?callback=&url=http://stylehatch.co

Result:

({"count": 0, "url": "http://stylehatch.co"})

LinkedIn

GET URL:

http://www.linkedin.com/countserv/count/share?url=http://stylehatch.co&format=json

Returns:

{
	"count":17,
	"fCnt":"17",
	"fCntPlusOne":"18",
	"url":"http:\/\/stylehatch.co"
}

Google Plus

POST URL:

https://clients6.google.com/rpc?key=YOUR_API_KEY

POST body:

[{
	"method":"pos.plusones.get",
	"id":"p",
	"params":{
		"nolog":true,
		"id":"http://stylehatch.co/",
		"source":"widget",
		"userId":"@viewer",
		"groupId":"@self"
		},
	"jsonrpc":"2.0",
	"key":"p",
	"apiVersion":"v1"
}]

Returns

[{
	"result": { 
		"kind": "pos#plusones", 
		"id": "http://stylehatch.co/", 
		"isSetByViewer": false, 
		"metadata": {
			"type": "URL", 
			"globalCounts": {
				"count": 3097.0
			}
		}
	} ,
	"id": "p"
}]

StumbledUpon

GET URL:

http://www.stumbleupon.com/services/1.01/badge.getinfo?url=http://stylehatch.co

Result:

{
	"result":{
		"url":"http:\/\/stylehatch.co\/",
		"in_index":true,
		"publicid":"1iOLcK",
		"views":39,
		"title":"Style Hatch - Hand Crafted Digital Goods",
		"thumbnail":"http:\/\/cdn.stumble-upon.com\/mthumb\/941\/72725941.jpg",
		"thumbnail_b":"http:\/\/cdn.stumble-upon.com\/bthumb\/941\/72725941.jpg",
		"submit_link":"http:\/\/www.stumbleupon.com\/submit\/?url=http:\/\/stylehatch.co\/",
		"badge_link":"http:\/\/www.stumbleupon.com\/badge\/?url=http:\/\/stylehatch.co\/",
		"info_link":"http:\/\/www.stumbleupon.com\/url\/stylehatch.co\/"
	},
	"timestamp":1336520555,
	"success":true
}
@DonPramis
Copy link

hi guys me, im using this

https://graph.facebook.com/?id=http://google.com

Its working,

but how can i post it

in this way

public function getFacebookData($domain)
		{
			try
			{
				$callback_url = "https://graph.facebook.com/?";
				$data = array(
					'id'	=> "SELECT comment_count, like_count, share_count FROM link_stat WHERE url='http://.$domain'"
				);

				$curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&'));

				if ($curl_response->headers['Status-Code'] == "200") {

					$parse_response = json_decode($curl_response, true);
					$fb_share_count = $parse_response['data'][0]['share_count'];
					$fb_like_count = $parse_response['data'][0]['like_count'];
					$fb_comment_count = $parse_response['data'][0]['comment_count'];

				} else {
					$fb_share_count = 0;
					$fb_like_count = 0;
					$fb_comment_count = 0;
				}

				$response = array(
					'status' => 'success',
					'data' => array(
						'fb_share_count' => filter_var($fb_share_count, FILTER_SANITIZE_NUMBER_INT),
						'fb_like_count' => filter_var($fb_like_count, FILTER_SANITIZE_NUMBER_INT),
						'fb_comment_count' => filter_var($fb_comment_count, FILTER_SANITIZE_NUMBER_INT)
					)
				);

			}
			catch (Exception $e)
			{
				$response = array(
					'status' => 'error',
					'msg' => $e->getMessage()
				);
			}
			return $response;
		}

Any suggestion

@DonPramis
Copy link

the issue is if i dont put http://

they will be an error

@webserveis
Copy link

webserveis commented Dec 24, 2017

@frollo
Copy link

frollo commented Jan 13, 2018

It seems that LinkedIn either has stopped working or has some issues. It keeps returning a count of 0, even for URLs which got a non-zero count until yesterday.

@tom-weiss
Copy link

I’m seeing the same problem with LinkedIn but no feedback from them or anywhere else except this thread...

@mrskeety
Copy link

Claims here the Count call is shuttered following its removal from the inShare plugin:

https://stackoverflow.com/questions/48282250/linkedin-share-count-api-countserv-count-share-always-returns-0

@kmb5vs
Copy link

kmb5vs commented Mar 8, 2018

Is this section complete?

@mbbhimani
Copy link

is there any api for whatsapp total count ??

@shijiezhou1
Copy link

@frollo The linkedin is deprecated and no long provide us any shrare.

Does any one know how to get the count from linkedin?

@rassrig
Copy link

rassrig commented Jul 30, 2018

Sorry for this noob question, but is it necessary to provide an appId in order to get the count of shares of specified url?

@agnelvishal
Copy link

Sorry for this noob question, but is it necessary to provide an appId in order to get the count of shares of specified url?

For facebook api, it is not required

@agnelvishal
Copy link

@frollo The linkedin is deprecated and no long provide us any shrare.

Does any one know how to get the count from linkedin?

Shall we scrap?

@agnelvishal
Copy link

is there any api for whatsapp total count ??

Whatsapp messages are encrypted and hence not possible

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment