← All posts
tutorial

How to build a recipe app with 100 originally-authored recipes

Mahesh Naidu·4 min read

Most “recipe API” products on the market are thin wrappers around scraped or licensed third-party recipe content, which carries real legal risk for anyone building on top of them — you inherit whatever licensing terms (or lack thereof) the underlying data has. /recipes takes a different approach: every recipe is originally authored for APlicious, with zero third-party licensing risk for anything you build on it.

The four endpoints

// Search by query, cuisine, or dietary tag
fetch("https://aplicious.com/api/v1/recipes/search?cuisine=Thai&diet=vegan", {
  headers: { "X-API-Key": "lapi_live_••••" },
});

// One random recipe (the "what should I cook" mechanic)
fetch("https://aplicious.com/api/v1/recipes/random", {
  headers: { "X-API-Key": "lapi_live_••••" },
});

// Full ingredients + instructions for one recipe
fetch("https://aplicious.com/api/v1/recipes/detail?slug=butter-chicken", {
  headers: { "X-API-Key": "lapi_live_••••" },
});

// All available cuisines + categories, for populating filter UI
fetch("https://aplicious.com/api/v1/recipes/cuisines", {
  headers: { "X-API-Key": "lapi_live_••••" },
});

The random endpoint is the product, not a gimmick

“What should I cook tonight” is a top-searched food query, and decision fatigue is a real driver of people ordering takeout instead of cooking what's already in their fridge. A single-tap “surprise me” button backed by /random, optionally filtered by cuisine or category, is a complete app concept on its own — not a demo feature bolted onto a search app.

How the dataset grows

New recipes are added through an internal ingestion script, not a live scrape of an external site — every addition is hand-authored and goes through the same data-ownership review as everything else on the platform. That's slower than scraping, but it's the only way to guarantee zero licensing exposure for anyone building a commercial product on top of this namespace.

Putting together a meal-planning feature

async function weeklyMealPlan(cuisine: string) {
  const headers = { "X-API-Key": process.env.APLICIOUS_KEY! };
  const days = await Promise.all(
    Array.from({ length: 7 }, () =>
      fetch(`https://aplicious.com/api/v1/recipes/random?cuisine=${cuisine}`, { headers })
        .then(r => r.json())
    )
  );
  return days.map(d => d.data);
}
Try APlicious free
One key. 34 live namespaces. 500 free calls per month — no credit card required.
Get your free API key →
← Back to all posts