Business Logo
2,300+ screens across London, Toronto & Seoul

Book outdoor ads
from your browser.

Self-service DOOH advertising with no contracts, no minimum spends, and no middlemen. Browse the map, pick your screens, go live today.

2,300+
Screens available
3
Cities (and growing)
Pay/play
Billing model
0
Contracts required

Up and running in minutes.

No sales calls. No RFPs. No waiting. Browse, book, and broadcast — all from one page.

01

Browse the map

Find screens by city, type, or location. Filter to exactly what you need — down to individual panels.

02

Schedule your campaign

Pick your screens, set go-live times, and upload your creative. Only pay when your ad actually plays.

03

Go live & optimize

Track impressions, plays, and costs in real time. Pause, adjust, or cancel anytime — no contracts.

Every format. Any budget.

From highway billboards to gym screens — set your budget and only pay per play.

🛣️

Billboards

High-traffic roadside boards. Maximum visibility.

$0.20–$8.50per play
🚇

Transit

Train stations, subway, bus shelters.

$0.05–$1.60per play
🛍️

Retail & Malls

High-intent audiences near point of purchase.

$0.07–$0.70per play
🏢

Office Towers

Lobby and lift screens in corporate precincts.

$0.07–$0.35per play
💪

Gyms

Captive audience of active, receptive consumers.

$0.05–$0.30per play

Fuel Stations

The only time drivers stop and look.

$0.05–$0.30per play
Only with Oxinion

Geofence-triggered
DOOH campaigns.

Set a geofence around any screen. When a customer walks within range, Oxinion fires your pipeline automatically — logging the impression, pushing a coupon notification, and updating your campaign analytics. All in real time.

Screen enters geofence → pipeline triggers instantly
Push a coupon notification as the impression logs
Zero manual steps — fully automated on every play
Build a Workflow
dooh-campaign.ts
// 1. Geofence around the DOOH screen (30m radius)
const { geofence } = await oxinion.geofencing.create({
  name: "King St Billboard",
  lat: 43.6448,
  lng: -79.3947,
  radius: 30,
  triggerType: "enter",
});

// 2. Pipeline: log impression → push coupon
const { pipeline } = await oxinion.pipeline.create({
  name: "DOOH Impression",
  geofenceId: geofence.id,
  triggerEvent: "enter",
});

await oxinion.nodes.create({
  pipelineId: pipeline.id,
  type: "invoke",     // log impression to your API
  orderIndex: 0,
  config: { target: "https://api.yoursite.com/impressions",
            method: "POST" },
});

await oxinion.nodes.create({
  pipelineId: pipeline.id,
  type: "notify",     // push coupon to nearby user
  orderIndex: 1,
  config: { title: "You\'re near our billboard!",
            body: "Tap for 20% off →" },
});

We work with your budget.
Not the other way around.

No minimum spends. No contracts. No asking permission to pause. Start a campaign in minutes and stop it just as fast.

Find Screens Near You
No contracts or minimum spends
Pay only for impressions delivered
Pause or cancel campaigns instantly
Real-time analytics dashboard
Geofence triggers for automated campaigns
Multi-screen campaign management

Real-time reporting on everything.

Impressions, plays, costs, and geofence activations — updated live. Export anytime.

Plays

Every ad play tracked individually with timestamp and screen ID.

Impressions

Estimated audience reach per play, by screen and time of day.

Geofence events

Pipeline triggers correlated directly to DOOH impressions.

Ready to get on the board?

2,300+ screens. Pay per play. No contracts. Launch today.