Farming & Foraging

Crops

Access every plantable crop in Stardew Valley with full growing details, seed prices, and harvest information.

Quick Start

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

// Get all crops
const allCrops = crops().get()

// Summer crops sorted by sell price
const bestSummer = crops().bySeason('summer').sortBySellPrice().get()

// Find a specific crop
const melon = crops().findByName('Melon')

Type Definition

Each crop object has the following shape:

interface Crop {
  id: string
  name: string
  category: string
  seasons: Season[]
  growDays: number
  regrowDays: number | null
  seedId: string
  seedName: string
  seedBuyPrices: SeedBuyPrice[]
  seedSellPrice: number
  cropSellPrice: number
  harvestQuantity: HarvestQuantity
  trellis: boolean
  giant: boolean
  description: string
  image: string
  seedImage: string
  giantImage?: string
  stages: Stage[]
  energyHealth?: EnergyHealth
  farmingXP?: number
}

Field Reference

FieldTypeDescription
idstringUnique identifier for the crop.
namestringDisplay name (e.g. "Melon").
categorystringCategory label such as "Vegetable" or "Fruit".
seasonsSeason[]Seasons the crop can grow in ('spring', 'summer', 'fall', 'winter', 'ginger island').
growDaysnumberTotal days from planting to first harvest.
regrowDaysnumber | nullDays between subsequent harvests, or null if the crop does not regrow.
seedIdstringID of the seed item.
seedNamestringDisplay name of the seed.
seedBuyPricesSeedBuyPrice[]Array of { place, price } objects listing where the seed can be purchased.
seedSellPricenumberSell price of the seed.
cropSellPricenumberBase sell price of the harvested crop.
harvestQuantityHarvestQuantityObject with min and max harvest amounts.
trellisbooleanWhether the crop requires a trellis (blocks walking).
giantbooleanWhether the crop can grow into a giant crop.
descriptionstringIn-game description text.
imagestringPath to the crop image asset.
seedImagestringPath to the seed image asset.
giantImagestring | undefinedPath to the giant crop image, if applicable.
stagesStage[]Array of { name, image } objects for each growth stage.
energyHealthEnergyHealth | undefinedEnergy and health restored when eaten, if edible.
farmingXPnumber | undefinedFarming XP gained on harvest.

Query Methods

The crops() function returns a CropQuery instance. All filter and sort methods return a new CropQuery, so you can chain them in any order.

Inherited Methods

These terminal methods are available on every query builder:

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

Filter Methods

MethodSignatureDescription
bySeasonbySeason(season: Season)Filter to crops available in the given season.
byCategorybyCategory(category: string)Filter by category (e.g. 'Vegetable', 'Fruit').
byShopbyShop(shop: string)Filter to crops whose seed is sold at the given shop (case-insensitive).
regrowingregrowing()Filter to crops that regrow after harvesting.
giantgiant()Filter to crops that can become giant crops.
trellistrellis()Filter to crops that require a trellis.
multiSeasonmultiSeason()Filter to crops available in more than one season.
extraHarvestextraHarvest()Filter to crops that can yield more than one item per harvest.
availableInShopavailableInShop()Filter to crops whose seeds can be purchased from a shop.
eatableeatable()Filter to crops that are edible (have energy/health values).

Sort Methods

MethodSignatureDefaultDescription
sortBySellPricesortBySellPrice(order?: 'asc' | 'desc')'desc'Sort by crop sell price.
sortByGrowDayssortByGrowDays(order?: 'asc' | 'desc')'asc'Sort by total grow days.

Examples

Best regrowing crops for summer

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

const regrowers = crops().bySeason('summer').regrowing().sortBySellPrice().get()

regrowers.forEach((c) => {
  console.log(
    `${c.name}: ${c.cropSellPrice}g (regrows in ${c.regrowDays} days)`,
  )
})

Find all giant crops

const giantCrops = crops().giant().get()
// Returns crops like Cauliflower, Melon, Pumpkin, etc.

Crops available at Pierre's shop

const pierreCrops = crops().byShop("Pierre's").get()
console.log(`Pierre sells seeds for ${pierreCrops.length} crops`)

Multi-season crops sorted by grow time

const multiSeason = crops().multiSeason().sortByGrowDays().get()
Previous
Save file parser
Next
Trees