How instabid.lol actually works
The homepage is one sentence and a form. “Add your username. See where you land. Outbid whoever’s above you.” That is not a metaphor. That is the write path.
This post is the manual. It exists because the last 48 hours of the internet filled up with leaderboards that look the same in a screenshot and work differently in the server. Some take your money. Some take a URL. Some take an App Store ID. Ours takes a public Instagram username and a $5 chip that is not a charge.
If you want the origin — Jonathan Wilke, 11:08pm, the live tweet — that is a different post. This one is the pipes.
What you type
Any public Instagram username. With or without the @. We strip the @. We lowercase. We only accept the real character set Instagram uses: letters, numbers, periods, underscores, 1 to 30 characters. If you paste a URL, that is the wrong site. If you paste an email, also wrong.
You do not make an account here. There is no password, no magic link, no Google button. The add bar is the whole identity system: you know a handle, you put it in.
Private accounts are a dead end. We only read what Instagram already shows the public. If the scraper cannot see a profile, you get an error, not a fake row. We will not ask you to log in to Instagram on our behalf. We will not ask you for a session cookie. Anyone who DMs you asking for that in our name is not us.
What we fetch
When a handle is new to us, we pull the public profile and store it.
What lands in the database:
- username
- display name
- bio
- avatar (then we re-host it)
- follower count
- following count
- post count
- verified or not
- private or not (private should not make it onto the public board)
- business flag
- external URL, if the profile has one
- the time we scraped it
That is the same stuff you can see without logging in. We keep a raw blob for debugging on our side. We do not keep your Instagram password, because we never had it.
The avatar step matters more than it sounds. Instagram’s image CDNs expire. If we hotlinked the profile picture, the board would fill with broken circles in a week. So we copy the image into our own object storage and serve it from /api/img/thatusername. The little roundel on the row is ours. If Instagram rotates the original, the board does not care.
When we fetch again
Not on every page view. That would be rude to Instagram and slow for you.
If we have never seen the handle, we scrape.
If we have seen it, and the snapshot is younger than six hours, we do not scrape. We treat the submit as a bid: price goes up by $5, rank recalculates, you get the row back.
If we have seen it, and the snapshot is older than six hours, we scrape again, update the public fields, and keep the existing bid. A stale refresh is not a free bump and not a reset. Your $40 stays $40. The follower count can change. The price does not, unless you were in the fresh-bid branch.
Six hours is a truce. New enough that a profile that just blew up is not frozen in amber for a month. Old enough that a popular handle cannot be used as a scrape cannon.
How the number works
Opening bid: $5.
Every re-add of a still-fresh handle: +$5.
There is no “type your own amount” box. There is no “pay $14,018 to lock #1.” That is outbid.lol. They have a real merchant of record. They have a Polar webhook. Jonathan was checking that webhook thirteen minutes before launch. We do not have that machine.
On instabid the dollar sign is a unit. It is a chip you can read from across a room. It is not a card network event. The about page says this in smaller words: there is no real money involved and nothing is for sale. I am saying it again here because someone will screenshot a $50 row and accuse us of charging $50. We did not. Someone tapped add ten times.
Could we have used points, or bananas, or “clout”? Yes. We used dollars because everyone already knows what a bigger dollar number means, and because the genre we are standing in — the outbid genre — already trained people to read a leaderboard that way. Using a different unit would have been cute and worse.
Ties: the list is ordered by price, high to low. If two handles somehow share a price, they keep their stored order until one of them bumps. In practice, +$5 on every bid makes exact ties less of a sport than they are on a board where you type arbitrary amounts.
What the row shows
Rank. Avatar. Display name. Verified tick if we have one. Handle, linked out to instagram.com/thatname. Bid. Follower count, shortened the normal way — 1.2K, 3.4M.
We show followers on a bid-sorted board on purpose. The inversion is the joke. Nike at ~291 million followers can sit under a 400-follower account if the 400-follower account has the higher chip. Hiding the 291 million would make that quieter. We do not want it quieter.
Top three get a little extra paint. After third place there is a “TOP 3” rail, then the rest of the list. That is cosmetics. The sort is the same all the way down.
Empty state, if you are here extremely early: “No one on the board yet. Add the first handle above.” That sentence will age. I am leaving it in the product anyway.
What we store, and how to get off the board
On privacy, the short version from the about page is still the true version. We store public profile fields. If your handle is here and you do not want it here, we remove it. No form maze. No “please allow 5–7 days.” Say so and it goes hidden.
Hidden is a flag. It is not a dramatic public hanging. The row stops showing up on the leaderboard. We are not interested in keeping people who do not want to play.
We do not sell the list. We do not have a “partner API” for your outreach agency. The public leaderboard endpoint is for the page you are looking at.
Why the board is fast
Reads do not scrape. The homepage asks /api/leaderboard, which reads the database, which already has the profiles. That is why a refresh does not sit on a spinner while someone else’s Instagram page loads.
Writes are the only time we talk to the scraper, and only when the handle is new or stale. The add button says “Fetching the public profile…” during that window because that is the honest status. If we already have you and you are fresh, the same button is really saying “bump the bid,” even if the label does not change.
Avatars come from our storage, not from Instagram’s CDN, so the circles should not flicker.
The site is an Astro front-end on Cloudflare’s edge, with a D1 database for the rows. You do not need that sentence to use it. You might want it if you are wondering why a toy leaderboard is not hosted on a laptop.
What this is not
Not Instagram. We are not affiliated with Meta. The footer says so. A verified tick on our board means the public profile had one when we fetched it, not that we issued it.
Not outbid.lol. They take real money. They rank URLs and products. They did 200k visitors and $21,499 on day one, $42k and a million visitors by hour 36, and a six-figure week on their about page. We linked them because we started by reading that launch. We did not copy the checkout.
Not an ad network. There is no “boost.” There is no pixel. There is no audience lookalike. There is a sorted list.
Not a growth hack we will sell you a course about. If someone on X is DMing you a $99 “how to win instabid” PDF, that person does not work here. The winning move is tapping add.
Not a scrape of private data. Bios, public avatars, public counts. That is the box. If Instagram stops showing it, we stop storing new copies of it.
How this feels different from the clones in your feed
A lot of the .lol boards this week are checkout forms with a list attached. The list is bait. The form is the business.
Our list is the business, and it is a bad business on purpose. There is no Polar event to miss. There is no “highest bid $14,013” headline to fake. The $5 chip is there so the sort has a unit, and so the outbid sentence still works when you say it out loud.
If you came from Jonathan’s board looking to park a landing page in front of indie hackers, turn around. That board is still live. joni.ai, outrank.so, crowdreply, Comp AI — those fights are theirs. If you came because you want @yourhandle sitting in a ridiculous order next to accounts you will never out-follow, you are in the right form.
Failure modes, said plainly
The handle is not found. Wrong spelling, banned account, or Instagram did not return a public profile. Fix the spelling before you assume we are down.
The scrape fails. That is on us and on the fetch path, not on you. Try again later. We would rather show an error than invent a row.
Someone else added you. Public username, public board. If that is a problem, we hide you. If it is a game, bump the bid.
The follower number looks old. It might be, by up to six hours, unless you just triggered a stale refresh. We are not a live follower tracker. There are other sites for that, and they are exhausting.
The avatar is a bit low-res. We stored what we got. A later refresh can replace it.
You tapped add ten times and now you are #1 and you feel empty. That is the product working. Status is cheap here. That is the point. On Instagram it is expensive and fake. Here it is cheap and fake in a way you can see.
A note on “real data”
We say “real data, fetched once” because the dummy leaderboards of the last decade trained everyone to assume avatars are generated and names are lorem. Ours are not. If @nike is on the board, that is the Nike profile, the Nike follower count from the last fetch, the Nike avatar we copied. If a 400-follower account is above them, that is also a real profile.
The bid is the fake part. We are honest about which part is fake.
outbid’s bid is real money. That is a different contract with the user. Mixing the two — showing a dollar amount that looks like Polar when it is a counter — would be the actual scammy version of this. So I will keep repeating it until it is boring: $5 is a chip.
If you only remember four steps
- Type a public handle.
- We fetch the real profile, or we bump a fresh one by $5.
- The board sorts by that number, not by followers.
- If you should not be on it, we take you off.
Everything else is plumbing: six-hour freshness, re-hosted avatars, Cloudflare, no login, no card, credit to Jonathan in the footer because we inspected his tweet and then built this instead of another URL auction.
Go add someone. Preferably yourself. Preferably not in a DM thread where a stranger is trying to sell you a spot. There are no spots. There is a form.