Skip to main content
Thirdwatchthirdwatch
E-commerce & products

Build an Amazon Product Research Tool (2026 Guide)

Build an Amazon niche-research workflow from search position, monthly-bought signals, price, rating, reviews, deals, and sponsored placement.

Apr 27, 2026 · 3 min read · 728 words
See the scraper →

Thirdwatch's Amazon Product Scraper turns Amazon search pages into structured product-research data across 19 marketplaces. It returns prices as display strings and numbers, list-price discounts, ratings, review counts, monthly-bought signals, search position, sponsored status, badges, Prime status when Amazon displays it, ASINs, images, and URLs.

▶ Skip the setup: Run the ready-made product-research Task on Apify →

What this workflow can—and cannot—tell you

Amazon search data is useful for comparing niches at the shelf level: price bands, visible demand signals, review density, promotions, sponsored saturation, and which products occupy the first results pages. It is especially useful for repeatable research across many keywords or countries.

It is not product-detail data. The Actor deliberately does not claim BSR, seller or Buy Box ownership, stock, inventory, variants, A+ content, offer listings, full reviews, or exact sales. Amazon also omits prices or Prime labels from some search cards. Missing values are returned as null, never invented.

A practical niche-opportunity model

Use multiple weak signals together:

  • monthly_bought_value: the numeric lower bound parsed from Amazon's “X+ bought in past month” label.
  • reviews_count_value and rating_value: visible social proof and customer satisfaction.
  • price_value, original_price_value, and discount_percentage: the live price band and promotion intensity.
  • position: placement within the captured search pages.
  • is_sponsored: whether placement was paid rather than organic.
  • badge and is_prime: merchandising signals when Amazon displays them.

A promising niche often has visible purchase activity, healthy but not impenetrable review counts, room for quality improvement, and less paid-placement saturation than adjacent queries. This is a screening model, not proof of future sales.

Pull research data

import os
import requests
import pandas as pd

ACTOR = "thirdwatch~amazon-product-scraper"
TOKEN = os.environ["APIFY_TOKEN"]

queries = [
    "silicone baking mat",
    "garlic press stainless steel",
    "coffee scale",
    "salad spinner",
]

response = requests.post(
    f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items",
    params={"token": TOKEN},
    json={
        "queries": queries,
        "country": "us",
        "category": "kitchen",
        "sortBy": "bestSellers",
        "maxResults": 100,
        "monitorMode": "off",
    },
    timeout=3600,
)
response.raise_for_status()
df = pd.DataFrame(response.json())

maxResults applies to the whole run, not to every query. Split large research batches into separate runs if you need an equal sample per niche.

Score niches without fabricated fields

for column in [
    "price_value", "rating_value", "reviews_count_value",
    "monthly_bought_value", "discount_percentage",
]:
    df[column] = pd.to_numeric(df[column], errors="coerce")

organic = df[df["is_sponsored"].fillna(False) == False].copy()

niche_scores = (
    organic.groupby("searchString")
    .agg(
        products=("asin", "nunique"),
        median_price=("price_value", "median"),
        median_rating=("rating_value", "median"),
        median_reviews=("reviews_count_value", "median"),
        visible_monthly_demand=("monthly_bought_value", "sum"),
        median_position=("position", "median"),
    )
)

niche_scores["quality_gap"] = (
    niche_scores["median_rating"].between(3.7, 4.3)
    & (niche_scores["median_reviews"] >= 100)
)
niche_scores["research_score"] = (
    niche_scores["visible_monthly_demand"].fillna(0).rank(pct=True)
    + niche_scores["median_reviews"].fillna(0).rank(pct=True)
    + niche_scores["quality_gap"].astype(int)
)

print(niche_scores.sort_values("research_score", ascending=False))

The monthly-bought number is a lower bound because Amazon publishes buckets such as 100+ or 1K+, and does not show the label on every product. Treat it as directional demand evidence, not an exact unit estimate.

Turn research into an incremental feed

After the first research pass, schedule the same inputs with:

{
  "queries": ["silicone baking mat", "garlic press stainless steel"],
  "country": "us",
  "category": "kitchen",
  "sortBy": "bestSellers",
  "maxResults": 100,
  "monitorMode": "all-changes",
  "monitorStoreName": "amazon-kitchen-niches"
}

The first run establishes a baseline. Later runs emit only new ASINs or rows whose available price, rating, or review-count values changed. Each change includes change_type, changed_fields, previous values, and deltas. Keep the query, country, category, sort, limit, mode, and store name stable for a comparable series.

Sample output

{
  "asin": "B07ABC1234",
  "title": "Premium Silicone Baking Mat - Set of 2",
  "price": "$14.99",
  "price_value": 14.99,
  "original_price": "$19.99",
  "original_price_value": 19.99,
  "discount_percentage": 25.01,
  "rating_value": 4.6,
  "reviews_count_value": 12450,
  "monthly_bought": "1K+ bought in past month",
  "monthly_bought_value": 1000,
  "is_sponsored": false,
  "page": 1,
  "position": 4,
  "currency_code": "USD",
  "domain": "amazon.com",
  "url": "https://www.amazon.com/dp/B07ABC1234"
}

Avoid the common research mistakes

  1. Do not interpret search position as official BSR. sortBy: "bestSellers" is Amazon's search sort, not the product-detail Best Sellers Rank.
  2. Do not interpret a missing price as zero or out of stock. Amazon can omit a featured price for variants or location-dependent offers.
  3. Separate sponsored and organic placements before comparing shelf position.
  4. Group cross-market research by (asin, domain) and keep currencies separate.
  5. Validate finalists on their product pages before making inventory or sourcing decisions.

Related Amazon workflows

Run the Amazon Product Scraper on Apify or start with the preconfigured product-research Task.

Frequently asked questions

What signals does this Amazon product-research workflow use?

It uses the fields visible in Amazon search: monthly-bought text and its numeric lower bound, current and list price, discount, rating, review count, search position, sponsored status, Prime status when displayed, badges, and ASIN. Combining several signals is safer than treating one metric as demand truth.

Does the Actor return Amazon Best Sellers Rank (BSR)?

No. This is a search-results Actor and does not claim BSR, seller, Buy Box, inventory, variants, or product-detail fields. Use a product-detail or bestseller-specific data source when official BSR is required.

How does this compare with Jungle Scout or Helium 10?

Jungle Scout and Helium 10 provide opinionated seller dashboards, proprietary sales estimates, and BSR-based research. Thirdwatch provides low-cost structured search-result data for teams that want their own scoring, storage, and automation. It complements those products; it is not a field-for-field replacement.

How fresh should the research be?

Weekly snapshots are usually enough for evergreen niche research. Use daily monitoring for launches, promotions, or seasonal categories. Native all-changes mode emits only new products and material price, rating, or review-count changes after the baseline run.

Related

Try it yourself

100 free credits, no credit card.

About 30 real searches. Add the MCP to Claude or Cursor in two minutes.