I'm trying to gather all people who liked a certain post on a Facebook page.
This is what I use
https://graph.facebook.com/1421518438141373_1561986067427942/likes?limit=200000&access_token=My_Access_Token
However it returns an empty JSON table.
Also the number of the likes on the post is pretty huge, around 200K. Any idea how to avoid pagination and got all of the info at once?
I have a fb page and i have liked some of the other pages like laughing colors.. Now as if i go in my insight tab then it shows the top posts of those pages that i like. For example, look at the image below:
top post from a page that my page likes
I also want to read the data (top posts) from the page that my page likes. Can it be done using fb api? If yes, then how?
Get list of pages that your page likes = that is going to be GET <page_id>/likes in graph api. (try it here: https://developers.facebook.com/tools/explorer/)
Loop through the pages from step 1 and get their last post via <liked_page_id>/posts.
Overall you will need to play with the API but it should not be very hard.
I want to be able to count the total number of likes for a post or photo no matter how many times the post has been shared and reshared.
I want to know how popular a post is across the whole Facebook Universe.
Is this even possible?
This is not fully possible, for these reasons:
Facebook does not indicate via the API whether a post is a re-share
of another post (there is no "via" property on Post objects, in
other words). Nor is there a property that indicates where or how
many times a particular post has been re-shared.
Many posts on Facebook use privacy settings set by the user creating the post, and
this applies to re-shared stories as well. Your app has access to
whatever its users give it permission to read, but that does not
grant it access to the feeds of all users on Facebook.
At most, you could theoretically do this (although I am not sure if there are other limitations in place to prevent this):
Search all PUBLIC posts on Facebook, for text that matches the text in the post you want to track. (see the documentation under "Searching" here: http://developers.facebook.com/docs/reference/api/). Aggregate the Likes for all of these posts. Just understand that this is only the subset of posts that your app is capable of viewing.
Is there a way to get the "People Talking About This" statistic for a specific post on a Facebook Page ? The Insights API doesn't say it's possible. ( post_storytellers doesn't exist )
'People Talking About This' aggregates various interactions into a single metric including:
liking a Page
posting to a Page’s Wall
liking, commenting on or sharing a Page post (or other content on a page, like photos, videos or albums)
answering a Question posted
RSVPing to an event
mentioning a Page in a post
phototagging a Page
liking or sharing a check-in deal
or checking in at a Place.
As far as i'm aware there's no way to retrieve this value using the graph api without scraping the page directly.
You can however retrieve the total_count for a url which is an aggregation of shares, likes, comments via FQL, for example: https://graph.facebook.com/fql?q=SELECT%20total_count%20FROM%20link_stat%20WHERE%20url='https://www.stackoverflow.com'
more info: https://developers.facebook.com/docs/reference/fql/link_stat
I have integrated the Facebook "Like" button into a lot of pages in my site. I want to display the most "Liked" pages on my site in a list, but I can't figure out how to get that data from Facebook in one request. So far, I have been able to get the "Like" count for individual pages using the following FQL query:
SELECT share_count, like_count, comment_count, total_count
FROM link_stat
WHERE url="http://www.mysite.com/some-page"
However, getting the count for each page on my site one at a time is not really feasible. Aside from having a large number of pages, new pages are being created constantly (new user profiles, new blogs and blog articles, etc), which would make getting complete statistics for my site a complicated process and would involve calling Facebook's API thousands of times.
Is there a way to get a count of how many times each page on my domain has been "Liked" in one request? Or just the top 10 most "Liked" pages, or something similar?
Actually I would do it this way:
$arrayOfPages = array('url1', 'url2', 'url3');
$listOfPages = implode(',', $arrayOfPages);
SELECT share_count, like_count, comment_count, total_count, url
FROM link_stat
WHERE url IN ($listOfPages)
That would give you all the data with the URL as a unique identifier without having to break Facebook's policy against fake users. You can dynamically create the $arrayOfPages variable from a query on your site's database.
In continuation to Salil's answer, here are the some of the major APIs sharedcount.com are using (full list here: http://sharedcount.com/documentation.php)
You can use sharedcount's API to get a general summary, or write something yourself using the APIs:
Facebook: http://api.ak.facebook.com/restserver.php?v=1.0&method=links.getStats&urls=%%URL%%&format=json
Twitter: http://urls.api.twitter.com/1/urls/count.json?url=%%URL%%&callback=twttr.receiveCount
Google +1 +1 counts are retrieved via a JSON-RPC POST call that requires an API key (To get a google API key - https://developers.google.com/+/api/oauth#apikey):
POST URL:
https://clients6.google.com/rpc?key=%%API-KEY%%
POST Body:
[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"%%URL%%","source":"widget","userId":"#viewer","groupId":"#self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]
It will be difficult to get FB likes for all your pages in one query, but you can get individual share count for every page of your site. Apart from the share count you can also get the breakup of numbers for individual social network for which your site page is shared. Insert you domain name at http://sharedcount.com/?url=http%3A%2F%2Fwww.parasitech.net%2F with appropriate suggestions provided to you. You can get numbers for Facebook, Twitter, Google+, Diggs, Linkedin, Google Buzz, Delicious and StumbleUpon.
Apparently there's no 'LIKE' in FQL. Which was my first suggestion..
Though you can use the "IN" operator, like so:
SELECT share_count, like_count, comment_count, total_count
FROM link_stat
WHERE "http://www.mysite.com/" IN url
ORDER BY like_count
LIMIT 10;
1) create a fake user on fb which will likes only pages from your domain or some other way to save your urls in fb with possibility to get them by FQL later
2) query:
SELECT share_count, like_count, comment_count, total_count
FROM link_stat WHERE url in (SELECT object_id FROM like WHERE user_id="fake_user_id")
3) don`t forget about decrement on 1 each like count ;), sort and show
Maybe you can just query the number of likes for each page each time the page is viewed. This won't be precise, but keeping in mind that the most popular pages will be viewed more often it might be good enough.
Additionally, you can use a batch process to query the number of likes of all the page or at least the top N last created ones every couple of hours. Most of the time you won't get the correct result, but in most cases your users don't need the correct result but a good enough approximation.
If you just need the count from every page, Super Social Media Tracker could provide that.
http://apps.microsoft.com/windows/en-US/app/super-social-media-tracker/a56c8971-42e2-4eb4-9b05-7e52233b4e1e
But it's slow for massive pages.
After some looking around, we may be better off using FQL with graph API:
http://graph.facebook.com/fql?q=select%20comment_count%2C%20share_count%2C%20like_count%20from%20link_stat%20where%20url%20%3D%20%22http%3A%2F%2Fmashable.com%2F2013%2F01%2F30%2Ffacebook-twitter-blackberry-10%2F%22
Results are
{
"data": [
{
"comment_count": 3,
"share_count": 91,
"like_count": 5
}
]
}