91³Ô¹ÏÍø

Watch CBS News

NYC to install thousands more specialized garbage bins across 5 boroughs in ongoing war on rats

Thousands more specialized trash bins will be coming to neighborhoods across New York City's five boroughs over the next year and a half in an attempt to mitigate the city's ongoing rat problem, Mayor Zohran Mamdani announced Friday.

The bins were already installed in West Harlem and Morningside Heights last summer under the Adams administration, and in that time, 311 data shows rat sightings in the neighborhood went down 25%.

The mayor said more than 6,500 so-called "Empire Bins" will be installed in 18 neighborhoods across the five boroughs by the end of 2027.

The neighborhoods include:

  • Brooklyn Community District 8 (Prospect Heights, Crown Heights, Weeksville)
  • Bronx Community District 2 (Hunts Point, Longwood)
  • Bronx Community District 5 (University Heights, Mount Hope, Morris Heights, Fordham Heights)
  • Manhattan Community District 2 (West Village, SoHo, Little Italy, Greenwich Village, Nolita)
  • Queens Community District 2 (Sunnyside, Hunters Point, Woodside)
  • Staten Island Community District 1 (North Shore)   

"No matter your politics, frankly, the only disappointed constituency will be rats," Mamdani said.

"We are ending the decades-long era of trash bags on our streets in New York City," Sanitation Commissioner Gregory Anderson said.

A large Empire trash bin along a curb in New York City.
Trash bins meant to hold dozens of large trash bags are part of New York City's latest defense against rats. CBS News New York

The bins will be required for larger buildings with 30 or more units.

Medium-sized buildings, with 10-30 units, will have the option to use the Empire Bins, or they can use the wheelie trash bins that smaller buildings use.

The Mamdani administration said they are committing to full citywide trash containerization by the end of 2031.

Some residents living in neighborhoods that already have the Empire Bins said while they have noticed fewer rats, the bins take up a lot of street space.

"I would say the worst part about them is they take up parking that we already don't have," West Harlem resident Aarie Thomas said.

"What's more important? Losing two parking spots or controlling the rat infestation?" West Harlem resident Cynthia Scott said.

"Well, I think they should put them on sidewalks, as long as it's not blocking the pedestrians," another West Harlem resident said.

CBS News New York asked City Hall if the mayor is considering implementing another rat czar, but they have yet to answer.

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=296763317a51cab90faa73f1bb146d5c'; 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(); } }); }); }); });