有没有一种方法可以获取特定URL的Twitter分享数?

37

我查看了API文档,但未找到相关内容。获取该数字将有助于了解URL的受欢迎程度。如果您需要示例, Engadget在文章中使用Twitter共享按钮。 我正在尝试通过JavaScript实现此目标。 感谢您的任何帮助。


1
截至2015年11月,此页面上的所有答案均无效。 - Alex from Jitbit
这是因为官方的Twitter按钮已经移除了显示分享计数的选项。 - mcont
12个回答

78
您可以使用以下API端点:
http://cdn.api.twitter.com/1/urls/count.json?url=http://stackoverflow.com

请注意,http://urls.api.twitter.com/端点是不公开的。该端点将返回类似于以下JSON字符串的内容:
{"count":27438,"url":"http:\/\/stackoverflow.com\/"}

在客户端,如果您要请求获取自己域名的URL分享计数(即脚本正在运行的域名),则可以使用AJAX请求(例如jQuery.getJSON)。否则,请附加callback=?来发出JSONP请求:

jQuery.getJSON('https://cdn.api.twitter.com/1/urls/count.json?url=http://stackoverflow.com/&callback=?', function (data) {
    jQuery('#so-url-shares').text(data.count);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="so-url-shares">Calculating...</div>

更新:

截至2015年11月21日,获取Twitter分享计数的方法已不再适用。更多信息请阅读:https://blog.twitter.com/2015/hard-decisions-for-a-sustainable-platform


15
它支持 JSONP,只需添加 &callback=my_callback。 - Davorin
非常感谢!你节省了我的时间。 - Luan D
1
http://cdn.api.twitter.com/http://urls.api.twitter.com/都不是官方公开或文档化的,但它们是相同的,并且可以正常工作。现在有一个新的端点是官方小部件正在使用,我在下面发布了它,只是为了分享。 - mcont
9
截至2015年10月,Twitter将废弃这个端点https://twittercommunity.com/t/a-new-design-for-tweet-and-follow-buttons/52791。 - jimbo2087
1
此(Twitter私有)API端点将于2015年11月20日关闭。 - Ville Laurikari
哈哈哈,它之前一直在工作,但几个小时前突然停止了,我很纳闷为什么。现在我知道原因了;-) - Eduardo

56

从今天开始,这已经不再可能了,您可以在此处阅读更多信息:

https://twitter.com/twitterdev/status/667836799897591808

很遗憾,没有重新实现的计划。

点赞,以便用户不会浪费时间尝试。

更新: 不过,可以通过http://opensharecount.com 实现,他们提供了旧的私有JSON URL的替代方案,基于通过API进行的搜索(因此您不需要做所有这些工作)。

它基于REST API搜索端点。 这仍然是一个新系统,因此我们应该看看它的表现。将来我们可以期待更多类似的系统,因为有很大的需求。


1
目前还不确定他们是否不会再次实施此功能。在他们最新的博客文章中,他们正在寻求一些反馈,并提到可能会再次实现这一点。有一个人在 Twitter 论坛上直接问了他们: https://twittercommunity.com/t/equivalent-of-url-count-in-tweets-in-the-near-future/57454 - Anselme

5

2
这实际上是查询推文计数的正确URL,无论是https还是不是。http://urls.api.twitter.com/1/urls/count.json?url=不是公共API,不应使用。 - Tom Tom

4
是的,
https://share.yandex.ru/gpp.xml?url=http://www.web-technology-experts-notes.in

将"http://www.web-technology-experts-notes.in"替换为"您的完整网页URL"。

检查FacebookTwitterLinkedInPinterest的分享数量。

http://www.web-technology-experts-notes.in/2015/04/share-count-and-share-url-of-facebook-twitter-linkedin-and-pininterest.html

更新: 自2015年11月21日起,Twitter已删除“Tweet count endpoint”API。

了解更多:https://twitter.com/twitterdev/status/667836799897591808


1
是的,这个已经过时了。我很想得到一个更新的答案。 - lcm
请检查并建议:https://share.yandex.ru/gpp.xml?url=http://www.web-technology-experts-notes.in,目前无法使用。 - Rohit Bhalani

4

不。

如何访问计数API以查找我的URL有多少条推文?

在Tweet按钮的早期阶段,计数API是私有的。这意味着您需要使用我们的javascript或iframe Tweet按钮才能呈现计数。随着我们系统的扩展,我们将考虑使计数API公开供开发人员使用。

http://dev.twitter.com/pages/tweet_button_faq#custom-shortener-count


7
今天起count.json出现故障。 - Artem Russakovskii

2

被认可的回复是正确的。Twitter内部使用同一端点的其他版本。

例如,官方带计数的分享按钮使用此版本:

https://cdn.syndication.twitter.com/widgets/tweetbutton/count.json?url=[URL]

JSONP支持已经添加,可以通过添加&callback=func来使用。


谢谢更新。现在这真的应该得到更多的赞了! - David

2
我知道这是一个老问题,但是对于我来说,由于“跨域”问题,ajax调用中的URL http://cdn.api.twitter.com/1/urls/count.json?url=http://stackoverflow.com 无法正常工作。
我使用PHP CURL解决了这个问题,我创建了一个自定义路由,并通过ajax调用它。
  /* Other Code */
  $options = array(
    CURLOPT_RETURNTRANSFER => true,   // return web page
    CURLOPT_HEADER         => false,  // don't return headers
    CURLOPT_FOLLOWLOCATION => true,   // follow redirects
    CURLOPT_MAXREDIRS      => 10,     // stop after 10 redirects
    CURLOPT_ENCODING       => "",     // handle compressed
    CURLOPT_USERAGENT      => "test", // name of client
    CURLOPT_AUTOREFERER    => true,   // set referrer on redirect
    CURLOPT_CONNECTTIMEOUT => 120,    // time-out on connect
    CURLOPT_TIMEOUT        => 120,    // time-out on response
);
$url = $_POST["url"]; //whatever you need
if($url !== ""){
    $curl = curl_init("http://urls.api.twitter.com/1/urls/count.json?url=".$url);
    curl_setopt_array($curl, $options);
    $result = curl_exec($curl);
    curl_close($curl);
    echo json_encode(json_decode($result)); //whatever response you need
}

使用POST很重要,因为在GET请求中传递url会引起问题。

希望对您有所帮助。


是的。得找到另外一种方法。 - steo

1
是的,有的。只要您按照以下步骤操作:
  1. 向以下一个url之一发出JSONP请求:

    http://cdn.api.twitter.com/1/urls/count.json?url=[URL_IN_REQUEST]&callback=[YOUR_CALLBACK]

    http://urls.api.twitter.com/1/urls/count.json?url=[URL_IN_REQUEST]&callback=[YOUR_CALLBACK]

  2. 确保您发出的请求与[URL_IN_REQUEST]来自同一域。否则,它将无法工作。

    例如:

    example.com发出请求以获取example.com/page/1的计数。 应该可以工作

    another-example.com发出请求以获取example.com/page/1的计数。 将无法工作


1
这样您就可以使用jquery获取它。当页面加载时,div id="twitterCount"将自动填充。

     function getTwitterCount(url){
         var tweets;
         $.getJSON('http://urls.api.twitter.com/1/urls/count.json?url=' + url + '&callback=?',             function(data){
         tweets = data.count;
         $('#twitterCount').html(tweets);
     });
     }
     var urlBase='http://http://stackoverflow.com';
     getTwitterCount(urlBase); 

干杯!


urls.api.twitter.com 端点不允许公共使用。参考链接 - Dan Dascalescu
1
谢谢@DanDascalescu,抱歉我反馈晚了。当我写答案时这是可能的,但现在不再是了。请忽略我上面的答案,这里是Twitter的证明:https://twitter.com/twitterdev/status/667836799897591808 - Cassio Seffrin

1

1
Topsy有内部的Twitter Feed分析器,我认为他们实时加载Twitter数据并且有不同于Twitter的聚合策略。 - panchicore
但是他们对请求有一些非常小的容量限制,不是吗? - mireille raad
@Andriy Kuba:在Google Chrome中,http://otter.topsy.com/stats.json?url=http://www.e-conomic.dk没有显示任何结果。你知道为什么吗? - Mona Jalal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接