Recipe Extractor (ingredients, steps, time, nutrition)
Pricing
Pay per usage
Recipe Extractor (ingredients, steps, time, nutrition)
Extract clean, normalized recipe data — name, ingredients, steps, prep/cook/total time, yield, calories, rating, author, cuisine — from public recipe pages via JSON-LD Recipe. HTML-only, fast, structured output.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Tommy G
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Recipe Extractor (Apify Actor)
Give it public recipe page URLs, get back clean, normalized recipe data — name,
ingredients, step-by-step instructions, prep/cook/total time, yield, calories, rating, author,
category, cuisine — from JSON-LD Recipe. HTML-only (no headless browser), fast, cheap. Ideal
for recipe apps, meal-planners, nutrition datasets, and food-content aggregation.
Input
{ "startUrls": [{ "url": "https://www.allrecipes.com/recipe/21014/good-old-fashioned-pancakes/" }], "maxConcurrency": 5, "maxPages": 100 }
maxPages capped at 200, maxConcurrency at 20.
Output — one STABLE record per URL (ok and error rows share the shape)
{"status": "ok","found": true,"complete": true,"page_type": "recipe","name": "Classic Pancakes","ingredients": ["2 cups flour", "2 eggs", "1.5 cups milk", "1 tbsp sugar"],"ingredient_count": 4,"steps": ["Mix the dry ingredients.", "Whisk in eggs and milk.", "Cook until golden."],"step_count": 3,"prep_time_min": 10,"cook_time_min": 15,"total_time_min": 25,"recipe_yield": "4 servings","calories": 320,"rating_value": 4.7,"rating_count": 1204,"author": "Chef Sam","image": "https://.../pancakes.jpg","category": "Breakfast","cuisine": "American","keywords": null,"requested_url": "...", "final_url": "...", "http_status": 200,"fields_found": ["name","ingredients","steps","total_time_min","recipe_yield","calories","rating_value","author","image"],"missing_reason": null,"extracted_at": "2026-05-29T..."}
ISO-8601 durations (PT1H30M) are converted to minutes; total time falls back to prep+cook.
found:false means no Recipe markup (e.g. a blog index or JS-rendered page). Failed fetches return
the same keys with status:"error" + error.
Run locally / test
npm installnpm test # unit tests on the pure extractor (node:test)
Publish to Apify (account-holder's step)
$npm install -g apify-cli && apify login && apify push
Keep free initially; monetize later via the adult account-holder once it shows repeat usage.
Notes / safety
- SSRF-guarded, robots-respecting, rate-limited, cost-capped (shared
src/lib/actor_runner.js). - Stores only derived recipe fields — no raw page bodies / PII.
- HTML-only: JS-rendered recipe sites return
found:falsewithmissing_reason. Core logic insrc/extract.js(pure, unit-tested).