app-store-similar
Find similar apps on the App Store by providing an app ID or bundle ID to discover competitors and related applications for market research.
Instructions
Get similar apps ('customers also bought') from the App Store. Returns a list of apps with:
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 |
|---|---|---|---|
| id | No | Numeric App ID (e.g., 553834731). Either this or appId must be provided. | |
| appId | No | Bundle ID (e.g., 'com.midasplayer.apps.candycrushsaga'). Either this or id must be provided. |
Implementation Reference
- src/server.js:171-174 (handler)The handler function for the "app-store-similar" tool. It takes id or appId, calls store.similar from the app-store-scraper library, and returns the results as JSON text content.async ({ id, appId }) => { const similar = await store.similar({ id, appId }); return { content: [{ type: "text", text: JSON.stringify(similar) }] }; }
- src/server.js:167-170 (schema)Input schema defined using Zod, requiring either a numeric App Store ID or bundle ID (appId).{ id: z.number().optional().describe("Numeric App ID (e.g., 553834731). Either this or appId must be provided."), appId: z.string().optional().describe("Bundle ID (e.g., 'com.midasplayer.apps.candycrushsaga'). Either this or id must be provided.") },
- src/server.js:150-175 (registration)Full registration of the "app-store-similar" tool on the MCP server, including name, description of output, input schema, and handler function.server.tool("app-store-similar", "Get similar apps ('customers also bought') from the App Store. Returns a list of apps with:\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)", { id: z.number().optional().describe("Numeric App ID (e.g., 553834731). Either this or appId must be provided."), appId: z.string().optional().describe("Bundle ID (e.g., 'com.midasplayer.apps.candycrushsaga'). Either this or id must be provided.") }, async ({ id, appId }) => { const similar = await store.similar({ id, appId }); return { content: [{ type: "text", text: JSON.stringify(similar) }] }; } );