Squarespace Price & Stock Scraper and Monitor avatar

Squarespace Price & Stock Scraper and Monitor

Pricing

from $3.00 / 1,000 price and stock rows

Go to Apify Store
Squarespace Price & Stock Scraper and Monitor

Squarespace Price & Stock Scraper and Monitor

Track prices and public inventory from Squarespace Commerce storefronts. Export JSON or CSV and monitor changes. $3 per 1,000 rows plus $0.001 per run.

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

1

Total users

0

Monthly active users

a day ago

Last modified

Share

Squarespace Price & Stock Scraper and Monitor helps you track prices and public inventory from Squarespace Commerce storefronts. Export flat product and variant rows with prices, sale prices, SKUs, option values, tracked stock quantities and unlimited-inventory flags for recurring catalog checks.

Enter a Squarespace storefront hostname or custom domain. The Actor reads the public shop JSON without a merchant login or Commerce API key; missing quantities remain null. Actor event charges at the default 256 MB memory are $0.001 per run plus $0.003 per exported row: $3.001 for 1,000 rows.

Selected fields from a recent successful run; source values can change:

{
"recordType": "product",
"productTitle": "\"BIKE GIRL MAGIC\" Cycling Guide Ebook",
"price": 14.99,
"currency": "USD",
"qtyInStock": null,
"variantCount": 0
}

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 404, 429, and server errors are retried with backoff, up to three times per request. If /shop still returns 404, the Actor checks whether the same storefront has a public product collection at its homepage. 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 starts with the normalized host's /shop?format=json collection. If that path returns 404 after retries, it also checks /?format=json on the same host and accepts it only when Squarespace identifies it as a product collection. Paths, fragments, and query parameters in the submitted URL are not used as collection filters. sourceUrl reports the collection's canonical JSON URL.

Quick, low-cost check

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

Click Start, inspect the Dataset, then export JSON or CSV. The limit counts products, while billing counts exported product and variant rows. A product with five variants produces six charged rows. Exact quantities are available only where the storefront publishes tracked stock.

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

Use at most 31 characters in monitorId to keep independent schedules distinct. Longer values are shortened for the monitor snapshot.

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, or at the homepage when /shop returns 404. 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, or at /?format=json when /shop returns 404; password-protected stores and private admin inventory are not accessed. Other custom collection paths are not auto-discovered. A permanently unavailable storefront still fails with an error.
  • 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.

Related tools: Sitemap Scraper - XML URL Extractor & Monitor.