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
}
@brugeman
Copy link

brugeman commented Dec 9, 2015

@voku @enjoyiacm @Methos21 @lutsen Try http://newsharecounts.com to get Twitter share counts. You need to sign-up using your Twitter account, add the sites you wish to track (up to 1000), and then use http://public.newsharecounts.com/count.json?url= to get the counts.

@pagelab
Copy link

pagelab commented Dec 10, 2015

http://opensharecount.com/ it's another way to grab counts from Twitter.

@mindtonic
Copy link

Here is another gem built for this purpose. It was constructed several years ago but has recently been updated to remove stale API endpoints and add new ones. https://github.com/mindtonic/virility

@fokosun
Copy link

fokosun commented Apr 18, 2016

+1 @kenbrew

@sukhjindersingh
Copy link

+1 @mindtonic, how can we use it in PHP?

@DrLightman
Copy link

Twitter is broken.

@zhangpan06
Copy link

Cool3!!

@timdmaxey
Copy link

Anyone know of a Facebook (fql) alternative? Point me in the right direction

@shavini
Copy link

shavini commented Aug 28, 2016

the FB share counts and the subscriber count is not working anymore. does anyone know an alternative for it

@Kaukov
Copy link

Kaukov commented Aug 30, 2016

@timdmaxey & @shavini. When you get the data via the Graph API, for example http://graph.facebook.com/?id=http://google.com it returns an object.
To get the share count, you need to return $data->share->share_count;.

@renielsalvador
Copy link

anyone here knows share count for the ff:

twitter
google
weibo
pinit
tublr
hatena

Thanks.

@sanomani
Copy link

Thanks OP for the effort. These are handful resource.
To reply some queries posed some some readers, twitter count is never complete nowadays. Twitter doesnt provide total share count, so even those third party share counters who claim to keep the record of tweets of their own also can only track partially (because they too need to scrape data using twitter incomplete api)

There is one social signal counter I found most complete is by shareyt.com called SocialCounter.
They show 30 different share counts and they are pretty accurate. Although they dont offer api support.
http://shareyt.com/SocialCounter.php
Here is the link if it helps.

@xdevmaycry
Copy link

xdevmaycry commented Oct 27, 2016

The one for pinterest seem to have changed.

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

Now:
http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url=http://example.com

You now have to add the specific callback 'receiveCount' for it to work.

@paokodo
Copy link

paokodo commented Dec 22, 2016

Very helpful, Thanks.

@paokodo
Copy link

paokodo commented Dec 23, 2016

for facebook. i use

javascript

`var token = 'APP ID|APP SECRET';
url = 'url of your';

  $.ajax({
  url: 'https://graph.facebook.com/v2.7/',
  dataType: 'jsonp',
  type: 'GET',
  data: {access_token: token, id: url},
  success: function(data){
    console.log(data);
    $('body').append(data.share.share_count);
  },
  error: function(data){
    console.log(data); // send the error notifications to console
  }
  });`

It's wok!!
credit: rudrastyh

@ahmadalfy
Copy link

@ssovit
Copy link

ssovit commented Sep 18, 2017

@paokodo ya but you are exposing your APP ID and SECRET in the process.

@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