🏠 Home 

Kleinanzeigen - Sponsored Products remover

Removes all the sponsored products/banners/suggested searches/etc from Kleinanzeigen.de

  1. // ==UserScript==
  2. // @name Kleinanzeigen - Sponsored Products remover
  3. // @namespace https://greasyfork.org/en/users/2755-robotoilinc
  4. // @author RobotOilInc
  5. // @version 0.1.3
  6. // @license MIT
  7. // @description Removes all the sponsored products/banners/suggested searches/etc from Kleinanzeigen.de
  8. // @match http*://www.kleinanzeigen.de/*
  9. // @icon https://i.imgur.com/DvzUwwS.png
  10. // @run-at document-start
  11. // ==/UserScript==
  12. // Function to remove elements based on a selector
  13. const removeElements = (selector) => {
  14. document.querySelectorAll(selector).forEach((element) => {
  15. element.remove();
  16. });
  17. };
  18. // Observer to watch for mutations in the DOM
  19. new MutationObserver((mutationList, observer) => {
  20. // Remove skyscraper
  21. removeElements('[id*="-sky-atf-"]');
  22. // Remove "Billboard"
  23. removeElements('[id$="-billboard"]');
  24. // Remove "Gallery"
  25. removeElements('[id="home-gallery"]');
  26. // Remove "Umfrage"
  27. removeElements('[id="store-gallery"]');
  28. // Remove "Top" ads
  29. removeElements('.badge-topad.is-topad');
  30. // Remove "Unternehmensseiten"
  31. removeElements('[id="measure-emotions-survey"]');
  32. // Remove top cities
  33. removeElements('[id="home-topcitybx"]');
  34. // Remove top-banner messages
  35. removeElements('[id="my_messages-top-banner"]');
  36. // Remove all ads without a picture (useless)
  37. removeElements('[src="https://img.kleinanzeigen.de/api/v1/prod-static/images/placeholder/nachbarschaftshilfe?rule=$_35.JPG"]');
  38. // Remove pointless tag list
  39. removeElements('[id="srchrslt-shngls"]');
  40. // Remove banner on user page
  41. removeElements('[id="pstrads-atf-728x90"]');
  42. // Remove all "Pro" ads and highlighted ads
  43. document.querySelectorAll('.j-action.j-dont-follow-vip, li.ad-listitem.is-highlight').forEach((element) => {
  44. const parent = element.closest('li.ad-listitem');
  45. if (parent) parent.remove();
  46. });
  47. // Remove weird dividers that are now left
  48. document.querySelectorAll('.ad-listitem, .followuser-listitem, .savedsearch-listitem').forEach((element) => {
  49. element.style.border = 0;
  50. });
  51. }).observe(document.documentElement, { childList: true, subtree: true });