app-store-search
Search and retrieve app details from the App Store using specific terms, filters, and country/language settings. Access IDs, descriptions, prices, developers, and categories for market research and analysis.
Instructions
Search for apps on the App Store. Returns a list of apps with the following fields:
id: App Store ID number
appId: Bundle ID (e.g. 'com.company.app')
title: App name
icon: Icon image URL
url: App Store URL
price: Price in USD
currency: Price currency code
free: Boolean indicating if app is free
description: App description
developer: Developer name
developerUrl: Developer's App Store URL
developerId: Developer's ID
genre: App category name
genreId: Category ID
released: Release date (ISO string)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two letter country code (default: us) | us |
| idsOnly | No | Skip extra lookup request. Returns array of application IDs only (default: false) | |
| lang | No | Language code for result text (default: en-us) | en-us |
| num | No | Number of results to retrieve (default: 50) | |
| page | No | Page of results to retrieve (default: 1) | |
| term | Yes | Search term (required) |
Implementation Reference
- src/server.js:64-67 (handler)The handler function that executes the app-store-search tool. It takes parameters like term, num, etc., calls store.search from the app-store-scraper library, and returns the results as JSON in a content block.async ({ term, num, page, country, lang, idsOnly }) => { const results = await store.search({ term, num, page, country, lang, idsOnly }); return { content: [{ type: "text", text: JSON.stringify(results) }] }; }
- src/server.js:56-62 (schema)Zod schema defining the input parameters for the app-store-search tool, including term (required), num, page, country, lang, and idsOnly.{ term: z.string().describe("Search term (required)"), num: z.number().default(50).describe("Number of results to retrieve (default: 50)"), page: z.number().default(1).describe("Page of results to retrieve (default: 1)"), country: z.string().default("us").describe("Two letter country code (default: us)"), lang: z.string().default("en-us").describe("Language code for result text (default: en-us)"), idsOnly: z.boolean().default(false).describe("Skip extra lookup request. Returns array of application IDs only (default: false)")
- src/server.js:39-68 (registration)Registration of the app-store-search tool using McpServer.tool(), including description, input schema, and inline handler function.server.tool("app-store-search", "Search for apps on the App Store. Returns a list of apps with the following fields:\n" + "- id: App Store ID number\n" + "- appId: Bundle ID (e.g. 'com.company.app')\n" + "- title: App name\n" + "- icon: Icon image URL\n" + "- url: App Store URL\n" + "- price: Price in USD\n" + "- currency: Price currency code\n" + "- free: Boolean indicating if app is free\n" + "- description: App description\n" + "- developer: Developer name\n" + "- developerUrl: Developer's App Store URL\n" + "- developerId: Developer's ID\n" + "- genre: App category name\n" + "- genreId: Category ID\n" + "- released: Release date (ISO string)", { term: z.string().describe("Search term (required)"), num: z.number().default(50).describe("Number of results to retrieve (default: 50)"), page: z.number().default(1).describe("Page of results to retrieve (default: 1)"), country: z.string().default("us").describe("Two letter country code (default: us)"), lang: z.string().default("en-us").describe("Language code for result text (default: en-us)"), idsOnly: z.boolean().default(false).describe("Skip extra lookup request. Returns array of application IDs only (default: false)") }, async ({ term, num, page, country, lang, idsOnly }) => { const results = await store.search({ term, num, page, country, lang, idsOnly }); return { content: [{ type: "text", text: JSON.stringify(results) }] }; } );