{ "original": "2 1/2 cups chopped yellow onion", "quantity": 2.5, "quantity_max": null, "unit": "cup", "unit_type": "volume", "size": null, "ingredient": "yellow onion", "prep": "chopped", "notes": [], "metric": {"quantity": 591.5, "unit": "ml"} } 

And the tricky ones come out clean too:

Line quantity unit ingredient extra
1 (14.5 oz) can diced tomatoes 1 can tomatoes size: 14.5 oz, prep: diced
2-3 cloves garlic, minced 2 (max 3) clove garlic prep: minced
Salt to taste null null Salt notes: to taste

It handles fractions (1/2, ½, 1½), ranges (2-3, 2 to 3),
US and metric units, size words like large, and notes like optional
or for garnish.

Quick example (Python)

import requests resp = requests.post( "https://ingredient-parser5.p.rapidapi.com/parse-batch", json={"ingredients": [ "2 1/2 cups chopped yellow onion", "2-3 cloves garlic, minced", ]}, headers={ "X-RapidAPI-Key": "your-key", "X-RapidAPI-Host": "ingredient-parser5.p.rapidapi.com", }, ) for item in resp.json()["results"]: print(item["quantity"], item["unit"], item["ingredient"]) 

Use /parse for one line or /parse-batch for up to 100 at once.

What people use this for

  • Shopping lists that combine "1 cup onion" and "1/2 cup onion" into one line
  • Nutrition lookups, where you need the ingredient name separated from the amount
  • Pantry and meal-planning apps

Try it

There's a free plan, so you can throw your messiest ingredient lines at
it without paying anything.

👉 Ingredient Parser on RapidAPI

Need the ingredient lines in the first place? My
Recipe Extractor
pulls them from any recipe link.

Found a line it gets wrong? Drop it in the comments. Those are the most
useful bug reports I get.