How to export App Store top charts and search results to a spreadsheet

# mobile# aso# api# python
How to export App Store top charts and search results to a spreadsheetHay Equipos

Search 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.

What you get back

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"
}
Enter fullscreen mode Exit fullscreen mode

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.

Step by step in the Apify Console

  1. Open the actor on the Apify Store and start it in the Console.
  2. Fill any mix of the three inputs:
    • Search terms, one per line.
    • App ids, App Store URLs or bundle ids, for example 389801252 or com.example.budget.
    • Top charts, such as top grossing iPhone or top free Mac.
  3. Optionally add a Chart genre id, for example 6015 Finance, 6014 Games or 6000 Business.
  4. Set the Country (two letter code, default us).
  5. Adjust Results per search term (up to 200, default 50), Apps per chart (up to 100) and Maximum app rows (default 1,000).
  6. Click Start and download the dataset as CSV, Excel, JSON or HTML.

Calling it from code

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}'
Enter fullscreen mode Exit fullscreen mode

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"])
Enter fullscreen mode Exit fullscreen mode

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.

Pricing

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.

Limits and what it does not do

  • Apple publishes at most 100 apps per chart and returns at most 200 apps per search term.
  • Apple allows about 20 requests a minute from one address, so calls are spaced about 3 seconds apart. One search or one batch of 100 lookups is one call; a chart is two. Large runs take minutes.
  • Search order follows Apple's search API, which is close to, but not always identical to, what the App Store shows on a phone.
  • Ratings are the chosen country store's ratings, as Apple reports them.
  • No review text. Use a reviews tool for that.
  • No Google Play. This actor covers the Apple App Store only.
  • It is an independent tool and is not affiliated with Apple.

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