# Tasty Recipes Scraper (`shahidirfan/tasty-recipes-scraper`) Actor

Scrape recipes from Tasty with ingredients, instructions, prep times & nutrition facts. Build recipe databases for food apps, meal planners & content platforms. Structured JSON output, handles pagination, perfect for recipe aggregators & culinary AI datasets.

- **URL**: https://apify.com/shahidirfan/tasty-recipes-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Tasty Recipes Scraper

Extract complete recipe data from Tasty.co at scale. Collect ingredients, step-by-step instructions, cooking times, nutritional information, ratings, tags, and video URLs from any recipe. Paste a Tasty URL or type keywords to find recipes. Perfect for meal planning apps, food blogs, nutrition tracking, and recipe database creation.

### Features

- **Keyword & URL Search** - Search by keyword or paste any Tasty URL (tag page, search results, or single recipe)
- **Complete Recipe Data** - Every recipe includes full ingredients with quantities, step-by-step instructions, nutrition facts, ratings, and video URLs
- **API-Powered Extraction** - Fast and reliable collection using Tasty's official backend API
- **Automatic Pagination** - Collect hundreds of recipes with full details in a single run
- **Lightweight & Fast** - Minimal resource usage with quick execution times

### Use Cases

#### Recipe Database Creation

Build a comprehensive recipe database for meal planning apps, food blogs, or nutrition tracking tools. Each recipe includes structured ingredients with quantities and units, making it ready for database import.

#### Nutritional Analysis

Collect detailed nutrition information including calories, fat, carbs, protein, fiber, and sugar. Perfect for diet tracking apps, meal prep services, and health research.

#### Content Research

Food content creators can study recipe formats, cooking techniques, ingredient combinations, and presentation styles from thousands of recipes organized by category.

#### Meal Planning Services

Analyze cooking times, difficulty levels, and ingredient requirements to build customized meal plans. Filter by tags like quick meals, comfort food, healthy options, and dietary preferences.

***

### Input Parameters

| Parameter            | Type    | Required | Default          | Description                                     |
| -------------------- | ------- | -------- | ---------------- | ----------------------------------------------- |
| `url`                | String  | No       | -                | Tasty.co page URL (tag, search, or recipe page) |
| `keyword`            | String  | No       | `chicken dinner` | Search keyword used when no URL is provided     |
| `results_wanted`     | Integer | No       | `20`             | Maximum number of recipes to collect            |
| `max_pages`          | Integer | No       | `50`             | Safety cap on API pages (20 recipes per page)   |
| `proxyConfiguration` | Object  | No       | `{}`             | Apify proxy settings (optional)                 |

***

### Output Data

Each recipe in the output dataset contains:

| Field                | Type   | Description                                                           |
| -------------------- | ------ | --------------------------------------------------------------------- |
| `id`                 | Number | Unique recipe identifier                                              |
| `name`               | String | Recipe name                                                           |
| `slug`               | String | URL slug                                                              |
| `recipe_url`         | String | Full recipe URL on Tasty.co                                           |
| `description`        | String | Recipe description                                                    |
| `thumbnail_url`      | String | Main thumbnail image URL                                              |
| `thumbnail_alt_text` | String | Thumbnail alt text                                                    |
| `video_url`          | String | Video URL (if available)                                              |
| `total_time_minutes` | Number | Total cooking time in minutes                                         |
| `cook_time_minutes`  | Number | Active cook time in minutes                                           |
| `prep_time_minutes`  | Number | Prep time in minutes                                                  |
| `num_servings`       | Number | Number of servings                                                    |
| `servings_text`      | String | Serving size label                                                    |
| `tags`               | Array  | Recipe tags and categories                                            |
| `credits`            | Array  | Recipe credits and contributors                                       |
| `ingredients`        | Array  | Ingredients with name, quantity, unit, and section                    |
| `instructions`       | Array  | Step-by-step cooking instructions with display text                   |
| `nutrition`          | Object | Nutritional information (calories, fat, carbs, protein, fiber, sugar) |
| `ratings`            | Object | Rating score, positive and negative counts                            |
| `seo_title`          | String | SEO title                                                             |

***

### Usage Examples

#### Search by Keyword

Search for recipes by keyword:

```json
{
    "keyword": "chicken dinner",
    "results_wanted": 20
}
```

#### Scrape a Tag Page

Paste any Tasty tag URL:

```json
{
    "url": "https://tasty.co/tag/desserts",
    "results_wanted": 50
}
```

#### Search by Query

Use a search results URL directly:

```json
{
    "url": "https://tasty.co/search?q=vegetarian+pasta",
    "results_wanted": 30
}
```

