Squarespace Commerce Product Price & Stock Monitor avatar

Squarespace Commerce Product Price & Stock Monitor

Pricing

from $3.00 / 1,000 price and stock rows

Go to Apify Store
Squarespace Commerce Product Price & Stock Monitor

Squarespace Commerce Product Price & Stock Monitor

Extract per-product and per-variant prices, sale prices, SKUs, and exact stock from Squarespace storefronts.

Pricing

from $3.00 / 1,000 price and stock rows

Rating

0.0

(0)

Developer

Andy Besos

Andy Besos

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Turn public Squarespace Commerce catalogs into flat, analysis-ready product and variant rows. Squarespace Commerce Product Price & Stock Monitor reads each storefront's /shop?format=json collection and returns regular prices, active sale prices, SKUs, option values, exact tracked quantities, unlimited-inventory flags, and native update times.

You do not need a Squarespace account, Commerce API key, login cookie, browser, or proxy. The Actor uses direct HTTPS requests and only reads fields the storefront publishes in its page JSON.

Why use this Squarespace Commerce scraper?

  • One row per product and variant: join, filter, and compare SKUs without unpacking a nested variant array. recordType identifies each row and recordId stays stable across runs.
  • Stock without guesswork: variant rows keep Squarespace's native qtyInStock and unlimited values as separate fields. inStock is derived from both signals rather than from page text.
  • Price fields built for comparison: price, salePrice, and effectivePrice are numbers, while currency is a separate code. Product rows summarize the minimum variant price; variant rows retain the exact variant price.
  • Incremental and scheduled workflows: filter by Squarespace's product-level updatedOn timestamp with since, or use the persistent Actor monitor to detect new, updated, and removed product or variant rows.
  • Direct, lightweight extraction: no DOM selectors, browser startup, authentication, or proxy fees. Pagination is followed until the complete public collection has been captured.
  • Ready for downstream tools: export the default Dataset as JSON, CSV, Excel, XML, or RSS, or connect it to the Apify API, schedules, webhooks, Make, Zapier, and client libraries.

Temporary 429 and server errors are retried with backoff. Each storefront is isolated, so one unavailable domain is logged without discarding successful results from the others. The run fails only if every requested storefront fails.

Pricing

This Actor uses pay-per-event pricing: $0.001 per run plus $0.003 per product or variant row.

Dataset rowsActor event price
1$0.004
100$0.301
1,000$3.001
10,000$30.001

A product with no variants produces one charged row. A product with five variants produces six charged rows: one product row and five variant rows. The SUMMARY record is stored separately in the key-value store and is not a Dataset row. Prices above cover the Actor's chargeable run and row events; standard Apify charges for retaining or downloading data after a run may apply.

How to use this Actor

Add Squarespace storefront hostnames or URLs. These input forms are accepted and normalized to the hostname:

  • bgdbshop.squarespace.com
  • https://mnbookarts.squarespace.com/shop
  • https://mnbookarts.org/shop?category=Books

The Actor always reads the normalized host's /shop?format=json collection. Paths, fragments, and query parameters in the submitted URL are not used as collection filters.

Quick, low-cost check

{
"storefronts": ["bgdbshop.squarespace.com"],
"maxProductsPerStore": 1
}

The prefilled input uses this shape so the first run stays fast and returns at least one product row. The product limit counts products, not Dataset rows; all variants belonging to a selected product are included.

Compare several storefronts

{
"storefronts": [
"mnbookarts.squarespace.com",
"bgdbshop.squarespace.com"
],
"maxProductsPerStore": 200,
"requestDelayMillis": 500
}

Set maxProductsPerStore to 0 to export every product and variant row from every storefront. The Actor still reads complete pagination before applying an output limit, which keeps monitoring snapshots accurate.

Export products updated after a cutoff

{
"storefronts": ["bgdbshop.squarespace.com"],
"since": "2026-08-01T00:00:00.000Z",
"maxProductsPerStore": 0
}

since compares the cutoff with Squarespace's native product-level updatedOn. When a product passes the cutoff, its product row and every variant row are exported. Epoch milliseconds such as 1785542400000 are also accepted.

Monitor new, updated, and removed rows

Every successful run stores a complete snapshot in a named key-value store. Run the Actor on a schedule with the same monitorId and storefronts to create a persistent product and variant change feed.

{
"storefronts": ["bgdbshop.squarespace.com"],
"monitorId": "weekly-map-watch",
"onlyChangesSince": "2026-08-01T00:00:00.000Z",
"maxProductsPerStore": 0
}

The first run creates the baseline and labels every row new. Later runs compare price, stock, SKU, attributes, update time, and the other stable output fields:

changeTypeMeaning
newThe product or variant was absent from the previous successful snapshot.
updatedAt least one monitored field changed; changedFields names each field.
unchangedThe row is still present and its monitored values match.
removedA previously present product or variant disappeared from the complete public collection.

since and onlyChangesSince answer different questions. Use since for the native Squarespace product update timestamp. Use onlyChangesSince for Actor-detected differences between complete snapshots, including removed variants. A removal is emitted once, on the run that first detects it.

API example

