91³Ô¹ÏÍø

Watch CBS News

Harlem Night Market helps small businesses battle post-holiday sales slump

In just about a week, when the holidays are over and shopping slows down, it can be tough on small businesses. 

In Harlem, a holiday market is helping vendors stay afloat. 

The National Retail Federation reports businesses often hit a slump in January as people shop less after the holidays, and that's where community markets like the Harlem Night Market step in. 

"For the Harlem community, by the Harlem community"

"We did it to create a platform for makers and vendors and a community to have something like a piece to be able to have an economic bump during the holidays and stuff," Tony Rahsaan of the Harlem Night Market said.   

Harlem Night Market also operates in the warmer months, making it a year-round venture that businesses can rely on to boost sales. 

"Our goal is to have these companies have these businesses turn into big brick and mortar, bigger companies and stuff like that. It's in the Harlem community, for the Harlem community, by the Harlem community," Rahsaan said. 

"It gives even the small businesses an opportunity"

Theresa Crichlow, owner of BeeFavored, has been harvesting honey in Harlem for about four years. 

"I'm the local beekeeper here in Harlem, the heart of Harlem,"  Crichlow said. "A swarm of bees got on the top of my mom's garage. Instead of killing it, we started to call the local beekeepers, and that's how everything began. We have honey spreads, honey creamers. And so we have a variety from A to Z."

Crichlow said getting the word out can be the biggest challenge for a small business. One way she does so is with her attendance at the Harlem Night Market. 

"Just for meeting customers. And it's always something about, you know, local in your own community," Crichlow said.     

For brands like Body Vanity, which doesn't have a physical store, it's especially helpful. 

"We're here at the Harlem Night Market. We come back every year. I have everything from, like, our body oils, moisturizers, our soaps are a fan favorite, we have pure products and everything's plant based," Body Vanity owner Lisa Arias said. "We usually meet new customers or, like, let's say customers that are in the area that if they already purchase from us, they come back and they're like, 'Oh, you guys are here.' And they restock on their favorite. And it's also affordable for the vendors. It's good pricing, it gives even the small businesses an opportunity to come out and showcase their products."

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });