It seems like every time I check the nextdoor website, there’s a new post about a catalytic converter theft. There would often be footage from security cameras accompanying these posts showing just how well coordinated the thefts are - robbers seem to work in teams of 3 or 4, each with a designated role.

With the number of high street banks shrinking, it’s starting to feel like cars have become the more attractive item to rob.

Is this actually an increasing occurrence?

To answer this, I used a python script found here and modified it to search the nextdoor website for posts mentioning ‘catalytic thefts’ and scraped the result into a CSV file.

Click here for the modified code in python


from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys


from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ChromeType


import sys
import time
import csv

from lxml import html
import requests
import json

from dotenv import load_dotenv
import os

# Load ability to use .env
load_dotenv()

# Set up driver options
capa = DesiredCapabilities.CHROME
capa["pageLoadStrategy"] = "none"


# Set up driver

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://nextdoor.co.uk/login/?ucl=1")
time.sleep(10)

# Accept cookies

driver.find_element(By.XPATH, '//button[text()="Accept All Cookies"]').click()

# Log In
username = driver.find_element(By.ID, "id_email")
password = driver.find_element(By.ID, "id_password")

username.send_keys(os.getenv("email")) # Retrieved from .env file
password.send_keys(os.getenv("password")) # Retrieved from .env file
driver.find_element("xpath", '//button[@id="signin_button"]').click()
time.sleep(20) # if not scrolling in time, make this number larger

# search

catalytic = driver.find_element("xpath", "//input[@class='css-1j8137u']")
catalytic.click()

catalytic.send_keys("catalytic thefts", Keys.ENTER)

# post tab

postings = driver.find_element("xpath", "//a[@data-testid='tab-posts']")

postings.click()

# Use Selenium to scroll 'range' number of times
# Change the second number in 'range(x, y)' to determine how many times you want it to scroll down.
for i in range(1, 30):
	
	driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
	time.sleep(5)

	# Scroll to top to avoid "Unable to click element" error
	if (i == 1):
		driver.execute_script("window.scrollTo(0, 0);")
		time.sleep(5)

time.sleep(5)



# Scrape the page source returned from Chrome driver for posts
html_source = driver.page_source
readable_html = html_source.encode('utf-8')
tree = html.fromstring(readable_html)
postNodes = tree.xpath('.//div[@class="css-15luflj"]')

# Iterate over each post node that has an author to get data in an organized fashion
author_path = './/div[@class="css-77j1dk"]/span/text()'
location_path = './/div[@class="css-77j1dk"]/span/text()'
post_content_path = './/div[@class="css-1i0jvqo"]/span/text()'

posts = [(post.xpath(author_path)[0],
 		  post.xpath(location_path)[1],
 		  post.xpath(post_content_path),
 		  post) for post in postNodes if post.xpath(author_path) != []]
 		  
 		  
# Create CSV Writer for posts
ofile  = open('posts.csv', "w")
writer = csv.writer(ofile, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
post_counter = 1


# Output to csv file
for post in posts:
    
	author = post[0]


	location = post[1]
    
    
	content = post[2]

	writer.writerow([author, location, content])

	post_counter += 1

Nextdoor’s search for posts is not the best as irrelevant results would come up such as posts on bicycle thefts and police events. I also had to watch out for posts mentioning normal car thefts and there were no posts prior to 2020 which came up. After cleaning the data, this was the result.

Nextdoor only shows what’s going on in our neighbourhoods but catalytic converter thefts have been increasing all over the country.

What is a catalytic converter?

A catalytic converter is part of a car’s exhaust system and its purpose is to remove harmful emissions. It is located underneath the car near the engine and since 1993, all petrol cars sold in the uk are legally required to have one. Catalytic converters make use of noble metals, which are resistant to corrosion, to speed up the chemical reaction of converting harmful emissions into less harmful gasses. Some of these metals used, such as platinum and palladium, are also precious metals as they are rare and carry a high economic value. This is why catalytic converters are so lucrative for thieves. Hybrid cars are prime targets as their converters contain a high concentration of these precious metals.

These price movements in 2021 can be explained by global car production failing to keep up with an expected increase in demand for cars, where global car production is a large source of demand for platinum and palladium. A similar thing happened in 2022 where Russia, the second largest source in the world for platinum and palladium, is sanctioned in February for its invasion of Ukraine leading to a spike in the prices of the precious metals. The number of thefts reported on the nextdoor website seem to be following the market price of the precious metals used in catalytic converters. Mentions of the thefts reach new highs after the precious metals spike in price.

There we have it. Those who steal catalytic converters in my neighbourhood seem to be keeping a close eye on the market price of precious metals so they can determine if it’s worth the effort.