Amazon Arbitrage

What is Arbitrage?

Arbitrage is the purchase of an item or product from one market so you can sell it in another market and make a profit from a discrepancy in the price between those markets.

The term, Arbitrage, is commonly used in financial and securities markets, where, for example, traders search and take advantage of differences in currency prices between different countries’ currency markets. e.g., USDGBP or JPYUSD. e.t.c.

Suppose a difference in the price of a product, service, or item exists. In that case, an arbitrage opportunity presents itself because it allows you to buy at the lower price and sell for the higher price making a profit in-between.

Amazon Arbitrage?

So what does arbitrage have to do with Amazon, and how can you apply the concept to make a profit?

Every day, sellers list items on Amazon in inappropriate categories or with poorly worded, incorrect or misspelt titles and descriptions. Unfortunately, due to how most people search for items on Amazon (by entering keywords in the search box), these poorly listed items are hidden from the vast majority of buyers.

Given the sheer volume of items getting published on the platform simultaneously, they are a constant source of potential arbitrage opportunities. So now, let’s take a look at the different types of arbitrage opportunities on Amazon.

Product Titles, Descriptions and Prices

Taking advantage of misspelt titles and descriptions is probably the most well known and popular type of arbitrage on Amazon. These opportunities exist because people don’t realise how vital product title is to the success of their listing in the marketplace.

For example, searching for a product using the keyword “Playstation 5” today returns 30,000 items when you sort by “featured”, but sorting by “Average Customer Review” returns 1,000 items. Essentially, that’s about 29,000 arbitrage opportunities with “Playstation 5”, as a large proportion of these will be genuine items. Still, it proves these opportunities exist, waiting for people to discover them.

You should always factor the delivery charge into the item’s final selling price. For example, a £20 item with a £5 shipping is essentially the same price as a £5 item with £20 shipping, so when investigating your potential final selling price, you need to take both figures into account.

Assuming you find comparable items sold on Amazon at a price high enough to turn a profit, you are in business. The only thing left is to decide how much you are willing to pay for the item, including shipping, and then placing your order.

Why Should You Automate Arbitrage?

Arbitrage is a way to make a lot of money, but it requires continuous maintenance to be successful. We decrease the time needed or spent working on this by automating arbitrage and increase our profit margins. It can continue to run in the background as you go about your day. 😎

Here’s how you can automate Amazon Arbitrage:

  • Product Data: You can find products on the internet, making it much easier to configure and set up a scraper, collect product attributes, and rate products using a set of parameters. An interesting concept would be to use machine learning to choose products based on the frequency of past purchase orders or calculate the value of products.

  • Product Listing: Automate the process of connecting to an API and listing product data on your e-commerce website. Doing so reduces the time you spend on this earnings stream, which increases the value you get per unit time used to set everything up end-to-end.

  • Product Discovery: Automate advertisement campaigns and connect to thousands of premium traffic sources to automatically create and run campaigns across platforms at scale. It is super risky. These advertisement campaigns are expensive and could cost you if you mess up the setup.

  • Orders and Shipping: Someone places an order on your website, and you have to ship it directly to their address. Now, this part of the entire process is challenging to automate. Programmatically entering debit or credit card details is risky, and you risk violating Amazon’s Terms of Service. In addition, you can get your Amazon account suspended if caught, which creates a sticky situation, and you are mandated to refund products bought.

Client’s Requirement

Below is an end-to-end requirement of one of our clients:

  • Set up an excel spreadsheet containing product details, such as search keywords, quantity, and product type, all of which Shopify API require to list a product on the platform.

  • Select products, scrape product data on Amazon and store details in JSON files.

  • Automate posting data in the JSON files to Shopify, so products are available to potential buyers or customers; it takes seconds for products to be available. 🚀

Python Code

Python is our choice of programming language for this task, as it cuts through many disciplines, such as business intelligence, data science, with enormous features for collecting and analyzing data. In addition, Shopify API is extensive and well-documented, so we can quickly post high-quality product data we scrape from Amazon. 💰

# -*- coding: utf-8 -*-
"""
Created on September 01 06:10:16 2021
@author: (c) 2021 Hori Systems Limited
"""

import requests


def get_product_links(search):
    SEARCH_QUERIES = search.replace(' ', '+')
    FINAL_ENDPOINT = BASE_ENDPOINT + SEARCH_QUERIES
    HEADERS = rotate_agents()
    r = requests.get(FINAL_ENDPOINT, headers=HEADERS)
    soup = BeautifulSoup(r.content, "html.parser")

    all_links = []

    for link in soup.find_all('a'):
        all_links.append(link.get('href'))

    product_links = [link for link in all_links if 'keyword' in str(
        link) and not('offer-listing' in str(link))]

    complete_product_links = []

    split = 4
    counter = 0

    for link in product_links:
        if counter % split == 0:
            complete_product_links.append('https://www.amazon.co.uk'+link)
        counter += 1
    return complete_product_links


def construct_product_json(soup, product_type, search):
    '''
    body_html = description (copy from HTML)
    images = product images
    tags = tags can get from amazon
    title = product title
    price = use markup from original price 
    vendor = from the title
    product_type = get_from_amazon
    '''     
    data = {
        "product": {
            "title": title,
            "body_html": description,
            "vendor": '****',
            "product_type": product_type,
            "tags": tags,
            "price": price,
            "images": images[:image_limit]
        }
    }

    return data


# Variables
API_KEY = ""
PASSWORD = ""
STORE_NAME = ""


BASE_ENDPOINT = 'https://%s:%s@%s.myshopify.com/admin' % (
    API_KEY, PASSWORD, STORE_NAME)


SHOPIFY_ENDPOINT = '/api/2021-07/products.json'


def create_new_product(json_data):
    complete_endpoint = BASE_ENDPOINT + SHOPIFY_ENDPOINT
    r = requests.post(complete_endpoint, json=json_data)
    return r


def delete_new_product(json_data):
    complete_endpoint = BASE_ENDPOINT + SHOPIFY_ENDPOINT
    r = requests.delete(complete_endpoint, data=json_data)
    return r


def get_products():
    complete_endpoint = BASE_ENDPOINT + SHOPIFY_ENDPOINT
    r = requests.get(complete_endpoint)
    return r

Conclusion

In conclusion, automating Amazon Arbitrage is significantly straightforward and less time-consuming, making it an enticing opportunity. Furthermore, automatically finding products and listing them creates an end-to-end chain of products, which will increase sales. However, automatic fulfillment and advertising could be helpful when the business successfully makes enough profit — you have to figure this bit out and keep refining your marketing spend and strategy.

Contact us; we can help you create advanced and complex web scrapers that’ll crawl thousands and even millions of e-commerce pages for products data. Similarly, data can be in multiple formats (.csv and .json). Or, we can automatically send it to cloud storage like Amazon S3, Azure Blob Storage, and Google Cloud Storage. Want to ingest the data to a database of your choice? We got you covered!