# International Recipe Sources (Researched 2026-06-28, Updated 2026-06-28)

Focus: Asian cuisine, light/healthy main courses, internationally diverse. English-language sites with JSON-LD for scraping + translation to German.

## Tier 1 — Ready to Integrate (JSON-LD confirmed + sitemap available + no AI-bot blocks)

### BBC Good Food (bbcgoodfood.com) — ~5,045 recipes ⭐ TOP PICK
- **Sitemap:** Quarterly recipe sitemaps at `https://www.bbcgoodfood.com/sitemaps/YYYY-QN-recipe.xml` (indexed from `sitemap.xml`)
- **Counts per quarter:** Q2-2026: 149, Q1-2026: 156, Q4-2025: 210, Q3-2025: 179, Q2-2025: 182, Q1-2025: 214, Q4-2024: 292, Q3-2024: 179, Q2-2024: 160, Q1-2024: 223, Q4-2023: 290, Q3-2023: 262, Q2-2023: 132, Q1-2023: 203, Q4-2022: 296, Q3-2022: 231, Q2-2022: 272, Q1-2022: 207, Q4-2021: 250, Q3-2021: 206, Q2-2021: 154, Q1-2021: 191, Q4-2020: 278, Q3-2020: 129. **Total: ~5,045**
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Huge international coverage, including dedicated Asian/Indian/Thai sections
- **Robots.txt:** Permissive — declares sitemaps, no AI-bot blocks
- **Quality:** Professional editorial team, nutrition data, tested recipes
- **ID prefix:** `bgf_`

### RecipeTin Eats (recipetineats.com) — ~1,697 recipes
- **Sitemap:** `https://www.recipetineats.com/sitemap_index.xml` → 4 post sitemaps (495+500+499+203 URLs)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Pan-Asian (Japanese, Thai, Korean, Chinese), Australian, fusion. ~404 URLs match Asian keywords.
- **Robots.txt:** Blocks anthropic-ai and Claude-Web specifically, but does NOT block generic crawlers. Standard UA with polite delays works.
- **Quality:** High — detailed instructions, ratings, step photos. Many authentic Asian recipes.
- **ID prefix:** `rt_`

### Woks of Life (thewoksoflife.com) — ~1,555 recipes ⭐ BEST CHINESE
- **Sitemap:** `https://thewoksoflife.com/sitemap_index.xml` → post-sitemap.xml (997) + post-sitemap2.xml (558)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Chinese (Cantonese, Sichuan, regional), some Asian-American
- **Robots.txt:** Permissive (blocks wp-admin, cdn-cgi, wp-json only)
- **Quality:** Family-authored, authentic Chinese techniques, detailed step photos
- **ID prefix:** `wol_`

### SkinnyTaste (skinnytaste.com) — ~2,354 recipes ⭐ BEST LIGHT/HEALTHY
- **Sitemap:** `https://www.skinnytaste.com/sitemap_index.xml` → 3 post sitemaps (685+862+807 URLs)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Healthy, low-calorie, light mains, WW-friendly. Strong international coverage including Asian-inspired light dishes.
- **Robots.txt:** Blocks Google-Extended, GPTBot, ChatGPT-User, PiplBot. Does NOT block generic crawlers.
- **Quality:** Excellent — Gina Homolka provides nutrition data (calories, macros) for every recipe. Professionally tested.
- **ID prefix:** `st_`

### Rasa Malaysia (rasamalaysia.com) — ~1,390 recipes ⭐ BEST SE-ASIAN
- **Sitemap:** `https://rasamalaysia.com/sitemap_index.xml` → post-sitemap.xml (984) + post-sitemap2.xml (406)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Malaysian, Singaporean, Thai, Chinese, pan-Southeast-Asian
- **Robots.txt:** Permissive (blocks cdn-cgi, wp-admin only)
- **Quality:** High — authentic Southeast Asian recipes with detailed cultural context
- **ID prefix:** `rm_`

