Apple App Store Developer Portfolio Scraper avatar

Apple App Store Developer Portfolio Scraper

Pricing

Pay per event

Go to Apify Store
Apple App Store Developer Portfolio Scraper

Apple App Store Developer Portfolio Scraper

🍎 Enumerate apps returned for Apple developer IDs across country storefronts. Export app metadata for ASO, monitoring, acquisition research, and publisher intelligence.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Turn an Apple developer ID into a structured inventory of the apps that publisher offers in each selected App Store country.

Use numeric developer IDs or paste public apps.apple.com developer URLs. The Actor calls Apple's anonymous Lookup service, normalizes every returned software record, and saves export-ready app metadata.

No Apple account, API key, browser, proxy, cookies, or private credentials are required.

What does Apple App Store Developer Portfolio Scraper do?

This Actor enumerates apps associated with a supplied Apple publisher.

For every developer and storefront it can extract:

  • 🍎 developer ID and developer name
  • 📱 app ID, app name, and bundle ID
  • 🗂️ primary genre and complete genre list
  • 💵 price, formatted price, and currency
  • ⭐ average rating and rating count
  • 🆕 current version rating and rating count
  • 🧩 version and minimum operating system
  • 📅 first release and current-version release dates
  • 🖼️ artwork and canonical App Store URL
  • 📝 public app description
  • 🌍 storefront, original query, source URL, and scrape time

One row represents one app in one storefront. This makes regional comparisons explicit instead of silently merging values that may differ by country.

Who is it for?

ASO and mobile-market intelligence teams

Build repeatable publisher inventories for competitive research. Snapshot datasets on a schedule and compare app launches, removals, releases, ratings, or pricing.

App-acquisition scouts

Review the complete public portfolio returned for a potential acquisition target. Export bundle IDs and app URLs into a due-diligence sheet.

Ad-tech and vendor-risk researchers

Map apps back to a developer identity and monitor changes in the publisher's footprint.

Agencies

Create portfolio reports for multiple clients or competitors without manually opening every profile and app page.

Data engineers

Feed normalized records into warehouses, dashboards, alerts, webhooks, or enrichment pipelines.

Why use this developer portfolio scraper?

Apple search is keyword-oriented and can mix unrelated publishers. A developer lookup starts from a deterministic publisher ID.

The Actor adds operational features around the public source:

  • accepts both IDs and full profile URLs
  • supports multiple country storefronts in one run
  • validates malformed inputs before extraction
  • retries transient source failures with bounded backoff
  • deduplicates records within each storefront
  • returns stable field names for downstream automation
  • charges only for the run start and saved app records

How it works

  1. The Actor validates each developer identifier.
  2. Developer URLs are converted to their numeric Apple IDs.
  3. Each ID is paired with each requested storefront.
  4. Apple's public Lookup endpoint is queried with entity=software.
  5. The publisher record is discarded and software records are normalized.
  6. Duplicate storefront/developer/app combinations are removed.
  7. App rows are saved to the default Apify dataset.

If one developer/storefront request fails after retries, the Actor logs it and continues with the remaining pairs. If every source request fails, the run fails rather than reporting a misleading successful extraction.

Input

The input has three fields.

FieldTypeRequiredDefaultDescription
developerIdsstring arrayYes389801255 prefillNumeric IDs or Apple developer profile URLs
countriesstring arrayNousTwo-letter App Store storefront codes
maxAppsPerDeveloperintegerNo200Maximum apps saved per developer and storefront, from 1 to 200

A small first run can use:

{
"developerIds": ["389801255"],
"countries": ["us"],
"maxAppsPerDeveloper": 20
}

To compare storefronts:

{
"developerIds": [
"https://apps.apple.com/us/developer/meta-platforms-inc/id389801255"
],
"countries": ["us", "gb", "de"],
"maxAppsPerDeveloper": 200
}

Country codes are normalized to lowercase. Invalid values fail closed.

Output data

Results are available in the default dataset as JSON, CSV, Excel, XML, RSS, or HTML.

