Serious Eats API: Get recipe
Gets a complete Serious Eats recipe by name or page link, with ingredients, directions, timing, nutrition and ratings when the page shows them.
Unofficial. Not affiliated with or endorsed by Serious Eats.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Recipe, required
recipe Recipe name or Serious Eats recipe page link, for example Kenji's Foolproof Pan Pizza or https://www.seriouseats.com/foolproof-pan-pizza-recipe.
https://www.seriouseats.com/detroit-style-pizza-recipe
Input as JSON
{ "recipe": "https://www.seriouseats.com/detroit-style-pizza-recipe" }Output
{ "title": "Detroit-Style Pan Pizza", "author": "J. Kenji López-Alt", "servings": "4 servings", "cook_time": "1 hr", "prep_time": "40 mins", "directions": [ { "step": 1, "instruction": "To Make the Dough in a Stand Mixer: Combine flour, yeast, and salt in the bowl of a stand mixer fitted with a dough hook attachment. Stir to combine, then add water. Mix on low speed until dough comes together into a rough ball, then shut off mixer and let rest for 10 minutes. Continue mixing at med…" }, { "step": 2, "instruction": "To Make the Dough in a Food Processor: Combine flour, yeast, and salt in the bowl of a food processor and pulse to combine. Add water, then turn on processor and process until dough forms a ball that rides around the bowl of the processor, about 30 seconds. Continue processing for 30 seconds longer.…" }, { "step": 3, "instruction": "To Make the Dough by Hand: Combine flour, yeast, and salt in a large bowl. Whisk to combine, then add water and stir with a wooden spoon until a rough ball of dough has formed. Set aside for 10 minutes. Turn dough out onto a countertop and knead until a smooth, silky ball has formed, about 10 minute…" } ], "photo_link": "https://www.seriouseats.com/thmb/c9291mRIx6n1mtaxIRuypUe4mhs=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/__opt__aboutcom__coeus__resources__content_migration__serious_eats__seriouseats.com__2017__02__20170216-detroit-style-pizza-47-1500x1125-1-233d75e6021048b3bf3cf28bd59d310b.jpg" , "total_time": "4 hrs 10 mins", "active_time": null, "ingredients": [ "300 g bread flour (10.5 ounces; about 2 generous cups)", "5 g instant yeast (0.15 ounce; about 1 teaspoon), such as SAF Instant Yeast", "9 g salt (0.3 ounce; about 1 1/2 teaspoons table salt or 1 tablespoon Diamond Crystal kosher salt)" ], "recipe_link": "https://www.seriouseats.com/detroit-style-pizza-recipe" , "star_rating": 4.7, "introduction": "What distinguishes this magnificent Michigan specialty from other pan and deep-dish pizzas?", "why_it_works": [ "Using a high-hydration dough made with bread flour gives you pizza with a tender-yet-chewy, extra-crisp crust.", "Using a specialized Detroit-style pan aids in achieving superior crust development, thanks to its dark surfaces that promote even browning and heat conduction.", "Spreading cheese all the way to the edges of the pizza pan, before other toppings are added, lets it melt into the edges, forming a crisp, browned crust." ], "number_of_ratings": 62, "nutrition_per_serving": { "fat_g": 41, "calories": 795, "protein_g": 33, "carbohydrates_g": 77 }}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"seriouseats.com/get_recipe","input":{"recipe":"https://www.seriouseats.com/detroit-style-pizza-recipe"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "seriouseats.com/get_recipe" , "input": { "recipe": "https://www.seriouseats.com/detroit-style-pizza-recipe" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "seriouseats.com/get_recipe" , "input": { "recipe": "https://www.seriouseats.com/detroit-style-pizza-recipe" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run seriouseats.com/get_recipe# with {"recipe":"https://www.seriouseats.com/detroit-style-pizza-recipe"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "recipe" ], "properties": { "recipe": { "type": "string", "description": "Recipe name or Serious Eats recipe page link, for example Kenji's Foolproof Pan Pizza or https://www.seriouseats.com/foolproof-pan-pizza-recipe." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "title", "author", "introduction", "why_it_works", "prep_time", "cook_time", "active_time", "total_time", "servings", "ingredients", "directions", "nutrition_per_serving", "star_rating", "number_of_ratings", "photo_link", "recipe_link" ], "properties": { "title": { "type": "string" }, "author": { "type": [ "string", "null" ] }, "servings": { "type": [ "string", "null" ] }, "cook_time": { "type": [ "string", "null" ] }, "prep_time": { "type": [ "string", "null" ] }, "directions": { "type": "array", "items": { "type": "object", "required": [ "step", "instruction" ], "properties": { "step": { "type": "integer" }, "instruction": { "type": "string" } } } }, "photo_link": { "type": [ "string", "null" ] }, "total_time": { "type": [ "string", "null" ] }, "active_time": { "type": [ "string", "null" ] }, "ingredients": { "type": "array", "items": { "type": "string" } }, "recipe_link": { "type": "string" }, "star_rating": { "type": [ "number", "null" ] }, "introduction": { "type": [ "string", "null" ] }, "why_it_works": { "type": "array", "items": { "type": "string" } }, "number_of_ratings": { "type": [ "integer", "null" ] }, "nutrition_per_serving": { "type": [ "object", "null" ], "properties": { "fat_g": { "type": [ "number", "null" ] }, "calories": { "type": [ "number", "null" ] }, "protein_g": { "type": [ "number", "null" ] }, "carbohydrates_g": { "type": [ "number", "null" ] } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
seriouseats.com/get_recipe- Returns
- title, author, introduction, why it works, prep/cook/active/total time, servings, ingredients, directions, nutrition per serving, star rating, number of ratings, photo link, recipe link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method seriouseats.com/get_recipe with the inputs above.
Ask your agent
- Find the full recipe for Kenji's Foolproof Pan Pizza with ingredients, steps, and total cook time
- I need the complete instructions and star rating for the Serious Eats pan pizza recipe at https://www.seriouseats.com/foolproof-pan-pizza-recipe
- Can you pull up the Serious Eats recipe for classic beef bourguignon with prep time, servings, and nutrition per serving?
- Show me the ingredient list and directions for a slow-roasted tomato sauce recipe, including how many people it serves and how many ratings it has
- What's the active versus total time for the Serious Eats crispy smashed potatoes recipe, plus the author and recipe photo link?
See more
All Serious Eats methodsFinds Serious Eats recipes and cooking guides for a dish or technique, in site search order. Results can also include related articles; times appear only when the site shows them.
seriouseats.com/search_recipesGets a full Allrecipes recipe by its name or page link, including ingredients, directions, times, ratings and nutrition. Names select the most-rated close match.
allrecipes.com/get_recipeGets a full BBC Good Food recipe by dish name or recipe link, including ingredients, method and nutrition per serving. A name uses the closest matching recipe in site search; details absent from the page are null.
bbcgoodfood.com/get_recipeGets a Food Network recipe by dish name or recipe page link. It returns ingredients, directions, ratings and cooking times; page details that are missing come back as null.
foodnetwork.com/get_recipeFinds Allrecipes recipes for a dish or ingredients, in search order, with ratings, photos and total times; optionally only recipes ready within a time limit.
allrecipes.com/search_recipesFinds BBC Good Food recipes for a dish or ingredients in search order, with ratings, time, difficulty, photos and links. Excludes app-only recipes.
bbcgoodfood.com/search_recipesFinds Food Network recipes for a dish or ingredient, optionally filtered by chef, in site search order.
foodnetwork.com/search_recipesFind restaurants delivering to an address in Uber Eats guest browsing order. Fees can be conditional for new users; displayed rating counts may be rounded.
ubereats.com/search_restaurants