{
  "data": {
    "id": "Us2dCgQWZ0A8L9prQ",
    "userId": "yNMa4TT6B9tHE2TiP",
    "name": "shopify",
    "username": "autofacts",
    "description": "A Shopify product scraper for any public Shopify store: every variant's price, SKU and stock status, with barcodes, real inventory counts, videos and subscription plans where available. Crawl a whole catalog, a collection, one product URL or a keyword search. No API key needed. Pay per result.",
    "isPublic": true,
    "createdAt": "2021-12-21T14:28:18.199Z",
    "modifiedAt": "2026-11-03T08:28:51.449Z",
    "taggedBuilds": {
      "latest": {
        "buildId": "0H89ZPpk4d1aecakY",
        "finishedAt": "2026-11-03T08:28:51.449Z",
        "buildNumberInt": 10200145,
        "buildNumber": "1.2.145"
      },
      "beta": {
        "buildId": "ALlt4w2OlZRiHztEh",
        "finishedAt": "2026-06-05T13:54:09.140Z",
        "buildNumberInt": 10200001,
        "buildNumber": "1.2.1"
      },
      "v1-1": {
        "buildId": "IuosxnWdoaVxCrCuU",
        "finishedAt": "2026-08-26T01:09:40.238Z",
        "buildNumberInt": 10100057,
        "buildNumber": "1.1.57"
      }
    },
    "stats": {
      "totalBuilds": 218,
      "totalRuns": 399105,
      "totalUsers": 2500,
      "totalUsers7Days": 57,
      "totalUsers30Days": 135,
      "totalUsers90Days": 210,
      "lastRunStartedAt": "2026-11-13T10:59:45.925Z",
      "totalMetamorphs": 3,
      "publicActorRunStats30Days": {
        "ABORTED": 57,
        "FAILED": 293,
        "SUCCEEDED": 2771,
        "TIMED-OUT": 52,
        "TOTAL": 3173
      },
      "actorReviewCount": 7,
      "actorReviewRating": 4.190550058916935,
      "bookmarkCount": 72
    },
    "versions": [
      {
        "versionNumber": "1.2",
        "sourceType": "GIT_REPO",
        "buildTag": "latest"
      }
    ],
    "defaultRunOptions": {
      "build": "latest",
      "timeoutSecs": 0,
      "memoryMbytes": 256,
      "maxItems": null,
      "maxTotalChargeUsd": null
    },
    "exampleRunInput": {
      "body": "{\n  \"startUrls\": [\n    { \"url\": \"https://kith.com/collections/kith-tops\" }\n  ]\n}",
      "contentType": "application/json; charset=utf-8"
    },
    "categories": [
      "DEVELOPER_TOOLS",
      "ECOMMERCE",
      "MCP_SERVERS"
    ],
    "isDeprecated": false,
    "title": "Shopify Scraper - Products, Prices, Stock & Inventory",
    "pictureUrl": "https://apify-image-uploads-prod.s3.amazonaws.com/Us2dCgQWZ0A8L9prQ/JwzsnA2fFeaMfi7LR-shopify.png",
    "seoTitle": "Shopify Scraper API: Products, Prices & Inventory Data",
    "seoDescription": "Scrape any public Shopify store: products, variants, prices, SKUs, images and stock, plus barcodes and real inventory counts where available. No API key.",
    "pricingInfos": [
      {
        "pricingModel": "FLAT_PRICE_PER_MONTH",
        "pricePerUnitUsd": 5,
        "trialMinutes": 10080,
        "createdAt": "2021-12-21T14:41:25.432Z",
        "startedAt": "2021-12-21T14:41:25.432Z",
        "apifyMarginPercentage": 0
      },
      {
        "pricingModel": "FLAT_PRICE_PER_MONTH",
        "pricePerUnitUsd": 5,
        "trialMinutes": 1440,
        "startedAt": "2025-04-09T00:00:00.000Z",
        "createdAt": "2025-03-26T15:01:54.209Z",
        "apifyMarginPercentage": 0.2
      },
      {
        "pricingModel": "FLAT_PRICE_PER_MONTH",
        "pricePerUnitUsd": 5,
        "trialMinutes": 120,
        "startedAt": "2025-05-14T00:00:00.000Z",
        "createdAt": "2025-04-30T12:40:03.018Z",
        "apifyMarginPercentage": 0.2
      },
      {
        "minimalMaxTotalChargeUsd": 0,
        "pricingModel": "PAY_PER_EVENT",
        "isPriceChangeNotificationSuppressed": false,
        "reasonForChange": "Apify is retiring monthly rental pricing. Break-even: ~2,200 products/month; below that you pay less than today. Recommendations and real inventory are off by default. Integrations unchanged.",
        "pricingPerEvent": {
          "actorChargeEvents": {
            "apify-actor-start": {
              "eventTitle": "Actor Start",
              "eventDescription": "Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).",
              "isOneTimeEvent": true,
              "eventPriceUsd": 0.00005
            },
            "product": {
              "eventTitle": "Product",
              "eventDescription": "Charged once per product saved to the dataset — including all variants, prices, stock status, images, options and tags. Duplicates within a run are not charged.",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.0025
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.0023
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.0021
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.002
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.002
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.002
                }
              },
              "isPrimaryEvent": true
            },
            "collection": {
              "eventTitle": "Collection",
              "eventDescription": "Charged once per collection saved to the dataset. Only produced by collection-listing crawls (a /collections URL). product and category crawls never emit these.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.0008
            },
            "recommends": {
              "eventTitle": "Recommended Product",
              "eventDescription": "Charged once per recommended product returned inside a product record. Only applies when \"Max recommended products\" is above 0 — it is 0 by default.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.001
            },
            "real-inventory": {
              "eventTitle": "Real inventory",
              "eventDescription": "Charged once per product returned with a real stock count. Only applies when \"Grab real inventory\" is enabled and the store exposes inventory — stores that don't are never charged for it.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.0012
            }
          }
        },
        "startedAt": "2026-09-09T03:25:12.648Z",
        "createdAt": "2026-08-26T03:25:13.842Z",
        "apifyMarginPercentage": 0.2,
        "notifiedAboutFutureChangeAt": "2026-08-26T03:25:36.453Z",
        "notifiedAboutChangeAt": "2026-09-09T03:35:38.996Z"
      },
      {
        "minimalMaxTotalChargeUsd": 0,
        "pricingModel": "PAY_PER_EVENT",
        "isPriceChangeNotificationSuppressed": false,
        "pricingPerEvent": {
          "actorChargeEvents": {
            "product": {
              "eventTitle": "Product",
              "eventDescription": "Charged once per product saved to the dataset — including all variants, prices, stock status, images, options and tags. Duplicates within a run are not charged.",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.0018
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.0016
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.0014
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.0012
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.0012
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0012
                }
              },
              "isPrimaryEvent": true
            },
            "collection": {
              "eventTitle": "Collection",
              "eventDescription": "Charged once per collection saved to the dataset. Only produced by collection-listing crawls (a /collections URL). product and category crawls never emit these.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.0008
            },
            "recommends": {
              "eventTitle": "Recommended Product",
              "eventDescription": "Charged once per recommended product returned inside a product record. Only applies when \"Max recommended products\" is above 0 — it is 0 by default.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.001
            },
            "real-inventory": {
              "eventTitle": "Real inventory",
              "eventDescription": "Charged once per product returned with a real stock count. Only applies when \"Grab real inventory\" is enabled and the store exposes inventory — stores that don't are never charged for it.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.0012
            },
            "apify-actor-start": {
              "eventTitle": "Actor Start",
              "eventDescription": "Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).",
              "isOneTimeEvent": true,
              "eventPriceUsd": 0.00005
            }
          }
        },
        "startedAt": "2026-09-14T06:38:26.528Z",
        "createdAt": "2026-09-14T06:38:27.452Z",
        "apifyMarginPercentage": 0.2,
        "notifiedAboutChangeAt": "2026-09-14T07:06:00.947Z"
      },
      {
        "minimalMaxTotalChargeUsd": 0,
        "pricingModel": "PAY_PER_EVENT",
        "isPriceChangeNotificationSuppressed": false,
        "pricingPerEvent": {
          "actorChargeEvents": {
            "product": {
              "eventTitle": "Product",
              "eventDescription": "Charged once per product saved to the dataset — including all variants, prices, stock status, images, options and tags. Duplicates within a run are not charged.",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.0012
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.001
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.0009
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.0008
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.0008
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0008
                }
              },
              "isPrimaryEvent": true
            },
            "collection": {
              "eventTitle": "Collection",
              "eventDescription": "Charged once per collection saved to the dataset. Only produced by collection-listing crawls (a /collections URL). product and category crawls never emit these.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.0008
            },
            "recommends": {
              "eventTitle": "Recommended Product",
              "eventDescription": "Charged once per recommended product returned inside a product record. Only applies when \"Max recommended products\" is above 0 — it is 0 by default.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.001
            },
            "real-inventory": {
              "eventTitle": "Real inventory",
              "eventDescription": "Charged once per product returned with a real stock count. Only applies when \"Grab real inventory\" is enabled and the store exposes inventory — stores that don't are never charged for it.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.001
            },
            "apify-actor-start": {
              "eventTitle": "Actor Start",
              "eventDescription": "Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).",
              "isOneTimeEvent": true,
              "eventPriceUsd": 0.00005
            }
          }
        },
        "startedAt": "2026-09-30T08:57:50.772Z",
        "createdAt": "2026-09-30T08:57:51.486Z",
        "apifyMarginPercentage": 0.2,
        "notifiedAboutChangeAt": "2026-09-30T09:05:57.851Z"
      },
      {
        "minimalMaxTotalChargeUsd": 0,
        "pricingModel": "PAY_PER_EVENT",
        "isPriceChangeNotificationSuppressed": false,
        "pricingPerEvent": {
          "actorChargeEvents": {
            "product": {
              "eventTitle": "Product",
              "eventDescription": "Charged once per product saved to the dataset — including all variants, prices, stock status, images, options and tags. Duplicates within a run are not charged.",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.0012
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.001
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.0009
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.0008
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.0008
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0008
                }
              },
              "isPrimaryEvent": true
            },
            "collection": {
              "eventTitle": "Collection",
              "eventDescription": "Charged once per collection saved to the dataset. Only produced by collection-listing crawls (a /collections URL). product and category crawls never emit these.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.0008
            },
            "recommends": {
              "eventTitle": "Recommended Product",
              "eventDescription": "Charged once per recommended product returned inside a product record. Only applies when \"Max recommended products\" is above 0 — it is 0 by default.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.001
            },
            "real-inventory": {
              "eventTitle": "Real inventory",
              "eventDescription": "Charged once per product returned with a real stock count. Only applies when \"Grab real inventory\" is enabled and the store exposes inventory — stores that don't are never charged for it.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.001
            },
            "apify-actor-start": {
              "eventTitle": "Actor Start",
              "eventDescription": "Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).",
              "isOneTimeEvent": true,
              "eventPriceUsd": 0.00005
            },
            "content-sections": {
              "eventTitle": "Product information panels",
              "eventDescription": "Charged once per product returned with its information panels — the tabs and accordions such as Features, Materials or Care that a store shows outside the description. Only applies when \"Grab product information panels\" is enabled and the product actually has panels — products and stores without them are never charged for it.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.001
            }
          }
        },
        "startedAt": "2026-10-20T03:00:44.915Z",
        "createdAt": "2026-10-06T03:00:45.689Z",
        "apifyMarginPercentage": 0.2,
        "notifiedAboutFutureChangeAt": "2026-10-06T03:01:08.882Z",
        "notifiedAboutChangeAt": "2026-10-20T03:30:19.750Z"
      },
      {
        "minimalMaxTotalChargeUsd": 0,
        "pricingModel": "PAY_PER_EVENT",
        "isPriceChangeNotificationSuppressed": false,
        "pricingPerEvent": {
          "actorChargeEvents": {
            "product": {
              "eventTitle": "Product",
              "eventDescription": "Charged once per product saved to the dataset — including all variants, prices, stock status, images, options and tags. Duplicates within a run are not charged.",
              "isOneTimeEvent": false,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.001
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.0009
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.0008
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.0007
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.0007
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0007
                }
              },
              "isPrimaryEvent": true
            },
            "collection": {
              "eventTitle": "Collection",
              "eventDescription": "Charged once per collection saved to the dataset. Only produced by collection-listing crawls (a /collections URL). product and category crawls never emit these.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.0004
            },
            "recommends": {
              "eventTitle": "Recommended Product",
              "eventDescription": "Charged once per recommended product returned inside a product record. Only applies when \"Max recommended products\" is above 0 — it is 0 by default.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.001
            },
            "real-inventory": {
              "eventTitle": "Real inventory",
              "eventDescription": "Charged once per product returned with a real stock count. Only applies when \"Grab real inventory\" is enabled and the store exposes inventory — stores that don't are never charged for it.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.001
            },
            "content-sections": {
              "eventTitle": "Product information panels",
              "eventDescription": "Charged once per product returned with its information panels — the tabs and accordions such as Features, Materials or Care that a store shows outside the description. Only applies when \"Grab product information panels\" is enabled and the product actually has panels — products and stores without them are never charged for it.",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.001
            },
            "apify-actor-start": {
              "eventTitle": "Actor Start",
              "eventDescription": "Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).",
              "isOneTimeEvent": true,
              "eventPriceUsd": 0.00005
            }
          }
        },
        "startedAt": "2026-10-20T07:43:58.717Z",
        "createdAt": "2026-10-20T07:43:59.437Z",
        "apifyMarginPercentage": 0.2,
        "notifiedAboutChangeAt": "2026-10-20T08:00:27.579Z"
      }
    ],
    "notice": "NONE",
    "isCritical": false,
    "isSourceCodeHidden": true,
    "actorStandby": {
      "isEnabled": false,
      "disableStandbyFieldsOverride": false,
      "tenancy": "MULTI_TENANT",
      "maxRequestsPerActorRun": 4,
      "desiredRequestsPerActorRun": 3,
      "idleTimeoutSecs": 300,
      "build": "latest",
      "memoryMbytes": 1024,
      "shouldPassActorInput": true,
      "isConsoleAuthEnabled": false,
      "isTokenlessEnabled": false
    },
    "standbyUrl": null,
    "actorPermissionLevel": "LIMITED_PERMISSIONS",
    "readmeSummary": "## Shopify Scraper\n\nShopify Scraper is a web crawler and data-extraction Actor that enumerates Shopify storefronts (full stores, collections, individual product pages, or keyword searches across listed stores) to produce structured product and collection records. It crawls entire catalogs page-by-page, follows renamed or redirected product pages, and enriches listing data by fetching product JSON and storefront payloads to extract per-variant pricing and price ranges, stock status and low-stock indicators, SKUs, merchant barcodes (UPC/EAN/GTIN), weights and weight units, tax and fulfillment metadata, ordering rules and B2B volume price tiers, subscription and pre-order plans, video media, image assets, labeled information panels (tabs/accordions), and product recommendations. When a store publishes inventory in its storefront payload, the Actor can retrieve real per-variant inventory counts and report prices in the currency actually charged (as integer minor units). The crawler uses proxy rotation and request retrying to handle bot checks and rate limiting, and records canonical source URLs with redirect provenance.\n\n## Use cases\n\n- Research a competitor’s full product range: catalog-wide prices, variants, stock, tags and categories.  \n- Monitor a single collection for launches and stock changes on a schedule.  \n- Build a combined product catalog across multiple brands/stores in one run.  \n- Inspect an individual product variant-by-variant to capture size-specific price, stock and barcode.  \n- Capture products recommended alongside a product (store cross-sells / recommendations).  \n- Read real per-variant stock counts from stores that publish inventory in their storefront payloads.  \n- Find products by keyword across the list of stores being crawled.  \n- Collect prices in an alternate currency or per-market using the store’s localization/market settings.",
    "deploymentKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7pNJw5mY0nPotC4Q3TwhD+Xi8fDNW9MT3dOrrPzJX+VUmhx4nR5nmkpi9Yr2g3RvQnS2Yimwmj5PjA/cW+txBDus21mey+tdtsAnLDliRoH3LxhkZ8hMbYepDAIr1hDTgqP9mnXZ8Q58s43R6apEs2v+pnPO9d2nxvLkEoaUQFNmJzm/dmNzTAaofSNMU9eufLrNIOhqqr1Uqz4HmqIUB+lKy4wMPmUebkutDhb4/fNibd5fU8v5dPJfV1YAicyDOYoF2sIsJuVZP6BxRrprHbC2yqeAoUZqERdsK8/J+rPGSeaDXLISBvdu6ypAlhgG4yDd2PM/kYMiYV5HHoP8f \n"
  }
}