CODING & CASE STUDIES

Using Firecrawl to Scrape Nike Product Reviews: Lessons from a Failed Amazon Attempt

A few weeks ago, I worked on a small product insight project that required collecting SKU-level customer review data from e-commerce websites. Initially, I attempted to scrape product reviews from Amazon, but quickly discovered how difficult modern e-commerce scraping has become. My scraper either returned incomplete data or empty responses due to anti-bot protections and dynamic page rendering.

Instead of abandoning the project, I switched to Nike and used Firecrawl to collect review data successfully.

Having trouble debugging your scraping scripts or analyzing custom datasets?
Our experienced statistics and programming tutors can handle the web scraping, data cleaning, and statistical reporting for your university classes, thesis, or portfolio projects.
Get a free quote today!

The Scraped Product & The Firecrawl Solution

The target product was the Nike Air Max 95 Big Bubble Leather men’s shoe with the style code IM0696-200. Using Python and Firecrawl, I scraped 150 customer reviews directly from Nike’s public review pages. The scraper collected review titles, star ratings, review text, and dates while respecting rate limits by pausing between requests.

One thing I appreciated about Firecrawl was its ability to handle JavaScript-heavy pages much more effectively than traditional scraping approaches. Instead of manually fighting with dynamic rendering issues, the tool returned cleaner and more structured content that was easier to process for analysis.

The Scraping Code

Below is the clean and reproducible Python script using the Firecrawl REST API to navigate the page, trigger dynamic loading actions, and extract structured review data directly in a clean JSON format.

# scrape_nike_reviews.py
import requests
import json
import time

API_URL = "https://api.firecrawl.dev/v1/scrape"
HEADERS = {
    "Authorization": "Bearer YOUR_FIRECRAWL_API_KEY",
    "Content-Type": "application/json"
}

target_url = "https://www.nike.com/t/air-max-95-big-bubble-leather-mens-shoes-2xNsHz6W/reviews"

# Set up extraction schema for review fields
scrape_params = {
    "url": target_url,
    "formats": ["json"],
    "jsonOptions": {
        "prompt": "Extract all visible customer reviews. Get the title, star rating, author, date, and review text content.",
        "schema": {
            "type": "object",
            "properties": {
                "reviews": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "title": {"type": "string"},
                            "rating": {"type": "integer"},
                            "content": {"type": "string"},
                            "author": {"type": "string"},
                            "date": {"type": "string"}
                        },
                        "required": ["title", "rating", "content"]
                    }
                }
            },
            "required": ["reviews"]
        }
    },
    # Pagination/Scrolling actions to load all reviews before extracting
    "actions": [
        {"type": "scroll", "direction": "down"},
        {"type": "wait", "milliseconds": 2000},
        {"type": "click", "selector": "button[aria-label='Go to next reviews']"},
        {"type": "wait", "milliseconds": 2000}
    ]
}

print("Sending scrape request...")
res = requests.post(API_URL, json=scrape_params, headers=HEADERS)

if res.status_code == 200:
    reviews_json = res.json().get("data", {}).get("json", {})
    with open("nike_reviews.json", "w") as f:
        json.dump(reviews_json, f, indent=2)
    print("Successfully scraped", len(reviews_json.get("reviews", [])), "reviews!")
else:
    print("Error:", res.status_code, res.text)

Data Analysis & NLP Insights

After cleaning the dataset, I used basic natural language processing (NLP) techniques such as word frequency analysis, TF-IDF comparisons, and bigram analysis to identify patterns in customer feedback.

Positive reviews frequently mentioned terms like “comfortable,” “great shoe,” and “super comfortable,” while dissatisfied customers commonly mentioned phrases such as “quality control” and “runs small.”

Sentiment Category Top Word Frequencies & Bigrams Common Feedback Themes
Positive Sentiment "comfortable", "great shoe", "super comfortable" Excellent daily walking support, classic retro styling, responsive sole cushioning.
Negative Sentiment "quality control", "runs small", "sole squeaking" Glue stains around mid-soles, narrow fit requiring sizing up, aesthetic inconsistencies.

The analysis revealed something interesting: customers generally loved the comfort and aesthetics of the shoe, but negative reviews consistently pointed toward sizing inconsistencies and manufacturing quality concerns. For a premium shoe retailing at over $200, even small quality control issues became highly noticeable in customer feedback.

Key Lessons & Future Applications

The project taught me several important lessons about modern web scraping:

  • Not all websites are equally scrape-friendly: Large platforms like Amazon employ sophisticated anti-automation systems (such as advanced IP rotation blocking and CAPTCHA walls) that make scraping significantly more difficult.
  • Modern tools simplify dynamic pages: Tools like Firecrawl manage the rendering overhead of JavaScript-heavy websites, turning complex DOM crawling into a simple API call.
  • Data needs translation to insights: Scraping projects become much more valuable when the collected data is transformed into meaningful statistical analyses and business insights rather than simply stored in a spreadsheet.

Although the original Amazon scraping attempt failed, the experience ultimately became a useful exercise in data collection, NLP analysis, and understanding the realities of modern web infrastructure.

Do you have a Data Science or Analytics Assignment due?

Practical projects like web scraping, NLP sentiment analysis, and regression modeling are exactly the type of assignments we regularly help students and researchers complete. From clean code to structured academic write-ups, we've got you covered.

Get Homework Assistance

If you are working on a similar assignment, research project, or portfolio idea and need assistance with data collection, Python analysis, or statistical interpretation, feel free to reach out through our main page at Finish My Statistics Class.