Hay EquiposSearch the Apple App Store by keyword, look up apps by id or bundle id, and pull top free, paid and grossing charts by country and genre into one table.
If you work on app store optimization, competitor tracking or market research, you need the same few numbers over and over: who ranks for a keyword, who sits in the top grossing chart, and how ratings and versions change. The App Store app shows this one screen at a time, which makes it slow to compare and impossible to track over weeks.
The App Store Apps actor, published by Hay Equipos on the Apify Store, turns that into rows. It searches by keyword, looks up apps by id, App Store link or bundle id, and reads Apple's top free, paid and grossing charts for iPhone, iPad and Mac, for any country and genre. It uses Apple's public iTunes Search and Lookup API and Apple's public top charts feeds, with no login, no key and no browser.
One row per app. A shortened search row (illustrative values):
{
"source": "search",
"query": "budget planner",
"position": 3,
"rank": null,
"country": "us",
"appId": 1234567890,
"bundleId": "com.example.budget",
"name": "Example Budget",
"developer": "Example Labs",
"price": 0,
"formattedPrice": "Free",
"rating": 4.6,
"ratingCount": 18250,
"contentRating": "4+",
"primaryGenre": "Finance",
"version": "3.8.1",
"currentVersionReleaseDate": "2026-09-10T16:00:00Z",
"fileSizeBytes": 98304000,
"languages": ["EN", "ES"],
"appStoreUrl": "https://apps.apple.com/us/app/example-budget/id1234567890"
}
Rows also carry developer and seller details, release date, minimum OS version, icon and screenshot links, and (unless you turn it off) the description and release notes. Chart rows have source: "chart", the chart name in query and the position in rank. Search rows put the search rank in position. Lookup rows have source: "lookup".
Inputs that return nothing, such as an unknown id or an empty chart, are listed in RUN_SUMMARY in the key value store and are not charged.
389801252 or com.example.budget.6015 Finance, 6014 Games or 6000 Business.us).curl:
curl -X POST \
"https://api.apify.com/v2/acts/pistachio_implementation~app-store-apps/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"charts": ["top-grossing-iphone"], "chartGenreId": "6015", "country": "us", "maxResultsPerChart": 25, "includeDescription": false}'
Python with apify-client:
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("pistachio_implementation/app-store-apps").call(
run_input={
"searchTerms": ["budget planner"],
"appIds": ["com.spotify.client"],
"charts": ["top-free-iphone"],
"country": "gb",
"maxResultsPerSearch": 25,
"includeDescription": False,
}
)
for app in client.dataset(run["defaultDatasetId"]).iterate_items():
where = app["rank"] or app["position"]
print(app["source"], where, app["name"], app["rating"], app["ratingCount"])
To track ranking changes, schedule the same input daily and compare position or rank across runs. Searches, lookups and charts can all be combined in one run, so a single scheduled task can cover your keywords, your competitor list and your category chart at once.
Pay per event: $0.001 per app row saved, which is $1 per 1,000 apps. No start fee and no platform usage charged on top. The top 100 grossing iPhone apps cost $0.10. Errors and apps that are not found are never charged. You can set a maximum charge per run and the actor stops cleanly when it is reached.
Please use the data in line with Apple's terms for its public App Store data.
Try it on the Apify Store: https://apify.com/pistachio_implementation/app-store-apps