FieldMeaning
developerIdNumeric Apple publisher ID as a string
developerNamePublisher name returned by Apple
appIdNumeric Apple app ID as a string
appNamePublic app title
bundleIdApp bundle identifier
primaryGenrePrimary App Store genre
genresAll returned genre labels
priceNumeric storefront price
currencyISO-like storefront currency code
formattedPriceApple's formatted price label
averageRatingAggregate average user rating
ratingCountAggregate number of ratings
currentVersionRatingRating for the current version
currentVersionRatingCountCurrent-version rating count
versionCurrent version string
firstReleaseDateOriginal release timestamp
currentVersionReleaseDateCurrent-version release timestamp
minimumOsVersionMinimum supported OS version
contentAdvisoryRatingReturned age/content label
artworkUrlHighest-resolution returned artwork URL
appStoreUrlCanonical public app URL
descriptionPublic app description
storefrontRequested two-letter country code
queryOriginal supplied ID or URL
sourceUrlExact Lookup request URL
scrapedAtUTC extraction timestamp

Example output

{
"developerId": "389801255",
"developerName": "Meta Platforms, Inc.",
"appId": "389801252",
"appName": "Instagram",
"bundleId": "com.burbn.instagram",
"primaryGenre": "Photo & Video",
"price": 0,
"currency": "USD",
"averageRating": 4.7,
"ratingCount": 27000000,
"version": "latest returned version",
"storefront": "us",
"appStoreUrl": "https://apps.apple.com/us/app/instagram/id389801252",
"query": "389801255",
"scrapedAt": "2026-07-19T00:00:00.000Z"
}

Values change over time and by storefront; the example illustrates shape rather than a guaranteed live value.

How much does it cost to scrape Apple developer portfolios?

This Actor uses pay-per-event pricing.

  • A small one-time Start event covers run initialization.
  • An App result event is charged once for each dataset row saved.
  • App-result prices use Apify's plan-based tiered discounts.

The current start price is $0.005. The formula-derived BRONZE app-result price is $0.00012613 per row, with lower SILVER through DIAMOND rates and a FREE-tier rate of $0.00014505. The exact price for your plan appears before a run and in the Actor's Pricing tab.

Runs that return fewer apps cost less. Test with one developer and one storefront before scheduling large regional monitoring jobs.

Step-by-step guide

  1. Open the Actor in Apify Console.
  2. Find the publisher's Apple developer ID or public profile URL.
  3. Add one or more identifiers under Developers.
  4. Keep us or add other two-letter country codes.
  5. Choose a maximum from 1 to 200.
  6. Click Start.
  7. Review logs for each completed developer/storefront pair.
  8. Open Dataset and export or integrate the records.

Portfolio monitoring workflow

Run the same input daily or weekly with an Apify schedule.

Store each snapshot in your warehouse, then compare records by:

  • storefront + developerId + appId for identity
  • missing or new app IDs for removals and launches
  • version or currentVersionReleaseDate for releases
  • price and currency for commercial changes
  • averageRating and ratingCount for reputation movement

Apify webhooks can trigger a diff service after every successful run.

Regional availability workflow

Supply the same developer with multiple countries.

Because each row retains storefront, analysts can group by app ID and identify:

  • apps present in one country but absent in another
  • regional price and currency differences
  • rating/count differences across storefronts
  • regional App Store URLs

A missing app can mean regional unavailability or that Apple did not include it in the capped Lookup response. Treat the source limitation explicitly.

Integrations

Google Sheets and Excel

Export CSV or Excel directly from the dataset for portfolio audits and client reports.

Webhooks

Send a successful-run webhook to Zapier, Make, n8n, or an internal endpoint. Use the dataset ID from the run payload to retrieve rows.

Data warehouses

Use the Apify API client to load snapshots into BigQuery, Snowflake, PostgreSQL, or object storage.

Slack and email alerts

Diff the newest dataset against the previous snapshot and alert when app IDs, prices, or versions change.

Other Apify Actors

Chain the returned app URLs or IDs into a detail, review, privacy-label, or similar-app workflow.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/apple-app-store-developer-portfolio-scraper').call({
developerIds: ['389801255'],
countries: ['us', 'gb'],
maxAppsPerDeveloper: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/apple-app-store-developer-portfolio-scraper').call(run_input={
'developerIds': ['389801255'],
'countries': ['us'],
'maxAppsPerDeveloper': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~apple-app-store-developer-portfolio-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"developerIds":["389801255"],"countries":["us"],"maxAppsPerDeveloper":20}'

Fetch dataset records after the run finishes:

$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json"

Use with Apify MCP and AI agents

Connect AI tools to:

https://mcp.apify.com?tools=automation-lab/apple-app-store-developer-portfolio-scraper

Claude Code setup

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/apple-app-store-developer-portfolio-scraper"

