Skip to main content

Prerequisites

Before you begin, ensure you have:
  • Node.js (v12.x or higher)
  • npm (v6.x or higher)
  • A Shopify-powered website to test against
  • Basic knowledge of JavaScript and async/await patterns
Never use this on production sites without permission. This guide uses test products and should only be used for educational purposes.

Installation

1

Install Dependencies

The project requires several npm packages. Install them using:
npm install request-promise cheerio delay atob btoa colors
If you’re using a modern Node.js version, atob and btoa are built-in and may not need separate installation.
2

Choose Your Script

Select the appropriate script for your use case:
  • Preload.js - For sites with strict bot protection
  • fast.js - For speed-optimized checkouts
  • safe_1.js - For maximum reliability
Start with safe_1.js if you’re unsure. It’s the most stable option.
3

Configure Task Settings

Edit the task configuration object in your chosen script. See the Configuration section below for details.

Configuration

Basic Task Object

All scripts use a similar task configuration object. Here’s a complete example from fast.js:
let item = {
  // Shopify Account (optional, required if site needs login)
  shopifyEmail: "",
  shopifyPassword: "",
  
  // Product Search
  url: 'https://www.jimmyjazz.com/collections/mens-basketball-shoes/products/nike-blazer-mid-77-vintage-bq6806-108',
  keywords: "",  // Alternative to URL: "+yeezy +350 +boost -toddler"
  
  // Variant Selection
  color: "",
  size: "9",
  randomColor: true,
  randomSize: true,
  
  // Shipping Profile
  profile: {
    firstName: "Tim",
    lastName: "Smithson",
    email: "[email protected]",
    phoneNumber: "8455415678",
    address: "19 main street",
    apt: "",
    city: "New York",
    state: "NY",
    zipCode: "10016",
    country: "US",
    
    // Payment Information
    nameOnCard: "Tim Smithson",
    cardNumber: "4242424242424242",
    cardType: "visa",
    expirationMonth: 2,
    expirationYear: 22,
    cvv: "123"
  },
  
  // Proxy Configuration (optional)
  proxyIp: "",
  proxyPort: "",
  proxyUser: "",
  proxyPass: "",
  
  // Advanced
  website: "www.jimmyjazz.com",
  delay: 0
};

Configuration Fields Explained

URL Method (Recommended):
url: 'https://kith.com/products/nike-dunk-low'
keywords: ""  // Leave empty when using URL
Keyword Method:
url: ""
keywords: "+nike +dunk +low -toddler"  // Space-separated
Use + prefix for required terms and - for exclusions:
  • +yeezy +boost = must contain both
  • -kids = must NOT contain “kids”
Size Selection:
size: "10",        // Specific size
randomSize: false  // Set to true for any available size
Color Selection:
color: "black",    // Specific color
randomColor: false // Set to true for any color
For clothing, use standard sizes: "S", "M", "L", "XL"
Required Fields:
  • firstName, lastName
  • email (must be valid format)
  • phoneNumber (10 digits)
  • address, city, state, zipCode, country
  • nameOnCard, cardNumber, cvv
  • expirationMonth (1-12), expirationYear (last 2 digits)
Optional Fields:
  • apt (apartment/suite number)
Use test card numbers only! 4242424242424242 is Stripe’s test card.
proxyIp: "123.45.67.89",
proxyPort: "8080",
proxyUser: "username",
proxyPass: "password"
When proxy is configured, the script constructs:
proxy: `http://${proxyUser}:${proxyPass}@${proxyIp}:${proxyPort}`
Leave all proxy fields empty to run without a proxy (direct connection).
Website:
website: "www.kith.com"  // Domain without protocol
Delay:
delay: 0  // Milliseconds to delay before checkout submission
Adding a small delay (100-500ms) can help avoid anti-bot triggers on some sites.

Running Your First Task

Example 1: Direct URL Purchase (safe_1.js)

