recipe-scrapers is a free, open source data extraction & web scraping project written in Python and released under MIT. It has 2,227 GitHub stars, 673 forks and 131 open issues, and was last pushed 8 days ago. On this registry it ranks #36 of 45 tracked projects in Data Extraction & Web Scraping, with 5 head-to-head comparisons available. It gained 2 stars over the last 3 tracked days.

What is recipe-scrapers?

What it is

recipe-scrapers is an open-source Python package for extracting recipe data from cooking websites. It lives in the Python data-extraction ecosystem and focuses on HTML parsing rather than network access. The library reads recipe pages through a consistent API, so developers can obtain ingredients, instructions, cooking times, and other metadata without writing a separate parser for every site.

The concrete problem it solves is the variation in how recipe websites publish structured information. Some pages expose standard HTML, while others include Schema markup in JSON-LD, Microdata, or RDFa, or provide OpenGraph metadata. recipe-scrapers normalizes these sources into Python methods and JSON output. The package does not circumvent or bypass bot protection measures, and users must supply or fetch the HTML themselves.

Key capabilities

  • It provides a consistent API for ingredients, instructions, cooking times, and other recipe metadata.
  • It parses standard HTML structure, Schema markup including JSON-LD, Microdata, and RDFa, and OpenGraph metadata.
  • It offers scrape_me for a recipe URL and scrape_html when the caller supplies the HTML content and source domain.
  • It exposes fields such as title and instructions, and it returns complete data with to_json.
  • It enables higher-quality image detection by default when multiple image options are present, with per-call or global settings to disable that behavior.
  • It lists supported recipe websites programmatically through SCRAPERS.keys().
  • It keeps scope to HTML parsing, leaving fetching, network management, and bot-protection handling to the user.

Who uses it and how

  • Developers building food, meal, or nutrition datasets use it to normalize recipe content into Python objects or JSON records.
  • Data pipelines fetch page HTML, pass it to scrape_html with the source domain, then call methods for required fields.
  • Site-aware workflows use SCRAPERS.keys() to identify supported domains and select the appropriate parser.
  • Applications needing recipe images rely on default image selection, or disable it to preserve the first site image.
  • Contributors use the package as the parsing layer for recipe-site support, guided by documentation and the contribution guide.

Getting started

Install the package with pip install recipe-scrapers, then call scrape_me with a recipe URL or use scrape_html with supplied HTML and source domain.

When to use it — and when not to

Use recipe-scrapers when you need a Python parsing layer for recipe pages and can manage HTTP requests, site changes, and bot-protection rules yourself. It is not a complete scraping service, because it does not fetch pages or circumvent protections, so pipelines must add network handling around the parsers. Its usefulness depends on the maintained supported-site list, and open issues indicate ongoing site-specific parsing work.

project readme (upstream, from github) — read inline

================= recipe-scrapers

.. image:: https://img.shields.io/github/stars/hhursev/recipe-scrapers?style=social :target: https://github.com/hhursev/recipe-scrapers/ :alt: Github .. image:: https://img.shields.io/pypi/v/recipe-scrapers.svg? :target: https://pypi.org/project/recipe-scrapers/ :alt: Version .. image:: https://img.shields.io/pypi/pyversions/recipe-scrapers :target: https://pypi.org/project/recipe-scrapers/ :alt: PyPI - Python Version .. image:: https://github.com/hhursev/recipe-scrapers/actions/workflows/unittests.yaml/badge.svg?branch=main :target: unittests :alt: GitHub Actions Unittests .. image:: https://coveralls.io/repos/hhursev/recipe-scraper/badge.svg?branch=main&service=github :target: https://coveralls.io/github/hhursev/recipe-scraper?branch=main :alt: Coveralls .. image:: https://img.shields.io/github/license/hhursev/recipe-scrapers? :target: https://github.com/hhursev/recipe-scrapers/blob/main/LICENSE :alt: License

Quick Links

  • Documentation _
  • Supported Sites _
  • Contributing Guide _
  • Issue Tracker _
  • Share Project Ideas _

A Python package for extracting recipe data from cooking websites. Parses recipe information from either standard HTML _ structure, Schema _ markup (including JSON-LD, Microdata, and RDFa formats) or OpenGraph _ metadata.

The package provides a simple and consistent API for retrieving data such as ingredients, instructions, cooking times, and more _.

Compatible with the Python versions listed above. This package does not circumvent or bypass any bot protection measures implemented by websites.

Installation

.. code:: shell

pip install recipe-scrapers

Basic Usage

.. code:: python

from recipe_scrapers import scrape_me

scraper = scrape_me("https://www.allrecipes.com/recipe/158968/spinach-and-feta-turkey-burgers/")
scraper.title()
scraper.instructions()
scraper.to_json()
# for a complete list of methods:
# help(scraper)

This package is focused exclusively on HTML parsing.

For advanced implementations, you'll need to implement your own solution for fetching recipe HTMLs and managing network requests. The library works best when you provide both the HTML content and its source domain.

You are encouraged to use our scrape_html method:

.. code:: python

from recipe_scrapers import scrape_html

Higher-quality image detection is enabled by default when multiple options are available on a page. If you prefer to keep the first image returned by the site, disable the behaviour on a per-call basis or via the global setting:

.. code:: python

scraper = scrape_html(html, url, best_image=False)
image_url = scraper.image()

from recipe_scrapers.settings import settings

settings.BEST_IMAGE_SELECTION = False

Supported Sites

We support a wide range of recipe websites out of the box. Check our supported sites list _ for the full list.

You can also get the full list programmatically with:

.. code:: python

from recipe_scrapers import SCRAPERS

SCRAPERS.keys()

Contributing

We welcome contributions! Please read our contribution guide _ to get started.

Special Thanks

To all the contributors _ who help make this project better!

.. image:: https://contrib.rocks/image?repo=hhursev/recipe-scrapers :target: https://github.com/hhursev/recipe-scrapers/graphs/contributors

Share Your Project

Have an idea for using recipe-scrapers? Check out our project ideas wall _ for inspiration or to share your own project!

Frequently asked questions

Is recipe-scrapers free to use?

recipe-scrapers is open source under the MIT 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 recipe-scrapers do?

Python package for scraping recipes data

What is recipe-scrapers written in?

recipe-scrapers is primarily written in Python. Its source is publicly available at https://github.com/hhursev/recipe-scrapers, and it has 2,227 GitHub stars.