Amazon Search Scraper: Full Depth & ASIN Position avatar

Amazon Search Scraper: Full Depth & ASIN Position

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Amazon Search Scraper: Full Depth & ASIN Position

Amazon Search Scraper: Full Depth & ASIN Position

Amazon Search Scraper with Full Depth & ASIN Position extracts detailed search results, ASINs, product titles, prices, ratings, reviews, sellers, and exact organic rankings. Track keyword positions, analyze competitors, monitor products, and optimize Amazon SEO.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapio

Scrapio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Amazon Search Scraper โ€” Extract Products, Coverage and ASIN Positions

Amazon Search Scraper walks an Amazon keyword search to the real last page the results themselves print, and returns three typed row types in one run: every product tile with its true organic rank, a per-keyword coverage summary, and a position watchlist that reports exactly where a tracked ASIN or brand term landed. Unlike scraping frameworks that return raw HTML, Amazon Search Scraper returns typed JSON โ€” ready for your model, your database, or your pipeline without any parsing. This guide covers every input and output field, how deep the scan actually goes, and how teams deploy it for rank tracking, enrichment pipelines, and bulk dataset builds.


๐Ÿงญ What Does Amazon Search Scraper Do?

Amazon Search Scraper runs an Amazon keyword or search-page URL against the live search results, reading the real last-page number Amazon's own pagination bar prints before deciding how far to go โ€” so it never guesses the size of a result set and never mistakes a temporarily empty page for the end of one. It runs against seven Amazon marketplaces and needs no Amazon account, login, or API key.

  • ๐Ÿ” Walks each keyword's results page by page, up to the real last page Amazon prints or the depth you set
  • ๐Ÿฅ‡ Assigns a true global organic rank to every non-sponsored tile, rebuilt so promoted slots on page 1 never throw off the count
  • ๐Ÿ“Š Writes one coverage row per keyword โ€” pages available, pages requested, pages returned, duplicates skipped, and why the scan stopped
  • ๐ŸŽฏ Tracks specific ASINs or brand/product terms across the scanned positions and reports found status, best rank, and every occurrence
  • ๐ŸŒ Covers seven Amazon marketplaces (amazon.com, .co.uk, .de, .fr, .it, .es, .ca) from a plain keyword or a pasted search-page address
  • ๐Ÿงน Optionally collapses duplicate ASINs that Amazon repeats across pages of the same keyword
  • ๐Ÿ›’ Reads only the public search results page โ€” no account, login, or session required

โšก Features & Capabilities

Amazon Search Scraper's capabilities split into full-depth crawling, position tracking, and coverage accounting.

Core features

  • Full-depth crawl driven by the number Amazon's own results page prints (maxPagesAvailable), not an assumption โ€” the scan never reads past it, and never stops short of it when depth is set to "every page available"
  • True organic rank (organicRank) rebuilt per page, with sponsored tiles (sponsored: true) removed from the count so promoted placements don't shift the real ranking
  • All six ranking orders Amazon's own search page offers, selectable via rankingOrder: relevanceblender, price-asc-rank, price-desc-rank, review-rank, date-desc-rank, exact-aware-popularity-rank
  • Rich per-product fields: asin, productDescription, price, retailPrice, productRating, ratingValue, countReview, salesVolume, secondaryOffer, sponsored, prime, deliveryMessage, variations, dpUrl, imgUrl
  • Position watchlist for ASINs (trackAsins) and title terms (trackTerms), each returned with found, foundAtRank, bestRank, and occurrences โ€” mirrored into a dedicated <runId>-positions dataset
  • Per-keyword coverage accounting: pagesRequested, pagesReturned, duplicateAsinsSkipped, coverageComplete, endedBecause
  • Multi-marketplace: seven Amazon domains, auto-detected from a pasted search URL or defaulted to amazon.com for a plain keyword

When another tool might suit you better

Amazon Search Scraper is built for search-results depth and ranking, not product-detail depth. Its product fields (productDescription, price, imgUrl) come from the search tile, not the product detail page โ€” there is no full bullet-point description, no A+ content, and only the ASINs of visible variations, not a full variant catalogue. If your job is enriching a known list of ASINs with full product-page detail, a dedicated product-details scraper is the better fit. Likewise, tracking one ASIN's price history over weeks is not this Actor's job โ€” a purpose-built price tracker is.