// safe_1.js configuration
let item = {
  shopifyEmail: "",
  shopifyPassword: "",
  color: "",
  delay: 0,
  
  // Direct product URL
  url: 'https://www.jimmyjazz.com/products/adidas-terrex-frozetrack-mid-ac7841',
  keywords: "",
  
  profile: {
    firstName: "John",
    lastName: "Doe",
    email: "[email protected]",
    phoneNumber: "5551234567",
    address: "123 Test St",
    apt: "",
    city: "Los Angeles",
    state: "CA",
    zipCode: "90001",
    country: "US",
    nameOnCard: "John Doe",
    cardNumber: "4242424242424242",
    cardType: "visa",
    expirationMonth: 12,
    expirationYear: 25,
    cvv: "123"
  },
  
  randomSize: true,
  size: "9",
  website: "www.jimmyjazz.com"
};
Run it:
node safe_1.js

Example 2: Keyword Search (fast.js)

// fast.js configuration
let item = {
  url: "",
  keywords: "+jordan +1 +high -toddler",  // Search for Air Jordan 1 High (not toddler sizes)
  
  randomSize: false,
  size: "10.5",  // Specific size
  randomColor: false,
  color: "bred",  // Specific colorway
  
  website: "www.nike.com",
  delay: 250  // 250ms delay before checkout
};
Run it:
node fast.js

Example 3: Preload Strategy (Preload.js)

// Preload.js has dual product configuration
let item = {
  // Test product (loads first to establish session)
  urltest: 'https://kith.com/products/test-tee',
  keywordstest: "+tee",
  sizetest: "M",
  randomSizetest: true,
  
  // Real target product
  url: 'https://kith.com/products/nike-dunk-low-premium',
  keywords: "",
  size: "10",
  randomSize: false,
  
  website: "www.kith.com"
};
Run it:
node Preload.js
The preload strategy first adds a cheap/available test product to cart, generates a checkout URL, then swaps to your target product. This can bypass some rate limiting.

Understanding the Output

Status Messages

The script outputs colored status messages:
Searching For Product...        # Looking for product
Adding to Cart...              # Adding variant to cart
Going to Checkout...           # Navigating to checkout
Signing Into Account...        # Logging into Shopify account (if needed)
Polling Queue 0...             # Handling queue system
Submitting Address...          # Submitting shipping info
Getting Shipping Rates...      # Fetching shipping options
Submitting Shipping...         # Selecting shipping method
Vaulting Card Info...          # Tokenizing payment card
Checking Out...                # Submitting payment
Polling Checkout 0...          # Waiting for order confirmation
Success                        # Order completed!

Error Messages

Common errors and their meanings:
ended run, error                                    # Generic error
ended run, Paypal Only                             # Site only accepts PayPal
ended run, There are no shipping methods available  # Address/shipping issue
Captcha needs solving                              # reCAPTCHA detected

Next Steps

Advanced Features

Learn about queue handling and captcha integration

Script Variants

Compare Preload, Fast, and Safe scripts

API Reference

Explore all available functions

Configuration Guide

Deep dive into all configuration options

Troubleshooting

Problem: Script can’t find the productSolutions:
  • Verify the URL is correct and includes the full product path
  • Check that keywords match the exact product title
  • Ensure the product is published and available
  • Try accessing {url}.js directly in your browser to see the JSON
Problem: Script keeps polling queue endlesslySolutions:
  • This is normal during high-traffic releases
  • The queue system is working as intended
  • Wait for queue to complete (can take several minutes)
  • Try using a different proxy/IP address
Problem: Error during checkout submissionSolutions:
  • Verify all profile information is correct
  • Check that card details are valid (use test cards for testing)
  • Ensure shipping address is valid for the site’s region
  • Check if site requires account login
Problem: “Captcha needs solving” appearsSolutions:
  • The getCaptcha() function is a placeholder
  • You need to integrate a captcha solving service (2Captcha, Anti-Captcha, etc.)
  • Implement the captcha solver in the getCaptcha() function
  • See the Captcha Integration guide for details
Performance Tip: For the fastest checkouts, use fast.js with a good residential proxy and pre-configured profile information.

Build docs developers (and LLMs) love