Skip to content

DOM Selectors

Reference for Kagi's DOM structure. Use these selectors in theme CSS and plugin DOM observation.

TIP

Kagi does not use a frontend framework. All elements are server-rendered HTML with vanilla JS. Class names follow a mix of BEM-like conventions and utility classes. Selectors should be stable across page loads, though they may change with Kagi updates.

Landing Page

SelectorDescription
#searchFormMain search form
#searchBarSearch text input
#searchFormSubmitSearch submit button
.search-form-wrapper / .s-f-wSearch form wrapper (JS-managed class)
.search-form-containerOuter search form container
.search-input-containerSearch input container (has border-radius, box-shadow)
.search-form .search-form-iconsIcon container inside search bar
.cloudsCloud/doggo illustration container
.app-logoKagi logo on landing page

Search Results Page

SelectorDescription
._0_main-search-resultsResults container (per-page blocks)
._0_main-search-results#nextPageTemplate for next page of results
.search-resultIndividual search result container
.__srgiSearch result group item
.__sri-titleResult title container
.__sri_title_linkResult title link (anchor element)
.__sri-urlResult URL display
.__sri-descResult description/snippet
#search-formMain search form (SERP variant)
#search-inputSearch text input (SERP variant)
.right-sidebarRight sidebar container
.related-searchesRelated searches section
#load_more_results"More Results" pagination button
.footer-search-resultsFooter containing pagination controls
._0_page-separatorPage separator between result batches
._0_page-separator#nextSeparatorTemplate for next page separator
#layout-v2Main layout root

Settings Page

SelectorDescription
nav#settings-menuSettings navigation sidebar
.cth_settings_nav_menuNav menu container inside sidebar
.nav-linkIndividual navigation link
mainMain content area
.heading-2Section heading (h1-level)
#corgi-plugin-listCorgi's injected plugin list container

Layout

SelectorDescription
html[data-path]Root element with current page type
.headerTop navigation bar
.search-form-containerSearch bar wrapper
.main-contentPrimary content column

data-path Values

The data-path attribute on <html> indicates the current page type:

ValuePage
/searchSearch results
/settingsSettings pages
/landingHomepage / search landing
/imagesImage search results

WARNING

Note: data-path values include the leading slash (e.g., /search not search). Use document.documentElement.getAttribute('data-path') to read.

Themes can use this attribute to scope styles:

css
html[data-path="/search"] .search-result {
  border-radius: 12px;
}

Widget Selectors

Kagi renders inline widgets for certain queries. These use provider:widget_* events and render into specific containers:

SelectorDescription
.widgetGeneric widget container
.wikipedia-widgetWikipedia summary card
.interesting-finds"Interesting Finds" section

Stability

Kagi can change their DOM structure at any time, so Corgi cannot guarantee selector stability. If a theme or plugin breaks after a Kagi update, the selectors in this reference may need updating. File an issue if you notice a broken selector.

Not affiliated with Kagi Inc.