API abuse bots: why your mobile and checkout APIs get attacked even when the website looks fine

Short answer: An API abuse bot talks to the endpoints behind your app or site rather than browsing pages. Because API responses are structured data, attackers get exactly what they want with far fewer requests: whether a login works, whether a gift card has balance, what a price is, or how much stock remains. The traffic looks technical and tidy, which is precisely why page focused defences miss it.

The four jobs APIs get abused for

Credential testing is the volume leader: leaked username and password pairs tried against login endpoints at a pace no human matches. Balance and validity checks come next, gift cards, promo codes, and account numbers tested one by one until live values respond differently from dead ones. Scraping follows, prices, stock levels, and product data pulled systematically for competitors or resale pricing.

The fourth job is transaction abuse itself: checkout endpoints used to test stolen cards with small purchases, reserve inventory without buying, or abuse refunds and account creation at scale. Each job has a signature in the data, usually a high failure rate, an unnatural sequence of calls, or one identifier, device, address, or payment token, appearing across many accounts.

Why page defences do not transfer

Challenges and JavaScript checks that stop page bots do nothing for a client that never loads a page. API clients present tokens and headers directly, and a bot that has copied a real app's request pattern can look convincing at the level of any single call. Defence has to move to behaviour and economics: rate and sequence analysis per identity, and making each attempt cost more than the information it returns.

Error design matters more than most teams expect. An endpoint that answers differently for a valid and an invalid gift card, account, or code is an oracle: it will be queried until it gives up its list. Uniform responses, consistent timing, and delayed confirmation through a separate channel remove the oracle without removing the feature for real customers, who rarely test values one after another.

Controls that work at the API layer

Authenticate and authorise every call as if the client were hostile, because some are: short lived tokens, per account scopes, and server side checks on every sensitive action rather than trust in the app flow. Rate limit by several keys at once, account, device, network, and payment instrument, since attackers rotate whichever single key a naive limit watches.

Add friction selectively where abuse concentrates: step up verification after failed attempts, require re authentication for payout or email changes, and queue rather than instantly confirm sensitive results. Selective friction keeps the honest majority fast while making bulk testing slow and expensive, which is the economic shift that actually ends most abuse campaigns. Attackers optimise for cheap answers.

Measure abuse before and after

Instrument the endpoints attackers love: login success and failure ratios, balance check volumes per account, code redemption attempts, and checkout declines per instrument. A healthy baseline makes campaigns visible as they start, not when finance notices chargeback drift. Track false positives with equal care, because a control that locks out travellers or shared household accounts will be quietly disabled by support within a month.

Review the data with the fraud and platform teams together. Bot defence, fraud, and API reliability are usually one problem viewed from three desks, and the attacker does not respect the org chart. The sites that handle API abuse best treat endpoint behaviour as a single signal picture, reviewed weekly, with limits tuned from evidence rather than set once and forgotten.

Keep reading: Inventory hoarding bots: how automated carts lock up stock real shoppers cannot buy, Credential stuffing attacks on retail accounts: borrowed passwords at machine speed, and Fake account creation bots: why stores drown in junk signups cover the nearby cases in this series.

Frequently asked questions

Why do bots target APIs instead of web pages?

Because APIs return clean structured answers with fewer requests: whether a login works, a code is live, or stock remains. Page challenges and JavaScript checks never trigger for a client that calls endpoints directly, so page defences miss this traffic.

What is an oracle endpoint?

An endpoint whose responses differ observably between a valid and an invalid value, such as a gift card or promo code. Attackers query it repeatedly to harvest which values are live. Uniform responses and consistent timing remove the signal.

Which rate limits work against API abuse?

Limits keyed on several identifiers at once, account, device, network, and payment instrument, because attackers rotate single keys. Behaviour and sequence analysis plus selective step up verification make bulk testing slow and costly.

How should teams measure whether controls work?

Track login failure ratios, balance check volume per account, code attempt rates, and checkout declines per instrument against a baseline, and track false positives too. A control that blocks real customers will be disabled, however well it stops bots.

See your own numbers.

A free bot-traffic audit shows the human-automated split in your live traffic - no code changes, no commitment.

Get a free bot-traffic audit