Open source ASO tool and keyword rank tracker for the Apple App Store and Google Play. Self-host with Docker, or use the hosted service. MCP server built in.
The project's README from github.com/AsoBeast/asobeast. As one markdown file: README.md.
AsoBeast is an open source App Store Optimization (ASO) tool and keyword rank tracker for the Apple App Store and Google Play.
Use the hosted service at asobeast.com, or self-host the open source edition on your own server.
Website · Quickstart · Self-host · MCP server · API · Support · Changelog
AsoBeast is an App Store Optimization (ASO) tool and keyword rank tracker for the Apple App Store and Google Play. It imports a listing, tracks keyword rankings daily to a depth of 200, watches competitors, reviews and metadata, and turns that history into a prioritized queue of ASO work. This repository is the free, open source edition that you run on your own server, and the hosted service at asobeast.com runs the same code.
Every store request runs on the machine hosting AsoBeast as an ordinary public search or page request, so Apple and Google see each tracked phrase the way they see any search. You sign up with no ASO vendor, buy no API key, and share your keyword list with nobody. Beyond those store requests, your data stays in your deployment unless you explicitly enable an outbound integration such as webhook alerts, email, OpenAI assistance, Apple Ads search popularity or store status updates.
AsoBeast is built for people who ship apps and want their ASO data to stay theirs: indie developers, small studios and agencies tracking a handful of apps across several storefronts. It fits if you want ASO tracking without a per keyword subscription, need the data on your own infrastructure, or want to query your ASO history from an agent or a script instead of a dashboard. It collects from the public store endpoints at a deliberately modest rate, so it suits a portfolio measured in apps rather than hundreds. See who AsoBeast is for.
us and de are markets on the same listing rather than two subscriptions.| Feature | What it does |
|---|---|
| Two live stores | Import an Apple App Store or Google Play URL, snapshot the metadata, refresh on demand and diff every field |
| Keyword tracking | Track any validated storefront, see daily positions and history, bulk edit, and keep the private 100 character iOS keyword field by hand |
| Market suggestions | Reads the languages your listing ships and suggests the storefronts that read them, with the daily request cost, then seeds a chosen market with the keywords of its own listing |
| Rank checks to depth 200 | One search per keyword and market serves your app and all of its competitors, so competitor tracking costs no extra requests |
| Transparent scoring | Popularity and difficulty with provenance and confidence, plus opportunity derived on read |
| SERP and category intelligence | Retained SERP snapshots, volatility, entrants and movers, and top charts by country and category with movement, trending apps and chart follows |
| Competitor discovery | Find competitors from live search results, compare listings and find keyword gaps |
| Reviews and change detection | Sync reviews and rating history, draft replies to them with AI and post them to the store, mine review language for keyword ideas, and detect owned and competitor metadata changes |
| Store funnel | Optionally connect an App Store Connect key or a Google Play service account and see each store's own funnel by market beside your rankings and every listing change: impressions, product page views, Get taps and conversion with history back to 2024 on the App Store, store listing visitors, acquisitions and installs per search term on Google Play |
| ASO audit and metadata workbench | A deterministic audit rubric with history, store metadata lints and strategic keyword buckets |
| ASO Action Center | Seventeen deterministic rules produce recommendations with a priority, an estimated impact, the evidence behind them, a deep link, a full lifecycle and a verified outcome |
| Portfolio analysis | Group linked listings across stores and countries, compare group visibility and generate weekly digests |
| Alerts | Signed webhooks or SMTP email for rank, SERP, metadata, review and new action events, with resumable batched delivery |
| MCP server | 37 read tools, plus 7 opt-in tools that change keywords, competitors, actions and annotations, over stdio or a remote endpoint, so Claude Code, Claude Desktop, Cursor, VS Code and other MCP clients can work with your instance |
A guide for each of these lives in the documentation.
Runs the published images on Railway with PostgreSQL and Redis, and generates every secret for you. See deploy on Railway.
You need Docker with Compose, roughly 2 GB of memory and 5 GB of disk.
git clone https://github.com/AsoBeast/asobeast.git
cd asobeast
printf 'POSTGRES_PASSWORD=%s\nAUTH_SECRET=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
chmod 600 .env
docker compose up --build -d --wait
Open http://localhost:3001 and create the owner account. Registration closes automatically once it exists. Safari does not keep the session cookie over plain HTTP, so use Chrome or Firefox for a local evaluation, or see signing in returns to the sign in form. Import a store URL and keyword tracking starts immediately.
Prefer published images to a build? docker-compose.pull.yml runs the same stack from GHCR without a clone:
curl -fsSLO https://raw.githubusercontent.com/AsoBeast/asobeast/main/docker-compose.pull.yml
printf 'POSTGRES_PASSWORD=%s\nAUTH_SECRET=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
chmod 600 .env
docker compose -f docker-compose.pull.yml up -d --wait
Full walkthrough: quickstart. Image tags, pinning and upgrades: run a published release.
Every instance serves a Model Context Protocol endpoint. Create a personal API token on the Integrations page, then point Claude Code at it:
claude mcp add --transport http asobeast https://your-host/api/backend/mcp --header "Authorization: Bearer asob_…"
Ask it which keywords dropped this week, which competitor entered the top 10 or what the Action Center wants done first. Configuration for Claude Desktop, Cursor, VS Code, Gemini CLI, Windsurf and the local stdio server is in set up the MCP server, and MCP recipes has prompts to start from.
| AsoBeast (self-hosted) | Subscription ASO platforms | |
|---|---|---|
| Where store requests run | Your machine | Their infrastructure |
| Who sees your keyword list | You | The vendor |
| Cost model | Your hosting bill | Per seat, per app or per keyword |
| Keyword history | Yours, retained on your terms | Ends when the subscription does |
| Score methodology | Published, versioned, inspectable | Usually proprietary |
| Extending it | Fork it, it is AGPL-3.0 | File a feature request |
A hosted AsoBeast is a separate product built from this same repository. Self-hosted installations get every feature.
pnpm and Turborepo, TypeScript strict throughout, NestJS, Prisma, PostgreSQL 18, BullMQ, Redis 8, Next.js with Tailwind, Docker Compose.
Contributor setup, architecture and the module map: local development and how AsoBeast works.
Every environment variable, with defaults and what each one changes, is documented in the configuration reference. apps/api/.env.example and apps/web/.env.example are the authoritative lists in the repository.
A default installation needs two variables, POSTGRES_PASSWORD and AUTH_SECRET. Everything else has a working default.
App Store Optimization is the practice of improving how an app ranks and converts in App Store and Google Play search. It covers keyword targeting in indexed metadata fields, competitor positioning, ratings and reviews, and category performance.
No. AsoBeast reads public store data, so you can track any app including your competitors, and it never needs an ASO vendor API key. Connecting an App Store Connect key or a Google Play service account is optional: it adds the store's own visits, downloads and conversion for your apps, and the key is sealed at rest. See the store funnel.
Both the Apple App Store and Google Play. Apple indexes a title, a subtitle and a private 100 character keyword field. Google Play indexes a title, an 80 character short description and a long description, so subtitle and keyword field stay Apple only concepts. See stores.
Once a day by default, on a UTC cron you control. Rank checks capture position to a depth of 200, and a position of null means checked and not found within that depth rather than zero. See positions.
Yes. An app is imported once, and keyword tracking carries its own storefront, so one listing can track keywords in many markets at once. Each added market multiplies daily store requests, and the settings page shows a budget card that estimates the fan-out. See countries and markets.
Only the store requests themselves, which send each tracked phrase to the App Store or Google Play as an ordinary search, from your own address or through a proxy provider if you configure one. Beyond those, webhook alerts, SMTP email, OpenAI assistance, Apple Ads search popularity and the store status poll are the only outbound integrations, and each is off until configured. There is no telemetry. See what leaves your deployment.
Yes. AsoBeast ships a Model Context Protocol server with 37 read tools, available as a local stdio process or as a remote endpoint on your instance. Every connection needs a personal API token and reads by default. Seven more tools that change keywords, competitors, actions and annotations are listed only to a token you give the write scope. See MCP.
The software is, entirely. It is AGPL-3.0 with no open core and no feature held back for a commercial edition, so a self-hosted installation has everything. A hosted service built from this same repository is charged for the hosting it uses, never for features. If you run a modified version as a network service, the AGPL asks you to offer that modified source to its users.
| Topic | Link |
|---|---|
| Quickstart and first import | docs.asobeast.com/quickstart |
| Self-hosting with Docker Compose | install/docker-compose |
| Configuration reference | configuration/reference |
| Concepts: scoring, positions, countries | concepts |
| Guides: keywords, competitors, alerts | guides |
| Operations: backups, restore, upgrades | operations |
| Troubleshooting and support | support |
| API reference and OpenAPI | api-reference |
| MCP tools | mcp/tools |
| The whole site for an LLM | llms.txt and llms-full.txt |
Worth knowing before you rely on it:
The 1.x line is current, and the changelog names the latest release. What remains open:
Release policy and the 1.x compatibility promise: upgrade and roll back.
Pull requests are welcome. Read CONTRIBUTING.md first for the commit conventions, the compatibility promise and how the test suites are run. Bugs, questions and feature requests go to GitHub issues. Security reports go through SECURITY.md, never a public issue.
This repository's source code is available under the AGPL-3.0 license.
Open source ASO tool and keyword rank tracker for the Apple App Store and Google Play. Self-host with Docker, or use the hosted service. MCP server built in.