Hack 53 Scope Out the Marketplace Competition


A little market research into what used items are currently selling for will help you price your items before listing them.

When you're going through the process of listing an item for sale in the Marketplace [Hack #49], Amazon provides a recommended price based on the condition you set for your item. If you'd like to see how your competition is pricing the item, though, you can click through the listings and get a feel for the average price.

Why not scrape the listings from the site and calculate the actual average price? And why not throw in the highest and lowest price while you're at it? Armed with this information, you can make an informed decision about how to price your item.

53.1 The Code

Create a file called used_report.pl containing the following code:

# used_report.pl
# A script to scrape Amazon, retrieve used listings, and write to a file
# Usage: perl used_report.pl <asin>

#Take the asin from the command-line
my $asin =shift @ARGV or die "Usage:perl used_report.pl <asin>\n";

use strict;
use LWP::Simple;

#Assemble the URL
my $url = 'http://www.amazon.com/exec/obidos/tg/stores/offering/list'.
          '/-/' . $asin . '/used/';

#Request the URL
my $content = get($url);
die "Could not retrieve $url" unless $content;

#Set up some variables
my $i = 0;
my $totalprices = 0;
my $thisPrice = 0;
my $highPrice = 0;
my $lowPrice = 0;

#Loop through listings
while ($content =~ m!<b class=price>\$(.*?)</b>!mgis) {
    $thisPrice = $1;
    if ($thisPrice >= $lastPrice) { 
        $highPrice = $thisPrice;
    if ($i == 1 || $thisPrice <= $lowPrice) { 
        $lowPrice = $thisPrice;
    $totalprices += $thisPrice;

$avgPrice = $totalprices / $i;

#Show the results
print <<"EOF";
Average Used Price: \$$avgPrice
Highest Price: \$$highPrice
Lowest Price: \$$lowPrice

53.2 Running the Hack

This script runs from the command line and is passed an ASIN:

perl used_report.pl asin

You should receive a simple three-line report listing the average, highest, and lowest prices for the book:

Average Used Price: $19.54
Highest Price: $20.82
Lowest Price: $18.70