### Pinch of Yum (pinchofyum.com) — ~1,483 recipes
- **Sitemap:** `https://pinchofyum.com/sitemap_index.xml` → post-sitemap.xml (912) + post-sitemap2.xml (571)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Comfort food, international, some Asian-inspired
- **Robots.txt:** Permissive (blocks wp-admin, search only)
- **Quality:** Good — standardized format, nutrition data sometimes included
- **ID prefix:** `poy_`

### Budget Bytes (budgetbytes.com) — ~1,981 recipes
- **Sitemap:** `https://www.budgetbytes.com/post-sitemap.xml` (976) + post-sitemap2.xml (974) + post-sitemap3.xml (31)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** American comfort, international fusion, budget-friendly mains
- **Robots.txt:** Permissive
- **ID prefix:** `bb_`

### Omnivore's Cookbook (omnivorescookbook.com) — ~772 recipes
- **Sitemap:** `https://omnivorescookbook.com/sitemap_index.xml` → post-sitemap.xml (772 URLs)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Modern Chinese, some Asian fusion
- **Robots.txt:** Has Raptive ad-network block list but does NOT block generic crawlers
- **Quality:** Good — authentic Chinese with modern adaptations
- **ID prefix:** `oc_`

### Hot Thai Kitchen (hot-thai-kitchen.com) — ~464 recipes ⭐ MOST AUTHENTIC THAI
- **Sitemap:** `https://hot-thai-kitchen.com/sitemap_index.xml` → post-sitemap.xml (464 URLs)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Authentic Thai (not Westernized)
- **Robots.txt:** Permissive (Yoast standard)
- **Quality:** Exceptional — Pai (author) explains Thai cooking theory, ingredient substitution within Thai context
- **ID prefix:** `htk_`

### Spoon Fork Bacon (spoonforkbacon.com) — ~911 recipes
- **Sitemap:** `https://www.spoonforkbacon.com/sitemap_index.xml` → post-sitemap.xml (911 URLs)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Asian fusion, modern international
- **Robots.txt:** Permissive (wp-admin, search only)
- **ID prefix:** `sfb_`

### Korean Bapsang (koreanbapsang.com) — ~275 recipes ⭐ BEST KOREAN
- **Sitemap:** `https://www.koreanbapsang.com/sitemap_index.xml` → post-sitemap.xml (275 URLs)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Authentic Korean home cooking
- **Robots.txt:** Permissive (Yoast standard)
- **Quality:** Excellent — Susan (author) provides authentic Korean recipes with cultural context
- **ID prefix:** `kb_`

### Sanjeev Kapoor (sanjeevkapoor.com) — ~1,965 recipes ⭐ BEST INDIAN
- **Sitemap:** `https://www.sanjeevkapoor.com/webcontent-sitemap.xml` (1,965 URLs)
- **JSON-LD:** ⚠️ Non-standard — uses `@type: Recipe` but in a different JSON structure (not standard schema.org/Recipe JSON-LD block). Has `recipeInstructions` and `recipeIngredient` fields. Needs custom parser.
- **Cuisine focus:** Indian (all regions, vegetarian + non-veg)
- **Robots.txt:** Declares sitemaps, no AI-bot blocks
- **Quality:** Celebrity chef, authentic Indian recipes
- **ID prefix:** `sk_`
- **Pitfall:** JSON-LD is present but structured differently from WP recipe plugins. The `@type` appears as `'Recipe` (note quote style) rather than `"Recipe"`. May need regex extraction instead of standard JSON-LD parsing.

