{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ecommerce-price-monitor",
    "name": "E-Commerce Price Monitor & Competitive Intel",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/g4dr/ecommerce-price-monitor",
    "canonicalUrl": "https://clawhub.ai/g4dr/ecommerce-price-monitor",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ecommerce-price-monitor",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ecommerce-price-monitor",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/ecommerce-price-monitor"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/ecommerce-price-monitor",
    "agentPageUrl": "https://openagent3.xyz/skills/ecommerce-price-monitor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ecommerce-price-monitor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ecommerce-price-monitor/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Overview",
        "body": "This skill enables Claude to monitor and track product prices across major e-commerce platforms\n— Amazon, Zalando, eBay, and more — for competitive pricing analysis, dynamic repricing strategies,\nand real-time market intelligence.\n\n🔗 Sign up for Apify here: https://www.apify.com/?fpr=dx06p"
      },
      {
        "title": "What This Skill Does",
        "body": "Monitor product prices on Amazon, Zalando, eBay, AliExpress, and more\nTrack price history and detect drops, spikes, and promotions\nCompare prices for the same product across multiple retailers\nTrigger repricing alerts when a competitor changes their price\nBuild structured price datasets for dashboards and analytics\nSchedule recurring runs for continuous price surveillance"
      },
      {
        "title": "Step 1 — Get Your Apify API Token",
        "body": "Go to https://www.apify.com/?fpr=dx06p and create a free account\nNavigate to Settings → Integrations\n\nDirect link: https://console.apify.com/account/integrations\n\n\nCopy your Personal API Token: apify_api_xxxxxxxxxxxxxxxx\nSet it as an environment variable:\nexport APIFY_TOKEN=apify_api_xxxxxxxxxxxxxxxx\n\nFree tier includes $5/month of compute — enough for monitoring dozens of products daily."
      },
      {
        "title": "Step 2 — Install the Apify Client",
        "body": "npm install apify-client"
      },
      {
        "title": "Amazon",
        "body": "Actor IDPurposeapify/amazon-product-scraperPrice, rating, title, ASIN, seller infoapify/amazon-search-scraperSearch results with prices for a keywordapify/amazon-reviews-scraperProduct reviews and ratings"
      },
      {
        "title": "Fashion & Apparel",
        "body": "Actor IDPurposeapify/zalando-scraperPrices, sizes, brands from Zalandoapify/zara-scraperZara product listings and prices"
      },
      {
        "title": "General Marketplaces",
        "body": "Actor IDPurposeapify/ebay-scrapereBay listings, sold prices, seller dataapify/aliexpress-scraperAliExpress product data and pricingapify/google-shopping-scraperAggregate prices across all Google Shopping"
      },
      {
        "title": "Monitor Amazon Product Prices",
        "body": "import ApifyClient from 'apify-client';\n\nconst client = new ApifyClient({ token: process.env.APIFY_TOKEN });\n\nconst run = await client.actor(\"apify/amazon-product-scraper\").call({\n  productUrls: [\n    { url: \"https://www.amazon.com/dp/B09G9HD6PD\" },\n    { url: \"https://www.amazon.com/dp/B08N5WRWNW\" }\n  ],\n  maxReviews: 0 // skip reviews, prices only\n});\n\nconst { items } = await run.dataset().getData();\n\n// Each item contains:\n// { title, price, currency, originalPrice, discount,\n//   rating, reviewsCount, asin, availability, seller }\n\nitems.forEach(p => {\n  console.log(`${p.title} — ${p.currency}${p.price} (was ${p.originalPrice})`);\n});"
      },
      {
        "title": "Search Amazon by Keyword and Compare Prices",
        "body": "const run = await client.actor(\"apify/amazon-search-scraper\").call({\n  searchQueries: [\"wireless headphones\", \"bluetooth speaker\"],\n  maxResultsPerQuery: 20,\n  country: \"US\"\n});\n\nconst { items } = await run.dataset().getData();\n\n// Sort by price ascending\nconst sorted = items.sort((a, b) => a.price - b.price);\nconsole.log(\"Cheapest option:\", sorted[0]);"
      },
      {
        "title": "Scrape Zalando for Fashion Price Monitoring",
        "body": "const run = await client.actor(\"apify/zalando-scraper\").call({\n  startUrls: [\n    { url: \"https://www.zalando.fr/chaussures-homme/\" },\n    { url: \"https://www.zalando.fr/vestes-homme/\" }\n  ],\n  maxResults: 50\n});\n\nconst { items } = await run.dataset().getData();\n\n// Each item contains:\n// { brand, name, price, originalPrice, discount,\n//   sizes, color, url, imageUrl, category }"
      },
      {
        "title": "Cross-Platform Price Comparison",
        "body": "const [amazonRun, ebayRun, googleRun] = await Promise.all([\n  client.actor(\"apify/amazon-search-scraper\").call({\n    searchQueries: [\"Sony WH-1000XM5\"],\n    maxResultsPerQuery: 5,\n    country: \"US\"\n  }),\n  client.actor(\"apify/ebay-scraper\").call({\n    searchQueries: [\"Sony WH-1000XM5\"],\n    maxResults: 5\n  }),\n  client.actor(\"apify/google-shopping-scraper\").call({\n    queries: [\"Sony WH-1000XM5\"],\n    maxResults: 5,\n    country: \"US\"\n  })\n]);\n\nconst [amzData, ebayData, googleData] = await Promise.all([\n  amazonRun.dataset().getData(),\n  ebayRun.dataset().getData(),\n  googleRun.dataset().getData()\n]);\n\nconst comparison = [\n  ...amzData.items.map(i => ({ ...i, source: \"amazon\" })),\n  ...ebayData.items.map(i => ({ ...i, source: \"ebay\" })),\n  ...googleData.items.map(i => ({ ...i, source: \"google_shopping\" }))\n].sort((a, b) => a.price - b.price);\n\nconsole.log(\"Best price found:\", comparison[0]);"
      },
      {
        "title": "Using the REST API Directly",
        "body": "const response = await fetch(\n  \"https://api.apify.com/v2/acts/apify~amazon-product-scraper/runs\",\n  {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"Authorization\": `Bearer ${process.env.APIFY_TOKEN}`\n    },\n    body: JSON.stringify({\n      productUrls: [{ url: \"https://www.amazon.com/dp/B09G9HD6PD\" }],\n      maxReviews: 0\n    })\n  }\n);\n\nconst { data } = await response.json();\nconst runId = data.id;\n\n// Poll until run finishes\nlet results;\nwhile (true) {\n  await new Promise(r => setTimeout(r, 3000));\n  const statusRes = await fetch(\n    `https://api.apify.com/v2/actor-runs/${runId}`,\n    { headers: { Authorization: `Bearer ${process.env.APIFY_TOKEN}` } }\n  );\n  const { data: run } = await statusRes.json();\n  if (run.status === \"SUCCEEDED\") {\n    const dataRes = await fetch(\n      `https://api.apify.com/v2/actor-runs/${runId}/dataset/items`,\n      { headers: { Authorization: `Bearer ${process.env.APIFY_TOKEN}` } }\n    );\n    results = await dataRes.json();\n    break;\n  }\n  if (run.status === \"FAILED\") throw new Error(\"Run failed\");\n}\n\nconsole.log(results);"
      },
      {
        "title": "Price Monitoring Workflow",
        "body": "When asked to monitor or compare prices, Claude will:\n\nIdentify the target products (URLs, ASINs, or search keywords)\nSelect the right Apify actors per platform\nRun extractions in parallel for speed\nNormalize all prices to a common currency and schema\nDetect price changes by comparing against a stored baseline\nTrigger alerts if a price drops below or rises above a defined threshold\nReturn a structured report or feed it into a repricing pipeline"
      },
      {
        "title": "Price Alert System",
        "body": "const PRICE_THRESHOLD = 79.99; // alert if price drops below this\n\nasync function checkAndAlert(productUrl) {\n  const run = await client.actor(\"apify/amazon-product-scraper\").call({\n    productUrls: [{ url: productUrl }],\n    maxReviews: 0\n  });\n\n  const { items } = await run.dataset().getData();\n  const product = items[0];\n\n  if (product.price < PRICE_THRESHOLD) {\n    console.log(`ALERT: ${product.title} dropped to $${product.price}!`);\n    // Send email / Slack / webhook notification here\n    await sendAlert({\n      product: product.title,\n      price: product.price,\n      url: productUrl,\n      detectedAt: new Date().toISOString()\n    });\n  }\n}"
      },
      {
        "title": "Normalized Price Output Schema",
        "body": "{\n  \"productName\": \"Sony WH-1000XM5 Wireless Headphones\",\n  \"sku\": \"B09XS7JWHH\",\n  \"source\": \"amazon\",\n  \"currency\": \"USD\",\n  \"currentPrice\": 279.99,\n  \"originalPrice\": 349.99,\n  \"discount\": 20,\n  \"availability\": \"In Stock\",\n  \"seller\": \"Amazon.com\",\n  \"url\": \"https://www.amazon.com/dp/B09XS7JWHH\",\n  \"scrapedAt\": \"2025-02-25T10:00:00Z\"\n}"
      },
      {
        "title": "Export to CSV for Repricing Tools",
        "body": "import { writeFileSync } from 'fs';\n\nfunction pricesToCSV(products) {\n  const headers = [\n    \"productName\",\"source\",\"currency\",\"currentPrice\",\n    \"originalPrice\",\"discount\",\"availability\",\"url\",\"scrapedAt\"\n  ];\n  const rows = products.map(p =>\n    headers.map(h => `\"${(p[h] ?? \"\").toString().replace(/\"/g, '\"\"')}\"`).join(\",\")\n  );\n  return [headers.join(\",\"), ...rows].join(\"\\n\");\n}\n\nwriteFileSync(\"prices.csv\", pricesToCSV(products));\nconsole.log(\"prices.csv ready — import into your repricing tool\");"
      },
      {
        "title": "Scheduling Recurring Price Checks",
        "body": "Use Apify Schedules to automate monitoring without manual triggers:\n\nGo to https://console.apify.com/schedules\nClick Create new schedule\nSet frequency: every 6 hours or daily at 08:00\nSelect your actor and input configuration\nEnable webhook notifications to receive alerts on price changes"
      },
      {
        "title": "Best Practices",
        "body": "Always scrape from product pages directly (URL or ASIN) for highest accuracy\nUse proxyConfiguration: { useApifyProxy: true } to avoid being blocked at scale\nStore historical prices in Apify Datasets to track trends over time\nFor Amazon, scrape by ASIN rather than keyword for consistent results\nNormalize all prices to a single currency before cross-platform comparison\nRun price checks during off-peak hours (night) to reduce load and cost"
      },
      {
        "title": "Error Handling",
        "body": "try {\n  const run = await client.actor(\"apify/amazon-product-scraper\").call(input);\n  const dataset = await run.dataset().getData();\n  return dataset.items;\n} catch (error) {\n  if (error.statusCode === 401) throw new Error(\"Invalid Apify token\");\n  if (error.statusCode === 429) throw new Error(\"Rate limit hit — reduce batch size or add delays\");\n  if (error.statusCode === 404) throw new Error(\"Product page not found — check the URL\");\n  if (error.message.includes(\"timeout\")) throw new Error(\"Scrape timed out — try fewer products per run\");\n  throw error;\n}"
      },
      {
        "title": "Requirements",
        "body": "An Apify account → https://www.apify.com/?fpr=dx06p\nA valid Personal API Token from Settings → Integrations\nNode.js 18+ for the apify-client package\nA repricing tool, dashboard, or spreadsheet to receive the data (Prisync, Wiser, Excel, Airtable)"
      }
    ],
    "body": "E-Commerce Price Monitoring & Competitive Intelligence Skill\nOverview\n\nThis skill enables Claude to monitor and track product prices across major e-commerce platforms — Amazon, Zalando, eBay, and more — for competitive pricing analysis, dynamic repricing strategies, and real-time market intelligence.\n\n🔗 Sign up for Apify here: https://www.apify.com/?fpr=dx06p\n\nWhat This Skill Does\nMonitor product prices on Amazon, Zalando, eBay, AliExpress, and more\nTrack price history and detect drops, spikes, and promotions\nCompare prices for the same product across multiple retailers\nTrigger repricing alerts when a competitor changes their price\nBuild structured price datasets for dashboards and analytics\nSchedule recurring runs for continuous price surveillance\nStep 1 — Get Your Apify API Token\nGo to https://www.apify.com/?fpr=dx06p and create a free account\nNavigate to Settings → Integrations\nDirect link: https://console.apify.com/account/integrations\nCopy your Personal API Token: apify_api_xxxxxxxxxxxxxxxx\nSet it as an environment variable:\nexport APIFY_TOKEN=apify_api_xxxxxxxxxxxxxxxx\n\n\nFree tier includes $5/month of compute — enough for monitoring dozens of products daily.\n\nStep 2 — Install the Apify Client\nnpm install apify-client\n\nActors by Platform\nAmazon\nActor ID\tPurpose\napify/amazon-product-scraper\tPrice, rating, title, ASIN, seller info\napify/amazon-search-scraper\tSearch results with prices for a keyword\napify/amazon-reviews-scraper\tProduct reviews and ratings\nFashion & Apparel\nActor ID\tPurpose\napify/zalando-scraper\tPrices, sizes, brands from Zalando\napify/zara-scraper\tZara product listings and prices\nGeneral Marketplaces\nActor ID\tPurpose\napify/ebay-scraper\teBay listings, sold prices, seller data\napify/aliexpress-scraper\tAliExpress product data and pricing\napify/google-shopping-scraper\tAggregate prices across all Google Shopping\nExamples\nMonitor Amazon Product Prices\nimport ApifyClient from 'apify-client';\n\nconst client = new ApifyClient({ token: process.env.APIFY_TOKEN });\n\nconst run = await client.actor(\"apify/amazon-product-scraper\").call({\n  productUrls: [\n    { url: \"https://www.amazon.com/dp/B09G9HD6PD\" },\n    { url: \"https://www.amazon.com/dp/B08N5WRWNW\" }\n  ],\n  maxReviews: 0 // skip reviews, prices only\n});\n\nconst { items } = await run.dataset().getData();\n\n// Each item contains:\n// { title, price, currency, originalPrice, discount,\n//   rating, reviewsCount, asin, availability, seller }\n\nitems.forEach(p => {\n  console.log(`${p.title} — ${p.currency}${p.price} (was ${p.originalPrice})`);\n});\n\nSearch Amazon by Keyword and Compare Prices\nconst run = await client.actor(\"apify/amazon-search-scraper\").call({\n  searchQueries: [\"wireless headphones\", \"bluetooth speaker\"],\n  maxResultsPerQuery: 20,\n  country: \"US\"\n});\n\nconst { items } = await run.dataset().getData();\n\n// Sort by price ascending\nconst sorted = items.sort((a, b) => a.price - b.price);\nconsole.log(\"Cheapest option:\", sorted[0]);\n\nScrape Zalando for Fashion Price Monitoring\nconst run = await client.actor(\"apify/zalando-scraper\").call({\n  startUrls: [\n    { url: \"https://www.zalando.fr/chaussures-homme/\" },\n    { url: \"https://www.zalando.fr/vestes-homme/\" }\n  ],\n  maxResults: 50\n});\n\nconst { items } = await run.dataset().getData();\n\n// Each item contains:\n// { brand, name, price, originalPrice, discount,\n//   sizes, color, url, imageUrl, category }\n\nCross-Platform Price Comparison\nconst [amazonRun, ebayRun, googleRun] = await Promise.all([\n  client.actor(\"apify/amazon-search-scraper\").call({\n    searchQueries: [\"Sony WH-1000XM5\"],\n    maxResultsPerQuery: 5,\n    country: \"US\"\n  }),\n  client.actor(\"apify/ebay-scraper\").call({\n    searchQueries: [\"Sony WH-1000XM5\"],\n    maxResults: 5\n  }),\n  client.actor(\"apify/google-shopping-scraper\").call({\n    queries: [\"Sony WH-1000XM5\"],\n    maxResults: 5,\n    country: \"US\"\n  })\n]);\n\nconst [amzData, ebayData, googleData] = await Promise.all([\n  amazonRun.dataset().getData(),\n  ebayRun.dataset().getData(),\n  googleRun.dataset().getData()\n]);\n\nconst comparison = [\n  ...amzData.items.map(i => ({ ...i, source: \"amazon\" })),\n  ...ebayData.items.map(i => ({ ...i, source: \"ebay\" })),\n  ...googleData.items.map(i => ({ ...i, source: \"google_shopping\" }))\n].sort((a, b) => a.price - b.price);\n\nconsole.log(\"Best price found:\", comparison[0]);\n\nUsing the REST API Directly\nconst response = await fetch(\n  \"https://api.apify.com/v2/acts/apify~amazon-product-scraper/runs\",\n  {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      \"Authorization\": `Bearer ${process.env.APIFY_TOKEN}`\n    },\n    body: JSON.stringify({\n      productUrls: [{ url: \"https://www.amazon.com/dp/B09G9HD6PD\" }],\n      maxReviews: 0\n    })\n  }\n);\n\nconst { data } = await response.json();\nconst runId = data.id;\n\n// Poll until run finishes\nlet results;\nwhile (true) {\n  await new Promise(r => setTimeout(r, 3000));\n  const statusRes = await fetch(\n    `https://api.apify.com/v2/actor-runs/${runId}`,\n    { headers: { Authorization: `Bearer ${process.env.APIFY_TOKEN}` } }\n  );\n  const { data: run } = await statusRes.json();\n  if (run.status === \"SUCCEEDED\") {\n    const dataRes = await fetch(\n      `https://api.apify.com/v2/actor-runs/${runId}/dataset/items`,\n      { headers: { Authorization: `Bearer ${process.env.APIFY_TOKEN}` } }\n    );\n    results = await dataRes.json();\n    break;\n  }\n  if (run.status === \"FAILED\") throw new Error(\"Run failed\");\n}\n\nconsole.log(results);\n\nPrice Monitoring Workflow\n\nWhen asked to monitor or compare prices, Claude will:\n\nIdentify the target products (URLs, ASINs, or search keywords)\nSelect the right Apify actors per platform\nRun extractions in parallel for speed\nNormalize all prices to a common currency and schema\nDetect price changes by comparing against a stored baseline\nTrigger alerts if a price drops below or rises above a defined threshold\nReturn a structured report or feed it into a repricing pipeline\nPrice Alert System\nconst PRICE_THRESHOLD = 79.99; // alert if price drops below this\n\nasync function checkAndAlert(productUrl) {\n  const run = await client.actor(\"apify/amazon-product-scraper\").call({\n    productUrls: [{ url: productUrl }],\n    maxReviews: 0\n  });\n\n  const { items } = await run.dataset().getData();\n  const product = items[0];\n\n  if (product.price < PRICE_THRESHOLD) {\n    console.log(`ALERT: ${product.title} dropped to $${product.price}!`);\n    // Send email / Slack / webhook notification here\n    await sendAlert({\n      product: product.title,\n      price: product.price,\n      url: productUrl,\n      detectedAt: new Date().toISOString()\n    });\n  }\n}\n\nNormalized Price Output Schema\n{\n  \"productName\": \"Sony WH-1000XM5 Wireless Headphones\",\n  \"sku\": \"B09XS7JWHH\",\n  \"source\": \"amazon\",\n  \"currency\": \"USD\",\n  \"currentPrice\": 279.99,\n  \"originalPrice\": 349.99,\n  \"discount\": 20,\n  \"availability\": \"In Stock\",\n  \"seller\": \"Amazon.com\",\n  \"url\": \"https://www.amazon.com/dp/B09XS7JWHH\",\n  \"scrapedAt\": \"2025-02-25T10:00:00Z\"\n}\n\nExport to CSV for Repricing Tools\nimport { writeFileSync } from 'fs';\n\nfunction pricesToCSV(products) {\n  const headers = [\n    \"productName\",\"source\",\"currency\",\"currentPrice\",\n    \"originalPrice\",\"discount\",\"availability\",\"url\",\"scrapedAt\"\n  ];\n  const rows = products.map(p =>\n    headers.map(h => `\"${(p[h] ?? \"\").toString().replace(/\"/g, '\"\"')}\"`).join(\",\")\n  );\n  return [headers.join(\",\"), ...rows].join(\"\\n\");\n}\n\nwriteFileSync(\"prices.csv\", pricesToCSV(products));\nconsole.log(\"prices.csv ready — import into your repricing tool\");\n\nScheduling Recurring Price Checks\n\nUse Apify Schedules to automate monitoring without manual triggers:\n\nGo to https://console.apify.com/schedules\nClick Create new schedule\nSet frequency: every 6 hours or daily at 08:00\nSelect your actor and input configuration\nEnable webhook notifications to receive alerts on price changes\nBest Practices\nAlways scrape from product pages directly (URL or ASIN) for highest accuracy\nUse proxyConfiguration: { useApifyProxy: true } to avoid being blocked at scale\nStore historical prices in Apify Datasets to track trends over time\nFor Amazon, scrape by ASIN rather than keyword for consistent results\nNormalize all prices to a single currency before cross-platform comparison\nRun price checks during off-peak hours (night) to reduce load and cost\nError Handling\ntry {\n  const run = await client.actor(\"apify/amazon-product-scraper\").call(input);\n  const dataset = await run.dataset().getData();\n  return dataset.items;\n} catch (error) {\n  if (error.statusCode === 401) throw new Error(\"Invalid Apify token\");\n  if (error.statusCode === 429) throw new Error(\"Rate limit hit — reduce batch size or add delays\");\n  if (error.statusCode === 404) throw new Error(\"Product page not found — check the URL\");\n  if (error.message.includes(\"timeout\")) throw new Error(\"Scrape timed out — try fewer products per run\");\n  throw error;\n}\n\nRequirements\nAn Apify account → https://www.apify.com/?fpr=dx06p\nA valid Personal API Token from Settings → Integrations\nNode.js 18+ for the apify-client package\nA repricing tool, dashboard, or spreadsheet to receive the data (Prisync, Wiser, Excel, Airtable)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/g4dr/ecommerce-price-monitor",
    "publisherUrl": "https://clawhub.ai/g4dr/ecommerce-price-monitor",
    "owner": "g4dr",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ecommerce-price-monitor",
    "downloadUrl": "https://openagent3.xyz/downloads/ecommerce-price-monitor",
    "agentUrl": "https://openagent3.xyz/skills/ecommerce-price-monitor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ecommerce-price-monitor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ecommerce-price-monitor/agent.md"
  }
}