Category Archives: Team Fortress 2

The Anatomy of Price: Decoding Backpack.tf Websocket Events

Summary: The community price reflects the base item (immutable properties), while suggested accounts for instance-specific modifications.

When parsing the Backpack.tf websocket API, it is important to understand the distinct roles of the three price fields:

  1. Usage of suggested: This field is the primary source for modified items (Parts, Paint, KS), as it accounts for those properties.
  2. Usage of community: This field acts as a baseline for the base item. It ignores attachments and may be null for specific variants.
  3. Usage of steam: This field matches the Steam Community Market hash name and may be missing for complex modified items that lack a direct SCM listing.

Price Divergence in Killstreak Variants

The most striking proof of this architecture comes from analyzing items where the “Immutable” base value diverges from the “Instance” value.

Case 1: The Invisible Killstreak (Null Community Price)

For high-tier killstreaks, the community price often vanishes entirely because users cannot vote on specific tiers.

Item: Professional Killstreak Festive Huntsman

  • Observation: The community field is null, but suggested correctly values the Pro Kit (~6 keys) on top of the base bow (~4.6 keys).
// Tier 3: Professional Killstreak Festive Huntsman
"price": {
  "community": null,          // <--- Fails to match "Pro KS" variant
  "suggested": {              // <--- Algorithmic sum (Base + Pro Kit)
    "raw": 603.14,
    "short": "10.25 keys"
  }
}

Compare this to the base item, where they match perfectly:

// Tier 0: The Festive Huntsman
"price": {
  "community": {              // <--- Matches base pricelist
    "short": "4.1–5.1 keys"
  },
  "suggested": {
    "short": "4.6 keys"
  }
}

Case 2: The "Blind" Community Price (Parts & Paint)

When an item does have a community price, that price is "blind" to attachments.

Item: Strange Thermal Tracker (with Paint & Parts)

  • Observation: community returns the cheap base Strange price. suggested adds nearly a key of value for the parts.
"price": {
  "community": {
    "value": 0.75,            // <--- Base Strange Price (Blind to parts)
    "short": "0.75–1.1 keys"
  },
  "suggested": {
    "short": "1.67 keys"      // <--- Includes Parts & Paint Value
  }
}

The Three Pillars of Value (Definitions)

1. steam: SCM Listing

  • What it is: Lowest/Median SCM listing.
  • Behavior: Strictly tied to the Steam Market Hash Name. Often missing (null) for kit-applied items because SCM listings are for the base item or the kit, not the combined asset.

2. community: Immutable Baseline

  • What it is: User-voted suggestions from the main stats page.
  • Behavior: A Baseline Lookup based on Defindex + Quality. It blindly ignores mutable properties.

3. suggested: Instance Value

  • What it is: Algorithmic estimation of the specific instance.
  • Behavior: Sums Base + Value(Parts) + Value(Paints) + Value(Killstreak). This is your "True" market estimate for modified items.

Spells AI

Howdy Everyone. I trained machines to predict Team Fortress 2, TF2, spell prices. I published the code at my joekiller spells repo. Don’t forget, you can get Splack, spell listings crack, at https://discord.gg/BSSrHRd.

My discord has nearly every spell listing since April 2022. It predates the backpack.tf websocket service and is sophisticated like your mother.

Check out couter.tf tf2 spells counts and counter.tf post life tf2 spells counts to have a better idea of how rare a spelled item is.