Chefkoch.de Recipe Scraper
Pricing
Pay per usage
Chefkoch.de Recipe Scraper
Extract delicious recipes from Chefkoch.de, Germany's largest cooking community. Instantly scrape ingredients, preparation steps, images, and user ratings. Perfect for food apps, culinary datasets, and nutritional analysis. Get structured recipe data in JSON format today.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Shahid Irfan
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Chefkoch Recipe Scraper
Extract comprehensive recipe data from Chefkoch.de using their official v2 API. Collect detailed ingredients, instructions, cooking times, and user ratings at blazing speed. Perfect for food research, recipe apps, and culinary data analysis.
NEW: API-Based — 10x faster than HTML scraping with 99%+ reliability!
Features
- API-Based Extraction — Uses Chefkoch's official v2 API for maximum speed and reliability
- 10x Faster — Pure JSON responses without HTML parsing overhead (10-15 seconds for 10 recipes vs 40+ seconds with HTML parsing)
- Production Ready — Fully stealthy with realistic headers, sessions, and rate limiting
- Full Details — Collect ingredients, step-by-step instructions, and metadata
- Smart Pagination — Efficiently fetches up to 50 recipes per API request
- Zero Blocks — Proper API headers and user-agent rotation prevent detection
- High Success Rate — 99%+ reliability with proper proxy configuration
- Optimized Concurrency — Safely handles 5-10 parallel API calls
- Clean Data — Structured JSON output from official API
Use Cases
Culinary Research
Analyze popular recipes and dietary trends. Understand ingredient combinations and common cooking techniques across thousands of listings.
Food & Recipe Apps
Build and maintain a high-quality database of German recipes for your application. Automate the updates of your culinary content.
Market Intelligence
Track the popularity of specific food brands or dietary claims. Identify gaps in the market based on user engagement and ratings.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
keyword | String | No | — | Recipe keyword (e.g., 'Pfannkuchen', 'Pasta') |
startUrls | Array | No | — | Chefkoch URLs in format [{"url": "..."}] |
results_wanted | Integer | No | 100 | Maximum recipes to collect (0 = unlimited) |
max_pages | Integer | No | 20 | Max search pages (each page = 50 recipes) |
proxyConfiguration | Object | No | — | Proxy settings (residential recommended) |
Output Data
Each item in the dataset contains:
| Field | Type | Description |
|---|---|---|
name | String | Title of the recipe |
description | String | Brief summary of the recipe |
ingredients | Array | List of ingredients with quantities |
instructions | Array | Step-by-step preparation guide |
cookTime | String | Time required for cooking |
prepTime | String | Time required for preparation |
totalTime | String | Total time from start to finish |
servings | String | Number of servings provided |
image | String | Main photo of the recipe |
author | String | Name of the recipe creator |
rating | Number | Average user rating |
ratingCount | Number | Total number of user ratings |
reviewCount | Number | Total number of comments/reviews |
url | String | Direct link to the source recipe |
scrapedAt | String | Timestamp of collection |
Usage Examples
Simple Keyword Search
Extract 50 pancake recipes:
{"keyword": "pfannkuchen","results_wanted": 50}
Scraping Specific URLs
Target specific categories or search result pages:
{"startUrls": ["https://www.chefkoch.de/rs/s0/pasta/Rezepte.html"],"results_wanted": 100}
Sample Output
{"id": "1211981226999757","name": "Pfannkuchen","description": "ohne Zucker - schmeckt allen Kindern gut","author": "DagJan","rating": 4.72,"ratingCount": 210,"difficulty": 1,"servings": 2,"image": "https://img.chefkoch-cdn.de/rezepte/1211981226999757/bilder/1466558/crop-960x720/pfannkuchen.jpg","url": "https://www.chefkoch.de/rezepte/1211981226999757/Pfannkuchen.html","source": "chefkoch.de","scrapedAt": "2026-02-05T07:20:03.872Z","prepTime": "PT5M","cookTime": "PT1M","restTime": null,"totalTime": "PT6M","ingredients": ["1 Ei(er)","1 Prise(n) Salz","140 ml Milch","80 g Mehl","Butter"],"instructions": ["Das Ei über einer Rührschüssel aufschlagen. Salz und Milch dazugeben und mit einer Gabel verquirlen. Das Mehl esslöffelweise mit einem Schneebesen unterrühren, damit keine Klumpen entstehen.","In einer Pfanne ein Stück Butter oder Butterschmalz erhitzen. Nun den Teig in der Pfanne portionsweise ausbacken.","Den fertigen Pfannkuchen beliebig füllen und servieren.","Tipp: Wir mögen Zimt, hausgemachte Erdbeermarmelade, Vanillesoße oder Eis. Oder auch die deftige Variante mit Käse und Salami."],"datePublished": "2008-11-18T20:53:28+05:00","keywords": []}
Note: Times are in ISO 8601 duration format (e.g., PT5M = 5 minutes, PT1H30M = 1 hour 30 minutes)
Integrations
Connect your data with:
- Google Sheets — Export directly for analysis
- Airtable — Build your own recipe database
- Webhooks — Send data to your backend in real-time
- Make / Zapier — Create automated culinary workflows
Export Formats
- JSON — Ready for development and APIs
- CSV — Ideal for spreadsheet enthusiasts
- Excel — Professional business reporting
Frequently Asked Questions
Is there a limit to how many recipes I can scrape?
The only limit is the number of results available on the website. You can adjust the results_wanted parameter to fit your needs.
Can I extract nutritional information?
The scraper focuses on ingredients and instructions, which are the core components of every recipe listing.
Does it handle different types of Chefkoch pages?
Yes, it automatically detects search results, category pages, and direct recipe links.
Troubleshooting
No Results Scraped
Problem: Actor completes but returns 0 recipes.
Solutions:
- Check your keyword: Try a more common German recipe term (e.g., "kuchen", "suppe", "pasta")
- Verify URLs: Make sure startUrls contain valid Chefkoch.de URLs
- Test manually: Visit Chefkoch.de and search your keyword to verify results exist
API Errors (429/403)
Problem: API returns "429 Too Many Requests" or "403 Forbidden" errors.
Solutions:
- Enable proxies: Use Apify Proxy (Residential recommended for reliability)
- Reduce request volume: Lower results_wanted, max_pages, or concurrency
- Use Residential proxies: More reliable than datacenter for large-scale scraping
{"keyword": "pasta","results_wanted": 50,"max_pages": 2,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Performance Issues
Problem: Requests timeout or scraping takes longer than expected.
Solutions:
- Check network: Verify your internet connection or proxy status
- Enable proxies: May improve connection reliability and speed
- Reduce batch size: Lower results_wanted to smaller chunks
- Use Residential proxies: Often provide better throughput
Missing Fields in Output
Problem: Some recipes don't have ingredients or instructions.
Solutions:
- Check source data: Some recipes may have incomplete information on Chefkoch
- Filter results: Use data processing to remove incomplete recipes
Validation Errors
Problem: Actor fails immediately with input validation errors.
Solutions:
- Check minDelayMs/maxDelayMs: Ensure minDelayMs ≤ maxDelayMs
- Verify keyword length: Must be 1-200 characters
- Check numeric ranges:
- results_wanted: 0-10000
- max_pages: 0-1000
- URL format: Use
[{"url": "..."}]format for startUrls
{"startUrls": [{"url": "https://www.chefkoch.de/rs/s0/pasta/Rezepte.html"}]}
Advanced Examples
Large-Scale Recipe Collection
Collect 500 recipes with full details using residential proxies:
{"keyword": "hauptspeise","results_wanted": 500,"max_pages": 15,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Expected: ~8-10 minutes runtime, ~450-500 recipes
Specific Recipe Details
Extract complete information for specific recipes:
{"startUrls": [{"url": "https://www.chefkoch.de/rezepte/847831193524937/Omas-bester-Apfelkuchen.html"},{"url": "https://www.chefkoch.de/rezepte/1211981226999757/Pfannkuchen.html"},{"url": "https://www.chefkoch.de/rezepte/2948811458724877/Spaghetti-Carbonara.html"}],"results_wanted": 3}
Expected: ~10 seconds runtime, 3 detailed recipes
Best Practices
1. Optimize Your Search
Use specific keywords like "Vegane Lasagne" for more targeted results. Test small batches first to verify your search criteria.
2. Start Small
Always test with results_wanted: 5-10 to verify your configuration before scaling up.
3. Use Appropriate Proxies
- No proxies: Good for testing (<10 recipes)
- Datacenter proxies: Good for moderate scraping (10-100 recipes)
- Residential proxies: Required for large-scale production (100+ recipes) for maximum reliability and speed.
4. Balance Speed vs Reliability
- Fast scraping: High concurrency (8-10), datacenter proxies, may hit rate limits
- Reliable scraping: Medium concurrency (5), residential proxies, stable results
- Conservative scraping: Low concurrency (2-3), longer delays, minimal risk
5. Handle All Data
Use data processing or post-scraping filtering to handle incomplete recipes:
// Example: Filter recipes with complete dataconst completeRecipes = data.filter(recipe =>recipe.ingredients?.length > 0 &&recipe.instructions?.length > 0);
6. Monitor Your Runs
Check Actor logs regularly for:
- Warning messages about rate limiting
- Suggestions for configuration improvements
- Error patterns that need attention
7. Respect Rate Limits
The Actor includes built-in rate limiting, but you should:
- Avoid running multiple parallel Actor instances
- Use reasonable
maxRequestsPerMinutevalues (60-120) - Enable delays between requests
Development
Local Testing
$apify run
Deployment
$apify push
Project Structure
src/main.js: Actor entry point.actor/: Configuration files (input_schema.json, actor.json)storage/: Local storage for datasets and key-value stores
Changelog
Version 1.0.0 (Current)
- Migrated to Chefkoch v2 API for 10x faster performance
- Enhanced validation, error handling, and logging
- Added advanced configuration options
Previous Versions
- 0.x: HTML-based scraping (deprecated)
Support
For technical assistance or custom feature requests, please reach out via the Apify Console.
Legal Notice
This tool is intended for research and personal use. Please respect Chefkoch's terms of service and use data responsibly.