# Amazon Creator Shop Scraper (`crawlerbros/amazon-creator-shop-scraper`) Actor

Scrape Amazon influencer/creator storefronts (/shop/{handle}): profile info, affiliate disclosure, curated Idea Lists with products and creator comments, and creator videos.

- **URL**: https://apify.com/crawlerbros/amazon-creator-shop-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** E-commerce, Automation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Amazon Creator Shop Scraper

Scrape **Amazon influencer/creator storefronts** (`amazon.com/shop/{handle}`) — the
affiliate storefronts creators use to recommend products. Get the creator's profile
info and affiliate disclosure, every curated "Idea List" with its products and prices,
and the creator's shoppable videos. No login required — these are public pages.

### What this actor does

- **Profile info** — display name, bio, profile image, affiliate disclosure text
  ("Earns revenue"), and which tabs (Profile / Idea Lists / Videos) the shop exposes
- **Idea Lists** — every curated product collection the creator has published, with
  both the *declared* item count (from the list header) and the *actual* number of
  unique products we could extract — these can legitimately differ
- **Idea List products** — ASIN, title, brand, price, discount, delivery text, badge,
  and creator comments where shown
- **Creator videos** — title, duration, thumbnail, tagged product ASIN, and like count
- **Inactive-shop detection** — inactive storefronts return an explicit
  `INACTIVE_STOREFRONT` status record instead of fabricated or unrelated content
- **Empty fields are omitted** — the dataset never contains `null`, `""`, or `[]`

### Output

This actor emits four record types (`recordType` field), distinguished in one dataset.

#### Shop profile (`recordType: "shopProfile"`)

- `handle`, `shopUrl`
- `status` — `ACTIVE`, `INACTIVE_STOREFRONT`, `NOT_FOUND`, or `BLOCKED`
- `displayName`, `bio`, `profileImage`, `coverImage`
- `affiliateDisclosure` — verbatim disclosure text Amazon requires creators to show
- `availableTabs[]` — which of `profile` / `ideaLists` / `videos` the shop exposes
- `associateTag` — the creator's Amazon Associates tracking ID (e.g. `amandacerny07-20`),
  parsed from the `tag=` query param shared by every outgoing product/Idea-List link on
  the page; only emitted when every link on the page agrees on a single tag value
- `listCount`, `videoCount` — totals found on the profile page
- `marketplace` — `{countryCode, domain, marketplaceId, currency, language}`
- `requestContext` — `{sourceUrl, canonicalUrl}`
- `scrapedAt`

#### Idea List summary (`recordType: "ideaListSummary"`)

- `handle`, `listId`, `title`, `url`, `image`, `position`
- `declaredItemCount` — item count shown on the list card/header
- `extractedItemCount` — unique ASINs actually extracted (only present when
  `crawlIdeaLists=true`) — **may legitimately differ from `declaredItemCount`**
  (some items in a list can be unavailable-in-this-variant placeholders, or the DOM
  virtualizes lazily-loaded items)
- `marketplace`, `requestContext`, `scrapedAt`

#### Idea List item (`recordType: "ideaListItem"`)

- `handle`, `listId`, `listTitle`, `position`
- `asin`, `title`, `brand`, `url`, `image`
- `price`, `listPrice` — `{value, currency, display}`, omitted when unparseable
- `deliveryText` — delivery/shipping estimate text
- `availabilityText`, `isAvailable` — only set when Amazon shows explicit
  unavailable-in-this-variant text; never fabricated from a missing price
- `badge` — e.g. `Best Seller`, `Amazon's Choice`
- `creatorComment` — the creator's own note on the item, when shown
- `marketplace`, `requestContext` (includes `selectedAsin`), `scrapedAt`

#### Creator video (`recordType: "creatorVideo"`)

