Ecommerce Scraper — Shopify, WooCommerce & Any Store avatar

Ecommerce Scraper — Shopify, WooCommerce & Any Store

Pricing

from $3.00 / 1,000 product scrapeds

Go to Apify Store
Ecommerce Scraper — Shopify, WooCommerce & Any Store

Ecommerce Scraper — Shopify, WooCommerce & Any Store

MCP-ready ecommerce scraper. Extract products, prices, discounts, variants, stock & images from any Shopify, WooCommerce, or generic store $3.00/1K.

Pricing

from $3.00 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

73

Total users

15

Monthly active users

4 days ago

Last modified

Share

Ecommerce Scraper — Shopify, WooCommerce, Generic (MCP)

This Apify Actor is for ecommerce pages and store homepages that you want to turn into structured product records. It accepts one or more full ecommerce URLs in startUrls, then returns one dataset record per scraped product. Each record can include the product URL, title, description, price, original price, discount percentage, stock status, SKU, brand, category, tags, images, rating, review count, variants, platform, source URL, and scrape timestamp. The outcome is a product dataset that is ready for analysis, review, enrichment, or downstream automation.

Best fit and connected workflows

This Actor fits workflows where the source is a public Shopify, WooCommerce, or generic ecommerce store and the goal is product-level extraction.

Common routing patterns include:

  • Store homepage to catalog crawl when you want a broader product set from one starting URL.
  • Single product page extraction when you want a focused record for one item.
  • Catalog monitoring when you need repeated product snapshots for prices, stock, and discounts.
  • AI-agent workflows through Apify MCP when a model needs structured ecommerce data from a public store.

Practical scenario

A merchandiser opens a product page on a Shopify store and wants a compact record for tracking. They provide the page URL in startUrls, set maxProducts to 1, and keep variants enabled. The returned record includes the product title, current price, original price if present, discount percentage, availability, SKU, images, and platform. With that data, they can decide whether to review the item for pricing updates, assortment changes, or competitive comparison, then move the result into a spreadsheet or another automation step.

Input fields

FieldTypePurpose
startUrlsarrayOne or more full ecommerce URLs to scrape. Accepts store homepages and product page URLs.
maxProductsintegerUpper limit on the number of products returned in the run. Default: 50.
includeVariantsbooleanIncludes a variants array with size, color, or style entries, each with its own price, SKU, and availability.
includeDescriptionbooleanIncludes the full plain-text product description when enabled.
proxyConfigurationobjectApify proxy settings. Residential proxy is prefilled by default.

Focused JSON input example

{
"startUrls": [
{
"url": "https://allbirds.com"
},
{
"url": "https://allbirds.com/products/mens-wool-runners"
}
],
"maxProducts": 10,
"includeVariants": true,
"includeDescription": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}

Output fields

FieldTypeMeaning
urlstringDirect product URL.
titlestring or nullProduct name as shown on the page.
descriptionstring or nullPlain-text description.
pricenumber or nullCurrent selling price.
original_pricenumber or nullPre-discount price.
currencystring or nullISO currency code.
discount_percentagenumber or nullDiscount calculated from original and current price.
in_stockboolean or nullAvailability for the product or at least one variant.
skustring or nullProduct SKU.
brandstring or nullBrand or vendor name.
categorystring or nullProduct category or type.
tagsarrayStore-assigned product tags or labels.
imagesarrayProduct image URLs, up to 10.
ratingnumber or nullAverage rating, if publicly shown.
review_countinteger or nullTotal review count, if publicly shown.
variantsarrayVariant records with title, price, original price, SKU, and availability.
platformstringDetected platform: shopify, woocommerce, or generic.
source_urlstringStore or page URL used for scraping.
scraped_atstringISO 8601 extraction timestamp.

Illustrative output record

{
"url": "https://allbirds.com/products/mens-wool-runners",
"title": "Men's Wool Runners",
"description": "The shoe that started it all. Made with ZQ-certified merino wool.",
"price": 110,
"original_price": 140,
"currency": "USD",
"discount_percentage": 21,
"in_stock": true,
"sku": "WR-M-NVY-9",
"brand": "Allbirds",
"category": "Shoes",
"tags": ["wool", "sustainable", "running"],
"images": ["https://cdn.allbirds.com/image/fetch/q_auto.../wr.jpg"],
"rating": 4.7,
"review_count": 3241,
"variants": [
{
"title": "Size 9 / Navy",
"price": 110,
"original_price": null,
"sku": "WR-M-NVY-9",
"available": true
}
],
"platform": "shopify",
"source_url": "https://allbirds.com",
"scraped_at": "2026-04-13T12:00:00.000Z"
}

