Skip to content

Basic Python script that leverages public endpoints on Shopify stores to track out-of-stock products and attempt to purchase them the moment they become available and update users through SMS using the Twilio API.

Notifications You must be signed in to change notification settings

kareemelgendy/restock-bot

Repository files navigation

Restock Bot

A basic Python script that will scrape e-commerce websites powered by Shopify and periodically check for a product restock and update the user through SMS using the Twilio API or automatically attempt to purchase the item(s) being watched the moment they become available.

Important

  • Make sure /products.json is accessible
  • Enter Twilio API credentials in an .env file for SMS notifications

Checkout Testing

Shopify checkout test cases:

  • Declined message - 4000000000000002
  • Incorrect number - 4242424242424241
  • Disputed transaction - 4000000000000259
  • Invalid Expiry Month - 12 < XX
  • Invalid Expiry Year - past year
  • Invalid CVV - any 2 digits

Getting Started

  1. Clone the repo
$ git clone https://github.com/kareemelgendy/restock-bot.git
  1. Create and activate virtual environment

    Install virtualenv: sudo pip install virtualenv if needed

$ cd restock-bot
$ virtualenv env
$ source env/bin/activate
  1. Create an .env file for the Twilio SMS API keys (if using SMS)
$ touch .env
$ source .env
  1. Install the required modules
$ pip install -r requirements.txt
  1. Enter profiles (if any) in data/profiles.json and products in data/products.json
    • Profiles are only used for product checkout if opted for

Example Profile:

"John Doe": {
	"First Name": "John",
	"Last Name": "Doe",
	"Email": "johndoe@gmail.com",
	"Address": "23 Jump St.",
	"Address 2 (optional)": "",
	"City": "Toronto",
	"Province": "Ontario",
	"Country": "Canada",
	"Postal Code": "M5V 3L9",
	"Phone Number": "6471231234",
	"Payment": {
      "Card Number": "123456789012",
		"Name": "John Doe",
		"Expiry Date (MM/YY)": "12/34",
		"CVV": "123"
	}
}

Example Product:

  • If an item has multiple sizes and/or colours fill accordingly, otherwise keep the fields blank
    • Clothing: size (required), colour (optional)
    • Footwear: size (required), colour (optional)
    • Accessories: size (not applicable), colour (not applicable)
  • Fill Phone field if you wish to be notified by SMS
  • Fill Profile field with a valid profile if you want to attempt to checkout

**If both Profile and Phone fields are filled, Profile will take precendence

{
	"Product URL": "https://ca.octobersveryown.com/collections/t-shirts/products/ss22-bubble-owl-t-shirt-black",
	"Size": "M",
	"Colour": "",
	"Profile": "John Doe",
	"Phone": ""
}
  1. After entering profiles and products, run the following:
python main.py

Disclaimer

The developer of this software should not be held liable for any lost opportunities resulting from its usage.

About

Basic Python script that leverages public endpoints on Shopify stores to track out-of-stock products and attempt to purchase them the moment they become available and update users through SMS using the Twilio API.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages