Product Feed Price & Stock Checker
Pricing
from $4.00 / 1,000 product checkeds
Product Feed Price & Stock Checker
Compare product feed prices, currencies and stock with SKU-matched JSON-LD offers. Flag ambiguous variants and export a client report.
Pricing
from $4.00 / 1,000 product checkeds
Rating
0.0
(0)
Developer
LibriHouse
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Compare your submitted product prices, currencies and optional stock status with JSON-LD Product offers on their public landing pages. Match an exact SKU when supplied; flag ambiguous variants instead of guessing. Get an actionable dataset and printable client report with no proxy, AI or paid API key.
Quick start
{"products": [{"id": "demo-hoodie","url": "https://www.scrapingcourse.com/ecommerce/product/abominable-hoodie/","sku": "MH09","price": "69.00","currency": "USD"}],"maxRedirects": 3,"timeoutSecs": 15,"delayMillis": 250}
This example uses a public scraping demonstration shop. Its price can change; a mismatch is a valid result. Replace the product with your catalog data. Convert selected rows from your feed into the JSON array; this release does not download XML/CSV feeds.
| Input | Meaning |
|---|---|
products | 1–1000 objects, each requiring url, price and currency. |
id | Optional nonempty reference string, maximum 200 characters; defaults to row number. |
sku | Optional exact case-sensitive SKU, maximum 200 characters. Strongly recommended for variant pages. SKU matching uses Offer.sku when present, otherwise Product.sku. |
price | Nonnegative decimal string or number, up to 12 integer and 6 fractional digits. Strings preserve decimal precision. No currency symbols, separators or exponent notation. Supply the currently advertised price, including sale price where appropriate. |
currency | Required three-letter uppercase code, e.g. USD. No currency conversion is performed. |
availability | Optional: in_stock, out_of_stock, preorder or backorder. Omit to skip stock comparison. |
maxRedirects | 0–5 per page, default 3. |
timeoutSecs | 2–30 seconds per request including DNS, default 15. |
delayMillis | 100–5000 ms between requests, default 250. |
How matching works
The Actor parses application/ld+json scripts, finds Product nodes including nested ProductGroup variants, and resolves local @id references to Offer nodes. It reads exact Offer.price, priceCurrency and availability evidence.
When a SKU is supplied, only matching offers are candidates. Without a SKU, pages containing multiple Product nodes are marked ambiguous. Multiple offers with different price/currency/stock values remain unknown—even if one price equals your expected price. Repeated offers with identical values are accepted. AggregateOffer ranges, unsupported offer types and malformed or truncated structured data cannot yield a confident match.
Prices compare exactly to six decimal places without binary floating-point rounding. 69, 69.0 and 69.00 are equivalent. No tolerance or regional currency conversion is guessed. Recognized stock values are Schema.org InStock, OutOfStock, SoldOut, PreOrder and BackOrder. Other stock vocabulary remains unknown.
Results
match: all requested comparisons were established and equal.mismatch: at least one established price, currency or stock comparison differs.unknown: the selected offer or required evidence could not be established reliably.
Unknown is not a product defect or a Merchant Center disapproval. A mismatch can coexist with an unavailable optional comparison; inspect the individual nullable priceMatches, currencyMatches, availabilityMatches fields and issue codes. Each row includes expected/observed values, HTTP status, redirect chain, SKU, timestamp and up to five candidate evidence records. Evidence names/URLs are bounded for report size; candidateCount gives the full count.
Export the dataset as JSON, CSV or Excel in Apify. Printable client report opens REPORT HTML; Audit summary opens SUMMARY JSON. Download the HTML and print it to PDF if needed. SUMMARY.complete identifies whether all supplied records were processed. Use itemIndex to join results to your original rows; duplicate rows are checked and billed separately.
Use Apify schedules to repeat a saved input after catalog updates. This release does not connect to Merchant Center, change feeds, retain cross-run baselines, or send alerts automatically.
Pricing
Launch price: $4 per 1,000 completed product checks (product-checked, $0.004 each), plus the Apify start event ($0.00005 at the default 256 MB) and platform usage. Start-event count increases above 1 GB. Confirm the current Pricing tab before running. For 100 checks, product events total $0.40 plus the start event and platform usage. Reports and mismatch lists have no extra event charge.
Completed HTTP observations are charged even when evidence is missing, ambiguous, blocked (403/429), non-HTML, matched or mismatched. Transport/DNS/TLS/timeout/security failures with a populated error field have no custom product fee. Start fee and platform usage still apply. The Actor stops before work that cannot fit its event budget. Do not add automatic dataset-item billing alongside product-checked.
Limitations and privacy
This is a static structured-data comparison, not a guarantee about visible page prices, checkout totals, variant selection, ad approval or policy compliance. It does not execute JavaScript, inspect Microdata/RDFa/visible-price selectors, resolve remote JSON-LD contexts, evaluate priceSpecification or AggregateOffer ranges, apply discounts/coupons, calculate tax/shipping, or emulate a buyer's location. Supply the correct expected SKU and regional URL. Structured data itself can be stale; manually review flagged products.
HTML is capped at 2 MB, JSON-LD at 100 scripts/20,000 nodes/30 nesting levels. Only UTF-8/ASCII, identity-encoded HTML is parsed. Public standard-port HTTP(S) URLs only, no login or embedded credentials. All DNS answers are checked; the selected public IP is pinned and redirects revalidated. Private/reserved networks and unsafe protocols are rejected. No automatic retries of blocked pages.
Results stay in your Apify storage with your account's access and retention settings; no external database or analytics is used. Do not submit URLs containing secrets or personal query parameters. Limited permissions are sufficient. Interrupted reports may lag the dataset by up to 24 records; the dataset is authoritative. Normal completion, graceful abort and budget stops refresh the report. Dataset writes and charging are not a cross-service transaction; inspect interrupted paid runs before resurrection.
Support
Include a run ID, sanitized product input, expected behavior and issue code in an Actor issue. Never share your API token. Do not treat an unknown result as proof of a price mismatch.