For the complete documentation index, see llms.txt. This page is also available as Markdown.

Appstore

The Pullbay App Store API provides programmatic access to iOS app metadata, search, similar-app recommendations, reviews, and developer catalogs from the Apple App Store. Integrate App Store data into your applications, dashboards, and analytics pipelines without scraping or manual lookups.

Base URL: https://api.pullbay.com

Overview

The App Store service lets you:

  • Look up a single app by its numeric App ID or its Bundle ID

  • Search the App Store by keyword

  • Find apps similar to a given app

  • Fetch reviews for an app, sorted by recency or helpfulness

  • List every app published by a given developer

All endpoints are read-only GET requests against public App Store data — you don't need to own or register an app of your own.

Common Use Cases

Competitor Analysis — Pull a competitor's app metadata and reviews to track positioning, version cadence, and rating trends over time.

Sentiment Monitoring — Collect reviews on a schedule and feed the title/text fields into your own sentiment-analysis or alerting pipeline.

Market Research — Use Search Apps and Get Similar Apps together to map out a category and see how apps cluster around features and audiences.

Product Development — Mine review text for recurring feature requests and complaints to help prioritize a roadmap.

Developer Portfolio Tracking — Use Get Developer Apps to see everything a given publisher has shipped, useful for due diligence or competitive landscape work.

Endpoints

Endpoint
Description
Pagination

GET /appstore/apps

Get a single app by App ID or Bundle ID

—

GET /appstore/search

Search apps by term

page / maxItems

GET /appstore/similar

Get apps similar to a given app

—

GET /appstore/reviews

Get reviews for an app

page / maxItems

GET /appstore/developer

Get all apps published by a developer

—


Get App

Returns a single application. Provide exactly one of appId or bundleId.

Request

Parameters

Parameter
Type
Required
Default
Description

appId

string

One of appId/bundleId

—

Numeric App Store ID, 8–12 digits (e.g. 389801252)

bundleId

string

One of appId/bundleId

—

Bundle identifier, up to 255 characters (e.g. com.burbn.instagram)

country

string

No

—

2-letter storefront code. Not restricted to a fixed list — any 2-letter code is accepted.

lang

string

No

—

Language code for localized text, 2–3 letters with an optional region subtag (e.g. en, en-us)

Example

Response

Response Schema

Field
Type
Description

data

array

Array containing a single Application object

pricing.creditsCharged

number

Credits charged for this request

Credit cost: charged dynamically per request; the exact amount is always returned in pricing.creditsCharged. There is no published flat rate — read the figure from the response.


Search Apps

Search the App Store for apps matching a term.

Request

Parameters

Parameter
Type
Required
Default
Description

term

string

Yes

—

Search term, 1–255 characters

country

string

No

—

2-letter storefront code

lang

string

No

—

Language code for localized text

page

integer

No

—

Page number, 1–5. Mutually exclusive with maxItems

maxItems

integer

No

—

One-shot bulk pull, 1–200 results. Mutually exclusive with page

Example

Response

Response Schema

Field
Type
Description

data

array

pagination.page

integer, nullable

Current page number (only set when using page)

pagination.hasNextPage

boolean, nullable

Whether another page is available

pagination.cursor / pagination.offset

string, nullable

Unused by this endpoint — always null here

pricing.creditsCharged

number

Credits charged for this request

Credit cost: dynamic, returned in pricing.creditsCharged. No flat per-page or per-result rate is published — read the figure from each response.


Get Similar Apps

Returns apps similar to a given app. Provide exactly one of appId or bundleId.

Request

Parameters

Parameter
Type
Required
Default
Description

appId

string

One of appId/bundleId

—

Numeric App Store ID, 8–12 digits

bundleId

string

One of appId/bundleId

—

Bundle identifier

country

string

No

—

2-letter storefront code

lang

string

No

—

Language code for localized text

Example

Response

Response Schema

Field
Type
Description

data

array

pricing.creditsCharged

number

Credits charged for this request

Credit cost: dynamic, returned in pricing.creditsCharged.


Get Reviews

Returns reviews for one app. Provide exactly one of appId or bundleId.

Request

Parameters

Parameter
Type
Required
Default
Description

appId

string

One of appId/bundleId

—

Numeric App Store ID, 8–12 digits

bundleId

string

One of appId/bundleId

—

Bundle identifier

country

string

No

—

2-letter storefront code

sort

string

No

—

recent or helpful

page

integer

No

—

Page number, 1–10. Mutually exclusive with maxItems

maxItems

integer

No

—

One-shot bulk pull, 1–500 results. Mutually exclusive with page

Example

Response

Response Schema

Field
Type
Description

data

array

pagination.page

integer, nullable

Current page number (only set when using page)

