For advertisers
Reach gaming, subscription and commerce audiences across long-tail web video and display inventory — through your own DSP over OpenRTB 2.5 or through our self-serve cabinet, with a full supply chain and impression-level logs on every request. Every request we surface today carries an OpenRTB site object; app-level inventory is not yet available.
Two ways in
Adbustr Exchange is our own stack — supply endpoints, auction, bidder and reporting are written and operated by our team. Buyers connect at the layer that suits them: a standard OpenRTB 2.5 integration for the DSP you already run, or the self-serve advertiser cabinet when you would rather work directly against the exchange.
Adbustr is a direct supply source over OpenRTB 2.5. Your DSP receives our bid requests at its own bidder endpoint, responds with seatbid, and clears in our auction. No wrapper, no reseller hop, no proprietary bid protocol to implement.
The advertiser cabinet gives you campaign and creative management, country and device targeting, bid floors, budgets and pacing, plus delivery statistics down to the individual placement — without an intermediary between you and the exchange.
In-stream video (VAST 3.0), VPAID 1.0/2.0, banner, ADM and popunder — all served as web inventory through one demand connection. In-app formats delivered with an OpenRTB app object are not available today.
Request lifecycle
Seven steps run between an impression opportunity and the row it writes to our auction log: enrichment, quality filtering, demand selection, parallel fan-out, clearing, settlement and render. Each one is reportable per request — geography, domain, format, demand connection, bid, clearing price and the reason behind a no-bid.
Supply hits a format endpoint or POSTs an OpenRTB 2.5 BidRequest to /rtb/{uid}. Exactly one impression object per request.
Resonance resolves the real client IP, GeoIP country, region and city, and browser, OS and device class from the user agent.
Inbound validation runs before any demand is touched: device.ip and device.ua presence, browser allow-list, adult and illegal category blocks (IAB25 / IAB25-3 / IAB26), each rejection reason-coded in the log.
Eligible demand is chosen by geography, device type, zone allow and block lists, seat lists, and per-connection request throttling. Requests that fit nobody are never sent.
Every eligible buyer is called in parallel inside tmax (300–500 ms by default, per publisher and zone). Responses arriving after the window are discarded.
Bids are normalised to the base currency and ranked; second price is the default clearing rule, first price is available per demand connection.
The winner gets a server-side nurl call, valid losers get lurl with a loss code. The rendered creative carries burl plus our own impression and click pixels, and the request lands as one row in the auction log.
Controls you keep
Advertiser-domain blocklists (badv) travel with every request, IAB category blocks are enforced on inbound supply, and seat allow and block lists let you decide which buying seats are eligible on which inventory.
Mandatory device.ip and device.ua, a browser allow-list, and IAB25 / IAB25-3 / IAB26 category blocks, applied before fan-out and logged with a reason code. We run no IVT scoring of our own — the Anti-Fraud Policy lists the controls we do not operate.
A SupplyChain object (source.ext.schain, ver 1.0) is attached to every request we send, imp.secure is propagated so HTTPS inventory only ever gets HTTPS creatives, and our own ads.txt, app-ads.txt and sellers.json are published at their canonical locations.
Impression, click, win and billing events are logged per request and reconcilable one to one against your own numbers. MMP postback support and third-party verification support are available on request — you pick the vendors, we do not resell measurement.
Verticals we serve
Integration surface
ProtocolHTTPS POST · application/json · x-openrtb-version: 2.5Auction typeSecond price (at=2) default · first price (at=1) per connectionAuction timeouttmax 300–500 ms · late responses discardedBid responseseatbid[].bid[] — price (CPM), impid, adm, nurl, burl, adomain, crid, w, hCreative in admvideo: VAST tag URL (wrapped via VASTAdTagURI) · banner: HTML · pop: landing URLVideomimes mp4/webm/javascript/3gpp · protocols [2,3,5,6] · api [1,2]duration 1–150 s · bitrate 10–9000 kbpsIn-app SDKPilot — Unity 2021.3 LTS+ · Android minSdk 21 · requests transact as site, no app objectPrice macros${AUCTION_PRICE} · ${AUCTION_CURRENCY} · ${AUCTION_ID} · ${AUCTION_LOSS}Transparencysource.ext.schain (ver 1.0) · badv · imp.secureAuthIP allow-list + bearer tokenHow to start
01
Share your objectives, target markets, formats and the DSP you buy through. We come back with an inventory and pricing fit analysis for the geographies and formats you named.
02
Buying through a DSP: we exchange endpoint details, allow-list your bidder and validate schain, macros and notice handling. Buying self-serve: you get cabinet access, upload creatives and set targeting, floors and budgets.
03
Start on a narrow geo and format set, read the log-level reporting, then widen markets, formats and QPS. Blocklists, floors and per-country terms are tuned from your own delivery data, not from a rate card.
Tell us the markets, formats and DSP you work with. We reply with the inventory and pricing fit for exactly that setup.