Multi-Currency Support

LootLens API

31 Currencies Supported

Supported Currencies

LootLens supports 31 different currencies from Steam's official currency list!

Major Currencies

Code Currency Symbol Example Price
USD US Dollar $ $50.68
EUR Euro 140,--€
GBP British Pound £ £39.50
CAD Canadian Dollar CDN$ CDN$ 69.34
AUD Australian Dollar A$ A$ 75.61
NZD New Zealand Dollar NZ$ NZ$ 82.15
JPY Japanese Yen ¥ ¥7,500

All Supported Currencies by Region

Americas: USD, CAD, BRL, MXN, CLP, PEN, COP

Europe: EUR, GBP, CHF, NOK, PLN, TRY, UAH, RUB

Asia-Pacific: AUD, NZD, JPY, SGD, HKD, TWD, KRW, INR, IDR, MYR, PHP, THB

Middle East: SAR, AED

Africa: ZAR

Usage

Basic Request

# Default (USD)
curl "https://lootlens-real-time-game-market-data.p.rapidapi.com/default/LootLens?item=AK-47%20%7C%20Redline%20(Field-Tested)"

# Specify currency
curl "https://lootlens-real-time-game-market-data.p.rapidapi.com/default/LootLens?item=AK-47%20%7C%20Redline%20(Field-Tested)¤cy=AUD"

JavaScript Example

const getPrice = async (item, currency = 'USD') => {
  const response = await fetch(
    `https://lootlens-real-time-game-market-data.p.rapidapi.com/default/LootLens?item=${encodeURIComponent(item)}¤cy=${currency}`
  );
  return response.json();
};

// Get price in Australian Dollars
await getPrice('AK-47 | Redline (Field-Tested)', 'AUD');
// { "currency": "AUD", "lowest_price": "A$ 75.61", ... }

Python Example

def get_price(item, currency='USD'):
    url = "https://lootlens-real-time-game-market-data.p.rapidapi.com/default/LootLens"
    params = {'item': item, 'currency': currency}
    return requests.get(url, params=params).json()

# Get price in Canadian Dollars
get_price('AK-47 | Redline (Field-Tested)', 'CAD')
# { "currency": "CAD", "lowest_price": "CDN$ 69.34", ... }

How It Works

Intelligent Caching by Currency

Prices are cached separately for each currency:

Cache Key Format: {game_id}_{item_name}_{currency}

Examples:
- 730_AK-47 | Redline (Field-Tested)_USD
- 730_AK-47 | Redline (Field-Tested)_AUD
- 730_AK-47 | Redline (Field-Tested)_CAD

Benefits:

  • Same item can be cached in multiple currencies
  • 30-minute cache per currency
  • No cross-currency contamination
  • Accurate regional pricing

Use Cases

Regional Price Comparison

const compareRegionalPrices = async (item) => {
  const currencies = ['USD', 'EUR', 'GBP', 'AUD', 'CAD'];
  const prices = {};
  
  for (const currency of currencies) {
    const data = await getPrice(item, currency);
    prices[currency] = data.lowest_price;
  }
  
  return prices;
};

// Result:
// {
//   USD: "$50.68",
//   EUR: "140,--€",
//   GBP: "£39.50",
//   AUD: "A$ 75.61",
//   CAD: "CDN$ 69.34"
// }

Multi-Currency Trading Bot

# Monitor arbitrage opportunities across currencies
items_to_track = ['AK-47 | Redline (FT)', 'AWP | Asiimov (FT)']
currencies = ['USD', 'EUR', 'GBP', 'AUD']

for item in items_to_track:
    for currency in currencies:
        price_data = get_price(item, currency)
        store_price(item, currency, price_data)

Regional Discord Bots

// Automatically show prices in user's regional currency
const getUserCurrency = (guildId) => {
  const regionMap = {
    'US': 'USD',
    'CA': 'CAD',
    'AU': 'AUD',
    'GB': 'GBP',
    'EU': 'EUR',
  };
  return regionMap[getGuildRegion(guildId)] || 'USD';
};

client.on('messageCreate', async (message) => {
  if (message.content.startsWith('!price')) {
    const item = message.content.replace('!price ', '');
    const currency = getUserCurrency(message.guild.id);
    const data = await getPrice(item, currency);
    
    message.reply(`${data.item}: ${data.lowest_price} (${currency})`);
  }
});

Important Notes

Currency Format Differences

Steam formats prices differently per currency:

Currency Format Example
USD$50.68
EUR140,--€
GBP£39.50
AUDA$ 75.61
CADCDN$ 69.34
JPY¥ 7,500
Tip: Always display prices as-returned from the API. Don't try to parse and reformat - Steam's formatting varies by locale.

Best Practices

DO:

  • Use 3-letter ISO currency codes (USD, EUR, GBP)
  • Cache results on your side for less than 30 minutes
  • Display prices exactly as returned from API
  • Handle currency parameter validation

DON'T:

  • Try to convert between currencies yourself
  • Parse price strings (formatting varies)
  • Request same item+currency more than once per 30 min
  • Use invalid currency codes

Impact on API Usage

Call Consumption

Before Multi-Currency:

  • 1 item = 1 cache entry
  • Example: Checking AK-47 Redline = 1 call (USD only)

After Multi-Currency:

  • 1 item × N currencies = N cache entries
  • Example: Checking AK-47 Redline in 3 currencies = 3 calls

Cache Behavior

Time 0:00 - Request AK-47 (USD) → Cache miss → Steam API → 1,500ms
Time 0:01 - Request AK-47 (USD) → Cache hit → DynamoDB → 80ms ⚡
Time 0:02 - Request AK-47 (AUD) → Cache miss → Steam API → 1,400ms
Time 0:03 - Request AK-47 (AUD) → Cache hit → DynamoDB → 75ms ⚡
Time 30:00 - Caches expire, repeat

Migration Guide

Updating Existing Code

// Before (USD only):
getPrice('AK-47 | Redline (Field-Tested)')
// Always returned USD

// After (Multi-currency):
// Still works - defaults to USD
getPrice('AK-47 | Redline (Field-Tested)')

// Now you can also specify currency
getPrice('AK-47 | Redline (Field-Tested)', 'AUD')
getPrice('AK-47 | Redline (Field-Tested)', 'EUR')
No breaking changes! The API is backward compatible - omitting currency defaults to USD.

Recommended Pricing Tiers

Pro Plan Features:

  • 5,000 calls/month
  • 31 currencies supported
  • Regional pricing data
  • Perfect for international Discord servers

Ultra Plan Features:

  • 50,000 calls/month
  • Multi-currency arbitrage tracking
  • Regional market analysis
  • Global trading platforms