App Store Screenshot Monitor avatar

App Store Screenshot Monitor

Pricing

from $15.00 / 1,000 image inspecteds

Go to Apify Store
App Store Screenshot Monitor

App Store Screenshot Monitor

Monitor public app listing screenshots and creative assets for visual/listing changes.

Pricing

from $15.00 / 1,000 image inspecteds

Rating

0.0

(0)

Developer

junipr

junipr

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Categories

Share

Compare app listing screenshot sets by locale and device. The actor can download the actual image bytes, compute SHA-256 hashes, read PNG/JPEG/WebP dimensions, enforce byte limits, and detect creative replacements, dimension changes, reorders, additions, removals, URL changes, and failed inspections.

Input Sources

Supply previousScreenshots and currentScreenshots arrays containing image URLs and placement metadata. Existing hash, dimension, and byte-size metadata can be included for deterministic manifest comparisons.

The previousSnapshot and currentSnapshot fields also accept JSON arrays, { "screenshots": [...] } objects, or Apple lookup responses containing screenshotUrls, ipadScreenshotUrls, or appletvScreenshotUrls.

Set inspectImages to true to retrieve every supplied HTTP(S) image URL and replace supplied metadata with verified byte-derived evidence. Private, loopback, credentialed, and non-HTTP URLs are rejected by default.

Example Input

{
"targets": [
{
"sourceId": "acme-ios-en-us",
"sourceUrl": "https://apps.apple.com/app/acme/id123456789",
"appId": "123456789",
"platform": "apple-app-store",
"locale": "en-US",
"device": "iphone-6.9",
"previousScreenshots": [
{ "assetId": "iphone-01", "url": "https://example.com/onboarding-v1.png", "position": 1, "sha256": "1111111111111111111111111111111111111111111111111111111111111111", "width": 1320, "height": 2868, "inspectionStatus": "supplied" }
],
"currentScreenshots": [
{ "assetId": "iphone-01", "url": "https://example.com/onboarding-v2.png", "position": 1, "sha256": "2222222222222222222222222222222222222222222222222222222222222222", "width": 1320, "height": 2868, "inspectionStatus": "supplied" }
]
}
],
"inspectImages": false,
"maxImagesPerTarget": 20,
"maxImageBytes": 10000000,
"includeUnchanged": false,
"includeReport": true
}

Output

Each row contains:

  • App placement: appId, platform, locale, device, assetId, and old/new positions
  • Image evidence: old/new URL, SHA-256, width, height, byte size, MIME type, and dimension change
  • Verification evidence: old/new inspection status and explicit inspection errors
  • Decision fields: changeType, status, severity, score, summary, and recommendation

inspectionStatus distinguishes verified byte-derived metadata from supplied manifest metadata and failed retrievals.

Empty manifests and failed image retrievals also set diagnosticCode and sourceError, so blocked checks remain visible in the dataset.

Example Output

{
"appId": "123456789",
"platform": "apple-app-store",
"locale": "en-US",
"device": "iphone-6.9",
"assetId": "iphone-01",
"oldPosition": 1,
"newPosition": 1,
"oldHash": "1111111111111111111111111111111111111111111111111111111111111111",
"newHash": "2222222222222222222222222222222222222222222222222222222222222222",
"oldWidth": 1320,
"newWidth": 1320,
"oldInspectionStatus": "supplied",
"newInspectionStatus": "supplied",
"changeType": "content-changed"
}

PPE Pricing

Event prices include Apify platform usage for the configured fixed-inclusive model.

  • actor-start: $0.05000 once per paid run
  • image-inspected: $0.01500 per previous or current image inspected
  • issue-detected: $0.01300 per emitted changed or failed row
  • report-generated: $0.10000 when report artifacts are written

The actor charges before each image inspection and stops before additional output when the charge limit cannot cover the next paid event.

Limits

  • Up to 50 listing targets and 100 images per side per target.
  • Maximum image response size is configurable up to 25 MB.
  • Supply the final CDN asset URL; redirects are rejected during image inspection.
  • The actor accepts screenshot URLs or listing API manifests; it does not use a browser to discover JavaScript-rendered store creatives.
  • Hash equality proves byte equality, not perceptual similarity. Re-encoded but visually identical images appear as content changes.