app-store-scraper-bun 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +212 -0
- package/dist/app.d.ts +5 -0
- package/dist/common.d.ts +20 -0
- package/dist/constants.d.ts +103 -0
- package/dist/developer.d.ts +5 -0
- package/dist/index.d.ts +251 -0
- package/dist/index.js +38880 -0
- package/dist/list.d.ts +5 -0
- package/dist/privacy.d.ts +5 -0
- package/dist/ratings.d.ts +5 -0
- package/dist/reviews.d.ts +5 -0
- package/dist/search.d.ts +5 -0
- package/dist/similar.d.ts +5 -0
- package/dist/suggest.d.ts +5 -0
- package/dist/types.d.ts +327 -0
- package/dist/version-history.d.ts +5 -0
- package/package.json +54 -0
package/README.md
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# app-store-scraper-bun
|
|
2
|
+
|
|
3
|
+
A modern, fully-typed TypeScript library for scraping public data from the Apple App Store.
|
|
4
|
+
|
|
5
|
+
[](#test-coverage)
|
|
6
|
+
[](#test-coverage)
|
|
7
|
+
[](https://www.typescriptlang.org/)
|
|
8
|
+
[](https://bun.sh/)
|
|
9
|
+
|
|
10
|
+
## Why This Rewrite?
|
|
11
|
+
|
|
12
|
+
This is a complete TypeScript rewrite of the original [app-store-scraper](https://github.com/facundoolano/app-store-scraper) library. The original library served the community well, but needed modernization:
|
|
13
|
+
|
|
14
|
+
| Aspect | Original Library | This Rewrite |
|
|
15
|
+
|--------|------------------|--------------|
|
|
16
|
+
| **Language** | JavaScript | TypeScript with full type definitions |
|
|
17
|
+
| **HTTP Client** | `request` (deprecated) | Native `fetch` API |
|
|
18
|
+
| **XML Parsing** | `xml2js` (heavy) | Lightweight custom plist parser |
|
|
19
|
+
| **HTML Parsing** | `cheerio` | `cheerio` (minimal usage) |
|
|
20
|
+
| **Runtime** | Node.js | Bun (also works with Node.js) |
|
|
21
|
+
| **Type Safety** | None | Comprehensive types for all APIs |
|
|
22
|
+
| **Dependencies** | Multiple legacy packages | Minimal modern dependencies |
|
|
23
|
+
|
|
24
|
+
### Key Benefits
|
|
25
|
+
|
|
26
|
+
- **Type Safety**: Full TypeScript support with comprehensive type definitions for all methods, options, and return types
|
|
27
|
+
- **Zero Legacy Dependencies**: No deprecated packages—uses native `fetch` and minimal modern dependencies
|
|
28
|
+
- **Faster Runtime**: Optimized for Bun with native TypeScript execution
|
|
29
|
+
- **Modern Async/Await**: Consistent Promise-based API throughout
|
|
30
|
+
- **Easy Migration**: API-compatible with the original library
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
bun add app-store-scraper-bun
|
|
36
|
+
# or
|
|
37
|
+
npm install app-store-scraper-bun
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Quick Start
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { app, search, list, collection, category } from 'app-store-scraper-bun';
|
|
44
|
+
|
|
45
|
+
// Fetch app by ID
|
|
46
|
+
const candyCrush = await app({ id: '553834731' });
|
|
47
|
+
console.log(candyCrush.title); // "Candy Crush Saga"
|
|
48
|
+
|
|
49
|
+
// Fetch app by bundle ID
|
|
50
|
+
const appByBundle = await app({ appId: 'com.midasplayer.apps.candycrushsaga' });
|
|
51
|
+
|
|
52
|
+
// Search for apps
|
|
53
|
+
const apps = await search({ term: 'puzzle games', num: 10 });
|
|
54
|
+
|
|
55
|
+
// Get top free games
|
|
56
|
+
const topGames = await list({
|
|
57
|
+
collection: collection.TOP_FREE_IOS,
|
|
58
|
+
category: category.GAMES,
|
|
59
|
+
num: 50
|
|
60
|
+
});
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## API Reference
|
|
64
|
+
|
|
65
|
+
### Methods
|
|
66
|
+
|
|
67
|
+
| Method | Description |
|
|
68
|
+
|--------|-------------|
|
|
69
|
+
| `app(options)` | Fetch detailed information about a single app by ID or bundle ID |
|
|
70
|
+
| `list(options)` | Fetch lists of apps (top free, top paid, new apps, etc.) |
|
|
71
|
+
| `search(options)` | Search for apps by keyword |
|
|
72
|
+
| `developer(options)` | Fetch all apps by a specific developer |
|
|
73
|
+
| `similar(options)` | Find apps similar to a given app |
|
|
74
|
+
| `reviews(options)` | Fetch user reviews for an app |
|
|
75
|
+
| `ratings(options)` | Fetch rating breakdown (histogram) for an app |
|
|
76
|
+
| `suggest(options)` | Get search suggestions for a term |
|
|
77
|
+
| `privacy(options)` | Fetch app privacy details (App Privacy labels) |
|
|
78
|
+
| `versionHistory(options)` | Fetch version history for an app |
|
|
79
|
+
|
|
80
|
+
### Constants
|
|
81
|
+
|
|
82
|
+
- **Collections**: `TOP_FREE_IOS`, `TOP_PAID_IOS`, `TOP_GROSSING_IOS`, `NEW_IOS`, etc.
|
|
83
|
+
- **Categories**: `GAMES`, `BUSINESS`, `EDUCATION`, `ENTERTAINMENT`, etc.
|
|
84
|
+
- **Devices**: `IPAD`, `MAC`, `ALL`
|
|
85
|
+
- **Sort Options**: `RECENT`, `HELPFUL`
|
|
86
|
+
|
|
87
|
+
## Advanced Usage
|
|
88
|
+
|
|
89
|
+
### Memoization (Caching)
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import { memoized } from 'app-store-scraper-bun';
|
|
93
|
+
|
|
94
|
+
// Create memoized instance with 5-minute cache
|
|
95
|
+
const store = memoized({ maxAge: 1000 * 60 * 5 });
|
|
96
|
+
|
|
97
|
+
// Subsequent calls with same params will use cache
|
|
98
|
+
const app1 = await store.app({ id: '553834731' });
|
|
99
|
+
const app2 = await store.app({ id: '553834731' }); // Uses cache
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Rate Limiting
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
import { search } from 'app-store-scraper-bun';
|
|
106
|
+
|
|
107
|
+
// Limit to 2 requests per second
|
|
108
|
+
const results = await search({
|
|
109
|
+
term: 'game',
|
|
110
|
+
throttle: 2
|
|
111
|
+
});
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Fetching with Ratings
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
import { app } from 'app-store-scraper-bun';
|
|
118
|
+
|
|
119
|
+
// Include ratings histogram
|
|
120
|
+
const result = await app({ id: '553834731', ratings: true });
|
|
121
|
+
console.log(result.ratings); // Total number of ratings
|
|
122
|
+
console.log(result.histogram); // { '1': 1000, '2': 500, ... }
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Type Definitions
|
|
126
|
+
|
|
127
|
+
All methods are fully typed. Key types include:
|
|
128
|
+
|
|
129
|
+
| Type | Description |
|
|
130
|
+
|------|-------------|
|
|
131
|
+
| `App` | Full app details from lookup |
|
|
132
|
+
| `ListApp` | Simplified app info from list/RSS feeds |
|
|
133
|
+
| `AppWithRatings` | App with ratings histogram |
|
|
134
|
+
| `Review` | User review data |
|
|
135
|
+
| `Suggestion` | Search suggestion |
|
|
136
|
+
| `VersionHistoryEntry` | Version history entry |
|
|
137
|
+
| `PrivacyDetails` | App privacy information |
|
|
138
|
+
|
|
139
|
+
## Project Structure
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
src/
|
|
143
|
+
├── index.ts # Main entry point with all exports
|
|
144
|
+
├── types.ts # TypeScript type definitions
|
|
145
|
+
├── constants.ts # App Store constants
|
|
146
|
+
├── common.ts # Shared utilities
|
|
147
|
+
├── app.ts # App details method
|
|
148
|
+
├── list.ts # App list method
|
|
149
|
+
├── search.ts # Search method
|
|
150
|
+
├── developer.ts # Developer apps method
|
|
151
|
+
├── similar.ts # Similar apps method
|
|
152
|
+
├── reviews.ts # Reviews method
|
|
153
|
+
├── ratings.ts # Ratings method
|
|
154
|
+
├── suggest.ts # Search suggestions method
|
|
155
|
+
├── privacy.ts # Privacy details method
|
|
156
|
+
└── version-history.ts # Version history method
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Test Coverage
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
bun test --coverage
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
| Metric | Coverage |
|
|
166
|
+
|--------|----------|
|
|
167
|
+
| **Functions** | 95.02% |
|
|
168
|
+
| **Lines** | 84.98% |
|
|
169
|
+
| **Tests** | 44 passed |
|
|
170
|
+
| **Assertions** | 1,616 |
|
|
171
|
+
|
|
172
|
+
### Per-File Coverage
|
|
173
|
+
|
|
174
|
+
| File | Functions | Lines |
|
|
175
|
+
|------|-----------|-------|
|
|
176
|
+
| src/app.ts | 100% | 100% |
|
|
177
|
+
| src/search.ts | 100% | 100% |
|
|
178
|
+
| src/constants.ts | 100% | 100% |
|
|
179
|
+
| src/developer.ts | 100% | 100% |
|
|
180
|
+
| src/list.ts | 100% | 97% |
|
|
181
|
+
| src/ratings.ts | 100% | 97% |
|
|
182
|
+
| src/similar.ts | 100% | 93% |
|
|
183
|
+
| src/reviews.ts | 100% | 87% |
|
|
184
|
+
| src/suggest.ts | 67% | 84% |
|
|
185
|
+
| src/common.ts | 64% | 76% |
|
|
186
|
+
|
|
187
|
+
## Running Tests
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Run all tests
|
|
191
|
+
bun test
|
|
192
|
+
|
|
193
|
+
# Run specific test file
|
|
194
|
+
bun test tests/app.test.ts
|
|
195
|
+
|
|
196
|
+
# Run with coverage
|
|
197
|
+
bun test --coverage
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Known Limitations
|
|
201
|
+
|
|
202
|
+
1. **Privacy & Version History**: These endpoints require extracting authentication tokens from Apple's web pages, which may break if Apple changes their page structure
|
|
203
|
+
2. **Rate Limits**: Apple may rate-limit or block requests if too many are made in a short period
|
|
204
|
+
3. **Data Accuracy**: Data comes from public App Store pages and APIs; some information may be region-specific
|
|
205
|
+
|
|
206
|
+
## Dependencies
|
|
207
|
+
|
|
208
|
+
- **cheerio**: HTML parsing for ratings extraction
|
|
209
|
+
|
|
210
|
+
## License
|
|
211
|
+
|
|
212
|
+
MIT
|
package/dist/app.d.ts
ADDED
package/dist/common.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common utilities for App Store Scraper
|
|
3
|
+
*/
|
|
4
|
+
import type { App, ITunesApp, RequestOptions } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Clean and normalize app data from iTunes API response
|
|
7
|
+
*/
|
|
8
|
+
export declare function cleanApp(app: ITunesApp): App;
|
|
9
|
+
/**
|
|
10
|
+
* Make an HTTP request with optional throttling
|
|
11
|
+
*/
|
|
12
|
+
export declare function request(url: string, headers?: Record<string, string>, requestOptions?: RequestOptions, limit?: number): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Lookup apps by ID or bundle ID
|
|
15
|
+
*/
|
|
16
|
+
export declare function lookup(ids: (string | number)[], idField?: 'id' | 'bundleId', country?: string, lang?: string, requestOptions?: RequestOptions, limit?: number): Promise<App[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Get the store ID for a country code
|
|
19
|
+
*/
|
|
20
|
+
export declare function storeId(countryCode?: string): number;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App Store Scraper Constants
|
|
3
|
+
*/
|
|
4
|
+
import type { MarketId, CountryCode } from './types.ts';
|
|
5
|
+
export declare const collection: {
|
|
6
|
+
readonly TOP_MAC: "topmacapps";
|
|
7
|
+
readonly TOP_FREE_MAC: "topfreemacapps";
|
|
8
|
+
readonly TOP_GROSSING_MAC: "topgrossingmacapps";
|
|
9
|
+
readonly TOP_PAID_MAC: "toppaidmacapps";
|
|
10
|
+
readonly NEW_IOS: "newapplications";
|
|
11
|
+
readonly NEW_FREE_IOS: "newfreeapplications";
|
|
12
|
+
readonly NEW_PAID_IOS: "newpaidapplications";
|
|
13
|
+
readonly TOP_FREE_IOS: "topfreeapplications";
|
|
14
|
+
readonly TOP_FREE_IPAD: "topfreeipadapplications";
|
|
15
|
+
readonly TOP_GROSSING_IOS: "topgrossingapplications";
|
|
16
|
+
readonly TOP_GROSSING_IPAD: "topgrossingipadapplications";
|
|
17
|
+
readonly TOP_PAID_IOS: "toppaidapplications";
|
|
18
|
+
readonly TOP_PAID_IPAD: "toppaidipadapplications";
|
|
19
|
+
};
|
|
20
|
+
export declare const category: {
|
|
21
|
+
readonly BOOKS: 6018;
|
|
22
|
+
readonly BUSINESS: 6000;
|
|
23
|
+
readonly CATALOGS: 6022;
|
|
24
|
+
readonly EDUCATION: 6017;
|
|
25
|
+
readonly ENTERTAINMENT: 6016;
|
|
26
|
+
readonly FINANCE: 6015;
|
|
27
|
+
readonly FOOD_AND_DRINK: 6023;
|
|
28
|
+
readonly GAMES: 6014;
|
|
29
|
+
readonly GAMES_ACTION: 7001;
|
|
30
|
+
readonly GAMES_ADVENTURE: 7002;
|
|
31
|
+
readonly GAMES_ARCADE: 7003;
|
|
32
|
+
readonly GAMES_BOARD: 7004;
|
|
33
|
+
readonly GAMES_CARD: 7005;
|
|
34
|
+
readonly GAMES_CASINO: 7006;
|
|
35
|
+
readonly GAMES_DICE: 7007;
|
|
36
|
+
readonly GAMES_EDUCATIONAL: 7008;
|
|
37
|
+
readonly GAMES_FAMILY: 7009;
|
|
38
|
+
readonly GAMES_MUSIC: 7011;
|
|
39
|
+
readonly GAMES_PUZZLE: 7012;
|
|
40
|
+
readonly GAMES_RACING: 7013;
|
|
41
|
+
readonly GAMES_ROLE_PLAYING: 7014;
|
|
42
|
+
readonly GAMES_SIMULATION: 7015;
|
|
43
|
+
readonly GAMES_SPORTS: 7016;
|
|
44
|
+
readonly GAMES_STRATEGY: 7017;
|
|
45
|
+
readonly GAMES_TRIVIA: 7018;
|
|
46
|
+
readonly GAMES_WORD: 7019;
|
|
47
|
+
readonly HEALTH_AND_FITNESS: 6013;
|
|
48
|
+
readonly LIFESTYLE: 6012;
|
|
49
|
+
readonly MAGAZINES_AND_NEWSPAPERS: 6021;
|
|
50
|
+
readonly MAGAZINES_ARTS: 13007;
|
|
51
|
+
readonly MAGAZINES_AUTOMOTIVE: 13006;
|
|
52
|
+
readonly MAGAZINES_WEDDINGS: 13008;
|
|
53
|
+
readonly MAGAZINES_BUSINESS: 13009;
|
|
54
|
+
readonly MAGAZINES_CHILDREN: 13010;
|
|
55
|
+
readonly MAGAZINES_COMPUTER: 13011;
|
|
56
|
+
readonly MAGAZINES_FOOD: 13012;
|
|
57
|
+
readonly MAGAZINES_CRAFTS: 13013;
|
|
58
|
+
readonly MAGAZINES_ELECTRONICS: 13014;
|
|
59
|
+
readonly MAGAZINES_ENTERTAINMENT: 13015;
|
|
60
|
+
readonly MAGAZINES_FASHION: 13002;
|
|
61
|
+
readonly MAGAZINES_HEALTH: 13017;
|
|
62
|
+
readonly MAGAZINES_HISTORY: 13018;
|
|
63
|
+
readonly MAGAZINES_HOME: 13003;
|
|
64
|
+
readonly MAGAZINES_LITERARY: 13019;
|
|
65
|
+
readonly MAGAZINES_MEN: 13020;
|
|
66
|
+
readonly MAGAZINES_MOVIES_AND_MUSIC: 13021;
|
|
67
|
+
readonly MAGAZINES_POLITICS: 13001;
|
|
68
|
+
readonly MAGAZINES_OUTDOORS: 13004;
|
|
69
|
+
readonly MAGAZINES_FAMILY: 13023;
|
|
70
|
+
readonly MAGAZINES_PETS: 13024;
|
|
71
|
+
readonly MAGAZINES_PROFESSIONAL: 13025;
|
|
72
|
+
readonly MAGAZINES_REGIONAL: 13026;
|
|
73
|
+
readonly MAGAZINES_SCIENCE: 13027;
|
|
74
|
+
readonly MAGAZINES_SPORTS: 13005;
|
|
75
|
+
readonly MAGAZINES_TEENS: 13028;
|
|
76
|
+
readonly MAGAZINES_TRAVEL: 13029;
|
|
77
|
+
readonly MAGAZINES_WOMEN: 13030;
|
|
78
|
+
readonly MEDICAL: 6020;
|
|
79
|
+
readonly MUSIC: 6011;
|
|
80
|
+
readonly NAVIGATION: 6010;
|
|
81
|
+
readonly NEWS: 6009;
|
|
82
|
+
readonly PHOTO_AND_VIDEO: 6008;
|
|
83
|
+
readonly PRODUCTIVITY: 6007;
|
|
84
|
+
readonly REFERENCE: 6006;
|
|
85
|
+
readonly SHOPPING: 6024;
|
|
86
|
+
readonly SOCIAL_NETWORKING: 6005;
|
|
87
|
+
readonly SPORTS: 6004;
|
|
88
|
+
readonly TRAVEL: 6003;
|
|
89
|
+
readonly UTILITIES: 6002;
|
|
90
|
+
readonly WEATHER: 6001;
|
|
91
|
+
};
|
|
92
|
+
export type Category = (typeof category)[keyof typeof category];
|
|
93
|
+
export declare const device: {
|
|
94
|
+
readonly IPAD: "iPadSoftware";
|
|
95
|
+
readonly MAC: "macSoftware";
|
|
96
|
+
readonly ALL: "software";
|
|
97
|
+
};
|
|
98
|
+
export declare const sort: {
|
|
99
|
+
readonly RECENT: "mostRecent";
|
|
100
|
+
readonly HELPFUL: "mostHelpful";
|
|
101
|
+
};
|
|
102
|
+
export declare const markets: Record<CountryCode, MarketId>;
|
|
103
|
+
export declare const DEFAULT_STORE_ID = 143441;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App Store Scraper - TypeScript Edition
|
|
3
|
+
*
|
|
4
|
+
* A strongly-typed TypeScript library for scraping app data from the iTunes App Store.
|
|
5
|
+
*/
|
|
6
|
+
export { app } from './app';
|
|
7
|
+
export { list } from './list';
|
|
8
|
+
export { search } from './search';
|
|
9
|
+
export { developer } from './developer';
|
|
10
|
+
export { privacy } from './privacy';
|
|
11
|
+
export { suggest } from './suggest';
|
|
12
|
+
export { similar } from './similar';
|
|
13
|
+
export { reviews } from './reviews';
|
|
14
|
+
export { ratings } from './ratings';
|
|
15
|
+
export { versionHistory } from './version-history';
|
|
16
|
+
export { collection, category, device, sort, markets } from './constants';
|
|
17
|
+
export type { App, AppWithRatings, ListApp, Review, RatingsResult, RatingsHistogram, PrivacyDetails, VersionHistoryEntry, Suggestion, Collection, Device, Sort, CountryCode, MarketId, AppOptions, ListOptions, SearchOptions, DeveloperOptions, PrivacyOptions, SuggestOptions, SimilarOptions, ReviewsOptions, RatingsOptions, VersionHistoryOptions, RequestOptions, MemoizedOptions, } from './types';
|
|
18
|
+
import { app } from './app';
|
|
19
|
+
import { list } from './list';
|
|
20
|
+
import { search } from './search';
|
|
21
|
+
import { developer } from './developer';
|
|
22
|
+
import { privacy } from './privacy';
|
|
23
|
+
import { suggest } from './suggest';
|
|
24
|
+
import { similar } from './similar';
|
|
25
|
+
import { reviews } from './reviews';
|
|
26
|
+
import { ratings } from './ratings';
|
|
27
|
+
import { versionHistory } from './version-history';
|
|
28
|
+
import type { MemoizedOptions } from './types';
|
|
29
|
+
/**
|
|
30
|
+
* Create a memoized version of all scraper methods
|
|
31
|
+
*/
|
|
32
|
+
export declare function memoized(opts?: MemoizedOptions): {
|
|
33
|
+
collection: {
|
|
34
|
+
readonly TOP_MAC: "topmacapps";
|
|
35
|
+
readonly TOP_FREE_MAC: "topfreemacapps";
|
|
36
|
+
readonly TOP_GROSSING_MAC: "topgrossingmacapps";
|
|
37
|
+
readonly TOP_PAID_MAC: "toppaidmacapps";
|
|
38
|
+
readonly NEW_IOS: "newapplications";
|
|
39
|
+
readonly NEW_FREE_IOS: "newfreeapplications";
|
|
40
|
+
readonly NEW_PAID_IOS: "newpaidapplications";
|
|
41
|
+
readonly TOP_FREE_IOS: "topfreeapplications";
|
|
42
|
+
readonly TOP_FREE_IPAD: "topfreeipadapplications";
|
|
43
|
+
readonly TOP_GROSSING_IOS: "topgrossingapplications";
|
|
44
|
+
readonly TOP_GROSSING_IPAD: "topgrossingipadapplications";
|
|
45
|
+
readonly TOP_PAID_IOS: "toppaidapplications";
|
|
46
|
+
readonly TOP_PAID_IPAD: "toppaidipadapplications";
|
|
47
|
+
};
|
|
48
|
+
category: {
|
|
49
|
+
readonly BOOKS: 6018;
|
|
50
|
+
readonly BUSINESS: 6000;
|
|
51
|
+
readonly CATALOGS: 6022;
|
|
52
|
+
readonly EDUCATION: 6017;
|
|
53
|
+
readonly ENTERTAINMENT: 6016;
|
|
54
|
+
readonly FINANCE: 6015;
|
|
55
|
+
readonly FOOD_AND_DRINK: 6023;
|
|
56
|
+
readonly GAMES: 6014;
|
|
57
|
+
readonly GAMES_ACTION: 7001;
|
|
58
|
+
readonly GAMES_ADVENTURE: 7002;
|
|
59
|
+
readonly GAMES_ARCADE: 7003;
|
|
60
|
+
readonly GAMES_BOARD: 7004;
|
|
61
|
+
readonly GAMES_CARD: 7005;
|
|
62
|
+
readonly GAMES_CASINO: 7006;
|
|
63
|
+
readonly GAMES_DICE: 7007;
|
|
64
|
+
readonly GAMES_EDUCATIONAL: 7008;
|
|
65
|
+
readonly GAMES_FAMILY: 7009;
|
|
66
|
+
readonly GAMES_MUSIC: 7011;
|
|
67
|
+
readonly GAMES_PUZZLE: 7012;
|
|
68
|
+
readonly GAMES_RACING: 7013;
|
|
69
|
+
readonly GAMES_ROLE_PLAYING: 7014;
|
|
70
|
+
readonly GAMES_SIMULATION: 7015;
|
|
71
|
+
readonly GAMES_SPORTS: 7016;
|
|
72
|
+
readonly GAMES_STRATEGY: 7017;
|
|
73
|
+
readonly GAMES_TRIVIA: 7018;
|
|
74
|
+
readonly GAMES_WORD: 7019;
|
|
75
|
+
readonly HEALTH_AND_FITNESS: 6013;
|
|
76
|
+
readonly LIFESTYLE: 6012;
|
|
77
|
+
readonly MAGAZINES_AND_NEWSPAPERS: 6021;
|
|
78
|
+
readonly MAGAZINES_ARTS: 13007;
|
|
79
|
+
readonly MAGAZINES_AUTOMOTIVE: 13006;
|
|
80
|
+
readonly MAGAZINES_WEDDINGS: 13008;
|
|
81
|
+
readonly MAGAZINES_BUSINESS: 13009;
|
|
82
|
+
readonly MAGAZINES_CHILDREN: 13010;
|
|
83
|
+
readonly MAGAZINES_COMPUTER: 13011;
|
|
84
|
+
readonly MAGAZINES_FOOD: 13012;
|
|
85
|
+
readonly MAGAZINES_CRAFTS: 13013;
|
|
86
|
+
readonly MAGAZINES_ELECTRONICS: 13014;
|
|
87
|
+
readonly MAGAZINES_ENTERTAINMENT: 13015;
|
|
88
|
+
readonly MAGAZINES_FASHION: 13002;
|
|
89
|
+
readonly MAGAZINES_HEALTH: 13017;
|
|
90
|
+
readonly MAGAZINES_HISTORY: 13018;
|
|
91
|
+
readonly MAGAZINES_HOME: 13003;
|
|
92
|
+
readonly MAGAZINES_LITERARY: 13019;
|
|
93
|
+
readonly MAGAZINES_MEN: 13020;
|
|
94
|
+
readonly MAGAZINES_MOVIES_AND_MUSIC: 13021;
|
|
95
|
+
readonly MAGAZINES_POLITICS: 13001;
|
|
96
|
+
readonly MAGAZINES_OUTDOORS: 13004;
|
|
97
|
+
readonly MAGAZINES_FAMILY: 13023;
|
|
98
|
+
readonly MAGAZINES_PETS: 13024;
|
|
99
|
+
readonly MAGAZINES_PROFESSIONAL: 13025;
|
|
100
|
+
readonly MAGAZINES_REGIONAL: 13026;
|
|
101
|
+
readonly MAGAZINES_SCIENCE: 13027;
|
|
102
|
+
readonly MAGAZINES_SPORTS: 13005;
|
|
103
|
+
readonly MAGAZINES_TEENS: 13028;
|
|
104
|
+
readonly MAGAZINES_TRAVEL: 13029;
|
|
105
|
+
readonly MAGAZINES_WOMEN: 13030;
|
|
106
|
+
readonly MEDICAL: 6020;
|
|
107
|
+
readonly MUSIC: 6011;
|
|
108
|
+
readonly NAVIGATION: 6010;
|
|
109
|
+
readonly NEWS: 6009;
|
|
110
|
+
readonly PHOTO_AND_VIDEO: 6008;
|
|
111
|
+
readonly PRODUCTIVITY: 6007;
|
|
112
|
+
readonly REFERENCE: 6006;
|
|
113
|
+
readonly SHOPPING: 6024;
|
|
114
|
+
readonly SOCIAL_NETWORKING: 6005;
|
|
115
|
+
readonly SPORTS: 6004;
|
|
116
|
+
readonly TRAVEL: 6003;
|
|
117
|
+
readonly UTILITIES: 6002;
|
|
118
|
+
readonly WEATHER: 6001;
|
|
119
|
+
};
|
|
120
|
+
device: {
|
|
121
|
+
readonly IPAD: "iPadSoftware";
|
|
122
|
+
readonly MAC: "macSoftware";
|
|
123
|
+
readonly ALL: "software";
|
|
124
|
+
};
|
|
125
|
+
sort: {
|
|
126
|
+
readonly RECENT: "mostRecent";
|
|
127
|
+
readonly HELPFUL: "mostHelpful";
|
|
128
|
+
};
|
|
129
|
+
markets: Record<string, number>;
|
|
130
|
+
app: (opts: import("./types").AppOptions) => Promise<import("./types").App | import("./types").AppWithRatings>;
|
|
131
|
+
list: (opts?: import("./types").ListOptions | undefined) => Promise<import("./types").App[] | import("./types").ListApp[]>;
|
|
132
|
+
search: (opts: import("./types").SearchOptions) => Promise<string[] | import("./types").App[]>;
|
|
133
|
+
developer: (opts: import("./types").DeveloperOptions) => Promise<import("./types").App[]>;
|
|
134
|
+
privacy: (opts: import("./types").PrivacyOptions) => Promise<import("./types").PrivacyDetails>;
|
|
135
|
+
suggest: (opts: import("./types").SuggestOptions) => Promise<import("./types").Suggestion[]>;
|
|
136
|
+
similar: (opts: import("./types").SimilarOptions) => Promise<import("./types").App[]>;
|
|
137
|
+
reviews: (opts: import("./types").ReviewsOptions) => Promise<import("./types").Review[]>;
|
|
138
|
+
ratings: (opts: import("./types").RatingsOptions) => Promise<import("./types").RatingsResult>;
|
|
139
|
+
versionHistory: (opts: import("./types").VersionHistoryOptions) => Promise<import("./types").VersionHistoryEntry[]>;
|
|
140
|
+
};
|
|
141
|
+
declare const _default: {
|
|
142
|
+
app: typeof app;
|
|
143
|
+
list: typeof list;
|
|
144
|
+
search: typeof search;
|
|
145
|
+
developer: typeof developer;
|
|
146
|
+
privacy: typeof privacy;
|
|
147
|
+
suggest: typeof suggest;
|
|
148
|
+
similar: typeof similar;
|
|
149
|
+
reviews: typeof reviews;
|
|
150
|
+
ratings: typeof ratings;
|
|
151
|
+
versionHistory: typeof versionHistory;
|
|
152
|
+
collection: {
|
|
153
|
+
readonly TOP_MAC: "topmacapps";
|
|
154
|
+
readonly TOP_FREE_MAC: "topfreemacapps";
|
|
155
|
+
readonly TOP_GROSSING_MAC: "topgrossingmacapps";
|
|
156
|
+
readonly TOP_PAID_MAC: "toppaidmacapps";
|
|
157
|
+
readonly NEW_IOS: "newapplications";
|
|
158
|
+
readonly NEW_FREE_IOS: "newfreeapplications";
|
|
159
|
+
readonly NEW_PAID_IOS: "newpaidapplications";
|
|
160
|
+
readonly TOP_FREE_IOS: "topfreeapplications";
|
|
161
|
+
readonly TOP_FREE_IPAD: "topfreeipadapplications";
|
|
162
|
+
readonly TOP_GROSSING_IOS: "topgrossingapplications";
|
|
163
|
+
readonly TOP_GROSSING_IPAD: "topgrossingipadapplications";
|
|
164
|
+
readonly TOP_PAID_IOS: "toppaidapplications";
|
|
165
|
+
readonly TOP_PAID_IPAD: "toppaidipadapplications";
|
|
166
|
+
};
|
|
167
|
+
category: {
|
|
168
|
+
readonly BOOKS: 6018;
|
|
169
|
+
readonly BUSINESS: 6000;
|
|
170
|
+
readonly CATALOGS: 6022;
|
|
171
|
+
readonly EDUCATION: 6017;
|
|
172
|
+
readonly ENTERTAINMENT: 6016;
|
|
173
|
+
readonly FINANCE: 6015;
|
|
174
|
+
readonly FOOD_AND_DRINK: 6023;
|
|
175
|
+
readonly GAMES: 6014;
|
|
176
|
+
readonly GAMES_ACTION: 7001;
|
|
177
|
+
readonly GAMES_ADVENTURE: 7002;
|
|
178
|
+
readonly GAMES_ARCADE: 7003;
|
|
179
|
+
readonly GAMES_BOARD: 7004;
|
|
180
|
+
readonly GAMES_CARD: 7005;
|
|
181
|
+
readonly GAMES_CASINO: 7006;
|
|
182
|
+
readonly GAMES_DICE: 7007;
|
|
183
|
+
readonly GAMES_EDUCATIONAL: 7008;
|
|
184
|
+
readonly GAMES_FAMILY: 7009;
|
|
185
|
+
readonly GAMES_MUSIC: 7011;
|
|
186
|
+
readonly GAMES_PUZZLE: 7012;
|
|
187
|
+
readonly GAMES_RACING: 7013;
|
|
188
|
+
readonly GAMES_ROLE_PLAYING: 7014;
|
|
189
|
+
readonly GAMES_SIMULATION: 7015;
|
|
190
|
+
readonly GAMES_SPORTS: 7016;
|
|
191
|
+
readonly GAMES_STRATEGY: 7017;
|
|
192
|
+
readonly GAMES_TRIVIA: 7018;
|
|
193
|
+
readonly GAMES_WORD: 7019;
|
|
194
|
+
readonly HEALTH_AND_FITNESS: 6013;
|
|
195
|
+
readonly LIFESTYLE: 6012;
|
|
196
|
+
readonly MAGAZINES_AND_NEWSPAPERS: 6021;
|
|
197
|
+
readonly MAGAZINES_ARTS: 13007;
|
|
198
|
+
readonly MAGAZINES_AUTOMOTIVE: 13006;
|
|
199
|
+
readonly MAGAZINES_WEDDINGS: 13008;
|
|
200
|
+
readonly MAGAZINES_BUSINESS: 13009;
|
|
201
|
+
readonly MAGAZINES_CHILDREN: 13010;
|
|
202
|
+
readonly MAGAZINES_COMPUTER: 13011;
|
|
203
|
+
readonly MAGAZINES_FOOD: 13012;
|
|
204
|
+
readonly MAGAZINES_CRAFTS: 13013;
|
|
205
|
+
readonly MAGAZINES_ELECTRONICS: 13014;
|
|
206
|
+
readonly MAGAZINES_ENTERTAINMENT: 13015;
|
|
207
|
+
readonly MAGAZINES_FASHION: 13002;
|
|
208
|
+
readonly MAGAZINES_HEALTH: 13017;
|
|
209
|
+
readonly MAGAZINES_HISTORY: 13018;
|
|
210
|
+
readonly MAGAZINES_HOME: 13003;
|
|
211
|
+
readonly MAGAZINES_LITERARY: 13019;
|
|
212
|
+
readonly MAGAZINES_MEN: 13020;
|
|
213
|
+
readonly MAGAZINES_MOVIES_AND_MUSIC: 13021;
|
|
214
|
+
readonly MAGAZINES_POLITICS: 13001;
|
|
215
|
+
readonly MAGAZINES_OUTDOORS: 13004;
|
|
216
|
+
readonly MAGAZINES_FAMILY: 13023;
|
|
217
|
+
readonly MAGAZINES_PETS: 13024;
|
|
218
|
+
readonly MAGAZINES_PROFESSIONAL: 13025;
|
|
219
|
+
readonly MAGAZINES_REGIONAL: 13026;
|
|
220
|
+
readonly MAGAZINES_SCIENCE: 13027;
|
|
221
|
+
readonly MAGAZINES_SPORTS: 13005;
|
|
222
|
+
readonly MAGAZINES_TEENS: 13028;
|
|
223
|
+
readonly MAGAZINES_TRAVEL: 13029;
|
|
224
|
+
readonly MAGAZINES_WOMEN: 13030;
|
|
225
|
+
readonly MEDICAL: 6020;
|
|
226
|
+
readonly MUSIC: 6011;
|
|
227
|
+
readonly NAVIGATION: 6010;
|
|
228
|
+
readonly NEWS: 6009;
|
|
229
|
+
readonly PHOTO_AND_VIDEO: 6008;
|
|
230
|
+
readonly PRODUCTIVITY: 6007;
|
|
231
|
+
readonly REFERENCE: 6006;
|
|
232
|
+
readonly SHOPPING: 6024;
|
|
233
|
+
readonly SOCIAL_NETWORKING: 6005;
|
|
234
|
+
readonly SPORTS: 6004;
|
|
235
|
+
readonly TRAVEL: 6003;
|
|
236
|
+
readonly UTILITIES: 6002;
|
|
237
|
+
readonly WEATHER: 6001;
|
|
238
|
+
};
|
|
239
|
+
device: {
|
|
240
|
+
readonly IPAD: "iPadSoftware";
|
|
241
|
+
readonly MAC: "macSoftware";
|
|
242
|
+
readonly ALL: "software";
|
|
243
|
+
};
|
|
244
|
+
sort: {
|
|
245
|
+
readonly RECENT: "mostRecent";
|
|
246
|
+
readonly HELPFUL: "mostHelpful";
|
|
247
|
+
};
|
|
248
|
+
markets: Record<string, number>;
|
|
249
|
+
memoized: typeof memoized;
|
|
250
|
+
};
|
|
251
|
+
export default _default;
|