This package is available via the PIP repository. To install this package simply run this commmand:

$ pip install unshortenit


Using this library is very simple:

>>> from unshortenit import UnshortenIt
>>> unshortener = UnshortenIt()
>>> uri = unshortener.unshorten('https://href.li/?https://example.com')
>>> print(uri)

Advanced Usage

You can override the default timeout value and default headers globally for all modules via the UnshortenIt initializer:

>>> from unshortenit import UnshortenIt
>>> unshortener = UnshortenIt(default_timeout=30, default_headers=dict())

By default the library will not make any HTTP request if the url provided does not match any of the modules url patterns. To override this you may pass force=True to the unshorten method.

If you wish to force a specific module to be used for a link you may do so by using the module='module_name' parameter on the unshorten method. This is useful for ad-based shorteners that allow people to use custom domains or if you know a link is a meta refresh type.

In some cases you may come across shorteners that are nested one after another. By default the library will not check if the returned link is also another shortener link. If you wish to force it to always check the returned link as well you may pass unshorten_nested=True to the unshorten method.


Exceptions will not be handled by the module and will be passed up to the caller. You will need to wrap the unshorten call in your own try, except blocks.

This module includes 2 custom Exceptions unshortenit.exceptions.NotFound and unshortenit.exceptions.UnshortenFailed. The first will be triggered if the url returns a 404 status code. The later will occur if some sort of issue happened during the unshortening process. All other exceptions will be the default python requests library exceptions.