A bidder pays to open an ad request before it knows if it wants it

Updates10 Sep 2026Damian Naglak
A bidder pays to open an ad request before it knows if it wants it

I measured what it costs a bidder to open a request it will never bid on: about 7 microseconds of CPU and 13 kilobytes of memory, spent before anything looks at whether it’s wanted.

Dynamic Traffic Engine, donated to IAB Tech Lab by Amazon Ads, is a standardized proposal for not sending those requests at all: the buyer publishes a list of what it doesn’t want, and the seller drops matching requests before they go out. The buyer’s half comes down to one step every DSP pays however its bidder is built: turning 2KB of incoming request into a structure the bidder can reason about.

The test is a thousand real bid requests from live traffic, decoded in Go, measured three times. Opening one costs 7 microseconds and 13 kilobytes, and the JSON decode is most of that. At that point nothing has been checked against a single campaign. A parser has to read through the text to find a field. So a check that only looks at the impression type, building nothing and allocating nothing at all, still cost a third of the full decode. There’s no cheap look at a bid request.

Say a bidder takes 500k requests a second and only buys video. Count formats in live traffic and two thirds carry video, so the other third is banner, native or audio: unbiddable at any price. That leaves 165,000 requests a second, before geography or publisher narrows it further. Multiply by the 7 microseconds and 13 kilobytes each and that comes to about a core of CPU and 2 gigabytes of memory a second, spent on requests nobody could bid on. All of it predictable from one field.

And that is only the raw work of opening the request. A bidder with a model loaded in the same container pays far more per request, and the memory that model needs is what decides how many instances have to run. Every request nobody could bid on takes a slot in that, so the waste turns up as instance count rather than microseconds.

Nothing inside the bidder fixes this, because the cost lands the moment the request arrives and sending it was somebody else’s decision. That’s a good use-case for DTE. Telling the seller what a buyer won’t bid on is the only thing that takes the work to zero.