How PoE Ninja Works

The full path from a stash tab to a number on your screen, and from a ladder entry to a build overview. Two separate systems, two sets of assumptions, and a lot that gets discarded on the way.

Most explanations of this stop at "it reads game data." That is true and almost useless. What actually matters is which data, what happens to it in between, and what gets thrown away — because everything you can and cannot trust about a figure is decided somewhere in that chain.

Two feeds, not one

The single most common misunderstanding is treating this as one system. It is two. Economy data and build data come from different sources, with different coverage, different limits and different failure modes. They share a website and almost nothing else.

The whole architecture Two feeds, one site
The two columns never touch. A problem with one tells you nothing about the other, which is why "the site is wrong" is almost always a question about which half.

Feed one: from a stash tab to a price

When a player marks a stash tab for sale, its contents and asking prices become public. That feed is the entire basis of every economy page.

Economy pipelineAsking prices
01

A player prices an item

Someone puts a chest piece in a sale tab and writes a number on it. That number is a hope, not a transaction. It may sell in ten seconds or never.

02

The listing is published

The item, its modifiers and its asking price enter the public feed. Everything downstream reads from here, including the official trade site.

03

Listings are grouped by exact variant

Not by name. Corruption outcomes, roll ranges and league-specific versions each become their own bucket, because blending them would produce an average describing none of them.

04

Bad data is stripped out

Statistical outliers in both directions, plus patterns consistent with deliberate price manipulation. This step is what makes the figure usable and also what makes it a summary rather than an offer.

05

What survives becomes one number

Plus a listing count, which is the confidence attached to it, and a change figure comparing against the previous window.

Lost in this pipeline: anything traded privately, anything sold in bulk off-platform, and every actual sale price. The feed sees offers, never agreements. The item prices guide covers why that skews the result upward.

Feed two: from the ladder to a build overview

Entirely separate machinery. Characters, not items, and a hard cap on how many of them exist as far as the data is concerned.

Build pipelineRanked characters
01

The ladder ranks by experience

Each league produces a ranked list of characters. Some ladders rank on other measures, but experience is the usual one, and rank is relative — it moves without you doing anything.

02

Only the top slice is published

15,000 entries in Path of Exile, 1,000 in Path of Exile 2. Requests past that return nothing. This is the single most consequential limit in the whole system and it is set by Grinding Gear Games, not by any tracker.

03

Each character's setup is read

Class, ascendancy, passive allocation, gems, links and equipped items — provided the account's privacy settings allow it. Private accounts are invisible regardless of rank.

04

A main skill is inferred

Nothing in the data says which skill a player considers primary. It has to be worked out from what is equipped, which is why weapon swaps and trigger setups get filed under the wrong skill so often.

05

Characters are grouped and counted

Producing the popularity percentages you see. Those percentages are shares of the sampled slice, never shares of the player base.

Lost in this pipeline: everyone below the rank cap, every private account, and any sense of whether a build is good rather than merely present. If yours is missing, the eligibility checker narrows down which of these applies.

What updates when

"How often does it refresh" is the most asked question about this system and the least documented. What follows is observed behaviour rather than published specification, so treat it as a rough guide.

WhatRoughlyWhy it matters
Currency and item prices Continuous Recalculated as listings change. A price you read an hour ago may already have moved, especially early in a league.
Listing counts Continuous Moves with the prices, since it is the same pass over the same data. A falling count is often the earliest sign of a shift.
Build overviews Slower Reading thousands of characters is heavier work than reading listings, so build pages lag economy pages noticeably.
Your own character Slower A character created or renamed in the last hour will not appear until the next pass, regardless of eligibility.
Historical graphs Appended New points are added as they are computed. Past points are not revised, so a graph is a log rather than a model.

Observed, not documented. See our sources policy for how we label inference.

Reading one number backwards

The pipeline above runs forwards. In practice you always encounter it from the other end — a figure on a screen, with everything that produced it invisible. Here is the same chain traced in reverse.

You see 241.5 div  ·  84 listings  ·  ▲ 12.4%
241.5 is a filtered central value Not the cheapest, not an average of everything, and not a price anyone agreed to. It is what remained after outliers and manipulation were removed.
84 is the evidence behind it Eighty-four sellers currently list this exact variant. Enough to be indicative, not enough to be authoritative. Under twenty it would be closer to a guess.
Those 84 all sell the same variant Same corruption state, same roll bracket. A different variant of the same item is a separate row with a separate figure, potentially many times higher or lower.
They are the listings that have not sold Well-priced copies leave the pool within minutes. What remains skews toward the optimistic end, which nudges the figure up.
12.4% compares two past snapshots It describes a distance already travelled. Nothing in that number carries information about the next week.
The honest reading: eighty-four people currently want around 241 divine for this, and it has been getting more expensive. That is a considerably smaller claim than "it is worth 241 divine" — and it is the only claim the data actually supports.

What the architecture cannot do

These are not gaps anyone forgot to fill. Each falls directly out of the design above.

  • It cannot see sale prices. The feed publishes offers. No system anywhere records what a trade actually settled at, so nothing can report it.
  • It cannot see most players. The rank cap decides that, and it is set by the game rather than by any tracker.
  • It cannot know your intent. A main skill has to be inferred from equipment, which is why the inference is sometimes wrong in ways that look absurd to you.
  • It cannot predict anything. Every output describes a state that has already occurred, as covered in the price history guide.
  • It cannot process a trade. Nothing flows back toward the game. Buying and selling happens on the official trade site or in person.

Knowing where the limits come from is more useful than memorising them, because it lets you work out for yourself whether a given number deserves the weight you were about to put on it. That habit is the whole point of this site, and the beginner guide builds it from scratch if you are starting out.