{
  "data": {
    "id": "pSjFZIcvzJq7yE020",
    "actId": "dkxfxmOdirX9IUAPn",
    "userId": "IYgBDiXtHOijAaUel",
    "startedAt": "2026-11-11T11:12:49.267Z",
    "finishedAt": "2026-11-11T11:13:20.222Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 30835,
      "runTimeSecs": 30.835,
      "computeUnits": 0.03426111111111111,
      "imageSizeBytes": 3152536064
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "QYo53EZkJk0prePWY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Amazon Creator Shop Scraper Input\",\n  \"description\": \"Scrape Amazon creator storefronts (/shop/{handle}): profile and social links, Idea Lists and their products, shoppable photos and videos, curations, and trending picks across 23 Amazon marketplaces.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"handles\": {\n      \"title\": \"Creator handles\",\n      \"type\": \"array\",\n      \"description\": \"Amazon influencer handles, e.g. `gearvlogz` (from amazon.com/shop/gearvlogz). Combined with `marketplaceDomain` to build the shop URL. At least one handle or `shopUrls` entry is required.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": [\n        \"gearvlogz\"\n      ]\n    },\n    \"shopUrls\": {\n      \"title\": \"Shop URLs\",\n      \"type\": \"array\",\n      \"description\": \"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. Provide at least one handle or shop URL.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"marketplaceDomain\": {\n      \"title\": \"Marketplace domain\",\n      \"type\": \"string\",\n      \"description\": \"Amazon domain to use when building shop URLs from `handles`.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"amazon.com\",\n        \"amazon.ca\",\n        \"amazon.com.mx\",\n        \"amazon.com.br\",\n        \"amazon.ie\",\n        \"amazon.es\",\n        \"amazon.co.uk\",\n        \"amazon.fr\",\n        \"amazon.com.be\",\n        \"amazon.nl\",\n        \"amazon.de\",\n        \"amazon.it\",\n        \"amazon.se\",\n        \"amazon.co.za\",\n        \"amazon.pl\",\n        \"amazon.eg\",\n        \"amazon.com.tr\",\n        \"amazon.sa\",\n        \"amazon.ae\",\n        \"amazon.in\",\n        \"amazon.sg\",\n        \"amazon.com.au\",\n        \"amazon.co.jp\"\n      ],\n      \"enumTitles\": [\n        \"United States (amazon.com)\",\n        \"Canada (amazon.ca)\",\n        \"Mexico (amazon.com.mx)\",\n        \"Brazil (amazon.com.br)\",\n        \"Ireland (amazon.ie)\",\n        \"Spain (amazon.es)\",\n        \"United Kingdom (amazon.co.uk)\",\n        \"France (amazon.fr)\",\n        \"Belgium (amazon.com.be)\",\n        \"Netherlands (amazon.nl)\",\n        \"Germany (amazon.de)\",\n        \"Italy (amazon.it)\",\n        \"Sweden (amazon.se)\",\n        \"South Africa (amazon.co.za)\",\n        \"Poland (amazon.pl)\",\n        \"Egypt (amazon.eg)\",\n        \"Turkey (amazon.com.tr)\",\n        \"Saudi Arabia (amazon.sa)\",\n        \"UAE (amazon.ae)\",\n        \"India (amazon.in)\",\n        \"Singapore (amazon.sg)\",\n        \"Australia (amazon.com.au)\",\n        \"Japan (amazon.co.jp)\"\n      ],\n      \"default\": \"amazon.com\",\n      \"prefill\": \"amazon.com\"\n    },\n    \"tabs\": {\n      \"title\": \"Content to scrape\",\n      \"type\": \"string\",\n      \"description\": \"Which storefront content to extract. `all` includes profile, Idea Lists, photos, videos, curations, and trending picks.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"profile\",\n        \"ideaLists\",\n        \"photos\",\n        \"videos\"\n      ],\n      \"enumTitles\": [\n        \"All (profile + Idea Lists + photos + videos + curations + trending)\",\n        \"Profile only (includes curations and trending picks)\",\n        \"Idea Lists only\",\n        \"Photos only\",\n        \"Videos only\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"searchPosts\": {\n      \"title\": \"Search posts\",\n      \"type\": \"string\",\n      \"description\": \"Optional keyword to filter the creator's posts (Idea Lists, photos, videos) before extraction. Leave empty to return the full feed.\",\n      \"editor\": \"textfield\",\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"crawlIdeaLists\": {\n      \"title\": \"Crawl Idea List items\",\n      \"type\": \"boolean\",\n      \"description\": \"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, hearts, pinned) are emitted.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"maxLists\": {\n      \"title\": \"Max Idea Lists per shop\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of Idea Lists to process per shop.\",\n      \"minimum\": 1,\n      \"maximum\": 50,\n      \"default\": 10,\n      \"prefill\": 1\n    },\n    \"maxItemsPerList\": {\n      \"title\": \"Max items per Idea List\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of product items to extract per Idea List.\",\n      \"minimum\": 1,\n      \"maximum\": 100,\n      \"default\": 30,\n      \"prefill\": 3\n    },\n    \"maxVideos\": {\n      \"title\": \"Max videos per shop\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of creator videos to extract per shop (tabs=all or videos).\",\n      \"minimum\": 1,\n      \"maximum\": 100,\n      \"default\": 20,\n      \"prefill\": 1\n    },\n    \"maxPhotos\": {\n      \"title\": \"Max photos per shop\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of shoppable photo posts to extract per shop (tabs=all or photos).\",\n      \"minimum\": 1,\n      \"maximum\": 100,\n      \"default\": 20,\n      \"prefill\": 1\n    },\n    \"includeCurations\": {\n      \"title\": \"Include curations\",\n      \"type\": \"boolean\",\n      \"description\": \"Emit the creator's curations (themed post collections shown on the profile page) when tabs=all or profile.\",\n      \"default\": true,\n      \"prefill\": false\n    },\n    \"includeTrendingPicks\": {\n      \"title\": \"Include trending picks\",\n      \"type\": \"boolean\",\n      \"description\": \"Emit the creator's trending-picks product carousel when tabs=all or profile.\",\n      \"default\": true,\n      \"prefill\": false\n    },\n    \"proxyConfiguration\": {\n      \"title\": \"Proxy configuration\",\n      \"type\": \"object\",\n      \"description\": \"Optional. The actor chooses a working connection automatically (direct, then free AUTO, then residential only after repeated blocks). Change this only if you need a specific proxy setup.\",\n      \"editor\": \"proxy\",\n      \"prefill\": {\n        \"useApifyProxy\": true\n      },\n      \"default\": {\n        \"useApifyProxy\": true\n      }\n    }\n  },\n  \"required\": []\n}",
    "readme": "# Amazon Creator Storefront & Idea List Scraper\n\nAmazon-approved creators run public affiliate storefronts at `amazon.com/shop/{handle}`. This actor turns a creator handle (or a full storefront URL) into structured records: the creator profile and social links, every Idea List with its products, shoppable photos and videos, curations, and the storefront's trending picks. No login is required — these are public pages.\n\n## What this actor does\n\n- **Creator profile** — display name, bio, profile/cover image, affiliate disclosure text, Top Creator badge, total post count, and linked social profiles (TikTok, YouTube, Pinterest, Instagram, and others when shown)\n- **Idea Lists** — every curated collection with its title, cover image, declared item count, pinned flag, heart count, and last-updated text\n- **Idea List products** — ASIN, title, brand, price, list price, delivery text, badge, availability evidence, and creator comments where shown\n- **Shoppable photos** — photo URL, image, heart count, and pinned flag\n- **Creator videos** — title, duration, HLS stream, thumbnail, tagged/related ASINs, product count, heart count, captions, and canonical video page URL\n- **Curations** — themed post collections with title, post count, cover image, and URL\n- **Trending picks** — the product carousel with ASIN, image, price, and badge\n- **Post search** — optional case-insensitive title filter over the creator's Idea Lists and videos (photos have no title, so they are omitted while a search is active)\n- **Multi-marketplace** — 23 Amazon domains, with each `shopUrls` entry reporting its own marketplace envelope\n- **Honest omissions** — the dataset never contains `null`, `\"\"`, or `[]`; fields the source does not show are omitted\n\n## Output per record type\n\nThis actor emits seven record types (`recordType` field) in one dataset. Empty fields are omitted at every depth; fields the source does not publish are never emitted as `null`, blank or placeholders.\n\n### Shop profile (`recordType: \"shopProfile\"`)\n\n- `handle`, `shopUrl`\n- `status` — `ACTIVE`, `INACTIVE_STOREFRONT`, `NOT_FOUND`, or `BLOCKED`\n- `displayName`, `bio`, `profileImage`, `coverImage`\n- `affiliateDisclosure` — verbatim disclosure text the creator shows\n- `isTopCreator` — true when Amazon renders the Top Creator badge\n- `totalPosts` — the storefront-wide post total shown in the search box label\n- `socialLinks[]` — `{platform, url}` for each linked social profile\n- `availableTabs[]` — which of `profile` / `ideaLists` / `photos` / `videos` the shop exposes\n- `associateTag` — the creator's Amazon Associates tracking ID, only when every outgoing link on the page agrees\n- `listCount`, `videoCount`, `photoCount`, `curationCount`, `trendingCount` — counts found on the profile page\n- `marketplace` — `{countryCode, domain, marketplaceId, currency, language}`\n- `requestContext` — `{sourceUrl, canonicalUrl}`\n- `scrapedAt`\n\n### Idea List summary (`recordType: \"ideaListSummary\"`)\n\n- `handle`, `listId`, `title`, `url`, `image`, `position`\n- `declaredItemCount` — item count shown on the list card/header\n- `extractedItemCount` — unique ASINs actually extracted (only when `crawlIdeaLists=true`)\n- `isPinned` — true for the creator's pinned list\n- `heartCount` — hearts shown on the list card\n- `updatedText` — the list's relative \"Updated …\" text, when the detail page shows it\n- `marketplace`, `requestContext`, `scrapedAt`\n\n### Idea List item (`recordType: \"ideaListItem\"`)\n\n- `handle`, `listId`, `listTitle`, `position`\n- `asin`, `title`, `brand`, `url`, `image`\n- `price`, `listPrice` — `{value, currency, display}`, omitted when unparseable\n- `deliveryText` — delivery/shipping estimate text\n- `availabilityText`, `isAvailable` — only when Amazon shows explicit unavailable-in-this-variant text\n- `badge` — e.g. `Best Seller`, `Amazon's Choice`\n- `creatorComment` — the creator's own note, when shown\n- `marketplace`, `requestContext` (includes `selectedAsin`), `scrapedAt`\n\n### Creator video (`recordType: \"creatorVideo\"`)\n\n- `handle`, `contentId`, `contentIdUrn`, `title`, `durationText`, `position`\n- `videoStreamUrl` — HLS manifest URL, `thumbnailImage`\n- `productAsin`, `relatedAsins[]`, `numberOfProducts`\n- `heartCount`, `isPinned`\n- `closedCaptionsLanguage`, `closedCaptionsUrl` — when Amazon publishes captions\n- `videoPageUrl` — canonical `/shop/{handle}/video/{id}` page\n- `marketplace`, `requestContext`, `scrapedAt`\n\n### Photo post (`recordType: \"photoPost\"`)\n\n- `handle`, `photoId`, `url`, `image`, `position`\n- `heartCount`, `isPinned`\n- `marketplace`, `requestContext`, `scrapedAt`\n\n### Curation (`recordType: \"curation\"`)\n\n- `handle`, `curationId`, `curationUrn`, `title`, `postCount`, `image`, `url`, `position`\n- `marketplace`, `requestContext`, `scrapedAt`\n\n### Trending pick (`recordType: \"trendingPick\"`)\n\n- `handle`, `asin`, `image`, `price`, `badge`, `url`, `position`\n- `marketplace`, `requestContext`, `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `handles` | array | `[]` | Creator handles, e.g. `gearvlogz` |\n| `shopUrls` | array | `[]` | Full shop URLs, e.g. `https://www.amazon.com/shop/gearvlogz` |\n| `marketplaceDomain` | string | `amazon.com` | Amazon domain used to build URLs from `handles` |\n| `tabs` | string | `all` | `all` / `profile` / `ideaLists` / `photos` / `videos` |\n| `searchPosts` | string | `\"\"` | Optional case-insensitive title filter over Idea Lists and videos (photos omitted while active) |\n| `crawlIdeaLists` | boolean | `true` | Open each Idea List and extract its products |\n| `maxLists` | int | `10` | Max Idea Lists per shop (1–50) |\n| `maxItemsPerList` | int | `30` | Max products per Idea List (1–100) |\n| `maxVideos` | int | `20` | Max videos per shop (1–100) |\n| `maxPhotos` | int | `20` | Max photos per shop (1–100) |\n| `includeCurations` | boolean | `true` | Emit curations when tabs=all/profile |\n| `includeTrendingPicks` | boolean | `true` | Emit trending picks when tabs=all/profile |\n| `proxyConfiguration` | object | AUTO | Optional proxy override; the actor picks a working connection automatically |\n\nAt least one of `handles` or `shopUrls` must be provided.\n\n### Example: default — profile, Idea Lists, photos, and videos\n\n```json\n{\n  \"handles\": [\"gearvlogz\"],\n  \"tabs\": \"all\",\n  \"maxLists\": 5,\n  \"maxItemsPerList\": 20,\n  \"maxVideos\": 10\n}\n```\n\n### Example: search a creator's posts for shoes\n\n```json\n{\n  \"handles\": [\"sydneydelrey\"],\n  \"tabs\": \"all\",\n  \"searchPosts\": \"shoes\",\n  \"maxLists\": 3,\n  \"maxItemsPerList\": 10,\n  \"maxVideos\": 5,\n  \"maxPhotos\": 5\n}\n```\n\n### Example: Idea List summaries only, no item drill-down\n\n```json\n{\n  \"handles\": [\"gearvlogz\"],\n  \"tabs\": \"ideaLists\",\n  \"crawlIdeaLists\": false\n}\n```\n\n### Example: a non-US marketplace\n\n```json\n{\n  \"shopUrls\": [\n    \"https://www.amazon.co.uk/shop/sydneydelrey\"\n  ],\n  \"tabs\": \"all\"\n}\n```\n\n## Use cases\n\n- **Affiliate/influencer research** — see which products a creator recommends and at what price point\n- **Competitive monitoring** — track a brand's creator partnerships and changing product picks\n- **Product discovery** — mine curated Idea Lists, trending picks, and shoppable media for niche products\n- **Content strategy** — compare creators by catalog size, video engagement, and curation themes\n\n## FAQ\n\n**What is a creator/influencer storefront?**\nIt is a public Amazon page (`amazon.com/shop/{handle}`) where an approved Amazon Influencer curates products into an affiliate-linked profile. It is distinct from a Brand Store (run by a manufacturer) and a third-party seller's storefront.\n\n**Why do `declaredItemCount` and `extractedItemCount` sometimes differ?**\nAmazon's Idea Lists can include items that are unavailable in a variant/style and show as \"may be unavailable\" placeholders, and the product grid can lazily render. We report both numbers honestly rather than forcing them to match.\n\n**What happens for an inactive creator shop?**\nAmazon shows the explicit text \"This Influencer Storefront is not active.\" The actor emits one `shopProfile` record with `status: \"INACTIVE_STOREFRONT\"` and stops for that handle.\n\n**Do I need a proxy or login?**\nNo login is required. The actor starts with a direct connection, falls back to the free AUTO proxy group, and escalates to residential only after repeated real blocks. You never need to configure a proxy.\n\n**Does this work on non-US Amazon marketplaces?**\nYes — `marketplaceDomain` and `shopUrls` accept all 23 Amazon domains. A creator may have a different catalog on each marketplace; each `shopUrls` entry reports its own real marketplace envelope. Some non-US storefronts sit behind an AWS WAF challenge that the actor retries past.\n\n**Why do product, list, or curation URLs return a 503 when I curl them directly?**\nAmazon's product (`/dp/{asin}`) and storefront list/curation pages reject some non-browser or cookieless requests with a 503. The links are valid and open normally in a browser; it is an Amazon-side anti-bot check, not a broken link. All image, video, and caption media URLs return 200/206 with the correct content type.\n\n**Are product ratings or review counts included?**\nOnly when Amazon shows them on the storefront card. The current storefront markup does not display ratings on Idea List product cards, so none are fabricated.\n\n## Limitations\n\n- The profile page's curation and trending-pick carousels expose up to 16 items each; that is the source ceiling.\n- Trending-pick cards carry ASIN, image, price, and badge, but no product title.\n- Photo posts expose the image and URL; their individually tagged products are not expanded.\n- Curations expose the title, post count, cover image, and URL; the posts inside a curation are not expanded.\n- Amazon occasionally soft-redirects an unprimed deep link to an unrelated page. The actor primes each session on the marketplace homepage and retries, but a persistent block is reported as `BLOCKED` rather than fabricated data.\n- `updatedText` is Amazon's relative text (\"Updated 5 days ago\"), not an absolute timestamp.\n\n## Data source\n\nAll data comes from Amazon's public creator storefront pages and their public same-origin AJAX endpoints. The actor does not log in, does not use cookies, and does not access private creator dashboards or Associates account data.\n\n## Is this affiliated with Amazon?\n\nNo — this is an independent third-party actor that reads Amazon's public storefront pages.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "amazon-creator-storefront-and-idea-list-scraper",
      "title": "Amazon Creator Storefront & Idea List Scraper",
      "description": "Pull Amazon creator storefronts by handle: profile and social links, every curated Idea List with its products and prices, shoppable photos and videos, curations, and trending picks.",
      "version": "2.0",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# Amazon Creator Storefront & Idea List Scraper\n\nAmazon-approved creators run public affiliate storefronts at `amazon.com/shop/{handle}`. This actor turns a creator handle (or a full storefront URL) into structured records: the creator profile and social links, every Idea List with its products, shoppable photos and videos, curations, and the storefront's trending picks. No login is required — these are public pages.\n\n## What this actor does\n\n- **Creator profile** — display name, bio, profile/cover image, affiliate disclosure text, Top Creator badge, total post count, and linked social profiles (TikTok, YouTube, Pinterest, Instagram, and others when shown)\n- **Idea Lists** — every curated collection with its title, cover image, declared item count, pinned flag, heart count, and last-updated text\n- **Idea List products** — ASIN, title, brand, price, list price, delivery text, badge, availability evidence, and creator comments where shown\n- **Shoppable photos** — photo URL, image, heart count, and pinned flag\n- **Creator videos** — title, duration, HLS stream, thumbnail, tagged/related ASINs, product count, heart count, captions, and canonical video page URL\n- **Curations** — themed post collections with title, post count, cover image, and URL\n- **Trending picks** — the product carousel with ASIN, image, price, and badge\n- **Post search** — optional case-insensitive title filter over the creator's Idea Lists and videos (photos have no title, so they are omitted while a search is active)\n- **Multi-marketplace** — 23 Amazon domains, with each `shopUrls` entry reporting its own marketplace envelope\n- **Honest omissions** — the dataset never contains `null`, `\"\"`, or `[]`; fields the source does not show are omitted\n\n## Output per record type\n\nThis actor emits seven record types (`recordType` field) in one dataset. Empty fields are omitted at every depth; fields the source does not publish are never emitted as `null`, blank or placeholders.\n\n### Shop profile (`recordType: \"shopProfile\"`)\n\n- `handle`, `shopUrl`\n- `status` — `ACTIVE`, `INACTIVE_STOREFRONT`, `NOT_FOUND`, or `BLOCKED`\n- `displayName`, `bio`, `profileImage`, `coverImage`\n- `affiliateDisclosure` — verbatim disclosure text the creator shows\n- `isTopCreator` — true when Amazon renders the Top Creator badge\n- `totalPosts` — the storefront-wide post total shown in the search box label\n- `socialLinks[]` — `{platform, url}` for each linked social profile\n- `availableTabs[]` — which of `profile` / `ideaLists` / `photos` / `videos` the shop exposes\n- `associateTag` — the creator's Amazon Associates tracking ID, only when every outgoing link on the page agrees\n- `listCount`, `videoCount`, `photoCount`, `curationCount`, `trendingCount` — counts found on the profile page\n- `marketplace` — `{countryCode, domain, marketplaceId, currency, language}`\n- `requestContext` — `{sourceUrl, canonicalUrl}`\n- `scrapedAt`\n\n### Idea List summary (`recordType: \"ideaListSummary\"`)\n\n- `handle`, `listId`, `title`, `url`, `image`, `position`\n- `declaredItemCount` — item count shown on the list card/header\n- `extractedItemCount` — unique ASINs actually extracted (only when `crawlIdeaLists=true`)\n- `isPinned` — true for the creator's pinned list\n- `heartCount` — hearts shown on the list card\n- `updatedText` — the list's relative \"Updated …\" text, when the detail page shows it\n- `marketplace`, `requestContext`, `scrapedAt`\n\n### Idea List item (`recordType: \"ideaListItem\"`)\n\n- `handle`, `listId`, `listTitle`, `position`\n- `asin`, `title`, `brand`, `url`, `image`\n- `price`, `listPrice` — `{value, currency, display}`, omitted when unparseable\n- `deliveryText` — delivery/shipping estimate text\n- `availabilityText`, `isAvailable` — only when Amazon shows explicit unavailable-in-this-variant text\n- `badge` — e.g. `Best Seller`, `Amazon's Choice`\n- `creatorComment` — the creator's own note, when shown\n- `marketplace`, `requestContext` (includes `selectedAsin`), `scrapedAt`\n\n### Creator video (`recordType: \"creatorVideo\"`)\n\n- `handle`, `contentId`, `contentIdUrn`, `title`, `durationText`, `position`\n- `videoStreamUrl` — HLS manifest URL, `thumbnailImage`\n- `productAsin`, `relatedAsins[]`, `numberOfProducts`\n- `heartCount`, `isPinned`\n- `closedCaptionsLanguage`, `closedCaptionsUrl` — when Amazon publishes captions\n- `videoPageUrl` — canonical `/shop/{handle}/video/{id}` page\n- `marketplace`, `requestContext`, `scrapedAt`\n\n### Photo post (`recordType: \"photoPost\"`)\n\n- `handle`, `photoId`, `url`, `image`, `position`\n- `heartCount`, `isPinned`\n- `marketplace`, `requestContext`, `scrapedAt`\n\n### Curation (`recordType: \"curation\"`)\n\n- `handle`, `curationId`, `curationUrn`, `title`, `postCount`, `image`, `url`, `position`\n- `marketplace`, `requestContext`, `scrapedAt`\n\n### Trending pick (`recordType: \"trendingPick\"`)\n\n- `handle`, `asin`, `image`, `price`, `badge`, `url`, `position`\n- `marketplace`, `requestContext`, `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `handles` | array | `[]` | Creator handles, e.g. `gearvlogz` |\n| `shopUrls` | array | `[]` | Full shop URLs, e.g. `https://www.amazon.com/shop/gearvlogz` |\n| `marketplaceDomain` | string | `amazon.com` | Amazon domain used to build URLs from `handles` |\n| `tabs` | string | `all` | `all` / `profile` / `ideaLists` / `photos` / `videos` |\n| `searchPosts` | string | `\"\"` | Optional case-insensitive title filter over Idea Lists and videos (photos omitted while active) |\n| `crawlIdeaLists` | boolean | `true` | Open each Idea List and extract its products |\n| `maxLists` | int | `10` | Max Idea Lists per shop (1–50) |\n| `maxItemsPerList` | int | `30` | Max products per Idea List (1–100) |\n| `maxVideos` | int | `20` | Max videos per shop (1–100) |\n| `maxPhotos` | int | `20` | Max photos per shop (1–100) |\n| `includeCurations` | boolean | `true` | Emit curations when tabs=all/profile |\n| `includeTrendingPicks` | boolean | `true` | Emit trending picks when tabs=all/profile |\n| `proxyConfiguration` | object | AUTO | Optional proxy override; the actor picks a working connection automatically |\n\nAt least one of `handles` or `shopUrls` must be provided.\n\n### Example: default — profile, Idea Lists, photos, and videos\n\n```json\n{\n  \"handles\": [\"gearvlogz\"],\n  \"tabs\": \"all\",\n  \"maxLists\": 5,\n  \"maxItemsPerList\": 20,\n  \"maxVideos\": 10\n}\n```\n\n### Example: search a creator's posts for shoes\n\n```json\n{\n  \"handles\": [\"sydneydelrey\"],\n  \"tabs\": \"all\",\n  \"searchPosts\": \"shoes\",\n  \"maxLists\": 3,\n  \"maxItemsPerList\": 10,\n  \"maxVideos\": 5,\n  \"maxPhotos\": 5\n}\n```\n\n### Example: Idea List summaries only, no item drill-down\n\n```json\n{\n  \"handles\": [\"gearvlogz\"],\n  \"tabs\": \"ideaLists\",\n  \"crawlIdeaLists\": false\n}\n```\n\n### Example: a non-US marketplace\n\n```json\n{\n  \"shopUrls\": [\n    \"https://www.amazon.co.uk/shop/sydneydelrey\"\n  ],\n  \"tabs\": \"all\"\n}\n```\n\n## Use cases\n\n- **Affiliate/influencer research** — see which products a creator recommends and at what price point\n- **Competitive monitoring** — track a brand's creator partnerships and changing product picks\n- **Product discovery** — mine curated Idea Lists, trending picks, and shoppable media for niche products\n- **Content strategy** — compare creators by catalog size, video engagement, and curation themes\n\n## FAQ\n\n**What is a creator/influencer storefront?**\nIt is a public Amazon page (`amazon.com/shop/{handle}`) where an approved Amazon Influencer curates products into an affiliate-linked profile. It is distinct from a Brand Store (run by a manufacturer) and a third-party seller's storefront.\n\n**Why do `declaredItemCount` and `extractedItemCount` sometimes differ?**\nAmazon's Idea Lists can include items that are unavailable in a variant/style and show as \"may be unavailable\" placeholders, and the product grid can lazily render. We report both numbers honestly rather than forcing them to match.\n\n**What happens for an inactive creator shop?**\nAmazon shows the explicit text \"This Influencer Storefront is not active.\" The actor emits one `shopProfile` record with `status: \"INACTIVE_STOREFRONT\"` and stops for that handle.\n\n**Do I need a proxy or login?**\nNo login is required. The actor starts with a direct connection, falls back to the free AUTO proxy group, and escalates to residential only after repeated real blocks. You never need to configure a proxy.\n\n**Does this work on non-US Amazon marketplaces?**\nYes — `marketplaceDomain` and `shopUrls` accept all 23 Amazon domains. A creator may have a different catalog on each marketplace; each `shopUrls` entry reports its own real marketplace envelope. Some non-US storefronts sit behind an AWS WAF challenge that the actor retries past.\n\n**Why do product, list, or curation URLs return a 503 when I curl them directly?**\nAmazon's product (`/dp/{asin}`) and storefront list/curation pages reject some non-browser or cookieless requests with a 503. The links are valid and open normally in a browser; it is an Amazon-side anti-bot check, not a broken link. All image, video, and caption media URLs return 200/206 with the correct content type.\n\n**Are product ratings or review counts included?**\nOnly when Amazon shows them on the storefront card. The current storefront markup does not display ratings on Idea List product cards, so none are fabricated.\n\n## Limitations\n\n- The profile page's curation and trending-pick carousels expose up to 16 items each; that is the source ceiling.\n- Trending-pick cards carry ASIN, image, price, and badge, but no product title.\n- Photo posts expose the image and URL; their individually tagged products are not expanded.\n- Curations expose the title, post count, cover image, and URL; the posts inside a curation are not expanded.\n- Amazon occasionally soft-redirects an unprimed deep link to an unrelated page. The actor primes each session on the marketplace homepage and retries, but a persistent block is reported as `BLOCKED` rather than fabricated data.\n- `updatedText` is Amazon's relative text (\"Updated 5 days ago\"), not an absolute timestamp.\n\n## Data source\n\nAll data comes from Amazon's public creator storefront pages and their public same-origin AJAX endpoints. The actor does not log in, does not use cookies, and does not access private creator dashboards or Associates account data.\n\n## Is this affiliated with Amazon?\n\nNo — this is an independent third-party actor that reads Amazon's public storefront pages.\n",
      "input": {
        "title": "Amazon Creator Shop Scraper Input",
        "description": "Scrape Amazon creator storefronts (/shop/{handle}): profile and social links, Idea Lists and their products, shoppable photos and videos, curations, and trending picks across 23 Amazon marketplaces.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "handles": {
            "title": "Creator handles",
            "type": "array",
            "description": "Amazon influencer handles, e.g. `gearvlogz` (from amazon.com/shop/gearvlogz). Combined with `marketplaceDomain` to build the shop URL. At least one handle or `shopUrls` entry is required.",
            "editor": "stringList",
            "default": [],
            "prefill": [
              "gearvlogz"
            ]
          },
          "shopUrls": {
            "title": "Shop URLs",
            "type": "array",
            "description": "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. Provide at least one handle or shop URL.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "marketplaceDomain": {
            "title": "Marketplace domain",
            "type": "string",
            "description": "Amazon domain to use when building shop URLs from `handles`.",
            "editor": "select",
            "enum": [
              "amazon.com",
              "amazon.ca",
              "amazon.com.mx",
              "amazon.com.br",
              "amazon.ie",
              "amazon.es",
              "amazon.co.uk",
              "amazon.fr",
              "amazon.com.be",
              "amazon.nl",
              "amazon.de",
              "amazon.it",
              "amazon.se",
              "amazon.co.za",
              "amazon.pl",
              "amazon.eg",
              "amazon.com.tr",
              "amazon.sa",
              "amazon.ae",
              "amazon.in",
              "amazon.sg",
              "amazon.com.au",
              "amazon.co.jp"
            ],
            "enumTitles": [
              "United States (amazon.com)",
              "Canada (amazon.ca)",
              "Mexico (amazon.com.mx)",
              "Brazil (amazon.com.br)",
              "Ireland (amazon.ie)",
              "Spain (amazon.es)",
              "United Kingdom (amazon.co.uk)",
              "France (amazon.fr)",
              "Belgium (amazon.com.be)",
              "Netherlands (amazon.nl)",
              "Germany (amazon.de)",
              "Italy (amazon.it)",
              "Sweden (amazon.se)",
              "South Africa (amazon.co.za)",
              "Poland (amazon.pl)",
              "Egypt (amazon.eg)",
              "Turkey (amazon.com.tr)",
              "Saudi Arabia (amazon.sa)",
              "UAE (amazon.ae)",
              "India (amazon.in)",
              "Singapore (amazon.sg)",
              "Australia (amazon.com.au)",
              "Japan (amazon.co.jp)"
            ],
            "default": "amazon.com",
            "prefill": "amazon.com"
          },
          "tabs": {
            "title": "Content to scrape",
            "type": "string",
            "description": "Which storefront content to extract. `all` includes profile, Idea Lists, photos, videos, curations, and trending picks.",
            "editor": "select",
            "enum": [
              "all",
              "profile",
              "ideaLists",
              "photos",
              "videos"
            ],
            "enumTitles": [
              "All (profile + Idea Lists + photos + videos + curations + trending)",
              "Profile only (includes curations and trending picks)",
              "Idea Lists only",
              "Photos only",
              "Videos only"
            ],
            "default": "all",
            "prefill": "all"
          },
          "searchPosts": {
            "title": "Search posts",
            "type": "string",
            "description": "Optional keyword to filter the creator's posts (Idea Lists, photos, videos) before extraction. Leave empty to return the full feed.",
            "editor": "textfield",
            "default": "",
            "prefill": ""
          },
          "crawlIdeaLists": {
            "title": "Crawl Idea List items",
            "type": "boolean",
            "description": "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, hearts, pinned) are emitted.",
            "default": true,
            "prefill": true
          },
          "maxLists": {
            "title": "Max Idea Lists per shop",
            "type": "integer",
            "description": "Maximum number of Idea Lists to process per shop.",
            "minimum": 1,
            "maximum": 50,
            "default": 10,
            "prefill": 1
          },
          "maxItemsPerList": {
            "title": "Max items per Idea List",
            "type": "integer",
            "description": "Maximum number of product items to extract per Idea List.",
            "minimum": 1,
            "maximum": 100,
            "default": 30,
            "prefill": 3
          },
          "maxVideos": {
            "title": "Max videos per shop",
            "type": "integer",
            "description": "Maximum number of creator videos to extract per shop (tabs=all or videos).",
            "minimum": 1,
            "maximum": 100,
            "default": 20,
            "prefill": 1
          },
          "maxPhotos": {
            "title": "Max photos per shop",
            "type": "integer",
            "description": "Maximum number of shoppable photo posts to extract per shop (tabs=all or photos).",
            "minimum": 1,
            "maximum": 100,
            "default": 20,
            "prefill": 1
          },
          "includeCurations": {
            "title": "Include curations",
            "type": "boolean",
            "description": "Emit the creator's curations (themed post collections shown on the profile page) when tabs=all or profile.",
            "default": true,
            "prefill": false
          },
          "includeTrendingPicks": {
            "title": "Include trending picks",
            "type": "boolean",
            "description": "Emit the creator's trending-picks product carousel when tabs=all or profile.",
            "default": true,
            "prefill": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The actor chooses a working connection automatically (direct, then free AUTO, then residential only after repeated blocks). Change this only if you need a specific proxy setup.",
            "editor": "proxy",
            "prefill": {
              "useApifyProxy": true
            },
            "default": {
              "useApifyProxy": true
            }
          }
        },
        "required": []
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Amazon Creator Storefront & Idea List Scraper Output",
        "description": "Amazon influencer storefront records: shop profiles, Idea List summaries and products, creator videos, shoppable photos, curations, and trending picks.",
        "properties": {
          "records": {
            "type": "string",
            "title": "Creator shop records",
            "description": "Dataset containing all scraped shopProfile, ideaListSummary, ideaListItem, creatorVideo, photoPost, curation, and trendingPick records.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "defaultMemoryMbytes": 2048,
      "minMemoryMbytes": 2048,
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Creator shop records",
              "transformation": {
                "fields": [
                  "recordType",
                  "handle",
                  "status",
                  "displayName",
                  "title",
                  "asin",
                  "price",
                  "url",
                  "heartCount",
                  "postCount",
                  "isPinned"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "2.0.1",
    "imageDigest": "8182f68a41a476538808689bc3ee1f10f6df74e349cbcf10e9438977c825c6ad",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "2.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.03426111111111111
    }
  }
}