google-play-search
Search for apps on Google Play to retrieve details like title, developer, price, and ratings. Filter results by price, language, or country for targeted app market intelligence.
Instructions
Search for apps on Google Play. Returns a list of apps with:
title: App name
appId: Package name (e.g. 'com.company.app')
url: Play Store URL
icon: Icon image URL
developer: Developer name
developerId: Developer ID
priceText: Price display text
free: Boolean indicating if app is free
summary: Short description
scoreText: Rating display text
score: Rating (0-5)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Country code to get results from (default: us) | us |
| fullDetail | No | Include full app details in results (default: false) | |
| lang | No | Language code for result text (default: en) | en |
| num | No | Number of results to retrieve (default: 20, max: 250) | |
| price | No | Filter by price: all, free, or paid (default: all) | all |
| term | Yes | Search term to query apps |
Implementation Reference
- src/server.js:420-423 (handler)The handler function that executes the tool logic: takes input params, calls gplay.search() with them, stringifies the results, and returns them in the expected MCP content format.async ({ term, price, num, lang, country, fullDetail }) => { const results = await gplay.search({ term, price, num, lang, country, fullDetail }); return { content: [{ type: "text", text: JSON.stringify(results) }] }; }
- src/server.js:412-419 (schema)Zod schema for input validation of the google-play-search tool parameters: term (required), price, num, lang, country, fullDetail (with defaults).{ term: z.string().describe("Search term to query apps"), price: z.enum(["all", "free", "paid"]).default("all").describe("Filter by price: all, free, or paid (default: all)"), num: z.number().default(20).describe("Number of results to retrieve (default: 20, max: 250)"), lang: z.string().default("en").describe("Language code for result text (default: en)"), country: z.string().default("us").describe("Country code to get results from (default: us)"), fullDetail: z.boolean().default(false).describe("Include full app details in results (default: false)") },
- src/server.js:399-424 (registration)Full registration call for the 'google-play-search' tool using server.tool(), including tool name, description, input schema, and inline handler function.server.tool("google-play-search", "Search for apps on Google Play. Returns a list of apps with:\n" + "- title: App name\n" + "- appId: Package name (e.g. 'com.company.app')\n" + "- url: Play Store URL\n" + "- icon: Icon image URL\n" + "- developer: Developer name\n" + "- developerId: Developer ID\n" + "- priceText: Price display text\n" + "- free: Boolean indicating if app is free\n" + "- summary: Short description\n" + "- scoreText: Rating display text\n" + "- score: Rating (0-5)", { term: z.string().describe("Search term to query apps"), price: z.enum(["all", "free", "paid"]).default("all").describe("Filter by price: all, free, or paid (default: all)"), num: z.number().default(20).describe("Number of results to retrieve (default: 20, max: 250)"), lang: z.string().default("en").describe("Language code for result text (default: en)"), country: z.string().default("us").describe("Country code to get results from (default: us)"), fullDetail: z.boolean().default(false).describe("Include full app details in results (default: false)") }, async ({ term, price, num, lang, country, fullDetail }) => { const results = await gplay.search({ term, price, num, lang, country, fullDetail }); return { content: [{ type: "text", text: JSON.stringify(results) }] }; } );