Another way you can do this is by changing the offer and the language of the offer on the landing page. From "Fill out this form to get a free book!" to "The first 1,000 people who fill out this form will get a free book and everyone else will get an ebook copy!"
Or, a common, "Fill out this form to get a free book!*" and a "while supplies last" disclaimer on the page.
There's really not an easy way to do this automatically through a trigger. Fields are built on a few different levels, and interacting between one that's easily dynamic (e.g., lead fields) and one that's primarily static (e.g. program tokens) gets difficult.
As an excercise in absurdity and ignoring reality's diminishing-returns, you could create a webhook upon each successful form fill that could increment the program's token, which let's just call {{my.Success Number}}. The webhook would have to push to a REST/SOAP API that would watch for each additional hit and then increment a program token's integer. Then you could have JavaScript on the page itself with that token conditionally hiding or changing the offer based on the value of that program token. Or the API call itself could do the logic and change the program token appropriately, which could affect the program tokens on the page.
Best,
Edward Unthank | Founder, Etumos