Claude Desktop setup

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/apple-app-store-developer-portfolio-scraper"
}
}
}

Cursor setup

Add the same HTTP MCP URL to Settings → Tools & MCP → New MCP Server.

VS Code setup

Add the same HTTP endpoint to your workspace MCP server configuration, then enable the Apify server in the MCP panel.

Example prompts:

  • “List the US App Store portfolio for developer 389801255.”
  • “Compare this Apple publisher's apps in the US, UK, and Germany.”
  • “Return bundle IDs and release dates as a compact table.”
  • “Run this weekly and summarize newly observed app IDs.”

Data quality and deduplication

The Actor only saves returned records that contain an app ID, app name, developer ID/name, bundle ID, and canonical URL.

Deduplication uses storefront, developer ID, and app ID. The same app can intentionally appear once per requested storefront because availability and metadata can differ.

Nullable source values remain null; numeric counts default to zero and genre arrays default to an empty array. This preserves predictable output types.

Limits

Apple's Lookup response is capped at 200 requested software results per developer and storefront. The Actor cannot promise portfolio completeness beyond Apple's returned set.

Other practical limits:

  • at most 100 developer inputs per run
  • at most 20 storefronts per run
  • sequential requests to avoid unnecessary source pressure
  • three bounded attempts for transient HTTP or timeout failures
  • public metadata only; no private analytics or developer-console data

Apple can change or retire the endpoint without notice.

The Actor retrieves public App Store metadata without bypassing login or access controls.

You are responsible for your use of the data. Follow Apple's applicable terms, database rights, privacy laws, contractual requirements, and local regulations.

Do not use public publisher or app metadata to make unlawful discriminatory decisions, impersonate developers, or misrepresent affiliation with Apple.

This Actor is not affiliated with or endorsed by Apple Inc.

Troubleshooting

“Invalid developer identifier”

Use digits only, such as 389801255, or a full URL whose path contains /developer/<name>/id<digits> on apps.apple.com.

“countries must contain two-letter storefront country codes”

Use codes such as us, gb, de, fr, or jp. Do not use language tags like en-US.

The run succeeded with zero rows

Apple may return no software records for that developer/storefront pair. Confirm the developer ID and try the profile's visible country storefront.

One storefront failed

Read the run log. The Actor retries transient failures and continues with other pairs. Re-run later if Apple temporarily rejected or timed out the request.

An app visible on the profile is absent

The Lookup endpoint can return a storefront-specific and source-capped set. The Actor reports what Apple returned and does not claim completeness beyond 200.

Tips for reliable recurring runs

  • Start with one known publisher and the us storefront.
  • Preserve sourceUrl and scrapedAt for auditability.
  • Compare app IDs instead of names because titles can change.
  • Keep country codes stable between snapshots.
  • Schedule at a cadence that matches your decision process rather than polling continuously.
  • Store historical snapshots before applying destructive updates.

Choose this Actor when the starting entity is a developer/publisher and the desired output is its returned app portfolio.

FAQ

Does it require an Apple developer account?

No. It uses a public anonymous Apple Lookup response.

Does it use a browser or proxy?

No. It is an HTTP/API Actor, which keeps execution fast and inexpensive.

Can I enter an app ID instead of a developer ID?

No. Supply the publisher's developer ID. An app ID identifies one app and is a different lookup workflow.

Can I scrape more than 200 apps for one developer?

Not through this source. Apple caps the requested Lookup set at 200, and the Actor discloses that limit instead of claiming a complete set beyond it.

Why is the same app repeated?

If you request multiple storefronts, one row per app/storefront is intentional. Use storefront + developerId + appId as the composite identity.

Are ratings globally comparable?

No. Rating values and counts can differ by storefront and over time.

Can I schedule it?

Yes. Use Apify schedules, then trigger a webhook or integration after successful runs.

What happens when one developer ID is unavailable?

A valid empty source response produces no rows for that pair. Transport failures are retried and logged; other pairs continue.

Build a publisher intelligence pipeline

A useful repeat workflow combines:

  1. this Actor for publisher-to-app enumeration,
  2. a scheduled snapshot,
  3. warehouse storage keyed by storefront/developer/app,
  4. a diff job for launches, removals, versions, prices, and ratings,
  5. alerts and a dashboard for analysts.

That pipeline turns a public developer profile into structured, reviewable market intelligence without manual app-by-app collection.