/api/v1/ingredient_lookup Endpoint Specification
Purpose
Cross-standard ingredient lookup for pet food regulatory compliance.
Currently supports 3 data sources with different data types (all local files, verified 2026-07-19):
- AAFCO Ch6 (2024 OP): Ingredient definitions — 650 entries across 34 numeric chapters + tentative codes (
pdf-parsed/us-2026/aafco_ch6_2024_parsed.json, verbatim-backed bypdf-raw/aafco_ch6_2024.txt) - EU FMR Reg68: Feed products — 4,704 products in 13 category codes incl. 1,164
Unknown(pdf-parsed/eu_fmr_products_20260714_v4.json) - CFIA FeedList: Registered feed descriptions — 7,366 entries, livestock species only (
pdf-parsed/ca-2026/cfia_approved/cfia_approved_ingredients.json)
Endpoint Signature
`` GET /api/v1/ingredient_lookup?query=<keyword>&standard=<standard>&category=<category>&limit=<limit> ``
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Search keyword (e.g. "barley", "salmon", "whey") |
standard | string | No | Filter by standard: aafco / eu_fmr / cfia / all (default) |
category | string | No | Filter by cross-category (draft mapping, see 02_cross_index_overview) |
limit | int | No | Max results (default 50, max 500) |
Response Format (illustrative — all entries below are REAL records)
``json { "query": "salmon", "results": [ { "standard": "EU_FMR_Reg68", "reg68_code": "10_Fish", "id": "002444-EN", "name": "Salmon Protein Hydrolysate 95% (HBC-SPH 95%)" }, { "standard": "EU_FMR_Reg68", "reg68_code": "10_Fish", "id": "009865-EN", "name": "Dehydrated salmon meat proteins" }, { "standard": "AAFCO_Ch6", "code": "87.36", "name": "Phaffia Yeast (color additive for salmonid fish feed)", "note": "AAFCO 2024 parsed set has no salmon-ingredient definition; matches are use-context mentions" } ], "total_results": 3, "standards_searched": ["EU_FMR_Reg68", "AAFCO_Ch6", "CFIA_FeedList"] } ``
Verified Data Profiles
AAFCO Ch6 2024 (650 entries) — chapter → content (verified against parsed entries)
| Chapters | Content | Count |
|---|---|---|
| 12,42,69,75,78,93,48 | Cereal grains & co-products (barley, grain sorghum, oats, rice, rye, wheat, corn) | 79 |
| 15,27 | Brewers/distillers co-products | 16 |
| 24,71,84 | Oil-seed & plant-protein meals (cottonseed, canola/other, soybean) | 60 |
| 51 | Fish & marine | 18 |
| 54 | Milk products (whey, casein, buttermilk…) | 40 |
| 63 | Molasses & beet products | 17 |
| 57 | Minerals | 139 |
| 33 | Fats & oils | 21 |
| 36 | Fermentation products | 15 |
| 96 | Yeast | 13 |
| 90 | Vitamins | 42 |
| 66 | Non-protein nitrogen (urea, biuret) | 5 |
| 30 | Enzymes | 3 |
| 73 | Chemical preservatives | 36 |
| 40,45,81,60 | Pomace/forage/screenings/miscellaneous (60.x incl. kelp, pulses, BSFL) | 62 |
| 21 | Citrus co-products | 3 |
| 87 | Special-purpose & color additives (mixed) | 53 |
| 16,18,22,70,74,T | Parse artifacts & tentative codes | 28 |
| Total | 650 |
Note: the classic AAFCO chapter 9 (animal protein products) is NOT present in the parsed 2024 set — do not promise animal-meal definitions in responses.
EU FMR Reg68 (4,704 products) — category code → count (verified)
Unknown 1164 · 6_Forages 815 · 11_Minerals 526 · 9_Animal_products 362 · 7_Other_plants 327 · 4_Tubers 311 · 3_Legumes 309 · 2_Oil_seeds 245 · 1_Cereals 185 · 12_Fermentation 156 · 8_Milk 118 · 5_Other_seeds 101 · 10_Fish 85
CFIA FeedList (7,366 entries)
Livestock feed registry extracted from CFIA FeedList datalists. Species: Layer Chicken, Broiler Chicken, Turkey, Swine, Dairy, Beef, Sheep, Fish, Minor Species, Livestock and Multiple Species — no dog/cat entries; do not return CFIA results for pet-species queries without this caveat.
Implementation Notes
- AAFCO Ch6 lookup: Search
name+definitionfields in the 650-entry JSON - EU FMR lookup: Search
namefield in 4,704 products (filter byreg68_category_code) - CFIA lookup: Search
namefield in 7,366 entries (filter byfeed_type+species) - Query latency target: < 200ms (12,720 total entries, in-memory index)
Data Type Heterogeneity
These 3 standards are NOT 1:1 mappable:
- AAFCO Ch6 = ingredient definitions (what an ingredient IS)
- EU FMR = registered feed products
- CFIA FeedList = registered livestock feeds/brands
Cross-mapping is at the category level (draft), not the ingredient level. The planned cross_standard_ingredient_index.json does NOT exist yet — see 02_cross_index_overview for current status.
---
*Last updated: 2026-07-19 (verified against local data files)*