{"id":74556,"date":"2025-12-11T09:32:48","date_gmt":"2025-12-11T07:32:48","guid":{"rendered":"https:\/\/bikehub.co.za\/news\/?p=74556"},"modified":"2025-12-19T08:10:47","modified_gmt":"2025-12-19T06:10:47","slug":"2025-year-in-review","status":"publish","type":"post","link":"https:\/\/bikehub.co.za\/news\/2025-year-in-review\/","title":{"rendered":"2025 Year in Review"},"content":{"rendered":"\n<p>As 2025 comes to a close, we\u2019re taking a step back to reflect on the year on Bike Hub.<\/p>\n\n\n\n<p>It\u2019s been a year of record-breaking sales and steady growth. While headline traffic numbers dipped slightly, the metrics that matter most: engagement, leads, and confirmed sales &#8211; tell the story of a marketplace that continues to deliver for buyers and sellers alike.<\/p>\n\n\n\n<p>Our <a href=\"https:\/\/bikehub.co.za\/news\/?s=quarter+turn\" target=\"_blank\" rel=\"noreferrer noopener\">Quarterly reports<\/a> tracked strong momentum across categories.<\/p>\n\n\n\n<p>Here\u2019s what stood out on Bike Hub in 2025.<\/p>\n\n\n\n<!-- HEADLINE STATISTICS - Mobile Responsive -->\n<style>\n.bhub-block, .bhub-block *, .bhub-block *::before, .bhub-block *::after {\n  box-sizing: border-box !important;\n  border-width: 0 !important;\n  border-style: solid !important;\n}\n.bhub-block {\n  background-color: #0f172a !important;\n  border-radius: 12px !important;\n  padding: 24px !important;\n  margin-left: auto !important;\n  margin-right: auto !important;\n  margin-top: 30px !important;\n  margin-bottom: 30px !important;\n  max-width: 1080px !important;\n  width: 100% !important;\n  display: block !important;\n  color: #fff !important;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n  line-height: 1.5 !important;\n  -webkit-font-smoothing: antialiased !important;\n}\n.bhub-block p { margin: 0 !important; }\n.bhub-block .section-label {\n  font-size: 12px !important;\n  font-weight: 600 !important;\n  color: #64748b !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.05em !important;\n  margin-bottom: 12px !important;\n}\n.bhub-block .grid-3 {\n  display: grid !important;\n  grid-template-columns: repeat(3, 1fr) !important;\n  gap: 12px !important;\n}\n.bhub-block .card {\n  background: #1e293b !important;\n  padding: 16px !important;\n  border-radius: 10px !important;\n}\n.bhub-block .card-label {\n  font-size: 12px !important;\n  color: #94a3b8 !important;\n  display: block !important;\n  margin-bottom: 6px !important;\n}\n.bhub-block .card-value {\n  font-size: 24px !important;\n  font-weight: 700 !important;\n  color: #fff !important;\n  display: block !important;\n}\n.bhub-block .card-value-lg {\n  font-size: 36px !important;\n  font-weight: 700 !important;\n  color: #fff !important;\n  display: block !important;\n}\n.bhub-block .badge-up {\n  display: inline-block !important;\n  font-size: 11px !important;\n  padding: 3px 8px !important;\n  border-radius: 4px !important;\n  margin-top: 8px !important;\n  font-weight: 600 !important;\n  background: rgba(34, 197, 94, 0.15) !important;\n  color: #22c55e !important;\n}\n.bhub-block .badge-down {\n  display: inline-block !important;\n  font-size: 11px !important;\n  padding: 3px 8px !important;\n  border-radius: 4px !important;\n  margin-top: 8px !important;\n  font-weight: 600 !important;\n  background: rgba(239, 68, 68, 0.15) !important;\n  color: #ef4444 !important;\n}\n.bhub-block .hero-card {\n  background: linear-gradient(135deg, #1e3a5f 0%, #0f172a 100%) !important;\n  border: 1px solid #334155 !important;\n  padding: 24px !important;\n  border-radius: 10px !important;\n  margin-bottom: 12px !important;\n}\n.bhub-block .mb-12 { margin-bottom: 12px !important; }\n.bhub-block .mb-24 { margin-bottom: 24px !important; }\n\n\/* Mobile responsive - stack to single column *\/\n@media (max-width: 600px) {\n  .bhub-block {\n    padding: 16px !important;\n  }\n  .bhub-block .grid-3 {\n    grid-template-columns: 1fr !important;\n    gap: 10px !important;\n  }\n  .bhub-block .card {\n    padding: 14px !important;\n  }\n  .bhub-block .card-value {\n    font-size: 22px !important;\n  }\n  .bhub-block .card-value-lg {\n    font-size: 32px !important;\n  }\n  .bhub-block .hero-card {\n    padding: 20px !important;\n  }\n}\n\n\/* Tablet - 2 columns for lower grids *\/\n@media (min-width: 601px) and (max-width: 800px) {\n  .bhub-block .grid-3 {\n    grid-template-columns: repeat(2, 1fr) !important;\n  }\n  .bhub-block .grid-3 .card:last-child {\n    grid-column: span 2 !important;\n  }\n}\n<\/style>\n\n<div class=\"bhub-block\">\n    \n    <div class=\"section-label\">Site Traffic<\/div>\n    <div class=\"grid-3 mb-24\">\n        <div class=\"card\">\n            <span class=\"card-label\">Pageviews<\/span>\n            <span class=\"card-value\">38.7M<\/span>\n            <span class=\"badge-down\">-0.8%<\/span>\n        <\/div>\n        <div class=\"card\">\n            <span class=\"card-label\">Unique Users<\/span>\n            <span class=\"card-value\">1.8M<\/span>\n            <span class=\"badge-down\">-10.4%<\/span>\n        <\/div>\n        <div class=\"card\">\n            <span class=\"card-label\">Avg. Engagement Time<\/span>\n            <span class=\"card-value\">8m 28s<\/span>\n            <span class=\"badge-up\">+10.4%<\/span>\n        <\/div>\n    <\/div>\n    \n    <div class=\"section-label\">Classifieds Activity<\/div>\n    <div class=\"hero-card\">\n        <span class=\"card-label\">Confirmed Sales*<\/span>\n        <span class=\"card-value-lg\">R273.5 million<\/span>\n        <span class=\"badge-up\">+9.8%<\/span>\n        <p style=\"font-size: 11px !important; color: #64748b !important; margin-top: 12px !important; margin-bottom: 0 !important;\">* Proactively reported sales. Actual total including unreported sales is significantly higher.<\/p>\n    <\/div>\n    \n    <div class=\"grid-3 mb-12\">\n        <div class=\"card\">\n            <span class=\"card-label\">Adverts Created<\/span>\n            <span class=\"card-value\">65,270<\/span>\n            <span class=\"badge-up\">+2.1%<\/span>\n        <\/div>\n        <div class=\"card\">\n            <span class=\"card-label\">Advert Views<\/span>\n            <span class=\"card-value\">27M<\/span>\n            <span class=\"badge-up\">+9.8%<\/span>\n        <\/div>\n        <div class=\"card\">\n            <span class=\"card-label\">Total Advert Value<\/span>\n            <span class=\"card-value\">R841.5M<\/span>\n            <span class=\"badge-up\">+3.3%<\/span>\n        <\/div>\n    <\/div>\n    \n    <div class=\"grid-3\">\n        <div class=\"card\">\n            <span class=\"card-label\">Avg. Advert Value<\/span>\n            <span class=\"card-value\">R12,978<\/span>\n            <span class=\"badge-up\">+1.4%<\/span>\n        <\/div>\n        <div class=\"card\">\n            <span class=\"card-label\">Unique Leads<\/span>\n            <span class=\"card-value\">169,303<\/span>\n            <span class=\"badge-up\">+8.3%<\/span>\n        <\/div>\n        <div class=\"card\">\n            <span class=\"card-label\">Leads per Advert<\/span>\n            <span class=\"card-value\">2.59<\/span>\n            <span class=\"badge-up\">+6.1%<\/span>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Classifieds Activity<\/h2>\n\n\n\n<p>A record-breaking <strong>R273.5 million<\/strong> in sales was proactively confirmed by users; that&#8217;s nearly <strong>R23 million a month<\/strong>, <strong>up 10%<\/strong> on 2024. As always, this is a conservative figure; actual sales including unreported transactions are <strong>significantly higher<\/strong>.<\/p>\n\n\n\n<p>Over <strong>65,000 adverts<\/strong> were viewed <strong>27 million times<\/strong>, generating <strong>169,000 unique leads<\/strong> for an average of <strong>2.59 leads per advert<\/strong>. That&#8217;s an <strong>8.3% increase<\/strong> in total leads compared to 2024, with sellers continuing to receive strong enquiry volumes.<\/p>\n\n\n\n<p>The average <strong>advert value<\/strong> edged <strong>up 1.4%<\/strong> to R12,978 (from R12,805 in 2024), suggesting pricing remains stable despite broader economic pressures.<\/p>\n\n\n\n<!-- YOY COMPARISON TABLE - Tighter layout for readability -->\n<style>\n.bhub-yoy, .bhub-yoy *, .bhub-yoy *::before, .bhub-yoy *::after {\n  box-sizing: border-box !important;\n  border-width: 0 !important;\n  border-style: solid !important;\n}\n.bhub-yoy {\n  background-color: #0f172a !important;\n  border-radius: 12px !important;\n  padding: 25px !important;\n  margin-left: auto !important;\n  margin-right: auto !important;\n  margin-top: 30px !important;\n  margin-bottom: 30px !important;\n  max-width: 700px !important;\n  width: 100% !important;\n  display: block !important;\n  color: #fff !important;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n  line-height: 1.5 !important;\n  -webkit-font-smoothing: antialiased !important;\n}\n.bhub-yoy .section-label {\n  font-size: 12px !important;\n  font-weight: 600 !important;\n  color: #64748b !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.05em !important;\n  margin-bottom: 16px !important;\n}\n.bhub-yoy .row {\n  display: flex !important;\n  align-items: center !important;\n  padding: 12px 14px !important;\n  border-radius: 6px !important;\n  margin-bottom: 6px !important;\n}\n.bhub-yoy .row:nth-child(odd) {\n  background: #1e293b !important;\n}\n.bhub-yoy .row:nth-child(even) {\n  background: transparent !important;\n}\n.bhub-yoy .metric {\n  flex: 1 !important;\n  font-size: 14px !important;\n  color: #e2e8f0 !important;\n  font-weight: 500 !important;\n}\n.bhub-yoy .val-2024 {\n  width: 90px !important;\n  text-align: right !important;\n  font-family: 'SF Mono', Monaco, monospace !important;\n  font-size: 13px !important;\n  color: #64748b !important;\n  padding-right: 20px !important;\n}\n.bhub-yoy .val-2025 {\n  width: 100px !important;\n  text-align: right !important;\n  font-family: 'SF Mono', Monaco, monospace !important;\n  font-size: 14px !important;\n  color: #fff !important;\n  font-weight: 600 !important;\n  padding-right: 20px !important;\n}\n.bhub-yoy .change {\n  width: 70px !important;\n  text-align: right !important;\n}\n.bhub-yoy .badge-up {\n  display: inline-block !important;\n  font-size: 11px !important;\n  padding: 3px 10px !important;\n  border-radius: 4px !important;\n  font-weight: 600 !important;\n  background: rgba(34, 197, 94, 0.15) !important;\n  color: #22c55e !important;\n}\n.bhub-yoy .header {\n  display: flex !important;\n  padding: 0 14px 10px 14px !important;\n  border-bottom: 1px solid #334155 !important;\n  margin-bottom: 10px !important;\n}\n.bhub-yoy .header span {\n  font-size: 11px !important;\n  font-weight: 600 !important;\n  color: #64748b !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.05em !important;\n}\n.bhub-yoy .header .h-metric { flex: 1 !important; }\n.bhub-yoy .header .h-2024 { width: 90px !important; text-align: right !important; padding-right: 20px !important; }\n.bhub-yoy .header .h-2025 { width: 100px !important; text-align: right !important; padding-right: 20px !important; }\n.bhub-yoy .header .h-change { width: 70px !important; text-align: right !important; }\n<\/style>\n\n<div class=\"bhub-yoy\">\n    <div class=\"section-label\">Year-on-Year Comparison<\/div>\n    \n    <div class=\"header\">\n        <span class=\"h-metric\">Metric<\/span>\n        <span class=\"h-2024\">2024<\/span>\n        <span class=\"h-2025\">2025<\/span>\n        <span class=\"h-change\">Change<\/span>\n    <\/div>\n    \n    <div class=\"row\">\n        <span class=\"metric\">Confirmed Sales<\/span>\n        <span class=\"val-2024\">R249M<\/span>\n        <span class=\"val-2025\">R273.5M<\/span>\n        <span class=\"change\"><span class=\"badge-up\">+9.8%<\/span><\/span>\n    <\/div>\n    \n    <div class=\"row\">\n        <span class=\"metric\">Adverts Created<\/span>\n        <span class=\"val-2024\">63,916<\/span>\n        <span class=\"val-2025\">65,270<\/span>\n        <span class=\"change\"><span class=\"badge-up\">+2.1%<\/span><\/span>\n    <\/div>\n    \n    <div class=\"row\">\n        <span class=\"metric\">Advert Views<\/span>\n        <span class=\"val-2024\">24.6M<\/span>\n        <span class=\"val-2025\">27M<\/span>\n        <span class=\"change\"><span class=\"badge-up\">+9.8%<\/span><\/span>\n    <\/div>\n    \n    <div class=\"row\">\n        <span class=\"metric\">Unique Leads<\/span>\n        <span class=\"val-2024\">156,297<\/span>\n        <span class=\"val-2025\">169,303<\/span>\n        <span class=\"change\"><span class=\"badge-up\">+8.3%<\/span><\/span>\n    <\/div>\n    \n    <div class=\"row\">\n        <span class=\"metric\">Leads per Advert<\/span>\n        <span class=\"val-2024\">2.44<\/span>\n        <span class=\"val-2025\">2.59<\/span>\n        <span class=\"change\"><span class=\"badge-up\">+6.1%<\/span><\/span>\n    <\/div>\n    \n    <div class=\"row\">\n        <span class=\"metric\">Total Advert Value<\/span>\n        <span class=\"val-2024\">R815M<\/span>\n        <span class=\"val-2025\">R841.5M<\/span>\n        <span class=\"change\"><span class=\"badge-up\">+3.3%<\/span><\/span>\n    <\/div>\n    \n    <div class=\"row\">\n        <span class=\"metric\">Avg. Advert Value<\/span>\n        <span class=\"val-2024\">R12,805<\/span>\n        <span class=\"val-2025\">R12,978<\/span>\n        <span class=\"change\"><span class=\"badge-up\">+1.4%<\/span><\/span>\n    <\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<!-- CATEGORY PERFORMANCE - Combined View Top 20 -->\n<style>\n.bhub-catperf, .bhub-catperf *, .bhub-catperf *::before, .bhub-catperf *::after {\n  box-sizing: border-box !important;\n  border-width: 0 !important;\n  border-style: solid !important;\n}\n.bhub-catperf {\n  background-color: #0f172a !important;\n  border-radius: 12px !important;\n  padding: 25px !important;\n  margin-left: auto !important;\n  margin-right: auto !important;\n  margin-top: 30px !important;\n  margin-bottom: 30px !important;\n  max-width: 1080px !important;\n  width: 100% !important;\n  display: block !important;\n  color: #fff !important;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n  line-height: 1.5 !important;\n  -webkit-font-smoothing: antialiased !important;\n  overflow-x: auto !important;\n}\n.bhub-catperf .section-label {\n  font-size: 12px !important;\n  font-weight: 600 !important;\n  color: #64748b !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.05em !important;\n  margin-bottom: 16px !important;\n}\n.bhub-catperf table {\n  width: 100% !important;\n  border-collapse: collapse !important;\n  min-width: 750px !important;\n}\n.bhub-catperf th {\n  text-align: left !important;\n  padding: 12px 8px !important;\n  font-size: 11px !important;\n  font-weight: 600 !important;\n  color: #64748b !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.05em !important;\n  border-bottom: 1px solid #334155 !important;\n}\n.bhub-catperf th.right {\n  text-align: right !important;\n}\n.bhub-catperf td {\n  padding: 11px 8px !important;\n  font-size: 13px !important;\n  border-bottom: 1px solid #1e293b !important;\n  vertical-align: middle !important;\n}\n.bhub-catperf tbody tr:nth-child(odd) {\n  background: rgba(255,255,255,0.02) !important;\n}\n.bhub-catperf tbody tr:last-child td {\n  border-bottom: none !important;\n}\n.bhub-catperf .cat-name {\n  color: #e2e8f0 !important;\n  font-weight: 500 !important;\n}\n.bhub-catperf .num {\n  text-align: right !important;\n  font-family: 'SF Mono', Monaco, monospace !important;\n  color: #fff !important;\n  font-weight: 600 !important;\n}\n.bhub-catperf .badge-cell {\n  text-align: right !important;\n}\n.bhub-catperf .badge-up {\n  display: inline-block !important;\n  font-size: 10px !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-weight: 600 !important;\n  background: rgba(34, 197, 94, 0.15) !important;\n  color: #22c55e !important;\n  min-width: 52px !important;\n  text-align: center !important;\n}\n.bhub-catperf .badge-down {\n  display: inline-block !important;\n  font-size: 10px !important;\n  padding: 2px 6px !important;\n  border-radius: 4px !important;\n  font-weight: 600 !important;\n  background: rgba(239, 68, 68, 0.15) !important;\n  color: #ef4444 !important;\n  min-width: 52px !important;\n  text-align: center !important;\n}\n.bhub-catperf .highlight-row td {\n  background: rgba(59, 130, 246, 0.08) !important;\n}\n.bhub-catperf .rank {\n  color: #64748b !important;\n  font-size: 12px !important;\n}\n<\/style>\n\n<div class=\"bhub-catperf\">\n    <div class=\"section-label\">Category Performance \u2014 Top 20 by Volume<\/div>\n    \n    <table>\n        <thead>\n            <tr>\n                <th style=\"width: 28px;\">#<\/th>\n                <th>Category<\/th>\n                <th class=\"right\">Ads<\/th>\n                <th class=\"right\" style=\"width: 65px;\">YoY<\/th>\n                <th class=\"right\">Avg Price<\/th>\n                <th class=\"right\" style=\"width: 65px;\">YoY<\/th>\n            <\/tr>\n        <\/thead>\n        <tbody>\n            <tr>\n                <td class=\"rank\">1<\/td>\n                <td class=\"cat-name\">Dual Suspension MTB<\/td>\n                <td class=\"num\">7,039<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+18.1%<\/span><\/td>\n                <td class=\"num\">R38,295<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+1.2%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">2<\/td>\n                <td class=\"cat-name\">Road Bikes<\/td>\n                <td class=\"num\">6,026<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+11.1%<\/span><\/td>\n                <td class=\"num\">R29,856<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+4.4%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">3<\/td>\n                <td class=\"cat-name\">Hardtail MTB<\/td>\n                <td class=\"num\">5,040<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+6.4%<\/span><\/td>\n                <td class=\"num\">R9,095<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-down\">-8.4%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">4<\/td>\n                <td class=\"cat-name\">Shoes<\/td>\n                <td class=\"num\">2,263<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+11.4%<\/span><\/td>\n                <td class=\"num\">R1,680<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+12.3%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">5<\/td>\n                <td class=\"cat-name\">Bike Racks<\/td>\n                <td class=\"num\">1,779<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-down\">-1.4%<\/span><\/td>\n                <td class=\"num\">R4,212<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+15.3%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">6<\/td>\n                <td class=\"cat-name\">Watches &#038; Wearables<\/td>\n                <td class=\"num\">1,669<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+34.1%<\/span><\/td>\n                <td class=\"num\">R6,077<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+14.3%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">7<\/td>\n                <td class=\"cat-name\">Helmets<\/td>\n                <td class=\"num\">1,559<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+18.6%<\/span><\/td>\n                <td class=\"num\">R1,498<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+2.7%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">8<\/td>\n                <td class=\"cat-name\">Saddles<\/td>\n                <td class=\"num\">1,519<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+16.7%<\/span><\/td>\n                <td class=\"num\">R1,115<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+2.9%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">9<\/td>\n                <td class=\"cat-name\">Indoor Trainers<\/td>\n                <td class=\"num\">1,514<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+15.1%<\/span><\/td>\n                <td class=\"num\">R6,767<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-down\">-5.8%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">10<\/td>\n                <td class=\"cat-name\">Kids Bikes<\/td>\n                <td class=\"num\">1,494<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+36.4%<\/span><\/td>\n                <td class=\"num\">R2,717<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+5.2%<\/span><\/td>\n            <\/tr>\n            <tr class=\"highlight-row\">\n                <td class=\"rank\">11<\/td>\n                <td class=\"cat-name\">Gravel Bikes<\/td>\n                <td class=\"num\">1,489<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+52.9%<\/span><\/td>\n                <td class=\"num\">R42,979<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+8.1%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">12<\/td>\n                <td class=\"cat-name\">Pedals<\/td>\n                <td class=\"num\">1,419<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+27.7%<\/span><\/td>\n                <td class=\"num\">R960<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-down\">-3.5%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">13<\/td>\n                <td class=\"cat-name\">Road Bike Wheels<\/td>\n                <td class=\"num\">1,383<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+10.1%<\/span><\/td>\n                <td class=\"num\">R9,697<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+1.8%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">14<\/td>\n                <td class=\"cat-name\">Handlebars<\/td>\n                <td class=\"num\">1,294<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+19.6%<\/span><\/td>\n                <td class=\"num\">R1,776<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+17.4%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">15<\/td>\n                <td class=\"cat-name\">Cranksets<\/td>\n                <td class=\"num\">1,262<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+10.7%<\/span><\/td>\n                <td class=\"num\">R2,196<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-down\">-4.8%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">16<\/td>\n                <td class=\"cat-name\">Rear Derailleurs<\/td>\n                <td class=\"num\">1,139<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+41.7%<\/span><\/td>\n                <td class=\"num\">R2,165<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-down\">-23.2%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">17<\/td>\n                <td class=\"cat-name\">Stems<\/td>\n                <td class=\"num\">1,110<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+37.7%<\/span><\/td>\n                <td class=\"num\">R673<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+3.8%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">18<\/td>\n                <td class=\"cat-name\">Mountain Bike Forks<\/td>\n                <td class=\"num\">1,105<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+13.6%<\/span><\/td>\n                <td class=\"num\">R5,288<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-down\">-2.9%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">19<\/td>\n                <td class=\"cat-name\">DS Mountain E-Bikes<\/td>\n                <td class=\"num\">1,078<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+38.0%<\/span><\/td>\n                <td class=\"num\">R73,411<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-down\">-0.2%<\/span><\/td>\n            <\/tr>\n            <tr>\n                <td class=\"rank\">20<\/td>\n                <td class=\"cat-name\">Cassettes<\/td>\n                <td class=\"num\">1,027<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+22.6%<\/span><\/td>\n                <td class=\"num\">R1,690<\/td>\n                <td class=\"badge-cell\"><span class=\"badge-up\">+20.5%<\/span><\/td>\n            <\/tr>\n        <\/tbody>\n    <\/table>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Key observations<\/h2>\n\n\n\n<p><strong>Gravel is the breakout story.<\/strong> Listings surged 52.9% while average prices climbed 8.1% to R42,979 &#8211; higher than traditional dual suspension MTBs.<\/p>\n\n\n\n<p><strong>Components are hot.<\/strong> Rear derailleurs (+41.7%), stems (+37.7%), pedals (+27.7%), and cassettes (+22.6%) all saw strong volume growth.<\/p>\n\n\n\n<p><strong>Tech keeps climbing.<\/strong> Watches &amp; wearables grew 34.1% in volume with prices up 14.3%.<\/p>\n\n\n\n<p><strong>Kids bikes booming.<\/strong> A 36.4% jump in listings suggests more families are getting into cycling, though average prices remain accessible at R2,717.<\/p>\n\n\n\n<p><strong>E-MTB demand surges.<\/strong> Dual Suspension E-MTBs grew 38% in volume while holding the highest average price at R73,411. The category is maturing but still commands premium prices.<\/p>\n\n\n\n<p><strong>Some categories softening.<\/strong> Hardtail MTBs saw an 8.4% price decline, and indoor trainers fell 5.8%.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Classifieds Searches by Brand<\/h2>\n\n\n\n<p>Our search data captures what buyers are actively looking for, and serve as a reliable indicator of brand demand and perceived second-hand value. With <strong>2.14 million branded searches<\/strong> in 2025 (<strong>up 12.9% YoY<\/strong>), the data reveals some significant shifts in the rankings and clear signals about where the market is heading.<\/p>\n\n\n\n<!-- BRAND RANKINGS TABLE - Scoped for Tailwind themes -->\n<style>\n.bhub-brands, .bhub-brands *, .bhub-brands *::before, .bhub-brands *::after {\n  box-sizing: border-box !important;\n  border-width: 0 !important;\n  border-style: solid !important;\n}\n.bhub-brands {\n  background-color: #1a1a2e !important;\n  border-radius: 12px !important;\n  padding: 25px !important;\n  margin-left: auto !important;\n  margin-right: auto !important;\n  margin-top: 30px !important;\n  margin-bottom: 30px !important;\n  max-width: 1080px !important;\n  width: 100% !important;\n  display: block !important;\n  overflow-x: auto !important;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n  line-height: 1.5 !important;\n  -webkit-font-smoothing: antialiased !important;\n}\n.bhub-brands table { border-collapse: collapse !important; width: 100% !important; background-color: transparent !important; }\n.bhub-brands th, .bhub-brands td { vertical-align: middle !important; background-color: transparent !important; }\n.bhub-brands p { margin: 0 !important; }\n<\/style>\n\n<div class=\"bhub-brands\">\n    <div style=\"font-size: 16px; font-weight: 600; color: #fff; margin-bottom: 8px;\">Top 25 Brand Searches 2025<\/div>\n    <div style=\"font-size: 12px; color: #a0a0a0; margin-bottom: 20px;\">Total market: 2.14M searches (+12.9% YoY)<\/div>\n    \n    <table style=\"width: 100%; border-collapse: collapse; font-size: 13px; min-width: 700px;\">\n        <thead>\n            <tr>\n                <th style=\"color: #a0a0a0; padding: 10px 8px; text-align: left; font-weight: 500; border-bottom: 1px solid #333;\">#<\/th>\n                <th style=\"color: #a0a0a0; padding: 10px 8px; text-align: left; font-weight: 500; border-bottom: 1px solid #333;\">Brand<\/th>\n                <th style=\"color: #a0a0a0; padding: 10px 8px; text-align: right; font-weight: 500; border-bottom: 1px solid #333;\">2025<\/th>\n                <th style=\"color: #a0a0a0; padding: 10px 8px; text-align: right; font-weight: 500; border-bottom: 1px solid #333;\">2024<\/th>\n                <th style=\"color: #a0a0a0; padding: 10px 8px; text-align: right; font-weight: 500; border-bottom: 1px solid #333;\">YoY %<\/th>\n                <th style=\"color: #a0a0a0; padding: 10px 8px; text-align: right; font-weight: 500; border-bottom: 1px solid #333;\">Share<\/th>\n                <th style=\"color: #a0a0a0; padding: 10px 8px; text-align: center; font-weight: 500; border-bottom: 1px solid #333;\">Move<\/th>\n            <\/tr>\n        <\/thead>\n        <tbody>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">1<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Specialized<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">241,132<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">215,133<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+12.1%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">11.29%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u2014<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">2<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Trek<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">135,913<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">121,565<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+11.8%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">6.36%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u2014<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">3<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Scott<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">107,085<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">96,993<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+10.4%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">5.01%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u2014<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">4<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Garmin<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">92,308<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">71,808<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+28.5%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">4.32%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u2014<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">5<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Giant<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">68,951<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">66,498<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+3.7%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">3.23%<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21911<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">6<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Cannondale<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">60,988<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">68,266<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">-10.7%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">2.86%<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21931<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">7<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">SRAM<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">53,233<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">45,434<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+17.2%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">2.49%<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21911<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">8<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Shimano<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">51,978<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">46,707<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+11.3%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">2.43%<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21931<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">9<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Titan Racing<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">34,062<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">29,184<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+16.7%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">1.59%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u2014<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">10<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Thule<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">26,047<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">24,896<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+4.6%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">1.22%<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21912<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">11<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Merida<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">25,704<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">27,214<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">-5.5%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">1.20%<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21931<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">12<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Wahoo<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">24,934<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">20,081<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+24.2%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">1.17%<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21912<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">13<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Santa Cruz<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">23,705<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">27,073<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">-12.4%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">1.11%<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21932<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">14<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Bianchi<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">22,203<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">22,781<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">-2.5%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">1.04%<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21931<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">15<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Silverback<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">16,869<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">16,224<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+4.0%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">0.79%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u2014<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">16<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Canyon<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">16,182<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">15,016<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+7.8%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">0.76%<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21911<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">17<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Campagnolo<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">15,691<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">16,206<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">-3.2%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">0.73%<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21931<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">18<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Fox<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">13,822<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">9,304<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+48.6%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">0.65%<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21911<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">19<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Pyga<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">13,417<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">14,362<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">-6.6%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">0.63%<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21931<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">20<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Orbea<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">11,254<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">7,717<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+45.8%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">0.53%<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21913<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">21<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Colnago<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">9,542<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">9,178<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+4.0%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">0.45%<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21931<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">22<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Oakley<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">8,049<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">7,697<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+4.6%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">0.38%<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21912<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">23<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Look<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">7,995<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">7,726<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">+3.5%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">0.37%<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21931<\/td>\n            <\/tr>\n            <tr style=\"background: rgba(255,255,255,0.03);\">\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e;\">24<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; font-weight: 600;\">Pinarello<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">7,479<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right; font-family: monospace;\">8,781<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">-14.8%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: right;\">0.35%<\/td>\n                <td style=\"color: #e74c3c; padding: 10px 8px; border-bottom: 1px solid #2a2a3e; text-align: center;\">\u21933<\/td>\n            <\/tr>\n            <tr>\n                <td style=\"color: #fff; padding: 10px 8px;\">25<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; font-weight: 600;\">BMC<\/td>\n                <td style=\"color: #fff; padding: 10px 8px; text-align: right; font-family: monospace;\">7,333<\/td>\n                <td style=\"color: #888; padding: 10px 8px; text-align: right; font-family: monospace;\">5,719<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; text-align: right;\">+28.2%<\/td>\n                <td style=\"color: #888; padding: 10px 8px; text-align: right;\">0.34%<\/td>\n                <td style=\"color: #2ecc71; padding: 10px 8px; text-align: center;\">\u21912<\/td>\n            <\/tr>\n        <\/tbody>\n    <\/table>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Key observations<\/h3>\n\n\n\n<p><strong>Garmin dominates tech growth<\/strong>: Tech was the fastest-growing category (+27.6%), and Garmin alone accounted for 81% of that growth, adding 20,500 searches to reach 92K. Wahoo (+24.2%) contributed the rest. Cyclists are investing heavily in GPS devices, smart trainers, and wearables.<\/p>\n\n\n\n<p><strong>Component upgraders are active<\/strong>: The category grew 13.1% (+17,568 searches). SRAM was the biggest contributor (+7,799 searches, 44% of growth), followed by Shimano (+5,271) and Fox (+4,518). SRAM has now overtaken Shimano in total search volume.<\/p>\n\n\n\n<p><strong>Cannondale&#8217;s decline stands out<\/strong>: The only major bike brand losing searches (-7,278), dropping from #5 to #6. Santa Cruz (-3,368) and Pinarello (-1,302) also declined, though from smaller bases.<\/p>\n\n\n\n<p><strong>Orbea rising<\/strong>: The Spanish brand saw the strongest percentage growth among bike brands (+45.8%), likely driven by strong local retail presence through CycleLab and visibility at events like Cape Epic. Still a smaller player at #20, but one to watch.<\/p>\n\n\n\n<p><strong>The top 3 remain dominant<\/strong>: Specialized (11.3% share), Trek (6.4%), and Scott (5.0%) account for nearly 23% of all branded searches. All three grew in absolute terms but lost small amounts of market share as the long tail expands.<\/p>\n\n\n\n<p><strong>South African brands<\/strong>: Total SA brand searches grew 8.5% to 77,679. Titan Racing leads strongly at #9 (+16.7%, +4,878 searches), significantly outperforming Silverback (#15, +4.0%) and Pyga (#19, -6.6%).<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Looking Ahead to 2026<\/h2>\n\n\n\n<p>2025 demonstrated that the Bike Hub marketplace is thriving. Record sales values, strong engagement, and consistent lead volumes point to a mature, healthy marketplace that continues to serve South Africa&#8217;s cycling community.<\/p>\n\n\n\n<p>We&#8217;ll continue our quarterly reports tracking category trends, and we&#8217;re excited to see what 2026 brings.<\/p>\n\n\n\n<p>Please drop any questions you have in the comments and we&#8217;ll do our best to answer them. Here&#8217;s to many more smiles on two wheels in 2026!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><em>All stats for the period 10 December 2024 \u2013 9 December 2025.<\/em> <em>Comparisons agains the prior period.<\/em><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As 2025 comes to a close, we\u2019re taking a step back to reflect on the year on Bike Hub. It\u2019s been a year of record-breaking sales and steady growth. While headline traffic numbers dipped slightly, the metrics that matter most: engagement, leads, and confirmed sales &#8211; tell the story of a marketplace that continues to [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":74598,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5332],"tags":[200],"featured_location":[338],"class_list":["post-74556","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-industry","tag-year-in-review","featured_location-bottom-row"],"_links":{"self":[{"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/posts\/74556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/comments?post=74556"}],"version-history":[{"count":30,"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/posts\/74556\/revisions"}],"predecessor-version":[{"id":74602,"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/posts\/74556\/revisions\/74602"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/media\/74598"}],"wp:attachment":[{"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/media?parent=74556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/categories?post=74556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/tags?post=74556"},{"taxonomy":"featured_location","embeddable":true,"href":"https:\/\/bikehub.co.za\/news\/wp-json\/wp\/v2\/featured_location?post=74556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}