{
  "markdown": "# google-data-mcp\n\n<!-- mcp-name: io.github.ducnhd/google-data-mcp -->\n\n[![PyPI](https://img.shields.io/pypi/v/google-data-mcp)](https://pypi.org/project/google-data-mcp/)\n\nAn MCP server for four Google data surfaces that answer to plain HTTP — **no API key, no browser,\nno scraping service**:\n\n| Tool | What it returns |\n|---|---|\n| `google_trends_interest` | Interest over time for one keyword (0–100, weekly or hourly points) |\n| `google_trends_compare` | Up to 5 keywords in ONE request, so the values *are* comparable |\n| `google_trends_trending` | What is trending right now in a country |\n| `youtube_listing` | A channel's Shorts, a channel's videos, or search results |\n| `google_ads_advertisers` | Advertisers in the Ads Transparency Center, by name |\n| `google_ads_creatives` | Every ad an advertiser runs — format, preview URL, first/last shown |\n| `google_play_reviews` | App reviews — rating, text, date, version, developer reply |\n\n## Read this before you install\n\n**Everything leaves from your machine's IP, and Google's per-IP budget accumulates over hours.**\nThis is not a caveat buried at the bottom; it is the main thing that decides whether this server is\nright for your job.\n\nMeasured: an unpaced burst was rate-limited at request 93, and after roughly 130 *paced* requests\nspread over hours the same address was refused on the first request of a fresh session. While\nwriting this server, both the author's IPs — a home connection and a datacenter VPS — ended the day\nrefused by Google Trends.\n\nSo this server caches every result on disk (`~/.cache/google-data-mcp`) and paces its requests. That\nis enough for **interactive use**: asking an agent a handful of questions, exploring a topic,\nchecking a competitor. It is **not** enough for bulk work, and no amount of local code can make one\nIP behave like many.\n\nIf you need volume, the same clients run behind rotating proxies as Apify Actors:\n[Google Trends](https://apify.com/leonguyen2808/google-trends-cached) ·\n[YouTube](https://apify.com/leonguyen2808/youtube-shorts-scraper) ·\n[Ads Transparency](https://apify.com/leonguyen2808/google-ads-transparency).\n\n## What is deliberately missing\n\n**YouTube transcripts.** They look available — the watch page still lists caption tracks — but\n`api/timedtext` returns zero bytes and `/youtubei/v1/get_transcript` answers `Precondition check\nfailed` even when sent the page's own `INNERTUBE_CONTEXT` and `visitorData`, and the ANDROID and IOS\nplayer clients are refused the same way. A transcript tool here would be a promise this server\ncannot keep, so there isn't one.\n\n## Install\n\n```bash\npipx install google-data-mcp\n# or: pip install google-data-mcp\n# or, without installing anything: uvx google-data-mcp\n```\n\nThen register it with your MCP client. For Claude Code:\n\n```bash\nclaude mcp add google-data -- google-data-mcp\n```\n\nOr by hand, in an MCP client config:\n\n```json\n{\n  \"mcpServers\": {\n    \"google-data\": {\n      \"command\": \"google-data-mcp\"\n    }\n  }\n}\n```\n\n## Notes on the data\n\n* **Trends values are relative within a single request.** Two separate `google_trends_interest`\n  calls are not comparable to each other; that is what `google_trends_compare` is for. Google caps a\n  comparison at 5 terms and silently drops a 6th, so a 6th is refused rather than quietly ignored.\n* **Play reviews differ per locale.** Each `hl`/`gl` pair returns a *different* set of reviews — six\n  locales gave 120 unique reviews of the same app. Vary them to widen coverage rather than paging\n  deeper in one language.\n* **Reviewer identity is omitted by default.** The records carry an author name, avatar and Google\n  account id; rating, text, date and version answer product questions without them. Set\n  `include_author` if you genuinely need the name.\n* **Zero ads is a real answer.** Google keeps advertisers whose ads have stopped running and still\n  reports a count for them, so an empty `ads` list with a non-zero declared count is information,\n  not a failure.\n* `searchVolume` on trending terms is Google's own rounded bucket, not a precise count.\n\n## Legal\n\nThese are public pages, but none of them has an official public API and each platform's Terms of\nService restrict automated access. You are responsible for how you use the output. No personal data\nis collected by default.\n\n## Development\n\n```bash\npython -m venv .venv && .venv/bin/pip install -e .\n.venv/bin/python -m google_data_mcp        # speaks MCP over stdio\n```\n\nEach client is plain standard library and can be exercised on its own, which is the fastest way to\ncheck whether Google changed something:\n\n```bash\n.venv/bin/python -c \"from google_data_mcp.play import PlayClient; print(len(PlayClient().reviews('com.spotify.music', limit=40)))\"\n```\n",
  "bytes": 4733,
  "sha": "0a58ef9414fa71161276a8a6d995551b90f7fe58b32cde63cc263e3d6d867eed",
  "repo_slug": "ducnhd/google-data-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_ducnhd_google_data_mcp_21fe56d4/readme"
}