Query prices form nexus-stats.com and warframe.market.
npm install warframe-nexus-query

A Node.js library for querying Warframe item prices from the Warframe.Market API.
- š Support for both Warframe Market API v1 and v2
- š Real-time price statistics (median, min, max, average)
- š„ Live trader information with online status (v2)
- š Full internationalization support (12 languages)
- š® Multi-platform support (PC, PlayStation, Xbox, Nintendo Switch)
- š¾ Smart caching with version-based invalidation
- š± Discord webhook integration ready
``bash`
npm install --save warframe-nexus-query
`javascript
import PriceCheckQuerier from 'warframe-nexus-query';
const querier = new PriceCheckQuerier({ logger: console });
// Query item prices
const results = await querier.priceCheckQuery('loki prime', 'pc');
console.log(results);
// Get Discord-formatted attachments
const attachments = await querier.priceCheckQueryAttachment('ash prime systems', undefined, 'pc');
console.log(attachments);
// Clean up when done
await querier.stopUpdating();
`
`javascript`
const querier = new PriceCheckQuerier(options);
Options:
- logger - Logger instance (default: console)marketCache
- - Custom cache implementation (optional)skipMarket
- - Skip market data fetching (default: false)
#### priceCheckQuery(query, platform)
Query item prices and return raw result objects.
Parameters:
- query (string) - Item name to search forplatform
- (string) - Platform: 'pc', 'ps4', 'playstation', 'xb1', 'xbox', 'xbone', 'swi', 'switch', 'ns'
Returns: Promise - Array of price summary objects
`javascript`
const results = await querier.priceCheckQuery('nova prime set', 'pc');
#### priceCheckQueryString(query, platform)
Query item prices and return formatted string.
Parameters:
- query (string) - Item name to search forplatform
- (string) - Platform identifier
Returns: Promise - Formatted price string
`javascript`
const priceString = await querier.priceCheckQueryString('maiming strike', 'pc');
console.log(priceString); // "Maiming Strike: 150p (avg)"
#### priceCheckQueryAttachment(query, priorResults, platform)
Query item prices and return Discord-formatted embeds.
Parameters:
- query (string) - Item name to search forpriorResults
- (Array|undefined) - Prior query results to use instead of fetching new dataplatform
- (string) - Platform identifier
Returns: Promise - Array of Discord embed objects
`javascript`
const embeds = await querier.priceCheckQueryAttachment('condition overload', undefined, 'pc');
// Send embeds to Discord webhook
await fetch(webhookUrl, {
method: 'POST',
body: JSON.stringify({ embeds }),
headers: { 'Content-Type': 'application/json' },
});
#### stopUpdating()
Clean up resources and stop background updates.
`javascript`
await querier.stopUpdating();
| Variable | Description | Default | Example |
| ----------------------------- | ------------------------ | --------- | ----------------------- |
| WARFRAME_MARKET_API_VERSION | API version to use | v1 | v2 |MARKET_TIMEOUT
| | API request timeout (ms) | 30000 | 60000 |MARKET_CACHE_PATH
| | Cache directory path | ./cache | /tmp/wf-cache |MARKET_V2_URL_OVERRIDE
| | Custom v2 API base URL | - | https://custom.api/v2 |
Switch between v1 and v2 APIs:
`bashUse v2 API (recommended)
WARFRAME_MARKET_API_VERSION=v2 node app.js
API v2 Features
The v2 API includes enhanced features:
- Version-based caching - Automatic cache invalidation when items update
- Real-time trader data - See who's online and ready to trade
- Trader activity - View current in-game activity (mission, dojo, relay, etc.)
- User reputation - Trader reputation scores
- Crossplay support - Trade across platforms
- Better performance - Optimized endpoints for faster queries
$3
`javascript
{
item: 'Ash Prime Systems',
prices: {
selling: { median: 15, average: 18.5, min: 10, max: 30 },
buying: { median: 12, average: 11.8, min: 8, max: 15 }
},
traders: [
{
user: 'TraderName',
platinum: 15,
quantity: 3,
status: 'online',
reputation: 156,
activity: 'In Dojo'
}
]
}
`Platform Aliases
The following platform identifiers are supported:
| Platform | Aliases |
| --------------- | ---------------------- |
| PC |
pc |
| PlayStation | ps4, playstation |
| Xbox | xb1, xbox, xbone |
| Nintendo Switch | swi, switch, ns |Response Objects
$3
Result object returned by
priceCheckQuery():`javascript
{
type: 'market-v2', // 'market' for v1, 'market-v2' for v2
item: 'Item Name',
platform: 'pc',
componentName: 'Set',
prices: {
selling: {
median: 100,
average: 105.5,
min: 80,
max: 150,
count: 25
},
buying: {
median: 90,
average: 88.2,
min: 60,
max: 95,
count: 15
}
},
traders: [ // v2 only
{
user: 'Username',
platinum: 100,
quantity: 2,
status: 'online', // 'online' | 'ingame' | 'offline'
reputation: 250,
activity: 'On Mission'
}
]
}
`$3
Result object returned by
priceCheckQueryAttachment():`javascript
{
title: 'Ash Prime Systems [PC]',
url: 'https://warframe.market/items/ash_prime_systems',
thumbnail: { url: 'https://warframe.market/static/assets/...' },
color: 0x336699,
fields: [
{
name: 'Selling',
value: 'š° 15p (median)\nš 10-30p range\nš¦ 25 orders',
inline: true
},
{
name: 'Buying',
value: 'š° 12p (median)\nš 8-15p range\nš¦ 15 orders',
inline: true
},
{
name: 'š¢ Online Traders',
value: 'TraderName: 15p x3'
}
],
footer: {
text: 'Warframe Market ⢠Updated 2 minutes ago'
}
}
`Examples
$3
`javascript
import PriceCheckQuerier from 'warframe-nexus-query';const querier = new PriceCheckQuerier({ logger: console });
// Search for an item
const results = await querier.priceCheckQuery('nikana prime', 'pc');
results.forEach((result) => {
console.log(
${result.item} - ${result.componentName});
console.log(Median sell price: ${result.prices.selling.median}p);
console.log(Median buy price: ${result.prices.buying.median}p);
});await querier.stopUpdating();
`$3
`javascript
import PriceCheckQuerier from 'warframe-nexus-query';
import { Client, GatewayIntentBits } from 'discord.js';const bot = new Client({ intents: [GatewayIntentBits.Guilds] });
const querier = new PriceCheckQuerier({ logger: console });
bot.on('interactionCreate', async (interaction) => {
if (!interaction.isChatInputCommand()) return;
if (interaction.commandName === 'price') {
const item = interaction.options.getString('item');
const platform = interaction.options.getString('platform') || 'pc';
const embeds = await querier.priceCheckQueryAttachment(item, undefined, platform);
if (embeds.length > 0) {
await interaction.reply({ embeds });
} else {
await interaction.reply('No results found for that item.');
}
}
});
bot.login(process.env.DISCORD_TOKEN);
`$3
`javascript
import PriceCheckQuerier from 'warframe-nexus-query';const querier = new PriceCheckQuerier({ logger: console });
const platforms = ['pc', 'ps4', 'xbox', 'switch'];
for (const platform of platforms) {
const results = await querier.priceCheckQuery('Trinity Prime Set', platform);
if (results.length > 0) {
const price = results[0].prices.selling.median;
console.log(
${platform.toUpperCase()}: ${price}p);
}
}await querier.stopUpdating();
`Testing
`bash
Run tests
npm testRun linter
npm run lintGenerate coverage report
npm run coverageGenerate API documentation
npm run build:docs
`Development
`bash
Clone repository
git clone https://github.com/WFCD/warframe-nexus-query.git
cd warframe-nexus-queryInstall dependencies
npm installRun tests in watch mode
npm test -- --watchLint and auto-fix
npm run lint:fix
`Contributing
Contributions are welcome! Please:
1. Fork the repository
2. Create a feature branch (
git checkout -b feature/amazing-feature)
3. Commit your changes (git commit -m 'feat: add amazing feature')
4. Push to the branch (git push origin feature/amazing-feature`)Licensed under the Apache License 2.0. See LICENSE for details.
- GitHub Repository
- npm Package
- Warframe Market API
- Discord Community
- Warframe Community Developers
- Built by the Warframe Community Developers
- Powered by Warframe.Market API
- Maintained by tobitenno and contributors