Recipe Extractor (ingredients, steps, time, nutrition) avatar

Recipe Extractor (ingredients, steps, time, nutrition)

Pricing

Pay per usage

Go to Apify Store
Recipe Extractor (ingredients, steps, time, nutrition)

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

Tommy G

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

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 install
npm 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:false with missing_reason. Core logic in src/extract.js (pure, unit-tested).