Textual Chef Textual Chef

Textual Chef · for developers

Recipes as data, in full.

The Textual Chef catalog as JSON: 4,500+ complete recipes, each with half, standard and double quantities, steps with the amounts written in, estimated nutrition per serving, allergens, diets and cuisine. The keyed API is in beta. A 100-recipe sample is live now: free, no key, no rate limit.

What exists today, and what does not

Live, free, no key

  • /api/v0/index.json: 100 full records, one per cuisine, as static JSON with CORS open.
  • /recipes.json: a lightweight index of every recipe, with links.
  • recipe.md after any recipe URL: the recipe as plain markdown.

In beta, not public yet

  • Full records for the whole catalog, behind a key.
  • Filtering by diet, allergen, cuisine, time and macros.
  • A price. It is not set; beta testers get a lifetime discount on it.

What a record holds

FieldWhat it is
id, name, descriptionStable slug id, display name, one-sentence description.
url, textThe HTML page and its plain markdown twin.
cuisine, region, meal, method, difficultyControlled vocabularies: over 100 cuisines, 11 meal types, 18 cooking methods, 3 difficulties. Region is filled on part of the catalog.
mainIngredientThe ingredient the dish is built around.
servings, timeServings at the standard batch; prep, cook and total minutes.
nutritionPerServingCalories, protein, carbs, fat, fiber (g) and sodium (mg), with an estimated flag.
diets, restrictions14 diet labels (Vegan, Keto, High Protein...) and 13 restriction labels (Gluten-Free, Nut-Free...).
allergenscontains: the 9 major allergens found in a required ingredient. avoidable: found only in an optional or substitutable ingredient.
ingredientsEach with an id, name, prep note, and quantities at half, standard and double.
stepsThe method three times, at half, standard and double, with the quantities already written into each step.

One record

Kuru Fasulye, trimmed to three restrictions, two ingredients and two steps. The full record, with all eleven ingredients and every step at three batch sizes, is at /api/v0/recipes/kuru-fasulye.json.

{
  "id": "kuru-fasulye",
  "name": "Kuru Fasulye",
  "description": "A classic Turkish stew made with tender white beans, beef, and aromatic red pepper paste in a rich tomato sauce.",
  "url": "https://textualchef.com/recipes/kuru-fasulye/",
  "text": "https://textualchef.com/recipes/kuru-fasulye/recipe.md",
  "cuisine": "Turkish",
  "region": null,
  "meal": "Dinner",
  "method": "Stovetop",
  "difficulty": "Medium",
  "mainIngredient": "White Beans",
  "servings": 4,
  "time": {
    "prepMinutes": 15,
    "cookMinutes": 60,
    "totalMinutes": 75
  },
  "nutritionPerServing": {
    "calories": 420,
    "proteinG": 28,
    "carbsG": 45,
    "fatG": 14,
    "fiberG": 12,
    "sodiumMg": 680,
    "estimated": true
  },
  "diets": [
    "High Fiber",
    "High Protein",
    "Mediterranean"
  ],
  "restrictions": [
    "Gluten-Free",
    "Nut-Free",
    "Dairy-Free"
  ],
  "allergens": {
    "contains": [],
    "avoidable": []
  },
  "ingredients": [
    {
      "id": "navy_beans",
      "name": "navy beans",
      "prep": "soaked",
      "quantities": {
        "half": "1 cup",
        "standard": "2 cups",
        "double": "4 cups"
      }
    },
    {
      "id": "beef",
      "name": "stew beef",
      "prep": "diced",
      "quantities": {
        "half": "1/2 lb",
        "standard": "1 lb",
        "double": "2 lbs"
      }
    }
  ],
  "steps": {
    "standard": [
      "Heat 2 tbsp olive oil in a large pot over medium-high heat.",
      "Add 1 lb diced stew beef and sear for 5 minutes until browned and reaching an internal temperature of at least 145°F."
    ]
  },
  "updated": "2026-08-12"
}

Fetch it from anywhere: curl https://textualchef.com/api/v0/recipes/kuru-fasulye.json

Why the quantities come three ways

Most recipe data gives you one ingredient list and leaves scaling to you. Scaling by multiplication is where recipes break: half of one egg, 0.33 cups, a pinch doubled. Every record here carries the amounts a cook would actually use at half, standard and double, and the method is written out at each size, so an app can show a halved recipe without doing arithmetic on text.

Where the recipes come from

The recipes are written with the help of language models and published only after automated schema and culinary checks pass. Every ingredient carries half, standard and double amounts, and the method refers to ingredients by id rather than retyping them, which is how the amounts get written into each step. Nutrition is estimated, not measured in a lab, and every record says so with "estimated": true. Treat it as a planning figure, not a label.

Join the beta

The keyed API opens to a short list first. Beta testers get a lifetime discount on the launch price, whatever it turns out to be, and a say in the record format while it is still v0. The price is not set yet, so there is nothing to pay and nothing to cancel.

We store your email and your two answers, and nothing about your browser or IP address. Reply to the confirmation and we delete your address.

Related