Best Of 2023
- 2024
- 2023
- 2022
- 2021
- 2020
- 2019
- 2018
- 2017
- 2016
- 2015
- Staff Picks
- Reader Picks
- City Life
- Eats
- City Life
- Eats
- Best Of Cincinnati
- 2023
- Reader Pick
- CinCity Harley-Davidson
- Metro Scooter
- Queen City Harley-Davidson
Previous Winners
- 2024CinCity Harley-Davidson
- 2022Best Motorcycle/Motorsports Dealer
- 2020CinCity Harley-Davidson
- 2019Harley-Davidson of Cincinnati
Here are the 2023 Best Of Cincinnati® Reader and Staff Pick winners for Shops & Services.
- Best Of Cincinnati
- 2023
- Reader Pick
- Jungle Jim's International Market
- The Party Source
- Liquor Barn (Formerly DEP's Fine Wine & Spirits) TIE
4. Marty's Hops and Vines TIE
- Best Of Cincinnati
- 2023
- Staff Pick
Boys, keep out! Explorer Chick has women-only tours all over the world, but they call Cincinnati their home. With trips ranging from backpacking in the Grand Canyon to glamping in Belize, the tours focus on exploring new places and getting your heart and blood pumping for adventure. The website makes it easy to book — sort tours by where you want to go and what kind of experience you want to have. Up for hiking? Rappelling? Surfing? All three? Click on those options and see where Explorer Chick can take you. And if none of your gal pals can go with you, don’t worry; it’s super-easy to bond with and befriend the other badass ladies on your trip. explorerchick.com.
- Best Of Cincinnati
- 2023
- Reader Pick
- Beelistic Tattoo
- Skincraft Piercing & Tattoo
- Hybrid Image
- Best Of Cincinnati
- 2023
- Reader Pick
- Cincinnati Museum Center
- Parky’s Farm
- Super Parties TIE
4. Dave & Buster’s TIE
- Best Of Cincinnati
- 2023
- Reader Pick
- Top Golf
- Toyko Kitty
- MadTree Brewing
- Best Of Cincinnati
- 2023
- Reader Pick
- Richter & Phillips
- Schwartz Jewelers
- Monmouth Jewelers
- Best Of Cincinnati
- 2023
- Reader Pick
- Fern
- Natorp's Nursery Outlet
- A.J. Rahn Greenhouses
- Best Of Cincinnati
- 2023
- Reader Pick
- Mandell-Brown Plastic Surgery Center
- McKenna Cosmetic Surgery Center
- The Plastic Surgery Group
- Best Of Cincinnati
- 2023
- Reader Pick
- Apollo Home
- Jolly Plumbing
- Zins Plumbing
- Best Of Cincinnati
- 2023
- Reader Pick
- Tiffany Brogden
- Jordan Nicely
- Nick Foltz
- Best Of Cincinnati
- 2023
- Reader Pick
- Sibcy Cline
- Keller Williams Realty
- Pivot Realty Group
- Best Of Cincinnati
- 2023
- Reader Pick
- Maple Knoll Village
- Twin Lakes
- Marjorie P. Lee
- Best Of Cincinnati
- 2023
- Reader Pick
- Mt. Lookout Shoe Repair
- D & P Shoe Repair
- Clarence Howell Shoe Repair
- Best Of Cincinnati
- 2023
- Reader Pick
- Jungle Jim's International Market
- Hemptations
- High on the Hill
- Best Of Cincinnati
- 2023
- Reader Pick
- H&R Block
- The Tax Man
- Orcutt & Company CPA
- Best Of Cincinnati
- 2023
- Reader Pick
- Churchill's Fine Teas
- Jungle Jim’s International Market
- Coffee Emporium
- Best Of Cincinnati
- 2023
- Reader Pick
- Christ Hospital Urgent Care Red Bank Rd.
- Bluegrass Urgent Care
- CareFirst Urgent Care - Beechmont
- Best Of Cincinnati
- 2023
- Reader Pick
- Cincy Vapors
- Lefty's Tobacco Plus
- Galaxy Vapors
- Best Of Cincinnati
- 2023
- Reader Pick
- Noah's Ark Animal Clinics
- Animal Care Center
- Grady Veterinary Hospital
'Object.defineProperties(this, {'items': { get: function() { return jQuery(this.itemContainerSelector).find(this.itemSelector)}},'currentItem': {get: function() {var foundItem = nullvar foundItemInView = nullthis.items.each(function () {var currentInView = elementInView(jQuery(this), scrollTopOffset, 0)if (currentInView) {// An in view item is already located extra logicif (foundItemInView && foundItemInView.inView) {// The entire previously found item is visible - it winsif (foundItemInView.topInView && foundItemInView.bottomInView) return// The previously found item covers the visible area - it winsif (foundItemInView.middleCoversView) return// The previously found item has more surface area - it winsif (foundItemInView.percentVisable > currentInView.percentOfViewHeight) return}foundItem = jQuery(this)foundItemInView = currentInView}})return foundItem}},'currentItemIndex': {get: function() {var currentElement = this.currentItem.closest('[bestof-index]')if(currentElement) {return parseInt(currentElement.attr('bestof-index'))}return null}},'currentItemId': {get: function() {var currentElement = this.currentItem.closest('[bestof-id]')if(currentElement) {return currentElement.attr('bestof-id')}return null}}})var bestOfInstance = thisvar scrollTopOffset = window.innerHeight > this.smallMenuBreakPoint ? 110 : 140var originUrl = window.location.hrefthis.scrollToIndex = function (index) {var bestOfItem = this.items.filter('[bestof-index="' + index + '"]')if (bestOfItem.length) { var topOffset = bestOfItem.offset().top - scrollTopOffset// window.scrollTo({ top: topOffset, behavior: 'smooth' })window.scrollTo({ top: topOffset, behavior: 'auto' })}else {this.fetchMore(index, function () {bestOfInstance.scrollToIndex(index)})}}this.fetchMore = function (startIndex, callback) {var currentItemOnFetch = this.currentItemvar url = window.location.origin + window.location.pathnamevar params = {ajaxComponent: componentId,action: 'grabMore',startIndex: startIndex,startingItem: jQuery('[bestof-starting-item]').attr('bestof-starting-item'),}var keywords = currentItemOnFetch.attr('bestof-keywords')if (keywords) {params.keywords = keywords}var featureValue = currentItemOnFetch.attr('bestof-feature')if (featureValue) {params.feature = featureValue}jQuery.ajax({url: url,type: 'GET',data: params,dataType: 'json',beforeSend: function () { console.log('Fetching results') },success: function (data) {console.log('success', data.results, data.results.length, data.error, data)if (data) {if (data.error) {console.log(data.error)}else if (data.results) {console.log('bestOfInstance.items', bestOfInstance.items)for (var i = 0; i < data.results.length; i++) {var resultItem = jQuery(data.results[i])var resultItemIndex = parseInt(resultItem.attr('bestof-index'))var resultAlreadyInserted = bestOfInstance.items.filter('[bestof-index="' + resultItemIndex + '"]').length > 0console.log('result', resultItemIndex)var previousItem = nullvar previousItemIndex = 0if (!resultAlreadyInserted) {bestOfInstance.items.each(function () {if (resultAlreadyInserted) returnvar currentItem = jQuery(this)var currentItemIndex = parseInt(currentItem.attr('bestof-index'))if (resultItemIndex === currentItemIndex ) {resultAlreadyInserted = truereturn}else if (resultItemIndex > previousItemIndex && resultItemIndex < currentItemIndex) {var topOffsetBeforeInsert = currentItemOnFetch.get(0).getBoundingClientRect().topresultItem.insertBefore(currentItem)resultAlreadyInserted = truevar adjustedTopPosition = currentItemOnFetch.offset().top - topOffsetBeforeInsertwindow.scrollTo({ top: adjustedTopPosition, behavior: 'auto' })}previousItem = currentItempreviousItemIndex = currentItemIndex})if (!resultAlreadyInserted) {var topOffsetBeforeInsert = currentItemOnFetch.get(0).getBoundingClientRect().topresultItem.insertAfter(bestOfInstance.items.last())resultAlreadyInserted = truevar adjustedTopPosition = currentItemOnFetch.offset().top - topOffsetBeforeInsertwindow.scrollTo({ top: adjustedTopPosition, behavior: 'auto' })}}}}else { console.log('How did we get here?') }}else { console.log('No result or error returned from content request.') }},complete: function () { bestOfInstance.items = jQuery(bestOfInstance.itemSelector) // Update items resultjQuery(bestOfInstance.itemContainerSelector + ' div[uk-spinner]').remove()if (typeof callback === 'function') { callback() }},error: function (error) { console.log(error) }})}var lazyLoadTimeout = nullvar lazyLoadSurroundingItems = function (index) {if (bestOfInstance.lazyLoadMoreResults) {// Give lazyLoad a chance to finish before submiting more requestsvar lazyLoadTimeout = setTimeout(function () {var prevIndex = Math.max(index - 1, 1)var prevPrevIndex = Math.max(index - 2, 1)var nextIndex = index + 1var nextNextIndex = index + 2var prevIndexLoaded = bestOfInstance.items.filter('[bestof-index="' + prevIndex + '"]').length > 0var prevPrevIndexLoaded = bestOfInstance.items.filter('[bestof-index="' + prevPrevIndex + '"]').length > 0var nextIndexLoaded = bestOfInstance.items.filter('[bestof-index="' + nextIndex + '"]').length > 0var nextNextIndexLoaded = bestOfInstance.items.filter('[bestof-index="' + nextNextIndex + '"]').length > 0if(!prevIndexLoaded) {jQuery(bestOfInstance.itemContainerSelector + ' div[uk-spinner]').remove()// jQuery(bestOfInstance.itemContainerSelector).prepend(bestOfInstance.spinnerHTML)bestOfInstance.fetchMore(Math.max(prevIndex - 9, 1))}else if(!prevPrevIndexLoaded) {jQuery(bestOfInstance.itemContainerSelector + ' div[uk-spinner]').remove()// jQuery(bestOfInstance.itemContainerSelector).prepend(bestOfInstance.spinnerHTML)bestOfInstance.fetchMore(Math.max(prevPrevIndex - 9, 1))}if(!nextIndexLoaded) {jQuery(bestOfInstance.itemContainerSelector + ' div[uk-spinner]').remove()jQuery(bestOfInstance.itemContainerSelector).append(bestOfInstance.spinnerHTML)bestOfInstance.fetchMore(nextIndex)}else if(!nextNextIndexLoaded) {jQuery(bestOfInstance.itemContainerSelector + ' div[uk-spinner]').remove()jQuery(bestOfInstance.itemContainerSelector).append(bestOfInstance.spinnerHTML)bestOfInstance.fetchMore(nextNextIndex)}}, 500)}}var lastIndex = bestOfInstance.currentItemIndexjQuery(window).on('scroll resize', function () {// Give lazyLoad a chance to finish before submiting more requests// var lazyLoadTimeout = setTimeout(function () {// }, 200)var currentIndex = bestOfInstance.currentItemIndexif(currentIndex !== lastIndex) {lastIndex = currentIndexlazyLoadSurroundingItems(currentIndex)console.log(`BestOf Item index: ${currentIndex}`)fireEvent('foundation:bestof:itemchange')}})this.initialized = falsethis.init = function () {if (this.initialized === true) return// Prevent the browser from trying to scroll to the last scroll position before reloadif (history.scrollRestoration) {history.scrollRestoration = 'manual'}var startIndex = this.items.first().attr('bestof-index')var oid = window.location.pathname.match(/\d+$/)if (oid) {var grabIndex = parseInt(this.items.closest('[bestof-id="' + oid[0] + '"]').attr('bestof-index'))if (!isNaN(grabIndex)) {var startIndex = grabIndex}}if (startIndex > 1) {this.scrollToIndex(startIndex)}if(jQuery(this.itemContainerSelector + '[single-listing]').length === 0) {this.lazyLoadMoreResults = true}this.initialized = truelazyLoadSurroundingItems(startIndex)}return this}var BestOfItems = new BestOfItemsObj()// Timeout to prevent fast jogging from item to itemvar itemChangeTimeout = nulljQuery(document).on('foundation:bestof:itemchange', function () {itemChangeTimeout = setTimeout(function () {updateMetaDataFromElement(BestOfItems.currentItem)// Google track pageviewif (typeof ga === 'function') {console.log("foundation:bestof:itemchange event", "sending pageview navigation to:", window.location.href);ga('set', 'location', window.location.href)for (let i = 1; i <= 3; i++) {let currentDimension = jQuery(BestOfItems.currentItem).attr('ga-dimension'+i)if (typeof currentDimension === 'string') {ga('set', 'dimension' + i, currentDimension)}else {ga('set', 'dimension' + i, '') }}ga('send', 'pageview')}}, 200)if (typeof (Foundation.Ad.slots['CIN_LeaderboardHeader-1']) === 'object') {Foundation.Ad.refresh('CIN_LeaderboardHeader-1')}if (typeof (Foundation.Ad.slots['CIN_Footer-1']) === 'object') {Foundation.Ad.showFooter('CIN_Footer-1');}})// Try to init immediatelyBestOfItems.init()// On document loadedjQuery(function () {BestOfItems.init()})})();