Extract IPAs from non-jailbroken iOS devices in a few commands — no jailbreak, no third-party app stores, no shady tools.
Connect your iPhone/iPad over USB and pull any installed App Store app as a proper .ipa file — ready to install on another device, inspect, or archive.
Works on:
- Any non-jailbroken iOS 16+ device
- All App Store apps (free or paid, as long as your Apple ID has access)
- macOS 12 Monterey and later (Apple Silicon & Intel)
On non-jailbroken iOS, the app binary on the device is sandboxed and unreadable from macOS — even over USB. So instead of pulling from the device, we:
- Detect the connected device and enumerate installed apps using Frida
- Identify the app's Bundle ID from the live device
- Download the authentic IPA directly from Apple's CDN using ipatool — authenticated with your Apple ID
The resulting IPA is the exact same file Apple distributes, with FairPlay encryption. It installs on any device authorized with the same Apple ID.
iPhone (USB) macOS Apple CDN
│ │ │
│── enumerate apps ─────────▶│ │
│◀─ bundle ID: com.x.y ─────│ │
│ │── download IPA ──────────▶│
│ │◀─ MyApp.ipa (encrypted) ──│
│ │ │
│◀──────── install ─────────│ │
- macOS 12+
- iPhone/iPad connected via USB with "Trust This Computer" accepted
- Your Apple ID (the one with the target app installed)
git clone https://github.com/iw00tr00t/ios-ipa-extractor.git
cd ios-ipa-extractor
chmod +x extract_ipa.sh# Install Homebrew (if not already installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install ipatool and Python deps
brew install ipatool
pip3 install -r requirements.txt./extract_ipa.shThe script will:
- Detect your connected iPhone/iPad
- Show all installed apps with their bundle IDs
- Ask for your Apple ID to authenticate
- Download the IPA to the current directory
./extract_ipa.sh./extract_ipa.sh -b com.example.myapp./extract_ipa.sh -b com.example.myapp -o ~/Downloads/MyApp.ipa -e me@icloud.com| Flag | Description |
|---|---|
-b, --bundle-id |
Bundle identifier of the app |
-o, --output |
Output path for the .ipa file |
-e, --email |
Apple ID email |
-p, --password |
Apple ID password (optional, prompted if omitted) |
-c, --2fa-code |
2FA code (optional, prompted if needed) |
python3 find_apps.py # List all 3rd-party apps
python3 find_apps.py "spotify" # Search by name or bundle ID
python3 find_apps.py --all # Include system appsIf you prefer to run each step yourself:
1. Find the bundle ID of your app
python3 find_apps.py[+] Connected to: iPhone
PID Name Bundle ID
--------------------------------------------------------------------------------
- Instagram com.burbn.instagram
- Netflix com.netflix.Netflix
- Spotify com.spotify.client
- MyApp com.bundle.app
2. Authenticate with your Apple ID
ipatool auth login -e your@icloud.com
# Enter password when prompted
# Enter 2FA code when prompted3. Download the IPA
ipatool download -b com.bundle.app -o MyApp.ipa --purchase4. Verify the IPA
unzip -l MyApp.ipa | grep "Payload/" 0 Payload/MyApp.app/
58787824 Payload/MyApp.app/MyApp
10276 Payload/MyApp.app/Info.plist
Sign in to the same Apple ID on the target device, then:
# Get the target device UDID
xcrun devicectl list devices
# Install
xcrun devicectl device install --device <UDID> MyApp.ipaOr drag the .ipa into Xcode → Window → Devices and Simulators.
You'll need an Apple Developer account. Use iOS App Signer or:
# Install ios-deploy
brew install ios-deploy
# Re-sign with your certificate (requires Xcode + provisioning profile)
# See: https://developer.apple.com/documentation/xcode/distributing-your-app-to-registered-devices| Problem | Fix |
|---|---|
No iOS device detected |
Unlock device → tap Trust This Computer → retry |
Failed to get account |
Run ipatool auth login -e you@icloud.com first |
License required |
Add --purchase flag (works for free apps too) |
Frida not found |
pip3 install frida frida-tools |
ipatool not found |
brew install ipatool |
| Download stuck / slow | Normal — large apps can be 500MB+, be patient |
| 2FA prompt loop | Use --auth-code flag with the code from your device |
- Your Apple ID credentials are stored only in your local macOS Keychain by ipatool — never sent anywhere except Apple's servers
- The downloaded IPA is encrypted with FairPlay DRM — the binary cannot be run or read on a PC, only on an authorized iOS device
- This tool does not modify, crack, or decrypt any app binary
- Frida — Dynamic instrumentation toolkit for app enumeration
- ipatool — CLI tool to interact with Apple's App Store
- pymobiledevice3 — Pure-Python library for iOS device communication
MIT — see LICENSE
PRs welcome! If you hit an issue or want to add support for enterprise/TestFlight apps, open an issue.