
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
warframe-nexus-query
Advanced tools
A Node.js library for querying Warframe item prices from the Warframe.Market API.
npm install --save warframe-nexus-query
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();
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<Summary>> - Array of price summary objects
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 identifierReturns: Promise<string> - Formatted price string
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 identifierReturns: Promise<Array<Object>> - Array of Discord embed objects
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.
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:
# Use v2 API (recommended)
WARFRAME_MARKET_API_VERSION=v2 node app.js
# Use v1 API (legacy)
WARFRAME_MARKET_API_VERSION=v1 node app.js
The v2 API includes enhanced features:
{
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'
}
]
}
The following platform identifiers are supported:
| Platform | Aliases |
|---|---|
| PC | pc |
| PlayStation | ps4, playstation |
| Xbox | xb1, xbox, xbone |
| Nintendo Switch | swi, switch, ns |
Result object returned by priceCheckQuery():
{
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'
}
]
}
Result object returned by priceCheckQueryAttachment():
{
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'
}
}
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();
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);
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();
# Run tests
npm test
# Run linter
npm run lint
# Generate coverage report
npm run coverage
# Generate API documentation
npm run build:docs
# Clone repository
git clone https://github.com/WFCD/warframe-nexus-query.git
cd warframe-nexus-query
# Install dependencies
npm install
# Run tests in watch mode
npm test -- --watch
# Lint and auto-fix
npm run lint:fix
Contributions are welcome! Please:
git checkout -b feature/amazing-feature)git commit -m 'feat: add amazing feature')git push origin feature/amazing-feature)Licensed under the Apache License 2.0. See LICENSE for details.
FAQs
Query prices form nexus-stats.com and warframe.market.
The npm package warframe-nexus-query receives a total of 64 weekly downloads. As such, warframe-nexus-query popularity was classified as not popular.
We found that warframe-nexus-query demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.