- `handle`, `contentId`, `title`, `durationText`, `position`
- `videoStreamUrl` — HLS manifest URL, `thumbnailImage`
- `productAsin`, `relatedAsins[]` — tagged/related products
- `heartCount` — likes shown on the video
- `marketplace`, `requestContext`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `handles` | array | `["gearvlogz"]` | Creator handles, e.g. `gearvlogz` |
| `shopUrls` | array | – | Full shop URLs, e.g. `https://www.amazon.com/shop/gearvlogz` |
| `marketplaceDomain` | string | `amazon.com` | Amazon domain used to build URLs from `handles` |
| `tabs` | string | `all` | `all` / `profile` / `ideaLists` / `videos` |
| `crawlIdeaLists` | boolean | `true` | Open each Idea List and extract its products |
| `maxLists` | int | `10` | Max Idea Lists per shop (1–50) |
| `maxItemsPerList` | int | `30` | Max products per Idea List (1–100) |
| `maxVideos` | int | `20` | Max videos per shop (1–100) |
| `useResidentialProxy` | boolean | `false` | Force residential proxy from the start |
| `proxyConfiguration` | object | AUTO | Apify proxy config (defaults to the free datacenter group) |

#### Example: default — profile, Idea Lists, and videos

```json
{
  "handles": ["gearvlogz"],
  "tabs": "all",
  "maxLists": 5,
  "maxItemsPerList": 20
}
```

#### Example: Idea List summaries only, no item drill-down

```json
{
  "handles": ["gearvlogz"],
  "tabs": "ideaLists",
  "crawlIdeaLists": false
}
```

#### Example: multiple shops via full URLs on a non-US marketplace

```json
{
  "shopUrls": [
    "https://www.amazon.co.uk/shop/somecreator"
  ],
  "tabs": "profile"
}
```

### Use cases

- **Affiliate/influencer research** — see which products a creator recommends and at
  what price point
- **Competitive monitoring** — track a competitor brand's influencer partnerships
- **Product discovery** — mine curated Idea Lists for trending or niche products
- **Content strategy** — see which creators are active, which have the largest Idea
  List catalogs, and which videos get the most engagement

### FAQ

**What is a creator/influencer storefront?**
It's a public Amazon page (`amazon.com/shop/{handle}`) where an approved Amazon
Influencer curates products into an affiliate-linked profile. It's distinct from a
Brand Store (run by a manufacturer) and a third-party Seller's storefront.

**Why do `declaredItemCount` and `extractedItemCount` sometimes differ?**
Amazon's Idea Lists can include items that have gone out of stock in a variant/style
and show as "may be unavailable" placeholders, and the product grid can be
lazily/virtually rendered. We report both numbers honestly rather than forcing them
to match.

**What happens for an inactive creator shop?**
Amazon shows the explicit text "This Influencer Storefront is not active." for
creators who registered but never published a shop, or later deactivated it. The
actor emits a single `shopProfile` record with `status: "INACTIVE_STOREFRONT"` and
stops for that handle — it never substitutes an unrelated recommendation carousel.

**Do I need a proxy or login?**
No login. By default the actor uses Apify's free AUTO (datacenter) proxy group with a
retry strategy; it only escalates to residential proxy after repeated blocks, or if
you explicitly set `useResidentialProxy: true`.

**Is this affiliated with Amazon?**
No — this is an independent third-party actor that reads Amazon's public storefront
pages.

**Does this work on non-US Amazon marketplaces (`amazon.co.uk`, `amazon.de`, etc.)?**
`marketplaceDomain`/`shopUrls` accept any of Amazon's 23 marketplace domains, and the
actor will correctly report a real, honest `NOT_FOUND` status for one if it doesn't
exist — but in practice, across extensive live testing, Amazon's Influencer/Creator
Storefront program (`/shop/{handle}`) has only ever been found live on `amazon.com`.
The non-US options are kept for forward compatibility (in case Amazon expands the
program, or you have a specific non-US `shopUrl` we haven't tested), not because a
working non-US storefront is currently known to exist.

**Why does the product URL (`url` on `ideaListItem`) return a 503 when I curl it directly?**
Amazon's `/dp/{asin}` pages reject requests with no `User-Agent` header (or a
non-browser one) with a 503, regardless of this actor. The link is valid and opens
normally in any browser or with a realistic `User-Agent` header set — it's an
Amazon-side anti-bot check on the request, not a broken link.

### More Amazon Actors

Part of a full Amazon scraper suite — also check out:

