URL base: https://apiapk.org/api/v1. Registe-se, crie uma chave de API na sua conta e envie sua primeira solicitação:
Descrição da API legível por máquina: OpenAPI 3.1 · coleção do Postman — importe no Postman, Insomnia ou em um gerador de clientes (openapi-generator) e obtenha um SDK pronto para sua linguagem.
curl -H "X-API-Key: SUA_CHAVE" "https://apiapk.org/api/v1/app?id=com.whatsapp"
Os dados cobrem mais de 4 milhões de apps do Google Play da loja dos EUA em inglês (de outro país se o app não estiver nos EUA), atualizados toda noite. Apps que somem da loja continuam na base com os últimos dados.
Toda solicitação, exceto /v1/health, deve incluir a chave de API em um cabeçalho:
X-API-Key: ak_live_…
Também aceito: Authorization: Bearer …. Não é permitido passar a chave nos parâmetros da URL: ela iria parar nos logs e no histórico do navegador.
Cada chamada custa 0–3 créditos conforme o endpoint, independentemente do número de linhas na resposta (até 100); a chamada em lote apps custa 1 crédito por app. Primeiro são usados os créditos do plano do mês, depois o saldo pré-pago. Se a requisição falhar do nosso lado, os créditos são devolvidos. Planos e pacotes
| Cabeçalho | Significado |
|---|---|
X-Credits-Cost | créditos que esta solicitação custou |
X-Credits-Remaining | créditos restantes (plano + saldo) |
X-Cache | HIT — servido do cache (mais rápido), MISS — consulta nova ao índice |
X-RateLimit-Limit / -Remaining | o limite por minuto da chave e quanto resta |
X-Plan | free | pro | scale | business |
Seus créditos restantes também aparecem no campo _credits de cada resposta e em /v1/account (grátis).
Toda resposta tem o campo ok. Listas contêm results, total, page, per, pages. Erro: ok = false, error é a explicação, code é um código legível por máquina. Datas em ISO 8601 UTC.
{ "ok": true, "app": { "id": "com.whatsapp", "title": "WhatsApp", "installs": { "label": "10,000,000,000+", "min": 10000000000, "real": 12445120489 }, … },
"_credits": { "cost": 1, "plan_remaining": 1999, "balance": 0, "available": 1999, "cached": false } }
{ "ok": false, "code": "insufficient_credits", "error": "Not enough credits: this call costs 2, you have 1. …" }
| HTTP | code | Quando |
|---|---|---|
| 400 | invalid_param, invalid_request | parâmetro inválido ou ausente |
| 401 | missing_api_key, invalid_api_key | sem chave, ou a chave foi revogada |
| 402 | insufficient_credits | créditos insuficientes — recarregue ou mude de plano |
| 403 | account_blocked, plan_required | a conta está bloqueada ou o endpoint exige um plano superior |
| 404 | not_found | o app ou desenvolvedor não está na base, ou o endpoint não existe |
| 429 | rate_limited | limite de solicitações por minuto excedido |
| 503 | service_unavailable | problema temporário na base — tente mais tarde; nenhum crédito é cobrado |
Todos os endpoints são GET /api/v1/{nome}. Paginação: page (a partir de 1) e per (1–100), até o 10.000º resultado. Ordenação: sort + order=asc|desc.
Seu plano, créditos do plano e saldo, a data de renovação dos créditos e o limite por minuto.
A ficha completa do app: título, descrição, novidades, instalações (faixa e número exato), nota, número de avaliações e comentários, distribuição de estrelas, preço, compras, anúncios, categoria, classificação etária, versão, Android mínimo, datas de lançamento e atualização, ícone, capturas, vídeo, desenvolvedor e seu site. Para removidos: os últimos dados salvos e a data de remoção.
id * | nome do pacote do app |
Até 100 apps em uma requisição: GET ?ids=a,b,c ou POST com a lista no corpo (um por linha ou JSON {"ids": […]}). 1 crédito por app; os não encontrados voltam em not_found.
ids * | nomes de pacote separados por vírgula, até 100 |
Busca e filtros em toda a base. É necessário pelo menos um filtro. Sem q, a ordenação é por instalações.
q | palavras para buscar no título, na descrição e no nome do desenvolvedor |
category | ID da categoria, ex. GAME_PUZZLE (veja /v1/categories) |
developer_id | ID do desenvolvedor no Google Play |
min_installs | mínimo de instalações (faixas do Google Play: 1000, 10000…) |
max_installs | máximo de instalações |
min_score | nota mínima, 0–5 |
min_ratings | mínimo de avaliações |
free | true — só grátis, false — só pagos |
ads | true — com anúncios, false — sem |
iap | true — com compras no app |
lang | idioma do título, código ISO: en, de, pt… |
released_from | lançados a partir desta data, YYYY-MM-DD |
released_to | lançados até esta data, inclusive |
updated_from | atualizados a partir desta data |
updated_to | atualizados até esta data, inclusive |
status | live (na loja, padrão), removed ou all |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
order | desc | asc |
page | página, a partir de 1 |
per | linhas por página, 1–100 (padrão 20) |
Sugestões pelo início do título: as 10 correspondências mais populares. Grátis.
q * | início do título, 2+ caracteres |
Um desenvolvedor e todos os seus apps: quantidade (na loja e removidos), instalações totais, nota média, primeiro lançamento, categorias, site. No plano Business: email, telefone, endereço e razão social.
id | ID do desenvolvedor (da ficha de um app: developer.id) |
name | ou o nome exato do desenvolvedor |
status | all (padrão), live ou removed |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | página, a partir de 1 |
per | linhas por página, 1–100 (padrão 20) |
Apps novos pela data do primeiro lançamento, os mais recentes primeiro.
since | a partir desta data, YYYY-MM-DD (padrão: 7 dias atrás) |
until | até esta data, inclusive |
category | ID da categoria, ex. GAME_PUZZLE (veja /v1/categories) |
min_installs | mínimo de instalações (faixas do Google Play: 1000, 10000…) |
lang | idioma do título, código ISO: en, de, pt… |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | página, a partir de 1 |
per | linhas por página, 1–100 (padrão 20) |
Apps que sumiram do Google Play (ausentes nos 19 países que verificamos), por data de remoção. A ficha mantém os últimos dados.
since | a partir desta data, YYYY-MM-DD (padrão: 7 dias atrás) |
until | até esta data, inclusive |
category | ID da categoria, ex. GAME_PUZZLE (veja /v1/categories) |
min_installs | mínimo de instalações (faixas do Google Play: 1000, 10000…) |
sort | removed_at | installs | score |
page | página, a partir de 1 |
per | linhas por página, 1–100 (padrão 20) |
Palavras e frases de títulos de apps por idioma: quantos apps e desenvolvedores as usam, quantos são fortes (100 mil+ instalações), instalações totais, participação do líder e uma pontuação de oportunidade.
lang | idioma, padrão en |
q | palavra ou frase |
phrase | true — só frases de duas palavras, false — só palavras isoladas |
min_apps | mínimo de apps |
max_apps | máximo de apps |
sort | opportunity | apps | installs | strong | devs | max_installs |
order | desc | asc |
page | página, a partir de 1 |
per | linhas por página, 1–100 (padrão 20) |
Todas as categorias com número de apps e instalações totais. Grátis.
status | live (na loja, padrão), removed ou all |
Apps cujo domínio do site do desenvolvedor está livre para registro, com a popularidade do app. Plano Pro ou superior.
category | ID da categoria, ex. GAME_PUZZLE (veja /v1/categories) |
min_installs | mínimo de instalações (faixas do Google Play: 1000, 10000…) |
status | live (na loja, padrão), removed ou all |
tld | zona de domínio, ex. com |
sort | relevance | installs | real_installs | score | ratings | reviews | released | updated | price |
page | página, a partir de 1 |
per | linhas por página, 1–100 (padrão 20) |
Um ranking do Google Play de um país e categoria: até 200 posições, mudança de posição desde o retrato anterior (change: quantas posições subiu, "new" para novos), ícone e instalações.
country * | país, código ISO: US, DE, BR… |
category * | categoria, ex. GAME_PUZZLE |
collection | free | paid | grossing |
page | página, a partir de 1 |
per | linhas por página, 1–100 (padrão 20) |
Todos os rankings em que o app está no último retrato: país, categoria, coleção, posição; número de rankings e países e melhor posição.
id * | nome do pacote do app |
country | só um país |
collection | free | paid | grossing |
Países onde o app está disponível no Google Play (pelo hreflang do sitemap da loja). Com 190+ países, retorna worldwide = true sem lista.
id * | nome do pacote do app |
Concorrência por mercado com base nos rankings grátis: limiar de entrada no top 100 e top 200 (instalações do app nessa posição), participação de apps novos (12 meses) e locais (≤3 países) no top e tamanho do mercado local. Sem parâmetros: todos os países; country: as categorias de um país; category: uma categoria em todos os países.
country | país, código ISO |
category | ID da categoria, ex. GAME_PUZZLE (veja /v1/categories) |
sort | entry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new |
order | desc | asc |
page | página, a partir de 1 |
per | linhas por página, 1–100 (padrão 20) |
Tamanho da base: apps na loja e removidos, desenvolvedores, novos e removidos em 7 dias, hora da última atualização. Grátis.
* — parâmetro obrigatório
# curl — one app
curl -H "X-API-Key: $KEY" "https://apiapk.org/api/v1/app?id=org.telegram.messenger"
# curl — puzzle games with 10M+ installs, best rated first
curl -H "X-API-Key: $KEY" "https://apiapk.org/api/v1/search?category=GAME_PUZZLE&min_installs=10000000&sort=score"
# curl — up to 100 apps in one call (POST, one package per line)
curl -H "X-API-Key: $KEY" --data-binary $'com.whatsapp\norg.telegram.messenger' "https://apiapk.org/api/v1/apps"
# Python — apps removed from Google Play this week
import os, requests
r = requests.get("https://apiapk.org/api/v1/removed",
params={"since": "2026-10-20", "min_installs": 100000, "per": 100},
headers={"X-API-Key": os.environ["KEY"]}, timeout=30)
r.raise_for_status()
data = r.json()
for app in data["results"]:
print(app["removed_seen_at"], app["id"], app["installs"]["label"])
print("credits left:", data["_credits"]["available"])
// Node.js 18+ (no servidor — não no navegador)
const res = await fetch("https://apiapk.org/api/v1/developer?id=5191370068110375942", { headers: { "X-API-Key": process.env.KEY } });
const d = await res.json();
if (!d.ok) throw new Error(d.error);
console.log(d.developer.name, d.developer.apps, d.developer.total_installs);
// PHP
$ch = curl_init('https://apiapk.org/api/v1/keywords?lang=en&q=vpn&per=50');
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('KEY')]]);
$d = json_decode(curl_exec($ch), true);
foreach ($d['results'] as $k) echo $k['keyword'], ' — ', $k['apps'], PHP_EOL;
Você pode criar uma chave na sua conta. A solicitação sai diretamente do seu navegador. A chave não é armazenada em lugar nenhum e some ao recarregar a página. As solicitações feitas pelo console gastam créditos como qualquer outra.