GoAdserver
Live demo

Search Ads: ads for what your visitors are looking for

Search Ads show native ads in your site's own search box, picked by what the visitor types. Type "hotel amsterdam" and you get hotel ads. Type "running shoes" and you get running gear.

Every box on this page is a live Search Ads zone. They serve real ads from a demo account with 15 made-up advertisers, so go ahead and type.

1. The visitor typesThe goCtrl search plugin waits for a short pause, then sends what was typed as the ad request's keywords.
2. The ad server matchesThe search is matched against campaign keywords. Campaigns without keywords serve on any search, so the box is never empty.
3. Ads show in your designThe results use your own templates: full ad cards, compact suggestion rows, light or dark.
DEMO 1

A search box we draw for you

No search box on your site yet? Paste one placeholder and the plugin draws the box, with the ads below it as full cards: image, title, description and the advertiser's link. Searches the visitor makes are remembered as recent searches on their device.

Zone #12512315 · mode box · layout card · 3 ads per search · theme light · 5 recent searches

Show the code
<!-- once per page, in <head> -->
<script src="https://g2.gsrv.dev/ctrl/19460.js"></script>

<!-- where it goes -->
<div id="gcs_box_12512315"></div>
<script>
goCtrl.add({"plugin":"search","fn":"init","fn_params":{
	"sid":12512315,
	"mode":"box",
	"box":"gcs_box_12512315",
	"placeholder":"Search hotels, flights, coffee, bikes...",
	"recent":5,
	"theme":"light",
	"results":3,
	"min_chars":2,
	"tpl_body":'<div class="gcs-results">{body}</div>',
	"tpl_row":'<div class="gcs-row">{items}</div>',
	"tpl_item":'<a class="{href_itemid} gcs-item" href="#"><span class="gcs-img">{image}</span><span class="gcs-copy"><span class="gcs-title">{title}</span><span class="gcs-desc">{description}</span><span class="gcs-url">{displayurl}</span></span><span class="gcs-label">Sponsored</span></a>'
}});
</script>
DEMO 2

Compact suggestion rows

The same drawn box with the suggestion layout: each ad is one short line with a small image. It reads like a search suggestion, so you can show more ads in less space.

Zone #12512316 · mode box · layout suggestion · 4 ads per search · theme light · 3 recent searches

Show the code
<!-- once per page, in <head> -->
<script src="https://g2.gsrv.dev/ctrl/19460.js"></script>

<!-- where it goes -->
<div id="gcs_box_12512316"></div>
<script>
goCtrl.add({"plugin":"search","fn":"init","fn_params":{
	"sid":12512316,
	"mode":"box",
	"box":"gcs_box_12512316",
	"placeholder":"Try: running shoes",
	"recent":3,
	"theme":"light",
	"results":4,
	"min_chars":2,
	"tpl_body":'<div class="gcs-results">{body}</div>',
	"tpl_row":'<div class="gcs-row">{items}</div>',
	"tpl_item":'<a class="{href_itemid} gcs-item gcs-sugg" href="#"><span class="gcs-img">{image}</span><span class="gcs-title">{title}</span><span class="gcs-label">Ad</span></a>'
}});
</script>
DEMO 4

Dark theme

