Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
Google Play API
Google Play Store app search, details, reviews, permissions, data safety, and developer catalogs — one plain HTTP GET per call, paid as you go. No Play Console access, no developer account, no scraping the storefront HTML.
Base URL: https://googleplay.fetcher.sh
Authentication
Two ways to pay, same data — full mechanics in the `fetcher` skill:
# 1. Prepaid credits (recommended — get a key at https://fetcher.sh/topup
# or via POST /api/credits/topup, see the fetcher skill)
export FETCHER_API_KEY="bby_live_xxxxxxxxxxxx"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://googleplay.fetcher.sh/api/apps?search=meditation"
# 2. x402 pay-per-call — omit the header; a GET with no payment returns 402
# with machine-readable payment requirements (USDC on Base, Polygon,
# Arbitrum, Monad, or Solana). @x402/fetch signs and retries automatically.Every response is { "status": number, "message": string, "data": ... }; the HTTP status mirrors status.
Endpoints (7 — all GET, $0.003/call)
| Endpoint | What it returns |
|---|---|
/api/apps | Apps matching a keyword; price and country filters |
/api/apps/{appId} | An app's full details |
/api/apps/{appId}/reviews | An app's reviews |
/api/apps/{appId}/similar | Apps similar to a given app |
/api/apps/{appId}/permissions | An app's requested permissions |
/api/apps/{appId}/datasafety | An app's data safety disclosure |
/api/developers/{developerId} | A developer's full app catalog |
Required on search: search. Optional: price (all, free, paid), country, lang. Reviews require country; optional sort (NEWEST, RATING, HELPFULNESS).
Scenarios
Free apps only:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "search=meditation" -G \
--data-urlencode "price=free" \
"https://googleplay.fetcher.sh/api/apps"Paid apps, German storefront:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "search=photo editor" -G \
--data-urlencode "price=paid" \
--data-urlencode "country=de" \
"https://googleplay.fetcher.sh/api/apps"An app's full details, then reviews sorted by rating:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://googleplay.fetcher.sh/api/apps/com.spotify.music"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "country=us" -G \
--data-urlencode "sort=RATING" \
"https://googleplay.fetcher.sh/api/apps/com.spotify.music/reviews"Permissions and data safety disclosure:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://googleplay.fetcher.sh/api/apps/com.spotify.music/permissions"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://googleplay.fetcher.sh/api/apps/com.spotify.music/datasafety"Apps similar to a given app, and a developer's full catalog:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://googleplay.fetcher.sh/api/apps/com.spotify.music/similar"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "country=us" -G \
"https://googleplay.fetcher.sh/api/developers/Spotify+AB"MCP
{
"mcpServers": {
"google-play": {
"url": "https://googleplay.fetcher.sh/mcp",
"headers": { "Authorization": "Bearer bby_live_..." }
}
}
}Free: search_endpoints, describe_endpoint, check_balance. Paid: fetch_data (any endpoint above), topup_credits, plus the named shortcut googleplay_apps. Drop the headers block to pay per call with x402 instead — see the `fetcher` skill for the full flow.
Errors
400— missing/invalid parameter (message names it)401— unknown or rotated key402— payment required (x402 challenge) ortopup_required(credits
exhausted)
404— not a priced path- No rate limits; no refunds on upstream failures (settlement precedes
delivery)
Reference
- Full agent setup: <https://googleplay.fetcher.sh/skill.md>
- OpenAPI 3.1 contract: <https://googleplay.fetcher.sh/openapi.json>
- Condensed catalog: <https://googleplay.fetcher.sh/llms.txt>
- Payment, credits, and MCP deep dive: `fetcher` skill
- Site: <https://googleplay.fetcher.sh>

