socoapi

JSON API for social media widget share counts.

Usage no npm install needed!

<script type="module">
  import socoapi from 'https://cdn.skypack.dev/socoapi';
</script>

README

socoapi

Want to create a custom look for social media buttons from Facebook, Pinterest and Google? Are you tired of the vendor supplied widget styles when you use their embed scripts?

socoapi is a JSON API for obtaining share counts of your website on social media sites like Facebook, Pinterest, and Google+. Install socoapi on your server so your website can use custom styles for share buttons hosted on your pages.

Installation

npm install socoapi

Usage

Start the socoapi server before you use the API.

socoapi provides one method: listen(port, cachettl [, callback]).

All parameters are required except for callback. Passing a value of false for cachettl will force socoapi to not use caching and each request will get the counts from the vendor's server. Cached values are removed after cachettl milleseconds and refreshed on the next request.

Supplying a cachettl is recommended to not overburden any vendor server needlessly.

// Standalone
var socoapi = require('socoapi');

socoapi.listen('3535', 3600000, function(port, ttl) {
  console.log('socoapi now listening on port ' + port + ' with cache ttl of ' + ttl + ' ms');
});

// Embedded
var app     = require('express')()
  , socoapi = require('socoapi')
;

// If using a reverse proxy
app.enable('trust proxy');

app.listen('3000', function() {
  socoapi.listen('3535', 3600000, function() {
    console.log('socoapi api now listening ...');
  });
});

API

Be sure to URI encode (percent encoding) any query component to a URL.

GET /counts?url=[the url to get share counts for]

Returns share counts for url from all supported vendors.

For example, GET /counts?url=http://www.foobar.baz/%3Fq1%3Dv1%26q2%3Dv2

{
  "facebook" : 1234,
  "google"   : 5317,
  "pinterest": 1,
  "url"      : "http//www.foobar.baz/?q1=v1&q2=v2"
}

GET /counts/:vendor?url=[the url to get share counts for]

Returns share counts for url from supplied :vendor.

For example, GET /counts/facebook?url=http://www.foobar.baz/

{
  "count" : 123
  "vendor" : "facebook"
}

License

MIT