agenttoolworks

On the Apify Store and as an MCP server live

Shopify scraper and WooCommerce scraper, in one

Paste the URLs of any Shopify or WooCommerce stores. Get every product back in one clean format: prices, sale prices, variants, SKUs, barcodes, stock, weights and images. Turn on change tracking and it becomes a competitor price monitor.

Shopify and WooCommerce store URLs go in, the Actor detects each platform and reads its public catalog, and one normalized product row per product comes out
The output row is a real one, from Allbirds, trimmed for space.

What you get

62 fields per product, the same on both platforms.

We benchmarked it on the same three Shopify stores against the two leading Shopify scrapers on Apify. Their rows had 55 and 38 field paths; ours have 62, and most of the fields only they return are other names for ours.

The Variants view of a real run in Apify Console: one row per size of an Allbirds shoe, with SKU, barcode, price, stock and weight in grams
The Variants view: one row per size, ready for a spreadsheet.

Shopify and WooCommerce, side by side

What each platform actually publishes.

The two platforms do not expose the same things publicly. Where one publishes nothing, the field is empty rather than guessed.

FieldShopifyWooCommerce
Catalog endpoint/products.json, 250 per request/wp-json/wc/store/v1/products, 100 per request
Prices and sale pricesYes, per variantYes, per variation (one extra request per page)
Stock countWhen the store tracks inventory (Ajax endpoint)Only when stock is low
Barcode (GTIN, EAN, UPC)When entered (Ajax endpoint)Not published
WeightGrams, every variantIn the store's unit, converted to grams
Created and updated datesYesNot published
Ratings and review countNot in the catalogYes
Collections or categoriesCollections, by URL or handleCategories, by URL or slug

Price and stock monitoring

Pay for changes, not for re-reading the same catalog.

With change tracking on, the first run saves a snapshot of each store and every later run outputs only what moved. Turn off product rows and a scheduled monitor pays only for the changes it finds.

2sizes back in stock at Kith, caught between two runs 46 minutes apart
6change types: price up, price down, back in stock, out of stock, new, removed

A run stopped by your product limit cannot know whether an unread product still exists, so it reports price and stock changes only and says why. Cover the whole catalog to get new and removed products too.

Sourcing from AliExpress? The AliExpress scraper reads the supplier side the same way: every SKU's price and stock, the shipping cost to each country you list, and only the products that changed since the last run.

Measured

How fast a store is read.

3 sall 692 Allbirds products, 3 catalog requests, on Apify
29 sthe first 5,000 of Kith's 25,001 products
90 s300 products with stock, barcodes and alt text (one extra request each)
0logins, cookies or admin access needed

Ready-to-run examples

Open one, change the input, run it.

Each example opens the Actor on Apify with its input filled in. All examples on the Apify Store.

Pricing

Pay per product, no subscription.

$0.90 per 1,000 products returned and $0.005 per change detected, billed by Apify with platform usage included. A 1,000 product store costs $0.90, and Apify's free plan covers about 5,500 products a month.

For AI agents

The same catalogs, as an MCP server.

An agent rarely needs a whole catalog at once. The MCP server reads a store a page at a time, searches it, or returns one product in full, in compact JSON, billed per call from the credits that work on every AgentToolWorks server. 100 credits are free without a card.

ToolCreditsWhat it does
inspect_store0.2

Find out whether a store runs Shopify or WooCommerce, whether its catalog can be read, its currency and how many products it publishes.

The store's public storefront.
list_products1

Page through a store's catalog, or one collection or category, up to 50 products a page in a compact shape: title, URL, price range, sale price, stock, variant count, image.

Shopify products.json, the WooCommerce Store API.
get_product1

One product in full: every variant with SKU, barcode (GTIN/UPC/EAN), price, stock where public and weight; options, images with alt text, description, rating.

Shopify product JSON and Ajax endpoints, the WooCommerce Store API.
search_products1

Search one store by keyword through its own public search. Up to 10 results on Shopify, 20 on WooCommerce.

Shopify predictive search, the WooCommerce Store API.
get_usagefree

Read the remaining credit balance and the last 30 days of calls.

Your account.
EndpointStreamable HTTP
https://storecatalog.agenttoolworks.com/mcp
Connect it, Claude Code
claude mcp add --transport http storecatalog \
  https://storecatalog.agenttoolworks.com/mcp \
  --header "Authorization: Bearer atw_live_your_key"

Get a free key, then follow the docs for Claude Desktop, Cursor, Windsurf and VS Code. WooCommerce stores answer a page in 4 to 8 seconds (measured): that is the store's own speed, and the tool waits for it.

Use cases

What agents use it for, with real calls.

Every use case, across all products.

For developers

The Apify Actor, in one HTTP call.

Run it and get the products back in the same request through the Apify API. Snippets for Node.js and Python are in the Actor's README.

http
curl -X POST "https://api.apify.com/v2/acts/agenttoolworks~shopify-woocommerce-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"storeUrls": ["https://www.allbirds.com"], "maxProductsPerStore": 100}'

Questions

Is there a Shopify scraper that also works on WooCommerce?

This one. Paste Shopify and WooCommerce store URLs in the same list: the platform is detected for each store, and every product comes back in the same format, so one spreadsheet or one database table holds both.

How does it read a Shopify store?

Through the storefront's own public endpoints: products.json for the catalog, 250 products per request, and the per-product Ajax endpoint for stock counts, barcodes and image alt text. When the address you paste is a headless storefront (Hydrogen, Next.js) or sits behind a bot wall, the Actor reads the same products.json on the store's Shopify Online Store host, such as its myshopify.com domain, after checking that host's /meta.json names your store's domain. No login, no admin access, nothing a shopper's browser does not already receive.

Can I get barcodes (GTIN, EAN, UPC) from a Shopify store?

Yes, when the store entered them. Barcodes are not in products.json; they come from the per-product endpoint, which the Actor reads when 'Include stock levels, barcodes and image alt text' is on. On our test stores, Allbirds and Kith had a barcode on every variant.

Can it monitor competitor prices?

Yes. Turn on change tracking and schedule the Actor on Apify: each run outputs only what changed since the previous one, price up, price down, back in stock, out of stock, new product, removed product, and you pay per change.

What does it cost?

$0.90 per 1,000 products returned and $0.005 per change detected, billed by Apify. Apify's free plan includes $5 of monthly usage, about 5,500 products.

Can an AI agent read a Shopify store directly?

Yes, through our MCP server at storecatalog.agenttoolworks.com/mcp: inspect a store, list its products a page at a time, search it by keyword, or read one product in full with barcodes and stock. It answers in compact JSON so the agent does not pay for tokens it does not need, and it is billed per call from the same credits as our other servers.

Which stores does it not work on?

Sites that refuse automated requests on every host and name no Shopify store we can confirm as theirs: in our tests on October 17, 2026, www.hellomolly.com (Vercel's bot checkpoint) and www.tesla.com (HTTP 403). Also WooCommerce stores whose Store API is closed or behind a firewall, and a collection URL that is not a collection (kith.com/collections/mens redirects to an editorial page; the run summary lists real collections instead). Headless Shopify storefronts do work: Gymshark, Fashion Nova, Ruggable and Bombas are read from their Shopify Online Store. The run summary names every store that failed and why, so a store never silently returns nothing.

Public storefront data only: no login, no customer data. Not affiliated with Shopify or WooCommerce.