#### Single Recipe

Get full details for a specific recipe:

```json
{
    "url": "https://tasty.co/recipe/creamy-tuscan-chicken"
}
```

***

### Sample Output

```json
{
    "id": 2955,
    "name": "Sweet & Sour Chicken",
    "recipe_url": "https://tasty.co/recipe/sweet-sour-chicken",
    "description": "Indulge in this mouthwatering Sweet & Sour Chicken...",
    "total_time_minutes": 35,
    "num_servings": 4,
    "nutrition": {
        "calories": 394,
        "fat": 9,
        "carbs": 34,
        "protein": 38
    },
    "ratings": {
        "score": 97,
        "count_total": 5050
    },
    "ingredients": [
        { "name": "chicken breast", "quantity": "1", "unit": "lb", "section": "Chicken" },
        { "name": "soy sauce", "quantity": "2", "unit": "tbsp", "section": "Sauce" }
    ],
    "instructions": [
        { "display_text": "Season chicken with salt and pepper..." },
        { "display_text": "Fry until golden and crispy..." }
    ],
    "tags": ["chicken", "asian", "dinner", "weeknight"],
    "credits": []
}
```

***

### Tips for Best Results

#### Use URLs for Precision

- Tag URLs give you all recipes in a category (e.g., `weeknight`, `desserts`, `healthy`)
- Search URLs let you narrow results with specific queries
- Single recipe URLs return complete details for one recipe

#### Set Appropriate Limits

- Start with 20 recipes for testing
- Increase to 100-500 for production runs
- The API returns up to several thousand results per query

#### Optimize Performance

- No proxy needed for most runs
- Enable proxy only if rate limiting occurs
- Full detail fetching adds one API call per recipe

***

### Integrations

Connect your recipe data with:

- **Google Sheets** - Export for meal planning analysis
- **Airtable** - Build searchable recipe databases
- **Notion** - Create organized recipe collections
- **Webhooks** - Send to custom endpoints

#### Export Formats

- **JSON** - For developers and APIs
- **CSV** - For spreadsheet analysis
- **Excel** - For business reporting
- **XML** - For system integrations

***

### Frequently Asked Questions

#### How many recipes can I collect?

You can collect all available recipes matching your search or tag query. Popular categories like weeknight have over 3000 recipes available.

#### Does it include ingredients and instructions?

Yes, every recipe includes full ingredients with quantities and units, plus step-by-step cooking instructions. Detailed nutrition facts and ratings are also included automatically.

#### Can I search by keyword or URL?

Both. You can type any keyword to search recipes, or paste a Tasty URL including tag pages, search results, and individual recipe pages. The actor automatically detects the input type.

#### Do I need a proxy?

No proxy is required. The API-based approach is lightweight and works without proxy under normal usage.

#### Is the data up to date?

Yes, the actor fetches live data from Tasty's API on each run, ensuring you always get the latest recipes and their complete details.

***

### Support

For issues or feature requests, contact support through the Apify Console.

#### Resources

- [Apify Documentation](https://docs.apify.com/)
- [API Reference](https://docs.apify.com/api/v2)
- [Scheduling Runs](https://docs.apify.com/schedules)

***

### Legal Notice

This actor is designed for legitimate data collection purposes. Users are responsible for ensuring compliance with website terms of service and applicable laws. Use data responsibly and respect rate limits.

# Actor input Schema

## `url` (type: `string`):

A Tasty.co page URL to scrape. Supports tag pages (e.g., https://tasty.co/tag/weeknight), search results (e.g., https://tasty.co/search?q=chicken), or recipe pages (https://tasty.co/recipe/recipe-name).

## `keyword` (type: `string`):

Search for recipes matching this keyword. Used when no URL is provided.

## `results_wanted` (type: `integer`):

The maximum number of recipes to collect.

## `max_pages` (type: `integer`):

Safety cap on API pages to fetch (20 recipes per page). Not used for single recipe URLs.

## `proxyConfiguration` (type: `object`):

Use Apify Proxy if needed.

## Actor input object example

```json
{
  "keyword": "chicken dinner",
  "results_wanted": 20,
  "max_pages": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keyword": "chicken dinner",
    "results_wanted": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/tasty-recipes-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keyword": "chicken dinner",
    "results_wanted": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/tasty-recipes-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keyword": "chicken dinner",
  "results_wanted": 20
}' |
apify call shahidirfan/tasty-recipes-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,shahidirfan/tasty-recipes-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/sXE0Neq1pab27tJzf/builds/iNqioNoOynPeB3vDc/openapi.json