### Minimalist Baker (minimalistbaker.com) — ~650 recipes
- **Sitemap:** `https://minimalistbaker.com/wp-sitemap.xml` → `post-sitemap.xml` (0 URLs — appears empty) + `post-sitemap2.xml` (650 URLs)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Simple plant-based, ≤10 ingredients, GF options
- **Robots.txt:** Disallows `/r/`, `/ecourse/`, `/university/` paths. Blocks anthropic-ai.
- **Quality:** High — Dana Schultz (author) provides consistently formatted recipes
- **ID prefix:** `mb_`
- **Pitfall:** `post-sitemap.xml` returns 0 URLs — use `post-sitemap2.xml` instead. This caused a misdiagnosis in the first research pass.

## Tier 2 — JSON-LD Confirmed but Blocks AI Bots (use generic UA)

### Cookie and Kate (cookieandkate.com) — ~920 recipes
- **Sitemap:** `https://cookieandkate.com/post-sitemap.xml` (920 URLs)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Vegetarian, healthy, Mediterranean-inspired, some Asian fusion
- **Robots.txt:** Blocks anthropic-ai, Claude-Web, bot "008". Does NOT block generic Mozilla UA.
- **ID prefix:** `ckate_`

### Healthy Nibbles (healthynibblesandbits.com) — ~640 recipes
- **Sitemap:** `https://healthynibblesandbits.com/post-sitemap.xml` (640 URLs)
- **JSON-LD:** ✅ Confirmed
- **Cuisine focus:** Asian, healthy, light mains
- **Robots.txt:** Blocks ChatGPT-User, GPTBot, anthropic-ai via Raptive. Generic UA works.
- **ID prefix:** `hn_`

## Tier 3 — Blocked or Not Feasible

### Just One Cookbook (justonecookbook.com) — ~1,200+ recipes
- **Status:** ❌ Cloudflare blocks ALL automated access. Returns Cloudflare challenge page for curl requests. Sitemap returns HTML error page, not XML.
- **JSON-LD:** ✅ Exists (confirmed via browser in earlier session)
- **Note:** Previously listed as "no sitemap" — incorrect. The site HAS a sitemap (`sitemap_index.xml` declared in robots.txt) but Cloudflare blocks programmatic access to it. Would need Playwright/browser automation to scrape.
- **Correction from earlier doc:** Original reference said "No sitemap index or post-sitemap found" — this was wrong. The sitemap exists but is behind Cloudflare protection.

### Maangchi (maangchi.com) — ~500+ recipes
- **Status:** ❌ Returns HTTP 403 for all programmatic requests (even with browser-like UA)
- **JSON-LD:** Could not verify (blocked)
- **Cuisine focus:** Korean (most popular English-language Korean site)
- **Note:** robots.txt is permissive (only blocks /post-comments/) but the server itself rejects non-browser requests.

### AllRecipes (allrecipes.com)
- **Status:** ❌ Sitemaps exist (`sitemap_1.xml` through `sitemap_4.xml`) but contain 0 URLs — appear to be empty or dynamically generated.
- **JSON-LD:** Could not confirm on sampled recipe URLs
- **Note:** Largest US recipe site but not scrapable via sitemap approach.

### Archana's Kitchen (archanaskitchen.com) — 8,428 URLs
- **Status:** ❌ Sitemap has 8,428 URLs but NO JSON-LD on recipe pages (0 blocks found). Would need custom HTML parsing.
- **Cuisine focus:** Indian
- **Note:** Large volume but no structured data — not worth the effort vs. Sanjeev Kapoor which has JSON-LD.

### Bon Appétit (bonappetit.com) / Epicurious (epicurious.com)
- **Status:** ❌ No JSON-LD on recipe pages. Both use Condé Nast's proprietary structured data format.
- **Note:** High quality but not scrapable via JSON-LD approach.

### Serious Eats (seriouseats.com)
- **Status:** ❌ Sitemap exists but returned 0 recipe URLs. JSON-LD not confirmed on sampled URLs.
- **Note:** May use WPRM (WordPress Recipe Maker) structured data instead of JSON-LD. Would need custom parser.

