Skip to content

About

πŸ”— Chrome extension for extracting app links from Google Play and Apple App Store search pages. Manifest V3 with automatic store detection, URL canonicalization, deduplication, and noise filtering. Built for ASO workflows, market research, and app discovery automation.

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

43 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Game Store Link Extractor

Typing SVG

Production-minded Chrome Extension that pulls clean app URLs from Google Play and Apple App Store search pages with dedupe and noise filtering built in.

Gist

Chrome Store Chrome Portfolio

Manifest Version JavaScript License: GPL-3.0 Platform

Note

This repo currently ships as an unpacked extension workflow (Developer Mode) and is not published to the Chrome Web Store.

Table of Contents

Features

  • Dual-store extraction pipeline: supports play.google.com and apps.apple.com in one popup flow.
  • Runtime store detection: auto-detects active tab domain and wires the right extraction strategy.
  • Visible-only scraping: ignores hidden nodes via offsetParent !== null checks.
  • DOM noise suppression: excludes footer/global navigation blocks to avoid junk URLs.
  • Deterministic deduplication: normalizes entities by app identifier using Set semantics.
  • Canonical URL generation:
    • Google Play links normalize to https://play.google.com/store/apps/details?id=<APP_ID>.
    • Apple links normalize to https://apps.apple.com/app/id<APP_ID> (without locale segment noise).
  • Clipboard-ready output: extracted links are shown in a textarea, line-by-line, for instant export.
  • Real-time counter: popup shows number of extracted records.

Tip

Scroll the search results page before running extraction so lazy-loaded cards are present in the DOM and can be collected.

Technology Stack

  • Language: JavaScript (ES6+)
  • Platform: Chrome Extension, Manifest V3
  • Chrome APIs:
    • chrome.tabs.query
    • chrome.scripting.executeScript
  • Permissions:
    • activeTab
    • scripting
  • Host permissions:
    • https://play.google.com/*
    • https://apps.apple.com/*
  • UI layer: lightweight popup (popup.html + inline styles)

Technical Block

Project Structure

.
β”œβ”€β”€ icons/
β”‚   └── icon128.png             # Extension icon
β”œβ”€β”€ CONTRIBUTING.md             # Contribution guide
β”œβ”€β”€ LICENSE                     # GPL-3.0 license
β”œβ”€β”€ manifest.json               # MV3 metadata, permissions, action config
β”œβ”€β”€ popup.html                  # Popup UI shell
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ extractors/             # Store-specific extraction functions
β”‚   └── popup/                  # Popup UI controller and modules
└── README.md                   # Project docs

Key Design Decisions

  1. Zero backend by design
    Extraction runs directly in the active tab context. No server, no external API, no telemetry.

  2. Function injection strategy
    The popup dynamically injects the extraction function for the detected store (extractGooglePlayLinks or extractAppleStoreLinks) to keep logic isolated and explicit.

  3. ID-first canonicalization
    Instead of trusting raw anchors, the code extracts stable app identifiers and reconstructs canonical URLs. This lowers duplicate and region-specific URL variance.

  4. Defensive parsing
    URL parsing operations are protected from malformed links to avoid hard failures during scraping sessions.

Important

This extension depends on current store DOM patterns. If Google/Apple rework their markup, selectors may need a hotfix.

Getting Started

Prerequisites

Make sure you have:

  • Google Chrome (recent stable build)
  • Git (for cloning/updating the repository)
  • Optional: a GitHub account if you want to fork and contribute

Installation

# 1) Clone the repo
git clone https://github.com/OstinUA/Game-Play-Search-Extractor.git

# 2) Enter project directory
cd Game-Play-Search-Extractor

# 3) Open Chrome extension management page
# chrome://extensions/

# 4) Enable Developer mode (top-right toggle)

# 5) Load unpacked extension
# Click "Load unpacked" and select this project directory

Warning

If you move or rename the local folder after loading unpacked, Chrome will lose track of the extension path. Reload from chrome://extensions/.

Testing

There is no heavyweight automated test suite yet, so validation is currently manual + behavior-driven.

Recommended smoke-check routine:

# Optional sanity check: verify extension metadata is valid JSON
python -m json.tool manifest.json > /dev/null

Manual verification checklist:

  1. Open a Google Play search page, scroll, run extraction, verify non-zero result count.
  2. Confirm all Play links match canonical details?id= format.
  3. Open an Apple App Store listing/search page, scroll, run extraction.
  4. Confirm generated Apple links follow https://apps.apple.com/app/id... format.
  5. Confirm duplicates are removed across repeated cards/blocks.
  6. Confirm unsupported domains show disabled button + error state.

Deployment

This project is currently deployed as a source-distributed Chrome extension.

Typical production-ish distribution paths:

  • Unpacked internal distribution (fastest for teams and ASO operators)
  • Private release bundles via Git tags/releases
  • Chrome Web Store packaging (future-ready option if publishing is needed)

Build notes:

  • There is no bundler/minifier stage required for runtime.
  • Release discipline can be handled with semantic version bumps in manifest.json.
  • CI can be added later for linting, metadata validation, and release packaging.

Usage

Google Play Flow

1) Open https://play.google.com/store/search
2) Run your query and scroll to hydrate more result cards
3) Click extension icon
4) Verify status shows "Google Play Store"
5) Click "Extract Links"
6) Copy normalized links from textarea output

Apple App Store Flow

1) Open an apps.apple.com app listing or search-related page
2) Ensure app cards are visible in viewport/result blocks
3) Click extension icon
4) Verify status shows "Apple App Store"
5) Click "Extract Links"
6) Copy normalized links from textarea output

Tip

The popup UI is fully in English and now includes a dark/light theme switch in the top-right corner.

Configuration

This extension does not require .env files or runtime secrets.

Configuration surface is defined in manifest.json:

  • version: release/version tracking
  • permissions: activeTab, scripting
  • host_permissions: allowed target domains for script injection
  • action.default_popup: popup entrypoint
  • icons: extension assets

If you add a new supported store domain, you need to update both:

  1. host_permissions in manifest.json
  2. Domain routing + extraction logic in popup.js

License

Distributed under the GPL-3.0 license. See LICENSE for legal details.

Contacts

❀️ Support the Project

If you find this tool useful, consider leaving a ⭐ on GitHub or supporting the author directly:

Patreon Ko-fi Boosty YouTube Telegram

About

πŸ”— Chrome extension for extracting app links from Google Play and Apple App Store search pages. Manifest V3 with automatic store detection, URL canonicalization, deduplication, and noise filtering. Built for ASO workflows, market research, and app discovery automation.

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages