JSON-LD Product Price & Stock Monitor avatar

JSON-LD Product Price & Stock Monitor

Pricing

Pay per usage

Go to Apify Store
JSON-LD Product Price & Stock Monitor

JSON-LD Product Price & Stock Monitor

Check public product pages for price and stock changes using schema.org JSON-LD. You bring the URLs. No marketplace search, no login bypass.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Sarvin Behyad

Sarvin Behyad

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Check public product pages for price and stock changes by reading the schema.org Product JSON-LD already on the page.

This is not a marketplace searcher and not an Amazon/Walmart scraper. You supply the product URLs. The Actor reads public structured data only. It does not log in, does not bypass bot checks, and does not open hidden inventory APIs.

Who pays for this

  • Brands watching their own and competitor public product pages
  • Agencies running weekly price/stock checks on a known URL list
  • Agents that need a small, typed offer record (price, currency, availability, changeType)

Repeat usage is the point: schedule the same URL list. The first successful check stores a snapshot. Later runs emit price_up, price_down, back_in_stock, out_of_stock, or unchanged.

Input

Minimum: one or more public product-page URLs.

{
"startUrls": [
{ "url": "https://www.glossier.com/products/boy-brow" }
]
}

Agents can also send productUrls as a plain string list.

FieldDefaultMeaning
detectChangestrueCompare against the last snapshot
snapshotStoreNamejsonld-product-snapshotsNamed store for scheduled runs
respectRobotsTxttrueSkip paths the site disallows
maxConcurrency3Keep this low

Output

One dataset row per extracted Product offer.

{
"url": "https://www.glossier.com/products/boy-brow",
"status": "ok",
"name": "Boy Brow",
"price": 22,
"currency": "USD",
"availability": "InStock",
"changeType": "price_down",
"previousPrice": 24,
"error": null
}

status values:

  • ok — Product JSON-LD with a usable price or availability
  • incomplete_offer — Product JSON-LD without price and availability
  • no_product_schema — page has no Product JSON-LD (common on category/configurator pages)
  • http_error — non-2xx or network failure
  • robots_blocked — path disallowed by robots.txt
  • parse_error — HTML fetched but JSON-LD could not be parsed

changeType values: new, unchanged, price_up, price_down, back_in_stock, out_of_stock, offer_changed.

What this is not

  • Not an Amazon, Walmart, eBay, or Google Shopping crawler
  • Not a search scraper. You must already know the product URL
  • Not a login or cart tool
  • Not a CSS/Playwright fallback. If the shop hides offer data from JSON-LD, the row is no_product_schema or incomplete_offer

That honesty is the product. Competing “any store” Actors often claim Amazon coverage they cannot keep reliable.

Pricing

Pay per event:

EventWhat it billsSuggested price
page_checkedEvery URL fetched or blocked after work$0.001
product_recordEvery structured product row written$0.002
change_detectedEvery row that is not unchanged$0.003
apify-actor-startPlatform start (keep default)$0.00005

A 100-URL daily monitor with no changes costs about $0.30 in events (100 × $0.001 + 100 × $0.002). A day with 10 real changes adds about $0.03.

Competitor dump parsers charge $2–$5 per 1,000 rows and do not emit change events. This Actor is cheaper on a check and charges extra only when something moved.

Platform cost for Cheerio HTTP is typically well under $0.0005 per URL. Event prices above that leave a positive margin after Apify’s 20% store cut.

Schedule

  1. Save your URL list as the Actor input
  2. Keep snapshotStoreName the same
  3. Run daily or hourly from Apify Schedules
  4. Filter the dataset on changeType != unchanged

Limits

  • Public HTML only
  • JSON-LD Product / Offer / AggregateOffer only
  • Some shops put Product schema on category or builder pages without a real offer
  • Sites that block anonymous HTML fetch will return http_error
  • robots.txt is respected when enabled

Agent / MCP

Required input is only URLs. Output is a flat typed row. No browser, no cookies, no extra steps.