scrapy is a free, open source data extraction & web scraping project written in Python and released under BSD-3-Clause. It has 65,180 GitHub stars, 12,093 forks and 394 open issues, and was last pushed 9 hours ago. On this registry it ranks #4 of 149 tracked projects in Data Extraction & Web Scraping, and is listed as an open source replacement for 2 paid products, with 5 head-to-head comparisons available. It gained 645 stars over the last 30 tracked days.

What is scrapy?

What it is

Scrapy is a web scraping framework written in Python, distributed under the BSD-3-Clause license, and described in its own README as a tool to extract structured data from websites. It is cross-platform and requires Python 3.10 or newer. The project is maintained by Zyte, formerly known as Scrapinghub, together with a broader group of contributors, and it lives in the Python ecosystem as an installable library rather than a hosted service. Its repository is roughly seventeen years old, which places it among the longer-running projects in the web scraping space.

The concrete problem it solves is the gap between a one-off script that fetches a page and a repeatable system that pulls structured data out of many pages. Developers who need to crawl sites and turn the results into structured records would otherwise assemble their own fetching, parsing, and scheduling code. Scrapy packages that work as a framework, so the crawling and scraping logic is written against an existing structure instead of being rebuilt for each project. The topic list on the repository — crawler, crawling, framework, scraping, web-scraping, web-scraping-python — reflects that framing directly.

Key capabilities

  • Crawls websites and extracts structured data from the pages it retrieves, as stated in the project README.
  • Ships as a framework, so scraping projects are built on top of it rather than written from scratch.
  • Runs cross-platform, without a platform-specific dependency noted in the README.
  • Requires Python 3.10 or newer, and supports the Python versions listed on its PyPI badge.
  • Publishes releases to PyPI, where the current version is tracked by the project's version badge.
  • Publishes a conda-forge build, tracked by a separate conda version badge.
  • Maintains test and coverage badges, indicating continuous integration and coverage reporting on the master branch.

Who uses it and how

  • Python developers who need to extract structured data from websites and want a framework rather than a bespoke script.
  • Teams running crawls across platforms, since the README states the project is cross-platform.
  • Projects on Python 3.10 or newer, which is the minimum the README specifies.
  • Users installing from PyPI with pip, or from conda-forge where a package is published.
  • Contributors, including participants in Hacktoberfest, which appears in the repository topic list.

Getting started

Install with pip install scrapy, or use the conda-forge package. The README then points to the documentation at docs.scrapy.org for

project readme (upstream, from github) — read inline

|logo|

.. |logo| image:: https://raw.githubusercontent.com/scrapy/scrapy/master/docs/_static/logo.svg :target: https://scrapy.org :alt: Scrapy :width: 480px

|version| |python_version| |tests| |coverage| |conda| |deepwiki|

.. |version| image:: https://img.shields.io/pypi/v/Scrapy.svg :target: https://pypi.org/pypi/Scrapy :alt: PyPI Version

.. |python_version| image:: https://img.shields.io/pypi/pyversions/Scrapy.svg :target: https://pypi.org/pypi/Scrapy :alt: Supported Python Versions

.. |tests| image:: https://img.shields.io/github/check-runs/scrapy/scrapy/master?label=tests :target: https://github.com/scrapy/scrapy/actions?query=branch%3Amaster :alt: Tests

.. |coverage| image:: https://img.shields.io/codecov/c/github/scrapy/scrapy/master.svg :target: https://codecov.io/github/scrapy/scrapy?branch=master :alt: Coverage report

.. |conda| image:: https://anaconda.org/conda-forge/scrapy/badges/version.svg :target: https://anaconda.org/conda-forge/scrapy :alt: Conda Version

.. |deepwiki| image:: https://deepwiki.com/badge.svg :target: https://deepwiki.com/scrapy/scrapy :alt: Ask DeepWiki

Scrapy_ is a web scraping framework to extract structured data from websites. It is cross-platform, and requires Python 3.10+. It is maintained by Zyte_ (formerly Scrapinghub) and many other contributors_.

.. _many other contributors: https://github.com/scrapy/scrapy/graphs/contributors .. _Scrapy: https://scrapy.org/ .. _Zyte: https://www.zyte.com/

Install with:

.. code:: bash

pip install scrapy

And follow the documentation_ to learn how to use it.

.. _documentation: https://docs.scrapy.org/en/latest/

If you wish to contribute, see Contributing_.

.. _Contributing: https://docs.scrapy.org/en/master/contributing.html

Hosted alternatives to scrapy

scrapy is self-hostable. These are the managed services that do the same job — no infrastructure to run, metered by usage. Listed with the vendor's own pricing.

Frequently asked questions

Is scrapy free to use?

scrapy is open source under the BSD-3-Clause licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does scrapy do?

Scrapy, a fast high-level web crawling & scraping framework for Python.

What is scrapy written in?

scrapy is primarily written in Python. Its source is publicly available at https://github.com/scrapy/scrapy, and it has 65,180 GitHub stars.

What is a good open source alternative to Apify?

scrapy is one of the open source options listed as an alternative to Apify, Zyte. Compare licences, stars and activity side by side on the scrapy profile.