Guides

Direct data access

When you need raw data arrays without the query builder wrapper, you can import JSON files directly from the stardew-valley-data/data/* export path.


How it works

The package exports its underlying JSON data files through the stardew-valley-data/data/* path. Each import gives you a plain JavaScript array of typed objects -- no query builder, no class instances.

import cropsData from 'stardew-valley-data/data/crops'
import fishData from 'stardew-valley-data/data/fish'

// cropsData is a Crop[] array
console.log(cropsData.length)
console.log(cropsData[0].name)

Available data paths

Every data module has a corresponding JSON file you can import directly:

Farming and nature

Import pathContent
stardew-valley-data/data/cropsAll crops with seasons, prices, and growth data
stardew-valley-data/data/treesFruit trees and wild trees
stardew-valley-data/data/animalsPets and farm animals
stardew-valley-data/data/forageablesForageable items by season and location
stardew-valley-data/data/artisan-goodsArtisan goods (wine, cheese, etc.)
stardew-valley-data/data/mixed-seedsMixed seed drop tables by season
stardew-valley-data/data/seasonsSeason metadata and festival dates

Fishing and mining

Import pathContent
stardew-valley-data/data/fishAll fish with locations, seasons, and difficulty
stardew-valley-data/data/baitBait items
stardew-valley-data/data/tackleTackle items
stardew-valley-data/data/mineralsMinerals, geodes, ores, bars, nodes, and resources
stardew-valley-data/data/artifactsArtifact items and their sources

Characters and social

Import pathContent
stardew-valley-data/data/villagersAll villagers with gift preferences and birthdays
stardew-valley-data/data/universal-giftsUniversal gift preference lists
stardew-valley-data/data/eventsCutscene and event data

Combat and equipment

Import pathContent
stardew-valley-data/data/monstersMonsters with stats, loot drops, and locations
stardew-valley-data/data/monster-slayer-goalsAdventurer's Guild slayer goals
stardew-valley-data/data/weaponsWeapons with stats and types
stardew-valley-data/data/weapon-statsWeapon stat ranges
stardew-valley-data/data/ringsRings and their effects
stardew-valley-data/data/trinketsTrinket items
stardew-valley-data/data/toolsTools and their upgrade levels
stardew-valley-data/data/hatsHats
stardew-valley-data/data/footwearBoots and shoes

Skills and progression

Import pathContent
stardew-valley-data/data/skillsSkill levels and XP requirements
stardew-valley-data/data/professionsProfession choices per skill
stardew-valley-data/data/achievementsAchievement data
stardew-valley-data/data/perfectionPerfection tracker requirements
stardew-valley-data/data/stardropsStardrop locations and sources
stardew-valley-data/data/golden-walnutsGolden walnut locations on Ginger Island
stardew-valley-data/data/special-itemsSpecial items and powers

World and collections

Import pathContent
stardew-valley-data/data/bundlesCommunity Center bundle requirements
stardew-valley-data/data/cookingCooking recipes and ingredients
stardew-valley-data/data/craftingCrafting recipes and ingredients
stardew-valley-data/data/collectionsShipping, fish, and artifact collections
stardew-valley-data/data/buildingsFarm buildings and costs
stardew-valley-data/data/locationsGame locations
stardew-valley-data/data/mapsMap data
stardew-valley-data/data/farmhouseFarmhouse upgrade data
stardew-valley-data/data/questsQuest data
stardew-valley-data/data/special-ordersSpecial order boards
stardew-valley-data/data/secret-notesSecret notes and journal scraps
stardew-valley-data/data/lost-booksLost book library content
stardew-valley-data/data/concessionsMovie theater concession items
stardew-valley-data/data/grandpaGrandpa's evaluation scoring
stardew-valley-data/data/field-officeIsland field office donations
stardew-valley-data/data/weatherWeather data

Shops

Import pathContent
stardew-valley-data/data/pierre-shopPierre's General Store
stardew-valley-data/data/joja-shopJojaMart
stardew-valley-data/data/blacksmith-shopBlacksmith (Clint)
stardew-valley-data/data/carpenter-shopCarpenter's Shop (Robin)
stardew-valley-data/data/saloon-shopStardrop Saloon (Gus)
stardew-valley-data/data/marnie-shopMarnie's Ranch
stardew-valley-data/data/willy-shopFish Shop (Willy)
stardew-valley-data/data/krobus-shopKrobus in the Sewers
stardew-valley-data/data/wizard-shopWizard's Tower
stardew-valley-data/data/guild-shopAdventurer's Guild
stardew-valley-data/data/casino-shopQi's Casino
stardew-valley-data/data/qi-shopQi's Walnut Room
stardew-valley-data/data/oasis-shopOasis Shop (Sandy)
stardew-valley-data/data/desert-trader-shopDesert Trader
stardew-valley-data/data/dwarf-shopDwarf shop
stardew-valley-data/data/medical-supplies-shopHarvey's Clinic
stardew-valley-data/data/bookseller-shopBookseller
stardew-valley-data/data/volcano-shopVolcano Dwarf shop
stardew-valley-data/data/island-trader-shopIsland Trader

When to use direct data vs query builders

Use direct data when

  • You need the complete dataset and will do your own filtering with Array.filter(), lodash, or similar
  • You are feeding data into a framework that expects plain arrays (e.g., a data table component)
  • You want to serialize the data to a file or send it over an API
  • You are building a custom index or lookup structure
import cropsData from 'stardew-valley-data/data/crops'

// Build your own Map for O(1) lookups
const cropById = new Map(cropsData.map(c => [c.id, c]))

// Use in a data table component
<DataTable rows={cropsData} columns={columns} />

Use query builders when

  • You want to filter and sort with readable, chainable method calls
  • You need to branch a query into multiple sub-queries
  • You want access to convenience methods like findByName() and count()
  • You are writing application logic that benefits from the query builder API
import { crops } from 'stardew-valley-data'

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

Combining both approaches

You can import raw data and wrap it in a query builder when needed:

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

// Custom pre-filter, then use query builder
const expensive = cropsData.filter((c) => c.cropSellPrice > 200)
const sorted = crops(expensive).sortByGrowDays('asc').get()

Next steps

Previous
TypeScript integration