Edamam website screenshot

Edamam

Edamam is a food and nutrition data platform powering recipe search, NLP-based nutrition analysis, food database lookup (keyword / brand / UPC / AI Vision), and personalized meal planning. The flagship Recipe Search API v2 covers a 2M+ recipe index with 30+ filters across diet, health, cuisine, meal, dish, nutrients, time, glycemic index, and CO2 emissions class.

4 APIs 10 Features
Food And DrinkRecipesNutritionDietAllergensMeal PlanningSustainabilityCarbon FootprintPublic APIs

APIs

Edamam Recipe Search API

Search and look up recipes from a 2M+ recipe index with 30+ filters (q, diet, health, cuisineType, mealType, dishType, calories, time, excluded, nutrients, glycemicIndex, random...

Edamam Nutrition Analysis API

Natural-language nutrition analysis. Submit free-text ingredient lines or full recipes and receive computed energy, macronutrients, diet/health labels, and recipe classification...

Edamam Food Database API

Look up nutrition data for foods by keyword, brand, UPC/EAN barcode, AI Vision photo analysis, or autocomplete. Returns per-100g nutrient values, allergen / health labels, and c...

Edamam Meal Planner API

Generate personalized meal plans (up to 14 days) with daily structure of sections and slots, fit to nutritional ranges and diet/health constraints. Includes DRI calculation, rec...

Collections

Pricing Plans

Rate Limits

Edamam Recipes Rate Limits

0 limits

RATE LIMITS

FinOps

Features

2M+ Recipe Index

Search across 2 million recipes from third-party sources plus 20,000+ Edamam-owned recipes with cooking instructions.

30+ Filters

Filter by diet, health/allergen labels, cuisine, meal type, dish type, calorie range, total time, nutrients, glycemic index, and excluded ingredients.

28+ Nutrients

Per-recipe and per-food breakdowns including macros, vitamins (A, B-12, C, D, E, K), minerals (Ca, Fe, K, Mg, P, Zn), fiber, sodium, sugars.

Carbon Footprint (CO2e)

Recipes carry a CO2 emissions class (A+ through G) when beta=true is set.

AI Vision Food Recognition

Submit a public image URL or base64 data URI to the Food Database API and receive detected food + nutrition estimates.

NLP Recipe Analysis

Submit raw recipe text (title + ingredient lines) to the Nutrition Analysis API and receive structured nutrient and label output.

Active User Tracking

Use the Edamam-Account-User header to bind per-user budgets and caching rights (required on Enterprise and Meal Planner plans).

Shopping List Aggregation

Aggregate ingredient quantities across one or more recipes into a consolidated shopping list, with optional Instacart integration on Enterprise tiers.

HTTP Compression

gzip supported via Accept-Encoding header.

HATEOAS Pagination

_links.next on paged responses; _links.self on individual hits.

Use Cases

Recipe Discovery Apps

Build consumer recipe search and discovery apps with rich filtering.

Nutrition Tracking

Power food logging and nutrition tracking with NLP-based ingredient analysis.

Personalized Meal Planning

Generate diet- and health-aware meal plans for fitness, wellness, and clinical nutrition apps.

Grocery and Shopping

Aggregate ingredients into shopping lists with optional Instacart fulfillment.

Chatbots and Voice

Edamam Platform Assistant chatbot and MCP server expose food/recipe tools to conversational agents.

Sustainability Apps

Surface CO2e emissions class to promote lower-impact food choices.

Integrations

Instacart

Meal Planner Enterprise tiers integrate with Instacart for grocery fulfillment.

Edamam Platform Assistant

Built-in chatbot UI for recipe / nutrition Q&A.

Edamam Content Management

Recipe Management API integrates with the Recipe Search surface.

Model Context Protocol (MCP)

Official Edamam Food MCP server at https://mcp.edamam.com/mcp/food exposes get_food_nutrition and analyze_food_image tools to LLM agents (Claude Code, etc.).

Solutions

Recipe Search Enterprise Basic

$9/mo, 10,000 calls/mo, 10 calls/min, third-party web recipes, 10-day trial.

Recipe Search Enterprise Core

$99/mo, 500,000 calls/mo, 100 calls/min.

Recipe Search Enterprise Plus

$399/mo, 1,000,000 calls/mo, 300 calls/min, Edamam-owned recipes with cooking instructions, CO2e data.

Recipe Search Enterprise Unlimited

Custom — contact sales for unlimited usage and custom content.

Food Database Basic Vision

$14/mo, 100,000 calls + 500 Vision requests, includes MCP server access.

Food Database Core

$69/mo, 750,000 calls, pay-as-you-go Vision.

Food Database Plus

$299/mo, 5,000,000 calls, 10,000 Vision requests.

Meal Planner Developer

Free, 10 MAU, 20 meal-plan calls/day, 300 recipe calls/min, non-commercial.

Meal Planner Enterprise Core

$300/mo, 1,000 MAU, 30 meal-plan calls/day, 5,000 recipe calls/min, Instacart integration.

Semantic Vocabularies

Edamam Recipes Context

25 classes · 18 properties

JSON-LD

API Governance Rules

Edamam API Rules

15 rules · 8 errors 6 warnings 1 info

SPECTRAL

JSON Structure

Edamam Food Structure

11 properties

JSON STRUCTURE

Edamam Meal Plan Structure

2 properties

JSON STRUCTURE

Edamam Recipe Structure

29 properties

JSON STRUCTURE

Example Payloads

Resources

🔗
Website
Website
🌐
DeveloperPortal
DeveloperPortal
🔗
Documentation
Documentation
📝
Signup
Signup
🔗
Login
Login
💬
FAQ
FAQ
💬
Support
Support
📜
TermsOfService
TermsOfService
📜
PrivacyPolicy
PrivacyPolicy
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
SpectralRules
SpectralRules
🔗
Vocabulary
Vocabulary
🔗
JSONLD
JSONLD
👥
GitHubOrganization
GitHubOrganization
🔗
PublicAPIsListing
PublicAPIsListing

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Recipe Search and Shopping List API
  version: '2.9'
items:
- info:
    name: Recipe Search
    type: folder
  items:
  - info:
      name: Search for a Recipe
      type: http
    http:
      method: GET
      url: https://api.edamam.com/api/recipes/v2
      headers:
      - name: Accept-Language
        value: ''
      params:
      - name: type
        value: ''
        type: query
        description: Type of recipes to search for. For backward compatibility you can also specify `any` and it will be equivalent
          to specifying all enumerated values.
      - name: beta
        value: ''
        type: query
        description: Allow beta features in the request and response
      - name: q
        value: ''
        type: query
        description: Query text, for example "chicken".<br> __REQUIRED__ if no other parameter is specified. __NOT REQUIRED__
          if any other parameter (other than application credentials) is specified.
      - name: ingr
        value: ''
        type: query
        description: 'Filter by number of ingredients (MIN+, MIN-MAX, MAX), where MIN and MAX are integer numbers.

          Example: `ingr=5-8`

          '
      - name: diet
        value: ''
        type: query
        description: Diet label. You can select multiple labels by holding shift and left-clicking all the labels needed.
      - name: health
        value: ''
        type: query
        description: Health label. You can select multiple labels by holding shift and left-clicking all the labels needed.
      - name: cuisineType
        value: ''
        type: query
        description: The type of cuisine of the recipe
      - name: mealType
        value: ''
        type: query
        description: The type of meal a recipe belongs to
      - name: dishType
        value: ''
        type: query
        description: The dish type a recipe belongs to
      - name: calories
        value: ''
        type: query
        description: 'The format is calories=RANGE where RANGE is in one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers. The + symbol needs to be properly encoded. Example: `calories=100-300`

          will return all recipes with which have between 100 and 300 kcal per serving.

          '
      - name: time
        value: ''
        type: query
        description: 'Time range for the total cooking and prep time for a recipe. The format is time=RANGE where RANGE is
          one of

          MIN+, MIN-MAX or MAX, where MIN and MAX are non-negative integer numbers. The + symbol needs to be properly

          encoded. Example: `time=1%2B` will return all recipes with available total time greater then 1 minute.

          '
      - name: imageSize
        value: ''
        type: query
        description: Show only recipes, which have images with selected sizes
      - name: glycemicIndex
        value: ''
        type: query
        description: Filter by glycemic index. The format is FLOAT-RANGE
      - name: inflammatoryIndex
        value: ''
        type: query
        description: Filter by diet inflammatory index. The format is FLOAT-RANGE
      - name: excluded
        value: ''
        type: query
        description: 'Excluding recipes with certain ingredients. The format is `excluded=FOOD` where FOOD is replaced by
          the name

          of the specific food you don''t want to be present in the recipe results. More than one food can be excluded

          at the same time. Example: excluded=vinegar&excluded=pretzel will exclude any recipes which contain vinegar

          or pretzels in their ingredient list.

          '
      - name: random
        value: ''
        type: query
        description: 'Select whether you want this query to respond with a random selection of 20 recipes based on the criteria

          filled. If there were only 20 or less possible results, this will return those results in random order.

          '
      - name: nutrients[CA]
        value: ''
        type: query
        description: "Calcium, Ca. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are \n\
          non-negative floating point numbers.<br>\nFor example: `nutrients[CA]=50+` means minimum 50mg calcium, where `50+`\
          \ has to be properly encoded as\n`50%2B` `nutrients[FAT]=30` means maximum 30g fat and `nutrients[FE]=5-10` means\
          \ iron between 5mg and 10mg\ninclusive.\n"
      - name: nutrients[CHOCDF]
        value: ''
        type: query
        description: 'Carbohydrate, by difference. Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN
          and

          MAX are non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[CHOCDF.net]
        value: ''
        type: query
        description: 'Carbohydrates (net). Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX
          are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[CHOLE]
        value: ''
        type: query
        description: 'Cholesterol. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[ENERC_KCAL]
        value: ''
        type: query
        description: 'Energy. Unit: kcal. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are non-negative

          floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[FAMS]
        value: ''
        type: query
        description: 'Fatty acids, total monounsaturated. Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where
          MIN

          and MAX are non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[FAPU]
        value: ''
        type: query
        description: 'Fatty acids, total polyunsaturated. Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where
          MIN

          and MAX are non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[FASAT]
        value: ''
        type: query
        description: 'Fatty acids, total saturated. Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN
          and

          MAX are non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[FAT]
        value: ''
        type: query
        description: 'Total lipid (fat). Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX
          are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[FATRN]
        value: ''
        type: query
        description: 'Fatty acids, total trans. Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and
          MAX

          are non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[FE]
        value: ''
        type: query
        description: 'Iron, Fe. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are non-negative

          floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[FIBTG]
        value: ''
        type: query
        description: 'Fiber, total dietary. Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX
          are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[FOLAC]
        value: ''
        type: query
        description: 'Folic acid. Unit: µg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[FOLDFE]
        value: ''
        type: query
        description: 'Folate, DFE. Unit: µg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[FOLFD]
        value: ''
        type: query
        description: 'Folate (food). Unit: µg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[K]
        value: ''
        type: query
        description: 'Potassium, K. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[MG]
        value: ''
        type: query
        description: 'Magnesium. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[NA]
        value: ''
        type: query
        description: 'Sodium, Na. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[NIA]
        value: ''
        type: query
        description: 'Niacin. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are non-negative

          floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[P]
        value: ''
        type: query
        description: 'Phosphorus, P. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[PROCNT]
        value: ''
        type: query
        description: 'Protein. Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are non-negative

          floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[RIBF]
        value: ''
        type: query
        description: 'Riboflavin. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[SUGAR]
        value: ''
        type: query
        description: 'Sugars, total. Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[SUGAR.added]
        value: ''
        type: query
        description: 'Sugars, added. Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[Sugar.alcohol]
        value: ''
        type: query
        description: 'Sugar alcohols. Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[THIA]
        value: ''
        type: query
        description: 'Thiamin. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are non-negative

          floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[TOCPHA]
        value: ''
        type: query
        description: 'Vitamin E (alpha-tocopherol). Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where
          MIN and

          MAX are non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[VITA_RAE]
        value: ''
        type: query
        description: 'Vitamin A, RAE. Unit: µg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[VITB12]
        value: ''
        type: query
        description: 'Vitamin B12. Unit: µg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[VITB6A]
        value: ''
        type: query
        description: 'Vitamin B6. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[VITC]
        value: ''
        type: query
        description: "Vitamin C, total ascorbic acid. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where\
          \ MIN \nand MAX are non-negative floating point numbers.<br>\nSee calcium for an example for how to fill in the\
          \ range.\n"
      - name: nutrients[VITD]
        value: ''
        type: query
        description: 'Vitamin D (D2 + D3). Unit: µg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX
          are

          non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[VITK1]
        value: ''
        type: query
        description: 'Vitamin K (phylloquinone). Unit: µg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN
          and MAX

          are non-negative floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[WATER]
        value: ''
        type: query
        description: 'Water. Unit: g. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are non-negative

          floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: nutrients[ZN]
        value: ''
        type: query
        description: 'Zinc, Zn. Unit: mg. Input the range which is one of MIN+, MIN-MAX or MAX, where MIN and MAX are non-negative

          floating point numbers.<br>

          See calcium for an example for how to fill in the range.

          '
      - name: field
        value: ''
        type: query
        description: Recipe fields to be included in the response.
      - name: co2EmissionsClass
        value: ''
        type: query
        description: Filter recipes by their CO2 footprint.
      - name: tag
        value: ''
        type: query
        description: Show only recipes containing the specified tags.
      - name: sysTag
        value: ''
        type: query
        description: '_(Beta)_ Show only recipes containing the specified system tags. This field is subject to account

          subscription restrictions.

          '
      auth:
        type: apikey
        key: app_id
        value: '{{app_id}}'
        placement: query
    docs: 'This endpoint returns a list of recipes matching the provided criteria. Get started by placing your search query

      in the `q` parameter, fill in your 3scale credentials, and press the "Try it out!" button at the bottom.

      Additionally, refine your search by using the optional parameters to specify what you are looking for.


      __Note:__

      - When mentioned, ''floating point values'' refers to values such as `50.0`, `50.`, `0.5`, and `.5`.

      - When speaking of ranges, the API accepts values such as `1.0+`, `1.'
  - info:
      name: Lookup Recipe(s) using their URI(s)
      type: http
    http:
      method: GET
      url: https://api.edamam.com/api/recipes/v2/by-uri
      headers:
      - name: Accept-Language
        value: ''
      params:
      - name: type
        value: ''
        type: query
        description: This parameter is no longer used. It's kept here for backwards compatibility.
      - name: beta
        value: ''
        type: query
        description: Allow beta features in the request and response
      - name: uri
        value: ''
        type: query
        description: Recipe URIs - up to 20
      - name: field
        value: ''
        type: query
        description: Recipe fields to be included in the response.
      auth:
        type: apikey
        key: app_id
        value: '{{app_id}}'
        placement: query
    docs: 'Search for recipes by their URI. Note, that the API response doesn''t directly indicate if there are missing

      recipes. Instead, you need to compare he URIs to see if any are missing.

      '
  - info:
      name: Lookup a Specific Recipe by ID
      type: http
    http:
      method: GET
      url: https://api.edamam.com/api/recipes/v2/:id
      headers:
      - name: Accept-Language
        value: ''
      params:
      - name: id
        value: ''
        type: path
        description: The recipe ID
      - name: type
        value: ''
        type: query
        description: This parameter is no longer used. It's kept here for backwards compatibility.
      - name: beta
        value: ''
        type: query
        description: Allow beta features in response.
      - name: field
        value: ''
        type: query
        description: Recipe fields to be included in the response.
      auth:
        type: apikey
        key: app_id
        value: '{{app_id}}'
        placement: query
    docs: 'Returns the nutritional information for given recipe. These requests are constructed automatically and can

      be found in `hits[]._links.self.href`.

      '
- info:
    name: Shopping List
    type: folder
  items:
  - info:
      name: Create Shopping List From Total Meal Quantities
      type: http
    http:
      method: POST
      url: https://api.edamam.com/api/shopping-list/v2
      params:
      - name: beta
        value: ''
        type: query
        description: Turn on support for beta features
      - name: shopping-cart
        value: ''
        type: query
        description: (BETA only) Generate a shopping cart page for the the foods aggregated in the shopping list
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: app_id
        value: '{{app_id}}'
        placement: query
    docs: Create Shopping List From Total Meal Quantities
bundled: true