How to fetch facebook likes, share, comments count from an article

Actually you can have a more detailed report using FQL. Try following query:

  • SELECT url, normalized_url, share_count, like_count, comment_count, total_count, commentsbox_count, comments_fbid, click_count FROM link_stat WHERE url = 'www.apple.com'

Here the php code:

$fql  = "SELECT url, normalized_url, share_count, like_count, comment_count, ";
$fql .= "total_count, commentsbox_count, comments_fbid, click_count FROM ";
$fql .= "link_stat WHERE url = 'www.apple.com'";

$apifql="https://api.facebook.com/method/fql.query?format=json&query=".urlencode($fql);
$json=file_get_contents($apifql);
print_r( json_decode($json));

And this is the expected result:

Array
(
    [0] => stdClass Object
        (
            [url] => www.apple.com
            [normalized_url] => http://www.apple.com/
            [share_count] => 355693
            [like_count] => 500374
            [comment_count] => 290890
            [total_count] => 1146957
            [commentsbox_count] => 2
            [comments_fbid] => 388265801869
            [click_count] => 16558
        )

)

This solution worked for me:

<?php
$source_url = "http://www.flightpodcast.com/episode-6-john-bartels-qantas-qf30";
$url = "http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($source_url);
$xml = file_get_contents($url);
$xml = simplexml_load_string($xml);

echo "Share --- ".$shares = $xml->link_stat->share_count;
echo "<br/>";

echo "Like --- ".$likes = $xml->link_stat->like_count;
echo "<br/>";

echo "Comments ---".$comments = $xml->link_stat->comment_count; 
echo "<br/>";

echo "Total --- ".$total = $xml->link_stat->total_count;
echo "<br/>";

echo $max = max($shares,$likes,$comments);

result = mysql_query($query);

 while($row = mysql_fetch_array($result))
 {
    $photoid = $row['photoid'];
    $likes = $facebook->api("/$photoid/likes");


    echo "<br><br>".$row['photoid'];
    echo "<br />";

    foreach ($likes['data'] as $like)
    {
        $likeid = $like['id'];
        $name =  $like['name'];
        echo "<br>like : ".$like['id']."  , ".$like['name'];

        $query = sprintf("INSERT INTO photo_like VALUES (%s,%s,'%s')",$user_id,$likeid,$name);

        echo "<br>query string : ".$query."<br><br>";
        $result = mysql_query($query);
        if (!$result) {
                            $message  = 'Invalid query: ' . mysql_error() . "\n";
                            $message .= 'Whole query: ' . $query;
                            echo "<br>";
                        }