Developers
Search Android apps, read what versions exist, and pull the file — from your own backend, or straight from an AI agent. One key, one balance, three ways in.
JSON over HTTPS with a bearer token. Search the catalogue, read an app, list the builds we hold for it, and mint a short-lived signed download URL.
A Model Context Protocol endpoint over Streamable HTTP. Point Claude Code, Cursor or any MCP client at one URL and it gets 20 catalogue tools.
One markdown file for agents that can run a shell but do not speak MCP. Drop it in, and the agent knows the whole API — including what it costs.
No SDK, no handshake, no sandbox to graduate from. Create a key, send it as a bearer token, and the catalogue answers.
/me and /categories are free, so you can prove a key works without spending anything.curl -sS "https://apkcube.com/api/v1/apps?q=whatsapp" \
-H "Authorization: Bearer $APKCUBE_API_KEY"const res = await fetch(
"https://apkcube.com/api/v1/apps?q=whatsapp",
{ headers: { Authorization: `Bearer ${process.env.APKCUBE_API_KEY}` } },
);
const { items } = await res.json();
console.log(items[0].packageName, res.headers.get("X-Credits-Remaining"));import os, requests
r = requests.get(
"https://apkcube.com/api/v1/apps",
params={"q": "whatsapp"},
headers={"Authorization": f"Bearer {os.environ['APKCUBE_API_KEY']}"},
)
print(r.json()["items"][0]["packageName"], r.headers["X-Credits-Remaining"])Credits, not tiers. You are never rate-gated into an upgrade to read one more app, and nothing here changes price without a deploy and a changelog entry — prices live in code precisely so they cannot be turned up under a running script.
| Call | Credits | Notes |
|---|---|---|
| GET /me | free | Prove a key works and read its credit balance. |
| GET /categories | free | The taxonomy you filter a search by. |
| GET /apps?q= | 1 | Search. 24 results a page, out of at most 60 matches. |
| GET /apps/{pkg} | 5 | Full record for one package. |
| GET /apps/{pkg}/versions | 5 | Every build held, newest first. |
| POST /apps/batch | 1 | Up to 25 packages in one call. Priced PER PACKAGE. |
| GET /apps/{pkg}/security | 5 | Checksum, scan verdict, signers and permissions for one build. |
| GET /apps/{pkg}/sdks | 5 | Every third-party library recognised in a build, and what bounds the answer. |
| GET /apps/{pkg}/trackers | 5 | The advertising, analytics and tracking subset of that list, counted by category. |
| GET /apps/{pkg}/protection | 5 | Whether a build is packed, and what that costs every other answer about it. |
| GET /apps/{pkg}/permissions | 5 | Every permission a build declares, described, sensitive first. |
| GET /apps/{pkg}/manifest | 5 | What the manifest and the native libraries declare, with our rules read off them. |
| GET /apps/{pkg}/raw | 10 | The stored scan record verbatim, evidence digest included. Bring your own rules. |
| GET /apps/{pkg}/signing | 5 | Which key signed which releases, and where it moved. |
| GET /apps/{pkg}/compare | 1 | What changed between two builds. |
| GET /lookup/hash/{hash} | 5 | Which build an MD5, SHA-1 or SHA-256 names. No package name needed. |
| GET /lookup/certificate/{fp} | 5 | Every package we hold that one signing key is on record for. |
| GET /developers/{slug} | 1 | One publisher's catalogue. |
| GET /charts | 1 | Hot, grossing, latest, new, editors' choice. |
| POST /apps/{pkg}/download | 10 | Mints a signed URL. The only call that hands over a file. |
Worth knowing before you build on it, rather than after.
"10,000,000+", not a number, so that is what we publish. We will not invent a figure.