Amazon Search Scraper within the Scrapio data stack

Amazon Search Scraper covers search-result products, per-keyword coverage, and ASIN/term position tracking. For full product detail pages and variant ASINs, use Amazon Product Details & Variant ASINs Scraper. For price history, deals, and lowest-recorded-price tracking on known ASINs, use Amazon Price Tracker: Deals, Coupons & Lowest Recorded Price. For seller-level lookups on the German marketplace, use Amazon DE Sellers Leads Scraper By ASIN & Seller ID.


๐Ÿง‘โ€๐Ÿ’ป Why do developers and data teams scrape Amazon search results?

๐Ÿข E-commerce brands and sellers

Brands run their own product ASINs through trackAsins alongside their category's head keywords to see exactly where they land โ€” foundAtRank and bestRank per keyword, found: false with foundAtRank: null when they're genuinely absent from the scanned positions rather than a made-up zero. Combined with sponsored, this separates true organic position from paid placement, and priceCoverage / ratingMedian on the coverage row show how a keyword's price and rating landscape looks before deciding where to compete.

๐Ÿ“Š AI training data and RAG indexing

productDescription, productRating, salesVolume, and deliveryMessage are the high-information text and structured fields that make Amazon search data useful for AI: productDescription and salesVolume give an LLM natural-language context to reason over, while price, asin, organicRank, and countReview give it consistently structured facts. For RAG enrichment, index productDescription alongside asin and dpUrl so retrieval can resolve back to a real product. For training data, asin, price, productRating, and countReview return as typed primitives across every row, with no per-listing format drift to normalize.

๐Ÿ“ฑ Competitive and market intelligence

Run the same keyword and rankingOrder on a schedule and compare organicRank and price for competitor ASINs over time โ€” a jump in organicRank, a change in secondaryOffer, or a competitor's foundAtRank moving up the position watchlist are the specific deltas worth alerting on, not a general "something changed" scrape.

๐Ÿ”ฌ Research and academic use

resultCount, productRating, countReview, and salesVolume across a keyword set support market-structure and consumer-behavior research using only what Amazon's search results already show publicly โ€” no product page, review page, or account access involved.

๐ŸŽฅ Product and SaaS development

Rank-tracking dashboards, price-comparison tools, and share-of-search monitoring products can be built directly on the coverage and position rows โ€” coverageComplete, endedBecause, foundAtRank, and bestRank are already the shape a monitoring UI needs, with no post-processing to reconstruct rank from raw HTML.


๐Ÿš Input Parameters

All parameters are optional โ€” an empty run falls back to the schema's prefilled keywords and terms. Types, defaults, and constraints below are copied from .actor/actor.json.

