Shopify Feed vs Page Audit - HTML Snapshots
Pricing
from $5.00 / 1,000 results
Shopify Feed vs Page Audit - HTML Snapshots
Compare feed price, stock and variant identity with saved Shopify HTML JSON-LD. Explicit country checks and exportable evidence. No crawling or store access.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Cleyson Dias
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Features
Share
Shopify Feed vs Page Audit — HTML Snapshots
Compare product-feed expectations with saved Shopify HTML snapshots: variant identity, price, currency and availability, with an explicit target-country check.
This is a snapshot auditor, not a live Shopify scraper. Supply the HTML source in the input. Providing only a store URL is not sufficient. No browser, proxy, JavaScript execution, login, Google Merchant Center connection or LLM is used for the audit.
Who this is for
Developers and catalog/Shopping teams that already have an authorized feed and saved HTML, and want a repeatable static QA step before reviewing a catalog change. The output is a review queue, not an automatic feed repair. If you only have a store URL, or need visible-price/checkout validation, this MVP is not a suitable substitute for a live auditor.
What you get
- One dataset item per processed feed row, with
match,mismatch,unknownorinvalid_input. - Evidence and field-level reasons for differences, instead of automatic store edits.
REPORT.json: complete comparison and snapshot fingerprints.REPORT.csv: CSV with spreadsheet-safe identifiers.REPORT.html: self-contained report in Portuguese, without scripts or external resources.OUTPUT: run totals, omitted-row count and budget-limit information.
Quick start in Apify Console
Use the prefilled synthetic example or paste INPUT.example.json in the JSON input editor. It contains three test scenarios, not three independently captured products:
reference: expectedmatch.wrong-price: expectedmismatchon price.other-country: expectedunknownbecause the snapshot declares US while the target is CA.
For your own authorized data, replace the example rows with your feed fields and saved page source. The program does not fetch link, html, images or other resources.
Input fields
| Field | Required | Meaning |
|---|---|---|
products | Yes | Array of 1–100 product snapshots |
products[].id | Yes | Unique, nonempty feed-row identifier, max 256 characters |
products[].sku | Yes | Exact SKU identifying the Product in JSON-LD, max 256 characters |
products[].link | Yes | HTTP(S) destination URL to compare, not to visit |
products[].price | Yes | Decimal text plus currency, e.g. 19.90 USD; no decimal comma or exponent |
products[].availability | Yes | in_stock, out_of_stock, preorder or backorder |
products[].target_country | Yes | Two uppercase letters, e.g. US; format validation, not ISO-table membership |
products[].html | Yes | Authorized saved HTML source, 1 byte to 1 MiB UTF-8, not a URL |
products[].variant_id | No | Numeric variant identifier supplied as a string |
products[].product_form_id | No | Exact ID of the main product form; recommended when the page includes other product controls |
notice | No | Provenance/context note, max 1000 characters; not a certification |
The serialized input is limited to 8 MiB by the Actor. Platform input limits may be lower. Do not include page_path, arbitrary local paths, cookies, proxy settings or unsupported fields. Duplicate IDs and structural/size errors reject the run. Invalid product metadata that reaches the auditor is reported as invalid_input instead of approving it.
How comparison works
The parser requires one Product matching the SKU. If there are multiple Offers, exactly one must have the expected SKU. It never chooses the first or cheapest offer as a substitute for identity.
When supplied, variant ID, variant URL and static main-form controls are cross-checked. A matching SKU does not erase a contradictory variant URL. Without a form scope, unrelated product controls can make selection inconclusive; a missing Offer URL or optional variant ID does not become independent proof of identity.
The Actor requires an explicit target country. A restricted static Shopify.country declaration in the HTML must provide unambiguous accepted evidence before contextual price, currency and stock are compared. The URL country parameter alone does not prove the context. Missing, unsupported or conflicting declarations produce an inconclusive country check; independent variant contradictions can still produce mismatch.
Interpret results correctly
match: consistent within the fields and evidence compared, not Google approval or guaranteed purchasability.mismatch: at least one difference was proved within the snapshot. Inspect all findings; other fields may remain unknown.unknown: evidence missing, ambiguous or outside the requested context. Do not treat it as a pass.invalid_input: metadata does not meet the comparison contract.
The program compares supported JSON-LD, not the visible price text: visible text can disagree while the structured-data result remains match. A price supplied only through Offer.priceSpecification is not supported and remains inconclusive. template and noscript content is not accepted as active evidence. Availability is compared strictly, not using Google's automatic-update compatibility rules.
The program does not check checkout, delivery, tax, every market, runtime JavaScript changes, all Shopify themes, arbitrary structured-data formats or Merchant Center policy compliance. Admin stock quantity is not global availability. Snapshots can be stale; fingerprints identify the submitted UTF-8 content, not its authenticity or freshness. feed_sha256 identifies the adapter-generated manifest, not the original platform INPUT bytes.
Data handling
Use only data you own or are authorized to process. Remove preview-access keys, tokens, passwords, signed access URLs, personal data and secrets before submitting HTML or URLs. This Actor is not a general secret-redaction service.
Apify stores the input you submit. The program does not separately publish raw HTML to its dataset, but input, reports and URL evidence can contain your submitted information. Control run/storage access and retention appropriately. Do not publish private example runs. Logs record counts and validation failures, not entire snapshots.
Use REPORT.csv for spreadsheet review. Native platform dataset exports preserve submitted identifiers; treat untrusted exported text as data rather than executing formulas.
Pricing and run limits
PPE pricing: $0.005 per delivered record ($5 per 1,000 results) plus $0.00005 per run start at the supported 256–512 MB. One record is $0.00505 and 100 records are $0.50005 before discounts or taxes; check effective Console/Store pricing before running. The synthetic demonstration is not inherently free: its delivered rows are billable too. CSV/HTML/JSON reports have no additional author event fee. Platform usage is included in event pricing; it is not charged separately to the user.
Every delivered status can be billable, including inconclusive and invalid rows; the value is the completed check and its explanation, not a guaranteed error finding. Omitted rows do not produce item charges. No additional minimum selectable run budget is configured. Rejected structural input may still incur a startup charge or platform usage without item results. Effective Console/Store pricing is authoritative. Platform compute/storage usage is distinct from developer revenue.
Apify's synthetic apify-default-dataset-item event automatically charges each stored dataset row. There is no additional manual charge for that same item. The synthetic apify-actor-start event is charged automatically at the startup rate above.
The Actor checks the SDK's remaining dataset-item allowance before auditing, processes only the permitted prefix, and records omittedDueToBudget and budgetLimited in OUTPUT. With no remaining allowance it returns a zero-result summary without reports. Dataset items are saved before report files; aborted or failed runs can have partial output. Cloud billing, interruption behavior and actual costs must be verified in a private platform run before paid release. The included budget integration test uses the SDK's local simulation, not a payment.
Release status
This MVP compares supported static evidence; it is not a measured commercial accuracy benchmark or a guarantee of Google approval. Independent development, with no official affiliation with Shopify or Google.
Platform references
- Actor definition and relative file paths: https://docs.apify.com/platform/actors/development/actor-definition/actor-json
- Input schema: https://docs.apify.com/platform/actors/development/actor-definition/input-schema
- Output schema: https://docs.apify.com/platform/actors/development/actor-definition/output-schema
- Synthetic PPE events and spending limits: https://docs.apify.com/platform/actors/monetize/pay-per-event