Skip to main content
Rocketyard’s Shopify Products API & Scraper exports the whole public catalog of a Shopify store and returns one clean record per product: store, title, handle, product id, description, vendor and more. It runs on the Apify platform, so you can start it from the Apify Console, the REST API, an AI agent or a no-code tool.

Run it on Apify

$0.50 per 1,000 products, no subscription. You run it with your own Apify account, and Apify handles billing.

Who it’s for

  • E-commerce brands and agencies watching competitor catalogs and prices
  • Developers of price trackers, product feeds and comparison sites
  • Analysts building e-commerce market datasets
  • AI developers who need product data as a tool or in a pipeline

What you can do with it

  • Export a Shopify store’s whole catalog to a spreadsheet or database
  • Track prices, discounts and sold-out variants on many stores every day
  • Pull only the products that changed since the last run

How it works

Stores on Shopify’s standard storefront publish their catalog as JSON at /products.json and /collections/<handle>/products.json, with no login or API key. The Actor reads those pages over plain HTTP, 250 products per request and one request per second, until the catalog ends or your limit is reached. It honours each store’s robots.txt and crawl-delay, waits and retries a bounded number of times when a store asks it to slow down, and turns the JSON into typed records: prices as numbers, dates in ISO 8601, descriptions as clean text. The currency comes from the store’s own answer for those prices. A store that refuses, or that isn’t on Shopify, gets an error item that says why, and isn’t charged.

Example output

A real record from a test run on tentree.com on 2026-11-05. Fields the page didn’t publish are left out here; the Actor returns them as null.

Fields

A field is filled when the source publishes it. The Actor never guesses a value: a missing field comes back as null. “Filled in latest test” is the share of records from the latest test run (tentree.com) that had the field; other sources publish more or less.

Pricing

You pay $0.50 per 1,000 products, plus a start fee of $0.00005 per run. Products removed by your filters are not charged, and neither are inputs that fail. Each stored record is one result, so with Variant records each variant counts. Set maxItems or the run’s Maximum cost per run in Apify to cap spending.

API

Every Apify Actor is also a REST endpoint, so Shopify Products API & Scraper works as a Shopify products API, a Shopify product data API, a Shopify catalog API or a Shopify scraper API. Call it from any language with the Apify REST API, or with Apify’s JavaScript and Python clients. You need an Apify API token.

Shopify products API request

The synchronous endpoint returns the records directly. For long crawls, start the run asynchronously and read the dataset when it finishes.

MCP

Apify’s MCP server exposes this Actor as a tool to Claude, Cursor and other MCP clients. Open this Actor’s MCP setup page for setup steps per client, or connect it with this URL:
Claude Code:
Cursor (.cursor/mcp.json) and other clients that read an mcpServers config:
On first use your browser opens so you can sign in to Apify. Then ask the agent, for example: “Export a Shopify store’s whole catalog to a spreadsheet or database”. The tool returns JSON records, and the runs are billed to that Apify account at $0.50 per 1,000 products.

Automation

n8n, Make and Zapier all connect to Apify. Each example below uses Actor rocketyard/shopify-products-scraper with this input:

n8n

Copy this workflow and paste it onto an n8n canvas. It runs the Actor every morning through an HTTP Request node and returns the records as n8n items.
Then open the HTTP Request node and create an HTTP Bearer Auth credential named Apify API token, with your token from Apify Console as the bearer token. The token stays in n8n’s credential store; the workflow only names the credential. Change the input in the node’s JSON body to your own. The node waits up to 300 seconds, which is also the limit of Apify’s synchronous endpoint. An input that yields nothing comes back as an item with an error field, which you can drop with a Filter node. Apify also publishes a community node, @apify/n8n-nodes-apify, with a Run an Actor and get dataset operation.

Make

  1. Add Apify’s Run an Actor module and connect your Apify account.
  2. Choose rocketyard/shopify-products-scraper, paste the input above and set Run synchronously to Yes. Make limits how long a synchronous run can take, depending on your plan. For longer runs, start the scenario from Watch Actor Runs instead.
  3. Add Get Dataset Items with the run’s default dataset ID.
  4. Send the items wherever you need them, for example with Google Sheets Add a Row, mapping store, title, handle and productId.

Zapier

  1. Add Apify’s Run Actor action, connect your Apify account, choose rocketyard/shopify-products-scraper and paste the input above.
  2. Zapier stops synchronous runs after 30 seconds. For anything larger than a small run, let the run continue in the background and start a second Zap from the Finished Actor run trigger.
  3. Add Fetch dataset items with the run’s dataset ID, then map store, title, handle and productId into your app.
  4. Test with a small input and check that the Zap handles every record before you turn it on.

Limits

  • On 2026-11-05, 11 of 14 well-known stores served their catalog. Two run Shopify behind their own front end or don’t publish the feed, and one refused with a bot check.
  • No inventory quantities and no barcodes: /products.json doesn’t publish them. available is the store’s in-stock flag, not a count.
  • Shopify serves one listing up to an offset of 25,000 products (HTTP 400 after page 100). A larger store returns those 25,000 and a free HTTP_ERROR item that says so. Add its collection URLs to reach more; a product in several inputs is charged once.
  • Sites that run Shopify behind their own front end usually don’t serve the feed, and return a free NO_STRUCTURED_DATA item, like any site not on Shopify.
  • Some stores refuse automated reads or rate-limit them. Those return a free BLOCKED item. The Actor never logs in, solves a check or disguises itself, and a proxy will not change a refusal aimed at the feed itself.
  • A store selling in several markets answers for one of them, and prices, currency and available all follow it. Without Market country that is the market of where the run comes from, so set it to compare runs. On 2026-11-05, one store showed 0 of 26 variants available to a visitor in Kazakhstan, and 37 of 51 with US.
  • A product URL is found by reading its store or collection until the product turns up. The reading is free, but on a large catalog it takes a minute or two.

FAQ

How much does it cost?

$0.50 per 1,000 products plus $0.00005 per run, billed by Apify. 10,000 products cost $5.00. There is no subscription, and you can cap any run with Maximum cost per run. Your Apify plan sets your discount tier (Platinum and Diamond are enterprise tiers):

How do I call it from the API?

One request starts a run and returns its results, using your Apify API token:

What happens when a URL fails?

The dataset gets one free error item for it, with a code and the reason, and the other inputs in the run carry on. Error codes explains each code, whether a retry helps and what to do.

Which stores does it work on?

Stores on Shopify’s standard storefront, which is most Shopify stores. You can check any store by opening https://<store>/products.json in a browser: if you see JSON with a products list, the Actor can read it.

What happens when a field is missing?

The field comes back as null. The Actor reports what the source publishes and never fills in guesses.

Is it allowed to scrape this data?

The Actor reads only the catalog a store publishes for anyone at /products.json, honours robots.txt, sends no cookies, and doesn’t work around any refusal. The feed holds product data and no customer data. Some stores’ terms of service restrict automated access, so check the terms of the stores you read. You are responsible for how you use the data, including copyright in descriptions and photos.

Can I use it from an AI agent?

Yes. Connect Apify’s MCP server as shown in MCP, and the agent can call the Actor as a tool.

Alternatives

See how it compares with other shopify product scrapers on price, users and run success, from Apify Store data. Need a field or site behaviour that isn’t covered? Open an issue on the Actor page.