agentsclimarketplace

Apify ecommerce intelligence

Skill johnisanerd/claude-skill-ecommerce-intelligence/apify-ecommerce-intelligence

Build an ecommerce intelligence feed from Google Shopping with the Apify Google Shopping API Actor (johnvc/google-shopping-api-google-shopping-products-prices-deals). Watch the products and competitors that matter, and log seller, price, extracted_price, extracted_old_price, tag, rating, and reviews per listing over time for price monitoring, deal and discount tracking, repricing inputs, and market scans. Filter to on_sale or free_shipping listings, bound each poll by pages, and key history on product_id plus source. Use when the user wants ecommerce intelligence, competitor price monitoring, price tracking across retailers, google shopping monitoring or tracking, deal alerts, MAP monitoring, or a market view of who sells a product and at what price. Pay-per-page billing, MCP-ready for Claude and other AI agents.From its SKILL.md

Install
npx -y skills add johnisanerd/claude-skill-ecommerce-intelligence --skill apify-ecommerce-intelligence

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • 27 days oldThe repository was created 27 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

8.4 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it

Ecommerce Intelligence: Competitor Prices and Deals From Google Shopping

Turn Google Shopping into an ecommerce intelligence feed. One bounded run per watched product returns every listing on the page with seller, current price, old price when on sale, rating, and review count, ready to log as a price history and compare across retailers.

When to use this skill

  • The user wants ecommerce intelligence: who sells a product, at what price, and how that moves.
  • They want competitor price monitoring, price tracking across retailers, or repricing inputs.
  • They want deal, discount, or MAP (minimum advertised price) monitoring for a watchlist.
  • They ask for "google shopping monitoring", "google shopping tracking", or "price monitoring".

Not for: one-off bulk exports of a single search (use the scrape-google-shopping skill), deep per-seller offers and specs for one product (use the Google Immersive Product API), or cheap high-volume price checks with fewer fields (use the Google Shopping Lite API).

What each poll returns (one dataset item per page, about 40 listings each)

Products sit in the shopping_results array of each page item. The intelligence fields:

  • Identity: product_id (the tracking key), title, position, product_link, thumbnail, immersive_product_page_token (hand it to the Google Immersive Product API for per-seller offer depth).
  • Price signals: price (display string), extracted_price (number), and on sale items old_price, extracted_old_price, tag (badge such as "62% OFF"), extensions.
  • Market signals: source (seller name), multiple_sources (boolean, several sellers list it), rating, reviews, delivery, second_hand_condition (used or refurbished listings).
  • Poll metadata: search_timestamp (the history timestamp), search_parameters, search_metadata (results_count, pages_processed), page_number.

Prerequisites

The Actor

Run it with the Apify CLI

Poll one watched product, one page, US market:

apify actors call "johnvc/google-shopping-api-google-shopping-products-prices-deals" -i '{"q":"dyson airwrap","gl":"us","hl":"en","max_pages":1}' \
  --json \
  --user-agent apify-awesome-skills/apify-ecommerce-intelligence \
  2>/dev/null

Watch only discounted listings in a price band, cheapest first:

apify actors call "johnvc/google-shopping-api-google-shopping-products-prices-deals" -i '{"q":"robot vacuum","gl":"us","hl":"en","on_sale":true,"min_price":100,"max_price":400,"sort_by":1,"max_pages":1}' \
  --json \
  --user-agent apify-awesome-skills/apify-ecommerce-intelligence \
  2>/dev/null

Read a past run's items later, for example from a scheduled run:

apify datasets get-items <DATASET_ID> --format json --user-agent apify-awesome-skills/apify-ecommerce-intelligence 2>/dev/null

Every call carries the three flags this repo expects: --json (or --format json), --user-agent apify-awesome-skills/apify-ecommerce-intelligence, and 2>/dev/null.

Run it from Claude or another AI agent (MCP)

The Actor is MCP-ready. Add the hosted server URL:

https://mcp.apify.com/?tools=actors,docs,johnvc/google-shopping-api-google-shopping-products-prices-deals

Then ask, for example: "Check which retailers sell the Dyson Airwrap right now, who is cheapest, and which listings are on sale." MCP setup docs: https://docs.apify.com/platform/integrations/mcp

Workflow

  1. Define the watchlist. One Actor input per watched item: a product query (q), the market (gl, hl, and google_domain for non-US), and optional restrictions (on_sale for a deal watch, min_price plus max_price for a band).
  2. Bound each poll. Keep max_pages at 1 or 2 per poll; the first page carries the listings buyers actually see, and max_pages is the hard cost cap.
  3. Estimate cost per poll and per month, then confirm with the user. See references/gotchas.md.
  4. Run one poll per watchlist item and flatten: one row per listing with search_timestamp, product_id, source, extracted_price, extracted_old_price, tag, rating, reviews, product_link.
  5. Build the history. Append rows to your store keyed on product_id plus source; a price change for the same key between polls is the signal for alerts, repricing, or a MAP flag (any extracted_price below your floor).
  6. Serve the result. Deliver a comparison table, a cheapest-seller answer, or a deal digest. For recurring intelligence, wrap the same inputs in an Apify Schedule or a cron job.

Inputs

  • q (string, required): the watched product, brand, or category
  • gl, hl, google_domain (strings): market localization, set together per country
  • location (string): optional geographic refinement
  • min_price plus max_price (numbers): price band in the local currency
  • sort_by (integer): 1 = price low to high, 2 = price high to low
  • on_sale (boolean): deal-watch mode, discounted listings only
  • free_shipping (boolean): restrict to free-shipping listings
  • max_pages (integer, default 1): pages per poll, the cost bound
  • device (enum: desktop, tablet, mobile): prices can differ slightly by device

Cost

Billing is per page processed (about 40 listings) plus a small one-time setup fee per run, so a one-page poll is a few cents. A 20-product watchlist polled daily at one page each runs about $0.80 per day. Estimate with the live prices in references/gotchas.md before scheduling.

Honest limits

  • This is a polled snapshot, not a push feed: freshness is your poll interval, and history only accumulates in your own store.
  • Coverage is what Google Shopping ranks for the query; a seller missing from the page is not proof they do not sell the product.
  • multiple_sources is a boolean flag, not a seller list; per-seller offer depth for one product needs the Google Immersive Product API.
  • product_link points at the Google Shopping product page, not always the retailer's own site.
  • Sale fields (old_price, tag) appear only when Google marks the listing as discounted.

Troubleshooting

  • Same product, different product_id across polls: match on normalized title plus source as a fallback key.
  • A watched seller disappeared from results: normal ranking movement; widen to max_pages: 2 before concluding they delisted.
  • on_sale poll returns nothing: no discounted listings right now for that query; it is a valid empty result.
  • Prices look off for a non-US market: set gl, hl, and google_domain together.

See references/gotchas.md for cost guardrails and error recovery, and references/actor-index.md for the Actor routing table.

Related product-data Actors

What ships with it: 2 files

5.4 KB alongside SKILL.md

references/

Keep looking

Skills are one crate of 326,452. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.