Trader Joe's API: Search products
Searches Trader Joe's public product catalogue by name or keywords, optionally within a main category. Prices are website reference prices and may vary by store.
Unofficial. Not affiliated with or endorsed by Trader Joe's.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Query, required
query Product name or keywords to search, e.g. mandarin orange chicken.
mandarin orange chicken
- Category optional
category Main catalogue category, e.g. food; any searches all products.
any (default)
One of
any,food,beverages,flowers_and_plants,everything_else.- Max Results optional
max_results Maximum products to return, e.g. 20.
20 (default)
Whole number from 1 to 50.
Input as JSON
{ "query": "mandarin orange chicken"}Output
{ "products": [ { "sku": "083847", "name": "Sliced Rotisserie Seasoned Chicken Breast", "size": "7 Oz", "price": 4.99, "category": "Chicken & Turkey", "currency": "USD", "image_link": "https://www.traderjoes.com/content/dam/trjo/products/m20802/83847.png" , "description": "When it comes to lunch, one shouldn’t have to sacrifice great flavor, convenience, or quality for the sake of speed. Thankfully, the refrigerators at your neighborhood Trader Joe’s offer plenty of options to support top-tier sandwich construction, like Trader Joe’s Rotisserie Seasoned Chicken Breast…", "dietary_tags": [ "Antibiotic Free" ], "product_link": "https://www.traderjoes.com/home/products/pdp/sliced-rotisserie-seasoned-chicken-breast-083847" }, { "sku": "084842", "name": "Cranberry Jalapeño Chicken Meatballs", "size": "12 Oz", "price": 4.29, "category": "Chicken & Turkey", "currency": "USD", "image_link": "https://www.traderjoes.com/content/dam/trjo/products/m20802/84842.png" , "description": "An ode to a classic all-American appetizer, Trader Joe’s Cranberry Jalapeño Meatballs are sweet, savory, and a little spicy—and the perfect bite sized party snack. These Meatballs are made with all natural, minimally processed chicken thigh and breast meat from birds raised without antibiotics. The …", "dietary_tags": [ "Antibiotic Free", "Gluten Free" ], "product_link": "https://www.traderjoes.com/home/products/pdp/cranberry-jalapeno-chicken-meatballs-084842" }, { "sku": "084466", "name": "Pollo Asado Chicken Thighs", "size": "1 Lb", "price": 6.99, "category": "Chicken & Turkey", "currency": "USD", "image_link": "https://www.traderjoes.com/content/dam/trjo/products/m20802/84466.png" , "description": "As the weather warms up, cooking dinner (read: heating up the kitchen) becomes exponentially less appealing—but you still need to feed your crew. What to do? Pick up some packages of Trader Joe’s Carne Asada Ranchera! Inspired by the flavorful meat offered at taco carts and meat markets across South…", "dietary_tags": [], "product_link": "https://www.traderjoes.com/home/products/pdp/pollo-asado-chicken-thighs-084466" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"traderjoes.com/search_products","input":{"query":"mandarin orange chicken"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "traderjoes.com/search_products" , "input": { "query": "mandarin orange chicken" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "traderjoes.com/search_products" , "input": { "query": "mandarin orange chicken" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run traderjoes.com/search_products# with {"query":"mandarin orange chicken"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "query" ], "properties": { "query": { "type": "string", "minLength": 1, "description": "Product name or keywords to search, e.g. mandarin orange chicken." }, "category": { "enum": [ "any", "food", "beverages", "flowers_and_plants", "everything_else" ], "type": "string", "default": "any", "description": "Main catalogue category, e.g. food; any searches all products." }, "max_results": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Maximum products to return, e.g. 20." } }}Output schema
{ "type": "object", "required": [ "products" ], "properties": { "products": { "type": "array", "items": { "type": "object", "required": [ "name", "price", "currency", "size", "category", "description", "dietary_tags", "image_link", "product_link", "sku" ], "properties": { "sku": { "type": "string", "description": "Trader Joe's product SKU." }, "name": { "type": "string", "description": "Product name." }, "size": { "type": [ "string", "null" ], "description": "Package size and unit." }, "price": { "type": [ "number", "null" ], "description": "Website reference price." }, "category": { "type": [ "string", "null" ], "description": "Product category on Trader Joe's." }, "currency": { "type": "string", "description": "Price currency (USD)." }, "image_link": { "type": [ "string", "null" ], "description": "Product image link." }, "description": { "type": [ "string", "null" ], "description": "Plain-text product description." }, "dietary_tags": { "type": "array", "items": { "type": "string" }, "description": "Product characteristic tags such as Vegan and Gluten Free." }, "product_link": { "type": "string", "description": "Product page link." } } }, "description": "Matching products in website order." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
traderjoes.com/search_products- Returns
- name, price, size, category, description, dietary tags, image and product links, SKU
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method traderjoes.com/search_products with the inputs above.
Ask your agent
- Find frozen mandarin orange chicken at Trader Joe's and show me the price and size
- Search for gluten-free snacks under the food category, return up to 10 items
- Look up almond milk in the beverages category with dietary tags
- I need organic bananas or banana products, list the top 15 matches with SKUs
- Show me any potted plants or flowers available, limited to 5 results
See more
Searches Target products and returns prices, ratings, photos and product links. Prices can vary by store, so you can give a ZIP code for local pricing.
target.com/search_productsSearches a named Instacart store's guest-visible grocery products for a US ZIP code. Prices are in USD and can differ from in-store prices; stock estimates can change.
instacart.com/search_productsSearch ALDI US groceries in site order with prices for the selected store. Prices and availability vary by store; related search results may follow direct matches.
aldi.us/search_productsSearches IKEA products in a chosen country and returns current prices, details, photos and reviews in IKEA's result order.
ikea.com/search_productsSearch Chewy products by words, pet type, and sort order. Returns up to 72 products in Chewy's order, including listed and first-order Autoship prices when shown.
chewy.com/search_productsSearches AliExpress listings by product words, shipping destination, price range and sort order. Unpriced promotional cards are omitted; free shipping is marked only when the listing explicitly says so.
aliexpress.com/search_productsSearches Kohl's products in site order and returns prices, offers, ratings and links for each result.
kohls.com/search_productsSearches Best Buy US products with an optional price range, sort order and page. Prices and availability come from public listings and may vary by location.
bestbuy.com/search_products