### Pick Up Limes (pickuplimes.com) — ~240 recipes
- **Sitemap:** `https://www.pickuplimes.com/sitemap.xml` — only 1 recipe URL found in sitemap (very small)
- **JSON-LD:** ✅ Confirmed
- **Robots.txt:** Returns HTML page, not a proper robots.txt
- **Note:** Very small volume (~240). High quality vegan but not worth integration effort for the volume.

## Summary: Recommended Integration Priority

| Priority | Source | Recipes | Why |
|----------|--------|---------|-----|
| 1 | BBC Good Food | ~5,045 | Largest, international, permissive |
| 2 | SkinnyTaste | ~2,354 | Best for light/healthy gap |
| 3 | Woks of Life | ~1,555 | Best authentic Chinese |
| 4 | RecipeTin Eats | ~1,697 | Pan-Asian, high quality |
| 5 | Rasa Malaysia | ~1,390 | Best SE-Asian |
| 6 | Sanjeev Kapoor | ~1,965 | Best Indian (needs custom parser) |
| 7 | Budget Bytes | ~1,981 | Broad international, budget |
| 8 | Pinch of Yum | ~1,483 | Comfort food, international |
| 9 | Omnivore's Cookbook | ~772 | Modern Chinese |
| 10 | Hot Thai Kitchen | ~464 | Most authentic Thai |
| 11 | Spoon Fork Bacon | ~911 | Asian fusion |
| 12 | Korean Bapsang | ~275 | Authentic Korean |
| 13 | Minimalist Baker | ~650 | Simple vegan/GF |
| 14 | Cookie and Kate | ~920 | Vegetarian (use generic UA) |
| 15 | Healthy Nibbles | ~640 | Asian healthy (use generic UA) |

**Total potential: ~20,000+ new recipes**, majority Asian or light/healthy.

## Translation Strategy

Since these are English-language sources, recipes need translation before or after insertion:

1. **Pre-insertion translation (recommended):** Translate title, description, ingredients, and instructions to German before DB insert. Use LLM batch translation (GLM-5.2 via noris, or a dedicated translation model).
2. **Store both languages:** Keep original English text in a separate column (`title_en`, `description_en`) for reference.
3. **Ingredient mapping:** English ingredients should map to the SAME canonical names in the `ingredients` table (e.g., `garlic→knoblauch`, `chicken breast→hähnchenbrust`). The `CANONICAL_OVERRIDES` dict in `ingredient_normalizer.py` already includes English→German mappings.
4. **Source prefix:** Use the ID prefixes listed above for each source.

## Scraping Pitfalls (International Sources)

- **Cloudflare blocks ≠ "no sitemap".** Just One Cookbook was initially diagnosed as "no sitemap" — actually the sitemap exists but Cloudflare returns an HTML challenge page instead of XML. Always check HTTP status codes and content-type, not just whether XML parse succeeds.
- **AI-bot blocks in robots.txt are selective.** Many sites (RecipeTin Eats, Cookie and Kate, Healthy Nibbles, SkinnyTaste) block `anthropic-ai`, `Claude-Web`, `GPTBot`, or `ChatGPT-User` specifically. They do NOT block generic `Mozilla/5.0` user agents. Use a standard browser-like UA, not an AI-identifying one.
- **Empty first sitemap ≠ empty site.** Minimalist Baker's `post-sitemap.xml` returns 0 URLs but `post-sitemap2.xml` has 650. Always check ALL sitemap files in the index.
- **Non-standard JSON-LD.** Sanjeev Kapoor has recipe data but in a non-standard JSON structure (`@type: 'Recipe` with single quotes instead of `"Recipe"`). Standard JSON-LD parsers will miss it. May need regex-based extraction or custom parser.
- **Quarterly sitemap pattern.** BBC Good Food organizes recipe sitemaps by quarter (`YYYY-QN-recipe.xml`). Must iterate through all quarters to get full coverage. Older quarters may not exist — check availability before assuming.