curl -X POST \
"https://api.apify.com/v2/acts/Clintsa~squarespace-commerce-product-price-stock-monitor/run-sync-get-dataset-items" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"storefronts": ["bgdbshop.squarespace.com"],
"maxProductsPerStore": 10
}'

For a large catalog, start the run asynchronously and read the default Dataset after it succeeds.

Input options

FieldTypeWhat it controls
storefrontsstring arrayRequired Squarespace hostnames or URLs.
maxProductsPerStoreintegerProducts exported per storefront, from 0 to 5,000; 0 means the full catalog. Variant rows belonging to selected products are included.
sinceISO timestamp or epoch millisecondsKeeps products whose native updatedOn is newer than the cutoff.
monitorIdstringPersistent namespace for independent schedules and watchlists.
onlyChangesSinceISO timestampKeeps Actor-detected new, updated, or removed rows first detected since this time.
requestDelayMillisintegerOptional delay of 0–60,000 milliseconds between storefronts.

Output

Each Dataset item is a product or variant row. This abbreviated variant example shows the fields most useful for price and stock monitoring:

{
"recordType": "variant",
"recordId": "variant:69189721dae239382cdc5896:7678f250-6f8d-4912-894f-d792b6ac8875",
"storefront": "bgdbshop.squarespace.com",
"sourceUrl": "https://bgdbshop.squarespace.com/shop?format=json",
"productId": "69189721dae239382cdc5896",
"variantId": "7678f250-6f8d-4912-894f-d792b6ac8875",
"productUrl": "https://bgdbshop.squarespace.com/shop/p/spokessasstee",
"productTitle": "2026 SPOKES AND SASS NATIONAL MEETUP TEE",
"productType": "physical",
"updatedOn": 1788110504661,
"currency": "USD",
"price": 29,
"salePrice": 10,
"effectivePrice": 10,
"onSale": true,
"sku": "SQ6105862",
"attributes": { "Size": "XSmall" },
"qtyInStock": 0,
"unlimited": false,
"inStock": false,
"variantCount": 7,
"changeType": "new",
"changedFields": []
}

Product rows use the same shape with variantId, sku, and attributes set to null. Their price is the minimum variant price, and their stock quantity is the sum of tracked variants. If at least one variant is unlimited, unlimited is true and inStock is true. After every run, the SUMMARY key-value record reports requested, successful, and failed storefronts, fetched products, exported rows, change totals, filters, and completion time.

Use cases

  • Monitor your own Squarespace storefront prices and customer-visible inventory from outside the admin.
  • Check MAP policy across authorized Squarespace retailers by joining variant SKUs and effectivePrice.
  • Compare the same SKU across several storefronts without platform-specific HTML selectors.
  • Feed product, sale-price, and stock rows into a warehouse, dashboard, spreadsheet, or alert workflow.
  • Build a scheduled availability feed for dropshipping or catalog aggregation.
  • Detect when a merchant adds, changes, or removes a product variant.

FAQ

Do I need a Squarespace Commerce API key?

No. The Actor reads the public page JSON used by the storefront. It does not call private Commerce APIs or enter the Squarespace admin.

Does this Squarespace stock monitor use a browser or proxy?

No. It uses direct HTTPS JSON requests. There is no browser-rendering or proxy option in the input.

Does qtyInStock show exact variant inventory?

It returns the exact value publicly supplied by Squarespace. unlimited: true is kept separately because an unlimited variant does not have a meaningful finite quantity. A null value means the storefront did not publish that stock signal.

Can I monitor a Squarespace store on a custom domain?

Yes, if its public store collection is available at /shop?format=json. Submit the custom hostname or a full URL; the Actor normalizes it automatically.

Can I scrape several Squarespace storefronts in one run?

Yes. Add multiple entries to storefronts. Every row includes storefront, productId, and recordId, so results remain attributable and safe to join.

Why are there more rows than the product limit?

The limit counts products. Each selected product creates one product row and one additional row per public variant. This flat model is what makes SKU-level comparisons and stock alerts straightforward.

How fresh is updatedOn?

It is the native timestamp Squarespace publishes for the product record. The Actor reports it without inventing a refresh guarantee. For independent verification of any field change, use recurring runs with the same monitorId.

Limitations and responsible use

  • The storefront must expose its commerce collection at /shop?format=json; password-protected stores and private admin inventory are not accessed.
  • The JSON formatter is public and documented for Squarespace template data, but Squarespace describes it as dynamic rather than a stable Commerce API. The response shape can change.
  • updatedOn is product-level. Variant rows inherit their parent product's timestamp because the public payload does not provide a separate variant update time.
  • Product-row stock is an aggregate convenience field. Use variant rows when exact SKU-level quantities matter.
  • Public reachability does not itself grant permission. Squarespace-generated robots.txt files commonly disallow ?format=json, and individual storefront terms may add restrictions. Use the Actor only for storefronts you own or are authorized to monitor, and comply with applicable law, robots instructions, and site terms.

Support

Report a problem or request a field through the Issues tab on this Actor's page. Include the run ID, the affected storefront, and the input used; remove any secrets before posting.