Ever find a cool recipe online, only to realize halfway through cooking that you forgot half the ingredients? I did — so I built this small tool to fix that.
🧠 What It Does
This version of the tool takes a recipe webpage and performs the following:
- Fetches the page and extracts the ingredient section(s).
- Parses ingredient text (quantities, units, items) and normalizes them (e.g., “½ cup flour” → flour, 0.5, cup).
- Aggregates ingredients across recipes so common items are merged (avoid buying the same thing twice).
- Produces a structured shopping list in JSON/CSV format, ready to use or export.
- Is designed to be easily extended: add new site‐specific parsing logic, output formats, integration hooks.
💡 Why I Built It
Cooking a few recipes a week and managing ingredient lists became a manual drag. Rather than keep copying/pasting and forgetting something, I decided to build something simple and open-source:
- It gave me an excuse to play with Python and web scraping.
- I wanted a tool I could reuse and adapt across recipe sites.
- I’d love for others to fork it, add to it, and make it even better.
⚙️ How to Run It
Ready to try? Here’s how:
git clone https://github.com/fibanez6/ai-python-recipe-shoplist-crawler.git
cd simple-recipe-shoplist-crawler
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
You’ll get a tidy shopping list as output. You can tweak the code to support your favorite recipe sites.
🚀 What’s Next
Here’s where I’m heading:
- Add support for more recipe-site HTML structures (so the crawler works out-of-the-box for more domains).
- Build a lightweight web or desktop UI so non-developers can use it easily.
- Enhance the NLP: better fraction handling, scaling recipe amounts, smarter unit conversions.
- Integrate with grocery/delivery APIs so your list could be sent directly to your shopping app.
- Publish pre-built config modules for popular cooking sites to make setup even easier.
🤝 Want to Contribute?
If this sounds interesting:
- Fork the repo and play around.
- Open issues or send PRs for improvements.
- Share how you’re using it — I’d love to see new ideas!

