Not in the top 1,000 by GitHub stars

alixrezax/appstore-screenshot-fetcher

Agent skill + no-dependency Python script to fetch every App Store screenshot at full resolution, by device, including iPhone Duo. Install: npx skills add alixrezax/appstore-screenshot-fetcher

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/appstore-screenshot-fetcher/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 21bc29f0b3a2

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 21bc29f0b3a27ff67582257dc20b8925d2605648

10GitHub stars
Not availablestars in 7 days
1skill in this repository
1commit in 30 days

Heat

Insufficient history

Not enough history yet to measure heat. It appears after a few days of data.

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Nov 3, 2026Nov 3, 202610

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

appstore-screenshot-fetcher

When your agent uses it

Fetch the screenshots an app has published on its Apple App Store listing, at full resolution and for every device size (iPhone 6.9"/6.5"/6.3", iPhone Duo foldable inner and outer displays, iPad, Apple Watch, Mac, Apple TV, Vision Pro). Use this whenever someone wants to download, inspect, compare or audit another app's (or their own) App Store screenshots, check whether a listing has iPhone Duo or a particular device size, do competitor or ASO research on store screenshots, or scan many apps for which sizes they've uploaded, even when they only paste an apps.apple.com link or name an app. Not for designing or generating new marketing screenshots.

What it loads into context

Frontmatter

156 tokens

Always available to the agent

SKILL.md

1,592 tokens

When the skill is activated

Reference documents

1,224 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Why this approach
  2. Quick start
  3. iPhone Duo in one paragraph
  4. Other media types
  5. Checking many apps
  6. Storefronts and languages
  7. Reporting results

Scripts executed separately

  • scripts/fetch_screenshots.py

Files

  • SKILL.mdcore6,389 bytes
  • SKILL.mdcore6,389 bytes
  • references/media-types.mddoc3,664 bytes
  • scripts/fetch_screenshots.pyruns10,449 bytes
Read SKILL.md

# App Store screenshot fetcher

Get the real, full-resolution screenshots from any public App Store listing, grouped by
device size, including iPhone Duo.

## Why this approach

The obvious sources come up short:

- The **iTunes Lookup API** (`itunes.apple.com/lookup`), which most GitHub scrapers use
  (for example `facundoolano/app-store-scraper`), returns one iPhone set and one iPad set at
  low resolution, and never iPhone Duo.
- The **apps.apple.com web page** shows only one iPhone size, and its code doesn't know about
  Duo, so Duo shots never appear there.
View the complete source on GitHub

Skills included

  • appstore-screenshot-fetcher

Repository facts

License
MIT
Created
Oct 19, 2026
Last pushed
Oct 19, 2026
Forks
1
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 5, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 1 note
  • skills/appstore-screenshot-fetcher/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 26 signals by file

skills/appstore-screenshot-fetcher/SKILL.md

  • Network accessline 21
    The App Store website loads its data from a tokenless JSON proxy, `https://apps.apple.com/api/apps/v1/catalog/{country}/apps/{id}?extend=customScreenshotsByType`,
  • Network accessline 22
    `https://apps.apple.com/api/apps/v1/catalog/{country}/apps/{id}?extend=customScreenshotsByType`,
  • Network accessline 33
    # What does this listing have? (no downloads) python3 <skill>/scripts/fetch_screenshots.py "https://apps.apple.com/ca/app/deliveries/id290986013"
  • Network accessline 34
    python3 <skill>/scripts/fetch_screenshots.py "https://apps.apple.com/ca/app/deliveries/id290986013"
  • Network accessline 90
    1. Get IDs from the iTunes Search/Lookup API. A developer's catalog is at    `https://itunes.apple.com/lookup?id=<artistId>&entity=software&limit=200`. Its results
  • Network accessline 91
    `https://itunes.apple.com/lookup?id=<artistId>&entity=software&limit=200`. Its results

skills/appstore-screenshot-fetcher/references/media-types.md

  • Network accessline 75
    "customScreenshotsByType": {         "cassatt": [{"width": 1398, "height": 2034, "hasP3": false, "bgColor": "000000",                      "url": "https://is1-ssl.mzstatic.com/image/thumb/.../{w}x{h}{c}.{f}"}],
  • Network accessline 76
    "cassatt": [{"width": 1398, "height": 2034, "hasP3": false, "bgColor": "000000",                      "url": "https://is1-ssl.mzstatic.com/image/thumb/.../{w}x{h}{c}.{f}"}],         "iphone_d74": ["..."]
  • Network accessline 77
    "url": "https://is1-ssl.mzstatic.com/image/thumb/.../{w}x{h}{c}.{f}"}],

skills/appstore-screenshot-fetcher/scripts/fetch_screenshots.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 4
    Uses the tokenless JSON endpoint the apps.apple.com website itself calls:   https://apps.apple.com/api/apps/v1/catalog/{country}/apps/{id}?extend=customScreenshotsByType
  • Network accessline 5
    https://apps.apple.com/api/apps/v1/catalog/{country}/apps/{id}?extend=customScreenshotsByType
  • Network accessline 31
    CATALOG = "https://apps.apple.com/api/apps/v1/catalog/{country}/apps/{app_id}"
  • Network accessline 32
    SEARCH = "https://itunes.apple.com/search"
  • Network accessline 34
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 "                   "(KHTML, like Gecko) Version/18.0 Safari/605.1.15",     "Origin": "https://apps.apple.com",
  • Network accessline 35
    "(KHTML, like Gecko) Version/18.0 Safari/605.1.15",     "Origin": "https://apps.apple.com",     "Referer": "https://apps.apple.com/",
  • Network accessline 36
    "Origin": "https://apps.apple.com",
  • Network accessline 37
    "Referer": "https://apps.apple.com/",
  • Network accessline 65
    for attempt in range(retries):         try:             req = urllib.request.Request(url, headers=HEADERS)
  • Network accessline 66
    try:             req = urllib.request.Request(url, headers=HEADERS)             with urllib.request.urlopen(req, timeout=30) as r:
  • Network accessline 67
    req = urllib.request.Request(url, headers=HEADERS)
  • Network accessline 68
    with urllib.request.urlopen(req, timeout=30) as r:
  • Network accessline 102
    def fetch(app_id, country="us", lang="en-US"):
  • Network accessline 201
    try:             app_id, country = resolve(app, args.country)             info = fetch(app_id, country, args.lang)
  • Network accessline 202
    app_id, country = resolve(app, args.country)             info = fetch(app_id, country, args.lang)         except NotFound as e:
  • Network accessline 203
    info = fetch(app_id, country, args.lang)

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Signal confidence: 26 facts

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md skills/appstore-screenshot-fetcher/SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/appstore-screenshot-fetcher/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/appstore-screenshot-fetcher/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/appstore-screenshot-fetcher/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/appstore-screenshot-fetcher/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/appstore-screenshot-fetcher/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.