For dark sites, set the theme to dark (or auto to follow the visitor's device setting). This one also uses the compact suggestion rows.

Zone #12512318 · mode dropdown · layout suggestion · 3 ads per search · theme dark · 3 recent searches

Show the code
<!-- once per page, in <head> -->
<script src="https://g2.gsrv.dev/ctrl/19460.js"></script>

<!-- where it goes -->
<!-- Example search box: put it where the search box should appear. Already have one? Remove this input and set "input" below to your own box's selector. -->
<input type="search" id="demo-dark-q" placeholder="Search" autocomplete="off">
<script>
goCtrl.add({"plugin":"search","fn":"init","fn_params":{
	"sid":12512318,
	"input":"#demo-dark-q",
	"mode":"dropdown",
	"recent":3,
	"theme":"dark",
	"results":3,
	"min_chars":2,
	"tpl_body":'<div class="gcs-results">{body}</div>',
	"tpl_row":'<div class="gcs-row">{items}</div>',
	"tpl_item":'<a class="{href_itemid} gcs-item gcs-sugg" href="#"><span class="gcs-img">{image}</span><span class="gcs-title">{title}</span><span class="gcs-label">Ad</span></a>'
}});
</script>
DEMO 5

Inside your own suggestions panel

Already show search suggestions? Put the ad placeholder inside your panel and the ads appear right under your own suggestions. Ads are only requested while your panel is open.

Zone #12512319 · mode panel · layout card · 2 ads per search · theme light

Show the code
<!-- once per page, in <head> -->
<script src="https://g2.gsrv.dev/ctrl/19460.js"></script>

<!-- where it goes -->
<div id="id_12512319"></div>
<script>
goCtrl.add({"plugin":"search","fn":"init","fn_params":{
	"sid":12512319,
	"input":"#demo-panel-q",
	"mode":"panel",
	"panel":"#demo-panel",
	"display":"id_12512319",
	"results":2,
	"min_chars":2,
	"tpl_body":'<div class="gcs-results">{body}</div>',
	"tpl_row":'<div class="gcs-row">{items}</div>',
	"tpl_item":'<a class="{href_itemid} gcs-item" href="#"><span class="gcs-img">{image}</span><span class="gcs-copy"><span class="gcs-title">{title}</span><span class="gcs-desc">{description}</span><span class="gcs-url">{displayurl}</span></span><span class="gcs-label">Sponsored</span></a>'
}});
</script>
DEMO 6

A results list right under the search box

Instead of a dropdown that floats over the page, the ads are listed in the page itself, right under the box, styled like search results. The list updates as the visitor types and when they press Enter, and stays when they click elsewhere. Nothing opens a new page.

Zone #12512374 · mode results · layout result · 3 ads per search · theme light

Show the code
<!-- once per page, in <head> -->
<script src="https://g2.gsrv.dev/ctrl/19460.js"></script>

<!-- where it goes -->
<div id="gcs_box_12512374"></div>
<!-- Optional: put <div id="id_12512374"></div> where the results should be listed. Without it they appear right under the search box. -->
<script>
goCtrl.add({"plugin":"search","fn":"init","fn_params":{
	"sid":12512374,
	"mode":"results",
	"box":"gcs_box_12512374",
	"placeholder":"Search and see the results list below",
	"display":"id_12512374",
	"param":"q",
	"theme":"light",
	"results":3,
	"min_chars":2,
	"tpl_body":'<div class="gcs-results">{body}</div>',
	"tpl_row":'<div class="gcs-row">{items}</div>',
	"tpl_item":'<a class="{href_itemid} gcs-item gcs-result" href="#"><span class="gcs-copy"><span class="gcs-rtop"><span class="gcs-label">Sponsored</span><span class="gcs-url">{displayurl}</span></span><span class="gcs-title">{title}</span><span class="gcs-desc">{description}</span></span><span class="gcs-img">{image}</span></a>'
}});
</script>
DEMO 7

Results in a spot you choose

Add one optional div and the results go there instead, for example in your content column while the search box stays in the header. This demo also uses the site's own search box instead of one we draw.

Zone #12512408 · mode results · layout result · 2 ads per search · theme light

Sponsored results

Search in the header: the results are listed here, in the content column.

Show the code
<!-- once per page, in <head> -->
<script src="https://g2.gsrv.dev/ctrl/19460.js"></script>

<!-- where it goes -->
<!-- Example search box: put it where the search box should appear. Already have one? Remove this input and set "input" below to your own box's selector. -->
<input type="search" id="demo-own-q" placeholder="Search" autocomplete="off">
<!-- Optional: put <div id="id_12512408"></div> where the results should be listed. Without it they appear right under the search box. -->
<script>
goCtrl.add({"plugin":"search","fn":"init","fn_params":{
	"sid":12512408,
	"mode":"results",
	"input":"#demo-own-q",
	"display":"id_12512408",
	"param":"q",
	"theme":"light",
	"results":2,
	"min_chars":2,
	"tpl_body":'<div class="gcs-results">{body}</div>',
	"tpl_row":'<div class="gcs-row">{items}</div>',
	"tpl_item":'<a class="{href_itemid} gcs-item gcs-result" href="#"><span class="gcs-copy"><span class="gcs-rtop"><span class="gcs-label">Sponsored</span><span class="gcs-url">{displayurl}</span></span><span class="gcs-title">{title}</span><span class="gcs-desc">{description}</span></span><span class="gcs-img">{image}</span></a>'
}});
</script>
SAFE BY DESIGN

No ads on searches that shouldn't have them

Built-in blocked-term list, kept current by AI

Searches that combine words about children or teens with sexual, abusive or violent words never get an ad, and neither do searches for abuse, non-consent and similar topics. Everyday searches such as "kids shoes" or "teen fashion" still get ads. The ad server checks every search in many languages, including misspellings, letter swaps and look-alike characters, and leaves no stats row behind. Each zone can add its own blocked words on top.

AI Our AI terms agent reviews real searches every week, adds new terms and languages, and tests every change before it goes live. Last review: 16 October 2026.

Reporting per search

Every search is stored in the statistics as Sub ID 1 of the zone. Group the normal stats by Sub ID 1 and you see views, clicks and earnings per search, all on one zone, with no extra zones to manage. Advertisers buy Search Ads as their own campaign type, with keyword targeting and all the usual geo, device and budget settings.

The demo advertisers

All brands below are made up for this demo. Each targets its own keywords, and Marketly has none, so it fills every search nothing else matches.

Kestrel Stayshotels, city breaks
SkyHopperflights
StrideLabrunning shoes
Nordbrewcoffee, espresso
Thyme & Hearthrecipes, meal kits
LingoLooplanguage courses
Clearpath Coverinsurance
Voltwaybikes, e-bikes
Pixelforgelaptops, gaming
HarborShield VPNVPN, privacy
Greenrootplants, garden
Fjellpeakhiking, camping
Keyhaven Mortgagesmortgages, homes
PawsomeBoxdogs, cats, pet food
Marketlyeverything else

Want Search Ads on your network?

Search Ads is an adzone type and a campaign type in the GoAdserver ad server. Talk to us about turning it on for your platform.

Contact us