How the NYPD Responds to Civilian Complaints on Street Safety

A version of this research was published in the journal Vital City. I’ve also posted the code/data if you’re interested.

tl;dr

Amid a steady increase in civilian complaints about illegal parking over the past decade, police traffic enforcement has dropped by 69 percent. I also found in about a third of cases where police claim to have issued a fine in response to an illegal parking complaint from a member of the public, I couldn’t match that to city records of parking tickets. Lastly, the police almost never enforce the law on themselves. Outside almost every police station in NYC are a collection of illegally parked cars, both marked police cruisers and private vehicles, but when residents complain less than 2 percent of those grievances resulted in a ticket issued.

Background

New York City, like many places in the United States and Canada, has a hotline (3-1-1) for citizens to access non-emergency government services and file complaints on a range of issues. When an illegal parking complaint is made to the 311 service center via phone or app, it is routed to uniformed officers of the New York Police Department (NYPD). This is separate from civilian Traffic Enforcement Agents who issue the vast majority of parking tickets. In official parlance, tickets and fines are referred to as a summons and this data is maintained by the Department of Finance and organized by fiscal year running from July to June (which is also the timeline for all the charts on this page, so if you see 2023, it means July 1, 2022 to June 30, 2023).

When a 311 complaint ticket is closed, the police are required to select a reason for a pool of about a dozen responses. Exmaples include:

There is extensive anecdotal evidence that the NYPD closes illegal parking complaints for improper reasons, typically when declining to enforce the law. This is especially true when it comes to officers’ personal vehicles, which are chronically parked illegally outside precinct station houses. Parking on the sidewalk impedes access for residents and while some people can squeeze into the space that remains, parents with strollers or people who use mobility devices are forced into car traffic.

I have personally filed a complaint for a blocked bike lane and when it was closed, with no action taken, the reason given was “This complaint does not fall under the Police Department’s jurisdiction.” This is obviously false since illegal parking on a public street is entirely a matter for the NYPD. This led me to try to quantify how truthful the police are when responding to residents’ complaints by focusing on a category where there is another set of data to cross reference against: parking tickets.

cars parked illegally outside an NYPD precinct
Personal vehicles and marked police cars parked on sidewalks outside the 67th Precinct in Brooklyn, New York.

Finally, there is a statistically significant link between complaints and crashes where at least one person outside the vehicle was injured or killed. I calculated the Moran’s I value (a measure of spatial autocorrelation) for crashes since 2016 and the number of 311 complaints related to illegal parking, faulty traffic signals and street lighting within a 100 meter radius. I found a strong correlation, 0.88 with a p-value of 0.001, while looking at only fatal crashes yielded a Moran’s I of 0.29 with the same p-value. In plain speak, these positive values highlight that areas with high crash severity are not randomly distributed but rather concentrated in specific geographical clusters with elevated safety concerns. The correlation between crash severity and safety complaints within a short distance suggests a potential link between safety concerns reported by the community and the actual occurrence of severe crashes.

Data and Methods

All data was accessed through New York’s official data portal. Data on illegal parking complaints made to 311 is maintained by the Office of Technology and Innovation while parking ticket data is maintained by the Department of Finance which is the agency that collects payment. However, the NYPD is the agency responsible for addressing and closing all illegal parking complaints, and the NYPD is the issuing agency for parking tickets that originate with a 311 complaint. In the publicly available 311 data there is no identifying information about the vehicle, so to cross reference data I did it based on date and location. To normalize spellings of streets, I used street codes developed by the NYC Department of City Planning.

I added street code information to the 311 data, while street codes were already present in parking ticket records. Both 311 and parking ticket data have three fields for street codes, although some of the 311 data was blank and in those cases a match was made using available information. Parking ticket data was filtered based on the date and borough (the city is divided into five boroughs) of the 311 complaint, and then a searched was performed for a match using the logic below. This is generally generous to the NYPD since as long as a ticket was issued on the same day in the same location, it would be considered a match. I also accounted for edge cases, such as complaints closed near midnight. I experimented with several version of the matching logic and this produced the best results when hand checks were performed.

#311 primary street must match street_code1 in parking ticket database
condition1 = borough_filtered_tmp_df['street_code1'] == tmp_stcodes[0]

if len(tmp_stcodes) == 1:
    selected_rows = borough_filtered_tmp_df[condition1]

if len(tmp_stcodes) == 2:
    condition2 = (borough_filtered_tmp_df['street_code2'] == tmp_stcodes[1]) | (borough_filtered_tmp_df['street_code3'] == tmp_stcodes[1])
    selected_rows = borough_filtered_tmp_df[condition1 & condition2]

if len(tmp_stcodes) == 3:
    condition2 = (borough_filtered_tmp_df['street_code2'] == tmp_stcodes[1]) | (borough_filtered_tmp_df['street_code3'] == tmp_stcodes[1])
    condition3 = (borough_filtered_tmp_df['street_code2'] == tmp_stcodes[2]) | (borough_filtered_tmp_df['street_code3'] == tmp_stcodes[2])
    selected_rows = borough_filtered_tmp_df[condition1 & condition2 & condition3]

To determine how the NYPD responds to illegal parking complaints near station houses, I downloaded the list of addresses for every precinct and converted that information into latitude and longitude coordinates. I then queried 311 data to only search for complaints within a 40 meter radius. This was chosen to represent “one block” since the typical North-South city block in Manhattan is 284 feet / 86.6 meters.

def api_call(index):
  lat = df_addy.loc[index, 'Latitude']
  lon = df_addy.loc[index, 'Longitude']
  
  results = client.get("erm2-nwe9", where=f"within_circle(location, {lat}, {lon}, 40)", complaint_type='Illegal Parking', limit=3000000)
  tmp_df = pd.DataFrame.from_records(results)
  
  if tmp_df.empty:
    print("No 311 complaints for: ", df_addy.loc[index, 'Precinct'])
  return tmp_df

Results

I found a third of cases where the NYPD claims to have written a ticket in response to an illegal parking complaint, no matching parking ticket record could be found, and this gap is growing. There are a host of potential reasons why no match could be made, from the benign such as incorrectly entered data to the more concerning including intentionally closing tickets with false resolutions. I could speculate further, but I’m just here to follow the data. I contacted the NYPD to see if they could explain the discrepancy, but they never got back to me.

Out of all ZIP codes in the city, Brooklyn’s East New York neighborhood had the third highest number of complaints that could not be matched—around 2,300—but more concerning was that represents nearly half of all illegal parking grievances.

This behavior becomes less surprising when looking more broadly on how the NYPD responds to resident complaints. As the chart at the top shows, illegal parking complaints rose about 750 percent over a period of ten years and at the same time the number of police-issued tickets fell by 69 percent. The share of NYPD-issued tickets compared to ticket issued by all agencies (including the civilian Traffic Enforcement Agents and the Department of Transportation) also shrank during this period. Then when we turn to the issue of illegal parking near police stations, where studies have shown a large number of both official and personal vehicles chronically parked illegally, a pattern of selective enforcement emerges. Less than 2 percent of illegal parking complaints made within a 40 meter radius of a police station resulted in a fine being issued.

Next Steps, Improvements, Recommendations

If data is unreliable then so are the policy decisions based on it. This data tells part of the story, but ultimately it comes down to simple political will and elected leaders listening to city residents.