This simple library can take an short URL and discover its long counterpart while attempting to be nice and using the correct shortener's API.
JavaScript
Latest commit 678159a Feb 9, 2013 @Swizec License change.
Permalink
Failed to load latest commit information.
lib Update lib/unshortener.js Dec 17, 2012
test disabled cli.gs for now Sep 14, 2012
.gitignore expanding via bitly API works May 18, 2011
.gitmodules bundled node-bitly May 22, 2011
README.md License change. Feb 9, 2013
index.js
package.json
settings.js j.mp API support May 18, 2011

README.md

node-unshortener 0.1.0

A simple library that can unshorten any short url.

Install

 npm install unshortener

or

 git clone https://github.com/Swizec/node-unshortener.git
 cd node-unshortener
 npm link

Usage

     // expand an URL
     var unshortener = require('unshortener');

     // you can pass in a url object or string
     unshortener.expand('http://t.co/rWP6BP3',
                        function (err, url) {
                             // url is a url object
                             console.log(url);
                        });

If you have a handy bitly account you should also pass in an options object to enable the unshortener to use the bitly API directly:

     // expand an URL
     var unshortener = require('unshortener');

     // you can pass in a url object or string
     unshortener.expand('http://t.co/rWP6BP3',
                        {bitly: {username: '<YOUR BITLY USERNAME>',
                                 apikey: '<YOUR BITLY API KEY>'}},
                        function (err, url) {
                             // url is a url object
                             console.log(url);
                        });

When an error occurs the callback is passed the original url and an error flag.

How it works

node-unshortener aims to be able to unshorten any link possible, so it tries to behave as a browser and simply follows all the redirects. However, to be nice, when at all possible, it tries to use the url shortener's official API.

That said, please feel free to suggest any unshortening services I may have missed.

Services/domains directly supported so far:

  • bit.ly
  • j.mp
  • is.gd
  • goo.gl
  • ericri.es
  • jc.is
  • nyti.ms
  • linkd.in
  • win.gs
  • budurl.com
  • snipurl.com
  • snurl.com
  • cl.lk
  • snipr.com
  • sn.im
  • dai.ly
  • imgry.net
  • mln.im
  • theatln.tc
  • rww.to

License

MIT