ParameterRequiredTypeDescriptionExample Value
keywordsNoarray (stringList)One or more search terms. A plain keyword is scanned on amazon.com; paste a country search page address to scan that marketplace instead (amazon.com, .co.uk, .de, .fr, .it, .es, .ca). Prefill: ["laptop", "protein powder"].["laptop", "https://www.amazon.co.uk/s?k=running+shoes"]
crawlDepthNostring (enum)How much of each keyword's result set to walk: firstPage (top results only), firstNPages (stop at pagesToScan or the last available page, whichever comes first), everyPage (walk to the real last page). Default: firstNPages."firstNPages"
pagesToScanNointegerUsed only when crawlDepth is firstNPages. If a keyword offers fewer pages than this, the scan stops at its real last page. Minimum 1, maximum 20. Default: 3.5
resultsPerKeywordNointegerA quota applied to each keyword separately, not the run as a whole โ€” every keyword entered is always scanned. 0 means no quota (the depth setting is the only limit). Minimum 0, maximum 10000. Prefill: 50; the Actor also falls back to 50 internally when omitted.100
skipDuplicateAsinsNobooleanAmazon can repeat the same product across pages of one keyword. On: keep one row per product and count the rest in duplicateAsinsSkipped. Off: keep every occurrence. Default: true.true
trackAsinsNoarray (stringList)Product IDs to look for inside each keyword's scanned positions. An ASIN outside the scanned range returns found: false and foundAtRank: null โ€” never a fabricated zero. Leave empty to skip ASIN tracking.["B0FS1V6XZD"]
trackTermsNoarray (stringList)Whole words matched against each product title, case-insensitively. Every match is listed in matchedAsins, with the best position in bestRank. Prefill: ["hp", "whey"].["hp", "whey"]
emitPositionRowsNobooleanOn: add one position row per keyword and tracked value, also mirrored into a <runId>-positions dataset. Off: keep only product and coverage rows. Default: true.true
rankingOrderNostring (enum)The ordering to scan โ€” all six are orderings the search results themselves offer: relevanceblender (Featured), price-asc-rank (Price: low to high), price-desc-rank (Price: high to low), review-rank (Average customer review), date-desc-rank (Newest arrivals), exact-aware-popularity-rank (Best sellers). Prefill: relevanceblender."review-rank"
urlsNoarray (stringList)Legacy name for the keyword list. Used only when keywords is empty.["laptop"]
maxResultsNointegerLegacy name for the per-keyword product quota. Used only when resultsPerKeyword is empty. Minimum 1, maximum 10000. The quota is applied per keyword, so no keyword is silently skipped.100
sortByNostring (free text)Legacy name for the ordering. Used only when rankingOrder is empty. The legacy value recent is honoured as newest arrivals instead of being ignored."recent"
proxyConfigurationNoobject (proxy editor)Apify Proxy configuration. Prefill: {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}. Leave as-is for the recommended setup; advanced users can override it.{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

JSON input example:

{
"keywords": ["laptop", "protein powder", "https://www.amazon.co.uk/s?k=running+shoes"],
"crawlDepth": "firstNPages",
"pagesToScan": 5,
"resultsPerKeyword": 100,
"skipDuplicateAsins": true,
"trackAsins": ["B0FS1V6XZD"],
"trackTerms": ["hp", "whey"],
"emitPositionRows": true,
"rankingOrder": "relevanceblender",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Supported URL types and input formats

  • Plain keyword โ€” laptop โ€” scanned on amazon.com by default.
  • Country search-page URL โ€” https://www.amazon.co.uk/s?k=running+shoes โ€” the domain (.co.uk, .de, .fr, .it, .es, .ca, or .com) is read from the host, and the k= query parameter supplies the keyword. A rh=n:<id> node in the URL is parsed into browseNode; an i=<category> parameter is parsed into selectedCategory.
  • Legacy urls array โ€” accepted as a drop-in for keywords so an older input file for this scraper still runs unchanged; only used when keywords is empty.

๐Ÿ“ฆ Output Format

Every run streams typed JSON rows to the default dataset, distinguished by type ("product", "coverage", "position") and isChild (false for product rows, true for coverage and position rows). When emitPositionRows is on and at least one ASIN or term is tracked, position rows are additionally written to a separate <runId>-positions dataset.

Pay-per-event pricing: only product rows are charged, via the row_result event fired once per row on Actor.push_data(row, charged_event_name='row_result'). coverage and position rows are pushed with no charged event โ€” they cost nothing. To isolate exactly what you were billed for, filter on type === "product" (or equivalently isChild === false).

Output for a product row

{
"asin": "B0FS1V6XZD",
"productDescription": "Dell Inspiron 15 3520 Laptop, 15.6-inch FHD Display, Intel Core i5-1235U",
"imgUrl": "https://m.media-amazon.com/images/I/71abcXYZ.jpg",
"price": 449.99,
"retailPrice": 549.99,
"productRating": "4.4 out of 5 stars",
"ratingValue": 4.4,
"countReview": 3218,
"dpUrl": "https://www.amazon.com/dp/B0FS1V6XZD",
"sponsored": false,
"prime": true,
"salesVolume": "2K+ bought in past month",
"deliveryMessage": "FREE delivery Thu, Aug 21",
"variations": ["Black", "Silver"],
"secondaryOffer": 429.99,
"type": "product",
"isChild": false,
"statusCode": 200,
"statusMessage": "FOUND",
"keyword": "laptop",
"domainCode": "com",
"organicRank": 4,
"resultPage": 1,
"positionOnPage": 6,
"page": 1,
"currentPage": 1,
"searchResultPosition": 5,
"selectedCategory": "aps",
"browseNode": null,
"resultCount": 60000,
"similarKeywords": [
{ "keyword": "laptop computer", "url": "https://www.amazon.com/s?k=laptop+computer" }
],
"sortStrategy": "relevanceblender",
"maxPagesAvailable": 20,
"searchUrl": "https://www.amazon.com/s?k=laptop&s=relevanceblender&page=1&ref=sr_pg_1",
"scrapedAt": "2026-08-15T10:22:41Z"
}

Output for a coverage row

{
"type": "coverage",
"isChild": true,
"keyword": "laptop",
"domainCode": "com",
"sortStrategy": "relevanceblender",
"maxPagesAvailable": 20,
"pagesRequested": 5,
"pagesReturned": 5,
"pageSizeObserved": 16,
"positionsScanned": 80,
"highestRankSeen": 80,
"duplicateAsinsSkipped": 3,
"coverageComplete": false,
"endedBecause": "depth-limit-reached",
"productsSaved": 77,
"resultCount": 60000,
"priceCoverage": 0.961,
"ratingMedian": 4.4,
"reviewMedian": 812,
"salesVolumeShare": 0.312,
"searchUrl": "https://www.amazon.com/s?k=laptop&s=relevanceblender&page=1&ref=sr_pg_1",
"scrapedAt": "2026-08-15T10:23:05Z"
}

endedBecause uses a fixed vocabulary: quota-reached, last-page-reached, depth-limit-reached, page-unavailable.

Output for a position row

{
"type": "position",
"isChild": true,
"keyword": "laptop",
"domainCode": "com",
"trackedValue": "B0FS1V6XZD",
"trackedType": "asin",
"found": true,
"foundAtRank": 4,
"foundOnPage": 1,
"occurrences": 1,
"bestRank": 4,
"positionsScanned": 80,
"maxPagesAvailable": 20,
"matchedAsins": ["B0FS1V6XZD"],
"matchedTitleSample": "Dell Inspiron 15 3520 Laptop, 15.6-inch FHD Display, Intel Core i5-1235U",
"searchUrl": "https://www.amazon.com/s?k=laptop&s=relevanceblender&page=1&ref=sr_pg_1",
"scrapedAt": "2026-08-15T10:23:06Z"
}

Schema stability and export options

Field names stay stable across runs regardless of front-end changes on Amazon's side โ€” parsing failures on any single field return null for that field rather than dropping the row or renaming a key. Data is delivered through the standard Apify dataset: export to JSON, CSV, Excel, XML, or RSS from the Apify Console or apify_client, or stream it live while the run is still in progress.


๐Ÿ’ก Amazon Search Scraper Strategy Guide

๐ŸŽฏ Strategy 1: Real-time enrichment pipeline

Trigger a run whenever a new product record enters your system: pass its ASIN in trackAsins alongside the keyword(s) that matter for its category, run the Actor, then read foundAtRank, bestRank, and found off the resulting position row and write them back onto the source record. Because foundAtRank is null rather than 0 when the ASIN isn't in the scanned range, downstream logic can distinguish "not ranking" from "ranked at the top" without extra checks.

๐ŸŽฏ Strategy 2: Scheduled monitoring and alerting

Set up an Apify Schedule to re-run the same keyword and trackAsins/trackTerms list on a cadence. Compare each new run's organicRank, foundAtRank, and bestRank against the previous run's for the same keyword and tracked value, and alert when the delta crosses a threshold you define, or when found flips from true to false. endedBecause and coverageComplete on the coverage row tell you whether the comparison is apples-to-apples (same depth reached) before you trust the diff.

๐ŸŽฏ Strategy 3: Bulk dataset build

Feed a large keywords list with resultsPerKeyword set to 0 (no per-keyword quota) and crawlDepth set to everyPage to pull full result sets for a research or training corpus. Split very large keyword lists across multiple Actor runs rather than one run, and aggregate the resulting product rows to CSV or a database afterward. The Actor does not document a fixed concurrency ceiling, so size your batch splits to your own account limits and run budget.

Strategy comparison at a glance

StrategyBest forRun patternOutput format
Real-time enrichmentAppending live rank to a single new recordOne triggered run per record, via APIJSON position row via apify_client
Scheduled monitoringOngoing rank or price-drop alertingRecurring run on an Apify ScheduleJSON dataset per run, diffed externally
Bulk dataset buildResearch or training corpora across many keywordsMultiple runs split by keyword batchDataset export to CSV or JSON

ScraperWhat it extracts
Amazon Product Details & Variant ASINs ScraperFull product detail pages and variant ASINs for a known list of ASINs or URLs
Amazon Price Tracker: Deals, Coupons & Lowest Recorded PricePrice history, deals, and lowest-recorded-price tracking on known ASINs
Amazon DE Sellers Leads Scraper By ASIN & Seller IDSeller-level lookups on the German Amazon marketplace
eBay Product Listing Scraper: Item Specifics, Condition & PhotosThe same search/listing entity type on eBay
Shopify Products Scraper: Descriptions, Specs, TagsProduct catalogue data for benchmarking against independent Shopify stores
Google Play Scraper: ASO Keyword & Competitor BenchmarkingKeyword-rank tracking for the app-store equivalent of this Actor's position watchlist

๐Ÿ”Œ How to integrate Amazon Search Scraper with your stack

Amazon Search Scraper works with any language or tool that can make an HTTP request to the Apify API.

Python

from apify_client import ApifyClient
import csv
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"keywords": ["laptop", "protein powder"],
"crawlDepth": "firstNPages",
"pagesToScan": 5,
"resultsPerKeyword": 100,
"trackAsins": ["B0FS1V6XZD"],
"rankingOrder": "relevanceblender",
}
run = client.actor("<your-username>/amazon-search-scraper-full-depth-asin-position").call(
run_input=run_input
)
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
products = [r for r in rows if r.get("type") == "product"]
with open("amazon_products.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["asin", "keyword", "organicRank", "price", "productDescription"])
writer.writeheader()
for row in products:
writer.writerow({k: row.get(k) for k in writer.fieldnames})
print(f"Saved {len(products)} product rows.")

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const input = {
keywords: ['laptop', 'protein powder'],
crawlDepth: 'firstNPages',
pagesToScan: 5,
resultsPerKeyword: 100,
trackAsins: ['B0FS1V6XZD'],
rankingOrder: 'relevanceblender',
};
const run = await client.actor('<your-username>/amazon-search-scraper-full-depth-asin-position').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const products = items.filter((row) => row.type === 'product');
console.log(`Fetched ${products.length} product rows for ${input.keywords.length} keyword(s).`);

Async and scheduled pipelines

For fire-and-forget large jobs, start the run and poll client.run(runId).get() for status instead of blocking on .call(), or fetch results once the run finishes. For recurring jobs, create an Apify Schedule from the Apify Console or API to trigger the Actor on a cadence without any external cron infrastructure.


๐ŸŽฏ Who Needs Amazon Search Scraper? (Use Cases & Industries)

๐Ÿข E-commerce brands and sellers

A seller tracks their own ASINs via trackAsins against the head keywords for their category and watches foundAtRank week over week to see whether a listing or ad change moved organic position, using sponsored to separate paid from organic placement.

๐Ÿ“Š AI and RAG teams

productDescription and dpUrl feed a retrieval index that resolves back to a real, linkable product, while price, asin, productRating, and countReview supply structured facts an LLM can cite directly without inferring them from prose.

๐Ÿ“ฑ Market and competitive intelligence teams

Analysts run a fixed keyword set on a schedule and track organicRank, price, and secondaryOffer for a competitor's ASINs, using the position watchlist's bestRank to catch when a competitor breaks into a keyword's top results.

๐Ÿ”ฌ Researchers

Academic and market researchers pull resultCount, productRating, countReview, and salesVolume across keyword sets to study market structure and consumer signals โ€” using only what Amazon's public search results already display, with no product-page or account access involved.

๐ŸŽฅ SaaS and product builders

Rank-tracking dashboards and share-of-search tools consume the coverage and position rows directly, since coverageComplete, endedBecause, foundAtRank, and bestRank already carry the shape a monitoring UI needs.


Scraping publicly accessible web data is generally lawful; Amazon search results are public product listings, not personal or private data. Two separate questions matter here, and a third does not apply.

Scraping public data itself has been treated favorably by US courts in cases addressing public-web scraping generally โ€” but always confirm current standing with counsel before relying on any specific precedent for your jurisdiction. Violating a site's Terms of Service is a contract and civil-liability question, not a criminal one, and Amazon's terms restrict automated access to its site; running this Actor may be inconsistent with those terms even though the underlying data is public. Data protection law (GDPR, CCPA) governs personal data about identifiable individuals โ€” it does not apply here, since this Actor's output is product, pricing, and ranking data, not personal data about people.

Amazon Search Scraper returns only publicly accessible data. What you do with that data is your responsibility โ€” consult legal counsel for commercial applications.


โ“ Frequently asked questions

Does Amazon Search Scraper work without an Amazon account?

Yes. The Actor reads only Amazon's public search results pages over plain HTTP requests โ€” no Amazon account, login, or API key is used or required.

How does Amazon Search Scraper handle Amazon's anti-scraping measures?

It fetches pages through Apify Proxy (residential group by default, with the marketplace country auto-matched to the first keyword's domain when not set), impersonates a real Chrome browser's TLS/HTTP fingerprint, retries a page up to three times on a failed or empty response, detects and follows Amazon's own holding/interstitial challenge pages once, and waits a randomized 2โ€“3.5 seconds between retried pages and 3โ€“5 seconds between keywords.

Can I run Amazon Search Scraper at scale without getting blocked?

The Actor retries failed pages automatically and reports a keyword's real outcome via endedBecause (quota-reached, last-page-reached, depth-limit-reached, or page-unavailable) rather than silently returning partial data. No blocking-rate or uptime figure is published for this Actor โ€” check coverageComplete and endedBecause on the coverage row to confirm a given keyword's scan finished as expected.

How fresh is the data Amazon Search Scraper returns?

Every run fetches search results live at the time it runs; nothing is cached or replayed from a previous run. scrapedAt on every row records the exact UTC timestamp the page was read.

What is the real depth limit, and why?

Amazon's own search-results pagination bar never prints a page number past 20 in this Actor's observation, so pagesToScan is capped at 20 and any everyPage scan stops at whichever real last page โ€” up to that ceiling โ€” Amazon's own results report. This is Amazon's limit, not an artificial one imposed by the Actor; the Actor reads the printed page count on every fetch rather than assuming it.

Which fields work best for AI training and RAG indexing?

For RAG: index productDescription together with asin and dpUrl so retrieval results resolve back to a real, linkable product. For training data: asin, price, productRating, ratingValue, and countReview return as typed primitives on every row, needing no per-listing normalization.

Does Amazon Search Scraper work with Claude, ChatGPT, and other AI agent tools?

There is no dedicated MCP server for this Actor. It is callable as a standard HTTP/API Actor by any agent framework via apify_client (Python or JavaScript) or a direct REST call โ€” every response is typed JSON, so an agent can consume it without parsing HTML first.

What happens if I ask for more pages than a keyword actually has?

The scan stops at the keyword's real last page rather than returning empty or duplicated pages. The coverage row's endedBecause reports last-page-reached, maxPagesAvailable shows the real ceiling Amazon printed, and pagesReturned shows how many pages actually carried products.

Does resultsPerKeyword apply to the whole run or to each keyword?

To each keyword separately. Every keyword you enter is always scanned in full up to its quota โ€” no keyword is skipped to make room for another, and setting the quota to 0 removes it entirely so the depth setting alone controls how far each keyword goes.

What is the difference between product, coverage, and position rows?

product rows (type: "product", isChild: false) are the billed, per-tile search results. coverage rows (type: "coverage", isChild: true) are one free per-keyword summary of how the scan went. position rows (type: "position", isChild: true) are free per-keyword, per-tracked-value watchlist entries, written only when emitPositionRows is on and at least one ASIN or term is tracked.


โ„น๏ธ Disclaimer

Amazon Search Scraper extracts only publicly available data from Amazon's search results pages. This tool is intended for lawful use cases only. Users are responsible for complying with Amazon's terms of service and applicable data protection laws in their jurisdiction.