The breadth wall
Course 1's wall was freshness: your watchlist could not stay current. This one is different in kind, and you find it the same way — by measuring your own tool rather than being told about it.
Measure what a screen costs you
Note apiRequests from /user, run one screen, note it again. On a well-built screener that difference is 5 — the price of one /screener request, measured 2026-08-26. Reading the meter is free and does not distort the reading. Note that 5, because it is not the 1 you would assume: a screen is one request but five calls.
Now count how many screens a working session actually takes. Tuning filters is the whole activity: change a threshold, look, change it back, add a condition. Twenty attempts to get one screen right is normal and not wasteful — it is what screening is.
So: cost per attempt × attempts per session × sessions per week, against your daily allowance. Do that arithmetic with your own numbers now.
For most free allowances, one careful session fits and a morning of exploration does not. That gap is the first half of the wall, and notice how it differs from course 1: there the limit throttled keeping something current, here it throttles thinking.
The half that more calls cannot fix
Now the real one.
Your universe was 51,215 US instruments, of which 18,012 were common stock. A screen across all of them is one request. But the moment you want to screen two exchanges, or reach for a field your plan does not carry, or go past the row limit your plan permits, you are not asking for more calls — you are asking for access to data that is not in your tier at all.
This is the shape of it: a screener's usefulness scales with how much of the market it can see. A screen over a third of a market is not a third as good as a screen over all of it — it is a screen that silently omits whatever it cannot reach, and gives you a clean, confident, incomplete answer.
Incompleteness you cannot see is worse than a limit you can. Which is why the lesson on universes came first.
Write the sentence down
Add to the PLAN.md section you started in course 1:
Cost per screen attempt: ___ calls
Attempts in a real session: ___
Sessions my allowance buys: ___ per week
Instruments I can see: ___ of ___
What I cannot screen: _________________
That last line is the honest output. It usually reads like "everything outside one exchange", or "anything needing a field my plan does not include".
What upgrading changes, precisely
Nothing about your code, again. The same screener, the same filters, the same saved screens — pointed at more of the market, with room to explore rather than ration.
And the same honesty as course 1: if you screen one exchange once a week and it fits, it fits, and you should not pay for anything. Live pricing is on the pricing page and deliberately not quoted here, because a number written into a lesson goes stale and then lies to whoever reads it next.
The finance behind it
Pulling a whole exchange at once is its own technique, with its own arithmetic: How do you pull fundamentals for a whole exchange without melting the pipe?
Try it now
Fill in the five lines with measured numbers. Then run the experiment that makes breadth concrete: screen one exchange, note the count, and work out what fraction of the instruments you could theoretically care about that represents. The number you get is the one that decides whether this tool is finished.