Building the largest open historical recipe corpora on GitHub
This repo is a public collection of over 54,000 historical recipes from more than thirty countries, built from public domain cookbooks and other copyright-safe sources
These recipes are available in Markdown and JSONL for humans and agents.
Every recipe includes:
- title
- collection slug
- culture tag
- ingredients and numbered directions in Markdown
- source author
- source title
- source year
- source URL
- license
- 54,843 recipes
- 31 historical collections
- Markdown per recipe
- JSONL per collection
Current collections include:
- Argentina
- Australia
- Austria
- Brazil
- Canada
- Chile
- China
- Czechia
- Denmark
- Finland
- France
- Germany
- Greece
- Guatemala
- Hungary
- India
- Indonesia
- Italy
- Japan
- Mexico
- Netherlands
- Norway
- Philippines
- Poland
- Portugal
- Spain
- Sweden
- Turkey
- United Kingdom
- United States
- Jewish diaspora
- Levant
- Louisiana Creole
- West Indies
The project goal is to span every country and diaspora in the world with recipes that have attribution, rather than asking LLMs to infer cultural cooking from a muddied corpus. Some countries have deep pre-1931 cookbook shelves; others have sparse, fragmentary sources.
collections/
<collection-slug>/
manifest.json
recipes.jsonl
recipes/
<recipe-slug>.md
index/
collections.json
countries.json
cultures.json
summary.json
scripts/
export_sqlite.py
Clone the repository:
git clone https://github.com/adambouhmad/open-recipe-archive.git
cd open-recipe-archiveRead a recipe in GitHub or locally:
open "collections/ye-old-american/recipes/tomato-soup.md"Load one collection as JSONL:
python3 -c "import json; from pathlib import Path; p=Path('collections/ye-old-american/recipes.jsonl'); print(sum(1 for _ in p.open()))"Inspect the global index:
python3 -c "import json; print(json.load(open('index/summary.json')))"Each recipe is a normal Markdown file with YAML frontmatter and a provenance section.
Example:
collections/ye-old-american/recipes/tomato-soup.md
Each collection has a recipes.jsonl file with one JSON object per recipe.
Example fields:
{
"title": "Tomato Soup",
"slug": "tomato-soup",
"collection": "ye-old-american",
"collection_name": "Ye Old American Recipe Book",
"culture": "american-historical",
"author": "Fannie Merritt Farmer",
"body": "## Ingredients\n\n- 1 can tomatoes...",
"source_title": "The Boston Cooking-School Cook Book",
"source_url": "https://www.gutenberg.org/ebooks/65061",
"source_year": "1896",
"license": "public-domain",
"tags": ["american-historical", "ye-old-american"],
"export_date": "1896-01-01"
}Read a collection in Python:
import json
from pathlib import Path
path = Path("collections/ye-old-american/recipes.jsonl")
recipes = [json.loads(line) for line in path.open(encoding="utf-8")]
print(len(recipes), recipes[0]["title"])Recommended ingestion paths:
- use
recipes.jsonlfor structured bulk loading - use
recipes/*.mdwhen you want readable source documents - use
index/collections.jsonto discover available shelves first
Suggested strategy:
- load
index/collections.json - pick collections relevant to a region, culture, or period
- ingest
recipes.jsonlinto your vector store or search index - retain
source_title,source_url,source_year, andlicensein metadata
Treat this repo as content, not infrastructure.
Minimal approach:
- load all
recipes.jsonlfiles - index
title,body,collection_name,culture, andtags - render the corresponding Markdown file or body text in your UI
- show provenance fields with every result
Useful stack options:
- static site generator plus prebuilt JSON index
- SQLite FTS
- Meilisearch
- Elasticsearch or OpenSearch
- vector search plus metadata filters
All recipes are sourced from public-domain materials or clearly labeled permissive supplements. Every recipe carries source and license metadata.
Default license status for the exported historical corpus is public-domain
unless a recipe is explicitly labeled otherwise.
Good contributions include:
- provenance fixes
- source URL fixes
- license corrections
- collection metadata improvements
- export tooling improvements
- search/demo apps built on top of the corpus
See LICENSE.md.