Shops

Joja Mart

Access the complete stock list for JojaMart with seasonal filtering using the chainable JojaQuery API.

Quick Start

import { joja } from 'stardew-valley-data'

// Get all Joja Mart items
const all = joja().get()

// Get spring items sorted by price
const spring = joja().bySeason('spring').sortByPrice().get()

// Get permanent (year-round) stock only
const permanent = joja().permanent().get()

// Get seasonal seeds
const seeds = joja().seeds().get()

Type Definition

Each item conforms to the JojaItem interface:

FieldTypeDescription
idstringUnique identifier.
namestringDisplay name of the item.
pricenumberPurchase price in gold.
descriptionstringIn-game description text.
imagestringPath to the item's image.
seasonsSeason[]Seasons when available. Empty array means year-round.
availabilitystring | undefinedSpecial purchase condition, if any.

Season

type Season = 'spring' | 'summer' | 'fall' | 'winter' | 'ginger island'

Query Methods

JojaQuery extends QueryBase and inherits five terminal methods:

MethodReturnsDescription
get()JojaItem[]Return all results as an array.
first()JojaItem | undefinedReturn the first result.
find(id)JojaItem | undefinedFind an item by exact ID.
findByName(name)JojaItem | undefinedFind an item by name (case-insensitive).
count()numberReturn the number of results.

Filter Methods

MethodReturnsDescription
bySeason(season)JojaQueryFilter to items available in the given season (includes permanent and multi-season items).
permanent()JojaQueryFilter to year-round permanent stock only (no seasonal seeds).
seeds()JojaQueryFilter to seasonal seed stock only (items with at least one season).
alwaysAvailable()JojaQueryFilter to items with no special purchase condition.

Sort Methods

MethodReturnsDescription
sortByPrice(order?)JojaQuerySort by price. Pass 'asc' (default) or 'desc'.
sortByName(order?)JojaQuerySort alphabetically by name. Pass 'asc' (default) or 'desc'.

Examples

Compare seasonal seed availability

import { joja } from 'stardew-valley-data'

const seasons = ['spring', 'summer', 'fall', 'winter']

seasons.forEach((season) => {
  const items = joja().bySeason(season).get()
  console.log(`${season}: ${items.length} items available`)
})

List all permanent stock sorted by name

import { joja } from 'stardew-valley-data'

const permanent = joja().permanent().sortByName().get()

permanent.forEach((item) => {
  console.log(`${item.name} - ${item.price}g`)
})

Find the most expensive seasonal seed

import { joja } from 'stardew-valley-data'

const priciest = joja().seeds().sortByPrice('desc').first()

if (priciest) {
  console.log(
    `${priciest.name} - ${priciest.price}g (${priciest.seasons.join(', ')})`,
  )
}
Previous
Island trader
Next
Krobus