How it works

This Actor auto-detects the ecommerce platform from the provided URLs and extracts public product data using platform-specific and generic paths.

Implementation facts from the live contract:

  • Shopify, WooCommerce, and generic stores are supported.
  • The actor uses a Cheerio-based Crawlee template.
  • Residential proxies are enabled by default in the input prefill.
  • The output dataset is structured around product-level records.
  • The run also writes machine-readable terminal records for OUTPUT and RUN_SUMMARY.

Pricing

This Actor uses pay per event pricing plus Apify platform usage.

Billing events in the live contract:

  • apify-actor-start: charged when the Actor starts.
  • product-scraped: charged for each product record successfully extracted.

The input schema shows maxProducts as an upper limit, and the charged event price for each scraped product is listed in the live contract. For current pricing details, open the live Pricing tab on the Actor page in Apify Console. Apify platform usage such as compute and proxy usage is billed separately.

Example in words: if a run returns fifty products, the execution includes one start event plus fifty product-scraped events, and Apify platform usage is added on top according to the live Pricing tab.

Use with AI agents (MCP)

This Actor is an Apify Actor usable through Apify MCP. It is designed to serve structured ecommerce extraction to agentic tools that need product URLs, prices, stock, images, and other catalog fields in a predictable schema.

Exact Actor identity: khadinakbar/ecommerce-store-scraper

Use it when an agent needs product-level data from a public ecommerce site and benefits from stable JSON output plus dataset provenance.

Scrape this Shopify store homepage and return the products that are in stock, with titles, current prices, discounts, and variant availability. Then summarize the results using the dataset output.

How to interpret the output:

  • Each dataset item represents one scraped product record.
  • platform shows the detected store type.
  • source_url shows the page or store URL that was used as input.
  • scraped_at marks when the record was extracted.
  • variants contains per-variant pricing and availability when enabled.

Provenance and scope:

  • Output is derived from the provided public ecommerce URLs.
  • The schema includes the product fields listed above and the run summary records in key-value storage.
  • maxProducts controls the upper bound on returned products.
  • When you provide a store homepage, the actor can crawl the catalog from that starting point.
  • When you provide a product URL, the actor returns targeted product-level extraction.

Cost guidance:

  • Product-level records are billed as individual product-scraped events.
  • Larger catalogs increase event counts proportionally to returned products.
  • Review the live Pricing tab before running large crawls.

Apify API example

import { ApifyClient } from "apify-client";
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const input = {
startUrls: [{ url: "https://allbirds.com" }],
maxProducts: 5,
includeVariants: true,
includeDescription: true,
};
const run = await client.actor("khadinakbar/ecommerce-store-scraper").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Best results and outcome guidance

Use full ecommerce URLs in startUrls. Store homepages are useful for broader catalog collection, while individual product URLs are useful for a focused single-record run. Keep maxProducts aligned with the scope you need. Leave includeVariants on when variant-level price and availability matter. Turn includeDescription off when you want smaller records centered on pricing and stock. The default residential proxy configuration is available for public store access patterns that benefit from it.

Design note

I found that the output contract requires url, platform, source_url, and scraped_at in every record, which makes each product item easy to trace back to its source and extraction time.

FAQ

When should I use a store homepage versus a product page URL?
Use a store homepage when you want the actor to discover more of the catalog from a single starting point. Use a product page URL when you want a specific product record.

How does the actor route between Shopify, WooCommerce, and generic stores?
It auto-detects the platform from the provided ecommerce URL and returns the detected value in the platform field.

What if I only need price and stock fields?
Set includeDescription to false to keep the payload focused on pricing and availability while still collecting the product record.

How do variants appear in the output?
When includeVariants is enabled, each record can include a variants array with titles, prices, original prices, SKUs, and availability values.

How can I read the run result after the actor finishes?
Use the default dataset for the product records, and inspect the OUTPUT or RUN_SUMMARY records in the default key-value store for terminal run details.

Focused standalone workflow

This Actor is designed as a focused standalone workflow.

Responsible use

Use this Actor only on public ecommerce pages that you are authorized to access and process. Follow applicable website terms, platform policies, and data protection requirements when collecting, storing, or sharing product data.