The Bots Racing for Government Appointment Slots
A visa appointment portal opens a new block of slots at midnight. Within seconds, most of them are gone. Not to people refreshing a browser tab with sleepy eyes, but to scripts that never blinked in the first place. This happens on DMV renewal systems, passport offices, unemployment portals, and consulate booking pages around the world. The common thread is scarcity: a government system built for a manageable volume of appointments, hit by demand that outstrips supply by orders of magnitude. Wherever that gap exists, booking bots show up to exploit it.
This isn’t a story about a single exploit. It’s a story about what happens when a calendar becomes a scarce resource and the software meant to protect it wasn’t built with that scarcity in mind.
What a booking bot is actually watching
Most appointment systems didn’t start as adversarial environments. They started as ordinary web forms: pick a location, pick a date, pick a time, submit. Somewhere behind that form sits an API endpoint that returns available slots, usually as JSON, sometimes rendered server-side into HTML. That endpoint is the real target. A bot doesn’t care about the pretty calendar widget. It cares about the response that tells it a slot just opened.
The simplest version of this is a polling loop that checks the availability endpoint on a short interval, waiting for the array of open dates to change from empty to non-empty. The moment it does, the bot fires the same request a human would send by clicking through the form, except it does so before a human can process what’s on the screen. Slower human competitors are, by design, not competing on equal terms.
More sophisticated setups don’t just poll and pounce. They pre-fill session state ahead of time: log in, get past whatever identity or CAPTCHA gate exists, and sit at the final step with a valid session token, waiting only for the availability check to flip green. That shaves out the steps that take the most time, which is usually authentication and form validation, not the final booking click itself.
Sessions, not just requests
Appointment systems that only defend against raw request volume miss half the problem, because a lot of this activity doesn’t look like a flood. It looks like a small number of very well-timed, very well-formed requests. That’s what makes it hard to catch with the tools built for generic DDoS or scraping defense.
The bots that do the most damage to fairness aren’t the loud ones. They’re the ones running through a real browser engine, with a real session, a real cookie jar, and timing that mimics a human just clicking fast. Detection systems that only look at request rate per IP address will wave that traffic through, because it never crosses a rate threshold. What gives it away instead is the shape of the session: identical mouse movement patterns (or their complete absence), form fields filled in a suspiciously uniform number of milliseconds, or a browser fingerprint that matches thousands of other “different” sessions a little too closely.
This is why appointment platforms that take the problem seriously lean on the same device and behavioral fingerprinting infrastructure used by e-commerce and ticketing sites: canvas and WebGL fingerprints, font enumeration, timing entropy between events, and consistency checks between what a browser claims to be and how it actually behaves. A browser that reports itself as a specific version of a specific mobile device but renders fonts and timing like a headless desktop automation tool is a useful tell, and one that’s much harder for an operator to fully paper over than a simple IP rotation.
Why CAPTCHAs alone don’t stop them
CAPTCHA is the most visible defense on these portals, and also the most misunderstood. A CAPTCHA doesn’t stop automation. It stops naive automation, and it adds friction and cost to everything else. Modern challenge systems assign a risk score to a session based on dozens of signals before ever showing a puzzle, and low-risk sessions often skip the challenge entirely. That scoring, not the puzzle itself, is where most of the defensive work actually happens.
The puzzles that do get shown exist as a costly checkpoint: something that’s cheap for one honest person doing one honest booking, but expensive to clear at the volume and speed that a slot-sniping operation needs. Whether that checkpoint holds depends on how much it costs to defeat relative to the value of the appointment slot, which brings the whole problem back to economics rather than pure engineering. A defense that’s individually beatable can still work if it makes bulk operation unprofitable.
The resale economy behind the scramble
The reason this problem persists on government systems specifically, more than on say a retail checkout, is that the prize isn’t a product. It’s access to a bureaucratic process that has no substitute. A visa applicant in a country with a chronically overbooked consulate doesn’t have an alternative retailer to buy from. That inelasticity is what makes slots valuable enough to justify automating for.
Where there’s a valuable, scarce, transferable resource, an informal secondary market tends to follow. Booked appointment slots get held by intermediaries and then handed off, sometimes for a fee, to applicants who couldn’t get through the front door in time. This isn’t universal, and it isn’t the only reason bots exist on these systems (some people just automate for themselves, trying to beat a broken queue rather than profit from it), but it’s the dynamic that keeps well-resourced operators in the game even after individual accounts or IP ranges get burned. As long as reselling a slot is more profitable than the cost of running and replacing the automation that gets it, someone will keep running it.
How agencies fight back
The defensive playbook on government booking systems has converged on a few recurring patterns, borrowed heavily from industries that dealt with this earlier, like ticketing and sneaker retail.
Virtual waiting rooms are one of the most common. Instead of letting every request hit the booking endpoint directly, the system funnels traffic through a queue that assigns each session a randomized position, which flattens the advantage of raw request speed. A bot that fires a request in ten milliseconds gets the same random queue position as a human who takes ten seconds, because the queue, not the request timestamp, decides order.
Identity binding is another layer. Requiring a slot to be tied to a specific, previously verified identity document, rather than an anonymous account, cuts down on the value of scraping up dozens of slots to resell, since the buyer at the other end may not match the identity the slot was issued to. It doesn’t eliminate the secondary market, but it raises the friction of operating in it.
Rate and pattern anomaly detection sits underneath both of those. Providers like Cloudflare, Akamai, and HUMAN Security build models that look for the fingerprints of automation across large pools of traffic: unnatural consistency, known automation frameworks’ default headers or timing, and correlation between sessions that claim to be unrelated people but share too much infrastructure in common, like proxy exit nodes or device fingerprints.
None of these measures are complete on their own. Waiting rooms can be gamed by running many parallel sessions to get many chances at a good queue position. Identity binding pushes fraud downstream into document forgery or coerced verification rather than eliminating it. Fingerprinting models get retrained constantly because the traffic they’re modeling adapts to them just as fast. What actually holds a system together is usually a combination of all of these, tuned specifically to the shape of demand on that particular portal, and revisited constantly as the operators on the other side change tactics.
The arms race has no finish line
What makes government appointment systems an interesting case study, compared to retail bot fights, is how little room there is to just raise prices or add capacity to solve the underlying scarcity. A consulate can’t 10x its appointment capacity because bots are eating the calendar. A DMV can’t dynamically price a driver’s license renewal. The demand and supply mismatch that makes these slots worth automating for isn’t going away, which means the defensive side of this fight is permanent, not a problem to be solved once and closed out.
That’s the pattern across almost everything covered on this channel: wherever a system creates artificial scarcity around something people genuinely need, automation shows up to exploit the gap, and defense becomes an ongoing discipline rather than a one-time fix.
If you want more breakdowns of how detection, fingerprinting, and automation actually work under the hood, from both sides of the fight, come find us at The Hidden Internet.
Get new guides and videos first — join the Telegram channel.