# Serious Eats API

> Serious Eats returns recipe search results and complete recipe details as a workflow and API.

Serious Eats searches recipes and cooking guides for a dish or technique, using a required search query. Get recipe returns ingredients, directions, timing, and available ratings and nutrition from a recipe name or page link.

- Page: https://fous.com/workflows/serious-eats
- Handle: `@serious-eats`
- Category: [Food](https://fous.com/workflows/category/food)
- Source website: https://seriouseats.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with Serious Eats.

## Methods

### Get recipe

Operation `get_recipe`, version 1. 1 credit per call.

Get a complete Serious Eats recipe by name or page link, including ingredients, directions, timing and available ratings and nutrition. Some recipes do not show active time, Why It Works points, ratings, or nutrition.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `recipe` | string | yes | `"https://www.seriouseats.com/detroit-style-pizza-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. |

**Input schema**

```json
{
  "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.",
      "examples": [
        "https://www.seriouseats.com/detroit-style-pizza-recipe",
        "Kenji's Foolproof Pan Pizza"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "recipe": "https://www.seriouseats.com/detroit-style-pizza-recipe"
    },
    {
      "recipe": "Kenji's Foolproof Pan Pizza"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `title` | string | `"Detroit-Style Pan Pizza"` |  |
| `author` | string or null | `"J. Kenji López-Alt"` |  |
| `servings` | string or null | `"4 servings"` |  |
| `cook_time` | string or null | `"1 hr"` |  |
| `prep_time` | string or null | `"40 mins"` |  |
| `directions` | array |  |  |
| `directions[].step` | integer | `1` |  |
| `directions[].instruction` | string | `"To Make the Dough in a Food Processor: Combine flour, yeast, and salt in the bowl of a food processor and pulse to comb` |  |
| `photo_link` | string or null | `"https://www.seriouseats.com/thmb/c9291mRIx6n1mtaxIRuypUe4mhs=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()` |  |
| `total_time` | string or null | `"4 hrs 10 mins"` |  |
| `active_time` | string or null |  |  |
| `ingredients` | array |  |  |
| `recipe_link` | string | `"https://www.seriouseats.com/detroit-style-pizza-recipe"` |  |
| `star_rating` | number or null | `4.7` |  |
| `introduction` | string or null | `"What distinguishes this magnificent Michigan specialty from other pan and deep-dish pizzas?"` |  |
| `why_it_works` | array |  |  |
| `number_of_ratings` | integer or null | `60` |  |
| `nutrition_per_serving` | object or null |  |  |
| `nutrition_per_serving.fat_g` | number or null | `41` |  |
| `nutrition_per_serving.calories` | number or null | `795` |  |
| `nutrition_per_serving.protein_g` | number or null | `33` |  |
| `nutrition_per_serving.carbohydrates_g` | number or null | `77` |  |

**Example input**

```json
{
  "recipe": "https://www.seriouseats.com/detroit-style-pizza-recipe"
}
```

**Example output**

```json
{
  "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…"
    },
    {
      "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 …"
    }
  ],
  "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.…",
  "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"
  ],
  "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."
  ],
  "number_of_ratings": 60,
  "nutrition_per_serving": {
    "fat_g": 41,
    "calories": 795,
    "protein_g": 33,
    "carbohydrates_g": 77
  }
}
```

### Search recipes

Operation `search_recipes`, version 1. 1 credit per call.

Find Serious Eats recipes and cooking guides for a dish or technique, in site search order. Results can also include other related articles; times appear only when the site shows them.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `query` | string | yes | `"reverse sear steak"` | Dish or cooking technique to search for, for example pizza dough. |
| `max_results` | integer | no | `3` | Most results to return, for example 20. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Dish or cooking technique to search for, for example pizza dough.",
      "examples": [
        "reverse sear steak",
        "pizza dough",
        "qzxnotrealzz9102"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Most results to return, for example 20.",
      "x-fous-developer": true,
      "examples": [
        3,
        20,
        5
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "query": "reverse sear steak",
      "max_results": 3
    },
    {
      "query": "pizza dough",
      "max_results": 20
    },
    {
      "query": "qzxnotrealzz9102",
      "max_results": 5
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `results` | array |  | Matches in the same order as the search results. |
| `results[].title` | string | `"Reverse-Seared Steak"` | Title of the recipe or article. |
| `results[].author` | string or null | `"J. Kenji López-Alt"` | Author when shown. |
| `results[].summary` | string or null | `"The reverse sear is one of the easiest and arguably best methods of cooking a steak. Start it in a low oven, then quick` | Short description from the page. |
| `results[].page_link` | string | `"https://www.seriouseats.com/reverse-seared-steak-recipe"` | Link to the recipe or article. |
| `results[].photo_link` | string or null | `"https://www.seriouseats.com/thmb/7a65ohLsB77QayQtc7J9FYCKSDc=/282x188/filters:no_upscale():max_bytes(150000):strip_icc(` | Photo shown in the search result. |
| `results[].total_time` | string or null | `"30 mins"` | Total time shown in the search result. |
| `results[].total_time_minutes` | integer or null | `30` | Total time converted to minutes when available. |

**Example input**

```json
{
  "query": "reverse sear steak",
  "max_results": 3
}
```

**Example output**

```json
{
  "results": [
    {
      "title": "Reverse-Seared Steak",
      "author": "J. Kenji López-Alt",
      "summary": "The reverse sear is one of the easiest and arguably best methods of cooking a steak. Start it in a low oven, then quickly sear it in a hot pan or on the grill for a beautiful crust.",
      "page_link": "https://www.seriouseats.com/reverse-seared-steak-recipe",
      "photo_link": "https://www.seriouseats.com/thmb/7a65ohLsB77QayQtc7J9FYCKSDc=/282x188/filters:no_upscale():max_bytes(150000):strip_icc():format(webp)/__opt__aboutcom__coeus__resources__content_migration__serious_eats…",
      "total_time": "30 mins",
      "total_time_minutes": 30
    },
    {
      "title": "10 Steak Recipes for a Restaurant-Quality Dinner That's a Fraction of the Price",
      "author": "Yasmine Maggio and The Serious Eats Team",
      "summary": "You want meat? We've got 10 steak recipes that'll make your mouth water—and save you money by making them at home.",
      "page_link": "https://www.seriouseats.com/steak-recipes-8779593",
      "photo_link": "https://www.seriouseats.com/thmb/kla8honJJmhSGc7mG0hsTCYjn1c=/282x188/filters:no_upscale():max_bytes(150000):strip_icc():format(webp)/SEA-grilled-mojo-marinated-skirt-steak-recipe-hero-02-dfd9973f5a1d…",
      "total_time": null,
      "total_time_minutes": null
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@serious-eats",
  "visibility": "public",
  "operation": "get_recipe",
  "version": 1,
  "input": {
    "recipe": "https://www.seriouseats.com/detroit-style-pizza-recipe"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@serious-eats\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_recipe\",\n  \"version\": 1,\n  \"input\": {\n    \"recipe\": \"https://www.seriouseats.com/detroit-style-pizza-recipe\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@serious-eats",
  "visibility": "public",
  "operation": "get_recipe",
  "version": 1,
  "input": {
    "recipe": "https://www.seriouseats.com/detroit-style-pizza-recipe"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@serious-eats","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Find recipes and cooking guides for a dish or technique.
- Retrieve ingredients and directions for a recipe.
- Compare recipe timing, ratings, and nutrition when available.

## FAQ

### Is Fous affiliated with Serious Eats?

No. Fous is not affiliated with Serious Eats. This workflow reads the public seriouseats.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a Serious Eats account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from seriouseats.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What recipes and cooking guides cover a dish or technique?

Search recipes returns matching recipes and related articles in site search order, using a dish or technique as the query.

### What ingredients and directions does a recipe need?

Get recipe returns a recipe’s ingredients and directions when you provide its name or page link.

### How long does a recipe take?

Get recipe returns prep time, cook time, and total time when available.

## Related

- [Allrecipes API](https://fous.com/workflows/allrecipes.md): Allrecipes offers recipes and cooking ideas, with searchable results and full recipe details, including ingredients, directions, cooking times, ratings and nutrition.
- [Food Network API](https://fous.com/workflows/food-network.md): Food Network offers recipes, cooking shows, and food inspiration, with searchable recipes and ingredient, direction, rating, and cooking-time details when available.
- [BBC Good Food API](https://fous.com/workflows/bbc-good-food.md): BBC Good Food returns searchable web recipes, excluding app-only recipes, and full recipe ingredients, steps, and per-serving nutrition when available.
- [Uber Eats API](https://fous.com/workflows/uber-eats.md): Uber Eats shows restaurants and delivery options, with menus, prices, ratings, and delivery details; fees may reflect guest promotions and rating counts may be rounded.
- [DoorDash API](https://fous.com/workflows/doordash.md): DoorDash lists nearby restaurants and menus, prices, ratings, delivery fees, and estimated times; offers, availability, fees, and times can change.
- [Open Food Facts API](https://fous.com/workflows/open-food-facts.md): Open Food Facts provides public packaged-food information, including ingredients, allergens, nutrition, and product classifications; coverage varies, and search results favor popular products.
- [Michelin Guide API](https://fous.com/workflows/michelin-guide.md): Restaurant selections, distinctions and reviews from the Michelin Guide.
- [Starbucks API](https://fous.com/workflows/starbucks.md): Starbucks provides menu drinks and food with nutrition, ingredients, allergens, and photos, plus nearby cafés ranked by distance with current open status, local hours, and amenities.
- [All Food workflows](https://fous.com/workflows/category/food)