- [Amazon Category Scraper](https://apify.com/crawlerbros/amazon-scraper)
- [Amazon Product Scraper](https://apify.com/crawlerbros/amazon-product-scraper)
- [Amazon Best Sellers & Rankings Scraper](https://apify.com/crawlerbros/amazon-bestseller-scraper)
- [Amazon Reviews Scraper](https://apify.com/crawlerbros/amazon-reviews-scraper)
- [Amazon Reviews Scraper Pro](https://apify.com/crawlerbros/amazon-reviews-scraper-pro)
- [Amazon Offers Scraper (All Offers Display)](https://apify.com/crawlerbros/amazon-offers-scraper)
- [Amazon Seller & Shop Scraper](https://apify.com/crawlerbros/amazon-seller-shop-scraper)
- [Amazon Deals Scraper](https://apify.com/crawlerbros/amazon-deals-scraper)
- [Amazon Brand Store Scraper](https://apify.com/crawlerbros/amazon-brand-store-scraper)
- [Amazon Wishlist & Registry Scraper](https://apify.com/crawlerbros/amazon-list-registry-scraper)
- [Amazon Keyword Suggestions Scraper](https://apify.com/crawlerbros/amazon-keyword-suggestions-scraper)

# Actor input Schema

## `handles` (type: `array`):

Amazon influencer handles, e.g. `gearvlogz` (from amazon.com/shop/gearvlogz). Combined with `marketplaceDomain` to build the shop URL.

## `shopUrls` (type: `array`):

Full creator storefront URLs, e.g. `https://www.amazon.com/shop/gearvlogz`. Use this for non-default marketplaces or when you already have the exact URL.

## `marketplaceDomain` (type: `string`):

Amazon domain to use when building shop URLs from `handles`.

## `tabs` (type: `string`):

Which tab(s) of the storefront to extract.

## `crawlIdeaLists` (type: `boolean`):

When true, opens each Idea List (up to `maxLists`) and extracts individual products (up to `maxItemsPerList`). When false, only the list summary cards (title, declared item count, image) are emitted.

## `maxLists` (type: `integer`):

Maximum number of Idea Lists to process per shop.

## `maxItemsPerList` (type: `integer`):

Maximum number of product items to extract per Idea List.

## `maxVideos` (type: `integer`):

Maximum number of creator videos to extract per shop (tabs=all or videos).

## `useResidentialProxy` (type: `boolean`):

By default the actor uses the free AUTO (datacenter) proxy group with a homepage-priming retry, escalating to residential only after repeated blocks. Enable this to always use residential proxy from the start (higher reliability, uses paid proxy credit).

## `proxyConfiguration` (type: `object`):

Apify proxy configuration. Defaults to the free AUTO (datacenter) group.

## Actor input object example

```json
{
  "handles": [
    "gearvlogz"
  ],
  "shopUrls": [],
  "marketplaceDomain": "amazon.com",
  "tabs": "all",
  "crawlIdeaLists": true,
  "maxLists": 1,
  "maxItemsPerList": 15,
  "maxVideos": 10,
  "useResidentialProxy": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `records` (type: `string`):

Dataset containing all scraped shop profile, Idea List, and video records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "handles": [
        "gearvlogz"
    ],
    "shopUrls": [],
    "marketplaceDomain": "amazon.com",
    "tabs": "all",
    "crawlIdeaLists": true,
    "maxLists": 1,
    "maxItemsPerList": 15,
    "maxVideos": 10,
    "useResidentialProxy": false,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/amazon-creator-shop-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "handles": ["gearvlogz"],
    "shopUrls": [],
    "marketplaceDomain": "amazon.com",
    "tabs": "all",
    "crawlIdeaLists": True,
    "maxLists": 1,
    "maxItemsPerList": 15,
    "maxVideos": 10,
    "useResidentialProxy": False,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/amazon-creator-shop-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "handles": [
    "gearvlogz"
  ],
  "shopUrls": [],
  "marketplaceDomain": "amazon.com",
  "tabs": "all",
  "crawlIdeaLists": true,
  "maxLists": 1,
  "maxItemsPerList": 15,
  "maxVideos": 10,
  "useResidentialProxy": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call crawlerbros/amazon-creator-shop-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/amazon-creator-shop-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/KQhtDeIBgpgsQHInA/builds/Eg56dNXLyUjwm1fDL/openapi.json