pagination.hasNextPage

boolean, nullable

Whether another page is available

pricing.creditsCharged

number

Credits charged for this request

Credit cost: dynamic, returned in pricing.creditsCharged. No flat per-page or per-review rate is published.


Get Developer Apps

Returns the list of apps published by a single developer.

Request

Parameters

Parameter
Type
Required
Default
Description

developerId

string

Yes

—

Numeric developer ID, 8–12 digits

country

string

No

—

2-letter storefront code

Example

Response

Response Schema

Field
Type
Description

data

array

pricing.creditsCharged

number

Credits charged for this request

Credit cost: dynamic, returned in pricing.creditsCharged.


Errors

All non-2xx responses share the same envelope:

Status
Meaning

400

Bad request — missing/invalid parameters, or both appId and bundleId supplied

402

Insufficient credits

404

App, developer, or review set not found

Object Schema

Application object

Field
Type
Description

id

integer

Numeric App Store ID

appId

string

Bundle identifier

title

string

App name

url

string

App Store listing URL

description

string

App description

icon

string

Icon image URL

genres / genreIds

array

Genre names and IDs

primaryGenre / primaryGenreId

string / integer

Primary genre name and ID

contentRating

string

Age rating (e.g. 12+)

languages

array

Supported language codes

size

string

App size in bytes

requiredOsVersion

string

Minimum iOS version

released / updated

string (date-time)

Initial release and last update timestamps

releaseNotes

string

"What's New" text for the current version

version

string

Current version number

price / currency / free

number / string / boolean

Pricing info

developerId / developer

integer / string

Developer ID and name

developerUrl / developerWebsite

string

Developer's App Store page and external site

score / reviews

number / integer

All-time rating and review count

currentVersionScore / currentVersionReviews

number / integer

Rating and review count for the current version

screenshots / ipadScreenshots / appletvScreenshots

array

Screenshot URLs per device class

supportedDevices

array

Compatible device identifiers

Review object

Field
Type
Description

id

string

Review ID

date

string (date-time)

When the review was posted

userName

string

Reviewer's display name

userUrl

string

Link to the reviewer's profile

version

string

App version the review was left for

score

integer

Rating, 1–5

title

string

Review title

text

string

Review body

url

string

Permalink to the review

country

string

Storefront country the review was posted on

Note: the Review object does not include a helpful-vote count or "verified purchase" flag — only the fields listed above are returned.

Finding App IDs and Bundle IDs

  • App ID: the numeric ID in an App Store URL, e.g. https://apps.apple.com/us/app/instagram/id389801252 → 389801252.

  • Bundle ID: the package identifier shown on a developer's site or in App Store Connect, e.g. com.burbn.instagram.

  • Either ID resolves the same app — use whichever you already have on hand. Don't pass both in the same request.

Country and Language Codes

  • country accepts any 2-letter code (the schema only constrains it to exactly 2 characters) — it isn't validated against a fixed allow-list in the spec, so pass a standard ISO 3166-1 alpha-2 storefront code (us, gb, jp, de, ...).

  • lang accepts a 2–3 letter language code, optionally with a region subtag (en, en-us, pt-br) — also not restricted to a fixed list.

  • Neither parameter has a documented default in the API spec. If you omit them, behavior is determined by the underlying App Store lookup rather than a guaranteed Pullbay default — pass both explicitly if you need a predictable storefront/locale.

Python Example: Paginating Through Reviews

This example fetches reviews for an app a page at a time, stopping when pagination.hasNextPage is false or the page cap (10) is reached:

Each request is billed independently, with the charged amount reported in that response's pricing.creditsCharged — there's no separate "fetch everything in one call" endpoint, so a multi-page pull like this makes one request per page.

FAQ

How do I find an app's ID?

Visit the app's page on the Apple App Store. Look at the URL — it contains /id followed by a number. That number is the appId. For example, https://apps.apple.com/us/app/instagram/id389801252 → 389801252.

What countries are supported?

Any 2-letter storefront code is accepted by the API — it isn't restricted to a published list of supported countries.

How many reviews can I fetch in one call?

Up to 500 with maxItems, or up to 10 pages via page (page size isn't fixed by the spec). page and maxItems are mutually exclusive — use one or the other per request.

Can I filter reviews by star rating?

The API only supports sorting (recent or helpful), not server-side filtering by rating. Fetch the reviews you need and filter client-side on the score field.

What's the credit cost per request?

It's dynamic — every response includes pricing.creditsCharged with the exact amount for that call. There's no fixed published rate per endpoint or per result.

Can I export reviews to CSV?

The API returns JSON. Convert it to CSV with your language's tooling (e.g. Python's csv module) or load it directly into a BI tool.

Last updated