---
name: amazon-brand-store-page-and-merchandising-crawler
description: "Crawl an Amazon Brand Store's navigation, creative modules (images, video, CTAs), and every product link found on its pages. Resolves a brand's Store URL automatically from a product page or ASIN. Output fields: brand, pageName, asin, title, url and more, as JSON rows. Use it for requests like \"Amazon brand store page scraper\", or a CSV/JSON export of public Amazon data."
---

# Amazon Brand Store Page & Merchandising Crawler

Crawl an Amazon Brand Store's navigation, creative modules (images, video, CTAs), and every product link found on its pages. Resolves a brand's Store URL automatically from a product page or ASIN.

- Actor: https://apify.com/dataspryva/amazon-brand-store-page-and-merchandising-crawler (ID `dataspryva~amazon-brand-store-page-and-merchandising-crawler`)
- n8n workflow for the same Actor: https://scraperfinder.com/n8n/amazon-brand-store-page-and-merchandising-crawler/
- Example input: `references/example-input.json`
- Input schema: `references/input-schema.json`
- Output fields: `references/output-fields.json`

## When to use

Use this skill when the user wants:

- Amazon brand store page scraper
- a repeatable export of public Amazon data as CSV or JSON

Do not use it for private, login-protected or paywalled data.

## What it returns

One JSON row per result. Columns from the Actor's dataset schema:

- `brand`: Brand
- `pageName`: Page Name
- `asin`: Asin
- `title`: Title
- `url`: Url
- `storeUrl`: Store Url
- `sectionType`: Section Type
- `sectionId`: Section Id
- `linkType`: Link Type
- `sectionPosition`: Section Position

All 11 declared fields: `references/output-fields.json`.

## Inputs

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `storeUrls` | array | no | [] | Amazon Brand Store URLs, e.g. `https://www.amazon.com/stores/soundcore/page/AD6AD8C0-90C7-4C65-8000-0AC741FA2633`. At least one of storeUrls / productUrls / asins is required. |
| `productUrls` | array | no | [] | Amazon product (/dp/{ASIN}) URLs. The actor visits each product page, finds its "Visit the {Brand} Store" link, and crawls that store instead. |
| `asins` | array | no | [] | Product ASINs on amazon.com. Same resolution behavior as productUrls. |
| `crawlSubpages` | boolean | no | true | Follow the store's navigation menu (HOME, FEATURED DEALS, SSD, ...) and crawl every linked subpage, not just the landing page. |
| `maxDepth` | integer | no | 1 | How many navigation-link hops to follow from the landing page when crawlSubpages is enabled (1 = landing page's direct subpages only). |
| `maxPages` | integer | no | 10 | Hard cap on the total number of store pages (landing + subpages) fetched per store. |
| `maxProducts` | integer | no | 200 | Hard cap on the number of distinct product (ASIN) records emitted per store. |
| `includeSections` | boolean | no | true | Emit a `section` record for every merchandising module on each crawled page: its type, ID, position, heading, body copy, CTA, primary image/video, and product/link counts. |
| `includeLinks` | boolean | no | true | Emit a typed `link` record for every unique target on each crawled page (navigation, store page, product, search, external), with its section context. |
| `proxyConfiguration` | object | no | {"useApifyProxy":true} | Apify proxy. AUTO (datacenter) is used by default with homepage-priming; the actor escalates to RESIDENTIAL automatically only if it keeps getting blocked. |

Example (`references/example-input.json`):

```json
{
  "storeUrls": [
    "https://www.amazon.com/stores/soundcore/page/AD6AD8C0-90C7-4C65-8000-0AC741FA2633"
  ],
  "crawlSubpages": false,
  "maxPages": 3,
  "maxProducts": 30
}
```

The input passes the Actor's input schema (checked at every publish). First run: `maxProducts` = 30, small enough for the 300-second sync wait; raise it once the rows look right.

## Run it

Set `APIFY_TOKEN`, then call the synchronous endpoint for small and medium runs (it waits up to 300 seconds):

```bash
curl -s -X POST "https://api.apify.com/v2/acts/dataspryva~amazon-brand-store-page-and-merchandising-crawler/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d @references/example-input.json > output.json
```

Or with Node 18+: `node scripts/run.mjs [input.json]`.

For large runs, start an async run and read its dataset when it finishes:

```bash
RUN=$(curl -s -X POST "https://api.apify.com/v2/acts/dataspryva~amazon-brand-store-page-and-merchandising-crawler/runs" \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d @references/example-input.json)
RUN_ID=$(echo "$RUN" | jq -r '.data.id'); DATASET=$(echo "$RUN" | jq -r '.data.defaultDatasetId')
curl -s "https://api.apify.com/v2/actor-runs/$RUN_ID?waitForFinish=60" -H "Authorization: Bearer $APIFY_TOKEN" | jq -r '.data.status'
curl -s "https://api.apify.com/v2/datasets/$DATASET/items?format=json" -H "Authorization: Bearer $APIFY_TOKEN" > output.json
```

## Cost and limits

- Apify bills the Actor's usage on your account; the Actor's Pricing tab shows the current price.
- Keep the limit in the input small for a first run.

## Guardrails

- Public data only. Do not pass cookies, sessions or private account data.
- Do not use the output for spam, harassment or unlawful discrimination.
- Check the target site's terms and local law before running at scale.
