npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

kitchenhand

v0.0.3

Published

A simple module for fetching and extracting structured recipe data from the web

Downloads

8

Readme

Kitchenhand

A simple scraper for extracting structured recipe data from the web

This is a simple utility module that attempts to retrieve and parse recipe data from websites that employ the structured data recipe schema defined at Schema.org. The scraper can extract data both from webpages that store recipe in embedded ld+json as well as recipes that flag DOM elements with itemprops. That means that Kitchenhand should be able to handle the majority of recipes that are stored using the common schema, provided that the implementation of that schema in the markup is reasonably sane.

Basic Usage

const kitchenhand = require('kitchenhand');

kitchenhand(<url>).then(recipe => {
    console.log(recipe);
});

Kitchenhand will return either a recipe object, or an error message if recipe data could not be retrieved from the specified URL:

{ 
    message: "Could not retrieve recipe data from <url>"
}

Options

The call to the kitchenhand() function also optionally accepts an options parameter. At present, however, only the parseIngredients option is handled.

parseIngredients

When passing the parseIngredients option, Kitchenhand will attempt to parse the list of ingredients into objects with three properties: amount, unit, and name.

kitchenhand(<url>, { parseIngredients }).then(recipe => console.log(recipe));

If all goes well, this will result in a recipeIngredient array that looks like the following:

Recipe {
    ...,
    recipeIngredient: [
        { amount: '1/2', unit: 'cup ', name: 'fresh parsley leaves' },
        { amount: '1/2', unit: 'cup ', name: 'fresh cilantro leaves' },
        ...
    ],
}

Currently, the parseIngredients function relies on a regexp-driven algorithm that is not exceptionally robust, especially in relation to the great variety of formats in which ingredients are listed in recipes today. Expect that your mileage may vary!