# Extract recipe JSON-LD from public URLs

**Use case:** 

Normalize ingredients, instructions, nutrition, ratings, and metadata from a batch of public recipe pages into one consistent dataset.

## Input

```json
{
  "startUrls": [
    {
      "url": "https://www.bbcgoodfood.com/recipes/easy-pancakes"
    },
    {
      "url": "https://www.bbcgoodfood.com/recipes/chilli-con-carne-recipe"
    },
    {
      "url": "https://www.bbcgoodfood.com/recipes/best-ever-chocolate-brownies-recipe"
    }
  ],
  "maxItems": 10,
  "maxConcurrency": 2,
  "requestTimeoutSecs": 30,
  "includeRawJsonLd": false,
  "normalizeText": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

## Output

```json
{
  "name": {
    "label": "Recipe",
    "format": "string"
  },
  "canonicalUrl": {
    "label": "Canonical URL",
    "format": "string"
  },
  "author": {
    "label": "Author",
    "format": "array"
  },
  "prepTime": {
    "label": "Prep",
    "format": "string"
  },
  "cookTime": {
    "label": "Cook",
    "format": "string"
  },
  "totalTime": {
    "label": "Total",
    "format": "string"
  },
  "recipeYield": {
    "label": "Yield",
    "format": "array"
  },
  "recipeCategory": {
    "label": "Category",
    "format": "array"
  },
  "recipeCuisine": {
    "label": "Cuisine",
    "format": "array"
  },
  "ingredients": {
    "label": "Ingredients",
    "format": "array"
  },
  "aggregateRating": {
    "label": "Rating",
    "format": "object"
  },
  "sourceUrl": {
    "label": "Source",
    "format": "string"
  },
  "scrapedAt": {
    "label": "Scraped",
    "format": "string"
  }
}
```

## About this Actor

This example demonstrates how to use [Universal Recipe Data Scraper](https://apify.com/automation-lab/universal-recipe-data-scraper) with a specific input configuration. Visit the [Actor detail page](https://apify.com/automation-lab/universal-recipe-data-scraper) to learn more, explore other use cases, and run it yourself.