Importing Recipes to Self-Hosted Recipe Managers

What Is Recipe Import?

Self-hosted recipe managers can automatically extract recipe data from websites — ingredients, instructions, cooking times, and images — using structured data markup (schema.org Recipe format). This guide covers how to import recipes from URLs, migrate from other apps, and handle bulk imports across the major self-hosted platforms.

Prerequisites

  • A running self-hosted recipe manager: Mealie, Tandoor, Recipya, or KitchenOwl
  • URLs of recipes you want to import, or export files from your current app

How URL Scraping Works

Most recipe websites embed structured data in their HTML using the schema.org Recipe format. This JSON-LD markup contains:

FieldExample
name”Classic Margherita Pizza”
recipeIngredient[“2 cups flour”, “1 cup warm water”, …]
recipeInstructionsStep-by-step instructions
cookTime”PT25M” (25 minutes)
prepTime”PT15M” (15 minutes)
recipeYield”4 servings”
imageURL to recipe photo
nutritionCalories, fat, protein, etc.

When you paste a URL into your recipe manager, it:

  1. Fetches the page HTML
  2. Parses the JSON-LD or Microdata recipe markup
  3. Maps the fields to its internal format
  4. Downloads the recipe image
  5. Saves everything to your database

Importing by Platform

Mealie

Single URL import:

  1. Click the + button or go to Create → Import
  2. Paste the recipe URL
  3. Click Import — Mealie parses and creates the recipe
  4. Review and edit if needed

Bulk URL import:

  1. Go to Settings → Data → Import/Export
  2. Upload a text file with one URL per line
  3. Mealie processes each URL sequentially

Import from other apps:

  • Tandoor: Export from Tandoor as JSON → Import in Mealie via Settings → Data → Import
  • Paprika: Export from Paprika as .paprikarecipes file → Import directly
  • Chowdown: Import Chowdown markdown files directly
  • Nextcloud Cookbook: Import via JSON export

Tandoor

Single URL import:

  1. Click Import Recipe in the sidebar
  2. Paste the URL
  3. Review the parsed recipe
  4. Click Save

Bulk import:

  1. Go to Settings → Import/Export
  2. Upload a text file with URLs (one per line)
  3. Or use the API: POST /api/recipe-url-import/ with {"url": "https://..."}

Import from Mealie: Export from Mealie as JSON → Import in Tandoor via Settings.

Recipya

Single URL import:

  1. Click the + button
  2. Paste the recipe URL
  3. Recipya scrapes and saves the recipe

Bulk import: Use the API for automated imports:

curl -X POST http://localhost:8078/api/recipes/add/url \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/recipe"}'

KitchenOwl

Single URL import:

  1. Tap Add Recipe in the app
  2. Select Import from URL
  3. Paste the URL and confirm

Import from Tandoor: KitchenOwl supports direct Tandoor API import — enter your Tandoor URL and API token in KitchenOwl settings.

Handling Import Failures

Not every recipe URL will import successfully. Common reasons:

ProblemSolution
Site uses JavaScript renderingTry the print/printer-friendly URL
No schema.org markupAdd the recipe manually
Paywall blocks accessUse the print URL or manual entry
Images behind hotlink protectionUpload images manually after import
Non-English sitesMost parsers handle UTF-8; check encoding
Recipe behind loginLog in via browser, copy the page source, use manual entry

Sites That Work Well

Sites that consistently import successfully use schema.org Recipe markup:

  • AllRecipes, Food Network, BBC Good Food
  • Serious Eats, Budget Bytes, Bon Appétit
  • Simply Recipes, The Kitchn, Epicurious
  • NYT Cooking (may require login)
  • Most food blogs using WordPress with recipe card plugins

Sites That Fail

  • Social media posts (Instagram, TikTok, Pinterest — no structured markup)
  • PDF recipe files
  • YouTube cooking videos (no recipe markup in video pages)
  • Heavily JavaScript-rendered SPAs

Migrating Between Self-Hosted Apps

Mealie → Tandoor

  1. In Mealie: Settings → Data → Export → download JSON backup
  2. In Tandoor: Settings → Import → upload the Mealie JSON
  3. Review imported recipes for formatting issues

Tandoor → Mealie

  1. In Tandoor: Settings → Export → download as JSON
  2. In Mealie: Settings → Data → Import → select “Tandoor” format
  3. Upload and import

Any App → New App (via URL list)

The universal migration path:

  1. Export your recipe list from the old app (most support JSON or CSV export)
  2. Extract the source URLs if available
  3. Create a text file with one URL per line
  4. Bulk import into your new recipe manager

If source URLs aren’t available, export the recipe data as JSON and manually convert if needed.

Practical Examples

Saving Your Favorite YouTube Chef’s Recipes

YouTube videos don’t have recipe markup, but many creators publish written recipes:

  1. Check the video description for a link to the written recipe
  2. Import that URL into your recipe manager
  3. If no written recipe exists, use the manual entry form

Building a Collection from a Cookbook

For physical cookbooks or PDFs without URLs:

  1. Use manual entry for each recipe
  2. Take photos of the cookbook pages for reference images
  3. Tag recipes with the cookbook name for organization
  4. Some recipe managers support OCR or AI-assisted manual entry

Importing a Large Personal Collection

For migrating 100+ recipes:

  1. Export from your current platform (Paprika, CopyMeThat, Google Docs, etc.)
  2. Check if your recipe manager supports direct import for that format
  3. If not, extract URLs and bulk import
  4. For recipes without URLs (manually entered), convert to the target app’s JSON format
  5. Budget 1-2 hours for a collection of 500+ recipes (mostly review time)

Common Mistakes

  1. Not reviewing imported recipes. URL scraping isn’t perfect. Always spot-check ingredient quantities and instructions after import.

  2. Importing duplicate recipes. Most apps don’t check for duplicates during import. Remove duplicates manually or via the API.

  3. Losing recipe images during migration. Images may not transfer between apps. Re-import from the original URL or upload manually.

  4. Ignoring recipe source attribution. Keep the original URL in a notes field for reference and to re-scrape if the format changes.

Next Steps

Comments