Scraping Used Car Inventory

Posted on Feb 17, 2019

The rise of e-commerce has left in its trails an abundance of data that, if collected and harnessed properly, can provide meaningful insight to business analysts, economists, and any student of trade.  For my web-scraping project at The Academy, I decided to collect data from a popular and rapidly growing online retailer of used cars.  Fields that I scraped from this retailer’s website included VIN numbers, stock keeping units (SKU), vehicle price, mileage, make/model, year, efficiency (as measured by both city miles/gallon and highway miles/gallon), engine type, fuel type, transmission type, horsepower, interior color and exterior color, number of passengers, powertrain and base warranty… in short, I was able to re-construct the company’s inventory with a high degree of precision and detail.

The scrape I developed could have many useful applications.  A financial analyst might run it periodically to ascertain metrics of interest such as rate of sale, days in inventory, average selling price, markdown cadence, and the quality/skew of new vehicles that are acquired into inventory.  Competitors might use it to understand the types of vehicles and pricing levels in the market; they may also be able to join the scrape data with other publicly available data sets to understand vehicle ownership patterns, accident incidence, lease records, etc.  With access to data as complete as this, and with a truly unique identifier to each observation (i.e. VIN), the possibilities for analysis are nearly endless.

Scraping this site was not, however, without its challenges.  First, I developed a Scrapy shell to generate a list of URL’s representing links to each of the company’s vehicles inventoried for sale.  Once inside those individual pages, though, I encountered numerous scripts (Java, Ajax, etc.) that made parsing the data extremely difficult. I then wrote a second script in Selenium to scrape each individual car’s page and extract the details for tabulation. This process took much tweaking, but achieved the desired result.  After scraping several hundred sites, the site identified my crawl; requiring me to anonymize my proxies to proceed.  In short, the stumbling blocks I encountered proved to be an incredible learning experience for me.

Some interesting observations and take-aways from the data follow below.

First, a quick EDA; the retailer I scraped focuses on cars 5 years or younger;  mileage tending in the 35k range, and at a pricing sweet-spot of about $16k:

Mileage, Age, and Pricing Statistics

The inventory of this retailer skewed heavily towards Nissan brand cars.  This made sense to me; according to news sources, Nissan has been one of the most aggressive manufacturers in the US; spending heavily on incentives over the years in an attempt to gain share of market.  In fact, according to a Financial Times article dated January 31, 2019, Nissan's operating margin of 3.6% is the lowest of any large manufacturer. http://(

Of interest to me were which variables most affected price.  I ran a correlation matrix to observe relationships with various data features; the heatmap below indicates that vehicle price tended to be positively correlated with its horsepower; and negatively correlated with efficiency (Highway and City Miles per Gallon).

This could be visualized further through a scatterplot and regression analysis of vehicle horsepower & price.  Additionally, the engine type of a vehicle and its tire size, in that they are both partially related to horsepower, seem to reflect a similar relationship to price.

Though intuitive, I found the relationships curious and worthy of further exploration.  Are consumers really willing to pay more for a vehicle that is less fuel efficient?  Is the absolute power of a vehicle still the key driver of its value?  The answer, in my opinion, is yes; but the relationship is in fact changing.

A more detailed study of the relationship between efficiency and price in this inventory sample indicates that while a negative correlation continues to exist for traditionally fueled vehicles (i.e. gas and diesel),  newer hybrid and lithium electric models are re-defining this relationship.  Notably, electric cars exhibit a positive correlation between their price and efficiency:

Scatterplot with linear regression: Highway MPG & Price

Currently, there are not many vehicles in this retailer's inventory that use alternative energy; and the majority of those that do, appear to be trucks.  But as these are relatively new technologies, I would expect more and more of these cars to enter the mix, and as I run this scrape in future periods, I would expect correlations to shift.

A final point of interest to me has to do with the observed relationship between exterior price and color.  Though the most common color in inventory happened to be black, the highest average prices were for cars labeled "graphite", which is a dark shade of gray.  But this is where nomenclature can be very important -- labeling the same graphite car as either "charcoal" or simply "grey" would seem to result in a much lower price!

About Author


Marc Hasson

As an investment research professional, much of my work over the last 17 has centered around developing a deep understanding of businesses based on senior management interactions, financial modeling, forecasting, and primary due diligence. Data has also been...
View all posts by Marc Hasson >

Related Articles

Leave a Comment

No comments found.

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 airbnb Alex Baransky alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus API Application artist aws beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep Bundles California Cancer Research capstone Career Career Day citibike clustering Coding Course Demo Course Report D3.js data Data Analyst data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization Deep Learning Demo Day Discount dplyr employer networking feature engineering Finance Financial Data Science Flask gbm Get Hired ggplot2 googleVis Hadoop higgs boson Hiring hiring partner events Hiring Partners Industry Experts Instructor Blog Instructor Interview Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter lasso regression Lead Data Scienctist Lead Data Scientist leaflet linear regression Logistic Regression machine learning Maps matplotlib Medical Research Meet the team meetup Networking neural network Neural networks New Courses nlp NYC NYC Data Science nyc data science academy NYC Open Data NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time Portfolio Development prediction Prework Programming PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn Selenium sentiment analysis Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau team TensorFlow Testimonial tf-idf Top Data Science Bootcamp twitter visualization web scraping Weekend Course What to expect word cloud word2vec XGBoost yelp