Clone or download
Latest commit b952150 Apr 16, 2018
Failed to load latest commit information.
docs 1.1.1 Apr 16, 2018
scrapelib 1.1.1 Apr 16, 2018
.coveragerc fix some coverage issues May 3, 2014
.gitignore add migration docs Mar 20, 2015
.travis.yml email Apr 16, 2018
LICENSE moving it over Jun 17, 2015 Jul 13, 2010
README.rst email Apr 16, 2018
setup.cfg wheel setup May 3, 2014 1.1.1 Apr 16, 2018
tox.ini test on 3.5 Dec 2, 2015


scrapelib Documentation Status

scrapelib is a library for making requests to less-than-reliable websites, it is implemented (as of 0.7) as a wrapper around requests.

scrapelib originated as part of the Open States project to scrape the websites of all 50 state legislatures and as a result was therefore designed with features desirable when dealing with sites that have intermittent errors or require rate-limiting.

Advantages of using scrapelib over alternatives like httplib2 simply using requests as-is:

  • All of the power of the suberb requests library.
  • HTTP, HTTPS, and FTP requests via an identical API
  • support for simple caching with pluggable cache backends
  • request throttling
  • configurable retries for non-permanent site failures

Written by James Turk <>, thanks to Michael Stephens for initial urllib2/httplib2 version

See for contributors.


  • python 2.7, >=3.3
  • requests >= 2.0 (earlier versions may work but aren't tested)

Example Usage


import scrapelib
s = scrapelib.Scraper(requests_per_minute=10)

# Grab Google front page

# Will be throttled to 10 HTTP requests per minute
while True: