Documentação da ApkJSON

API REST com dados do Google Play: 4 milhões de apps, desenvolvedores, apps novos e removidos, palavras-chave de títulos. Formato JSON, codificação UTF-8, CORS habilitado.

Início rápido

URL base: https://apiapk.cc/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.cc/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.

Autenticação

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.

Mantenha a chave no seu servidor. Se você a incorporar no JavaScript da página, qualquer visitante pode copiá-la. Encaminhe as solicitações do frontend pelo seu backend.

Créditos e limites

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çalhoSignificado
X-Credits-Costcréditos que esta solicitação custou
X-Credits-Remainingcréditos restantes (plano + saldo)
X-CacheHIT — servido do cache (mais rápido), MISS — consulta nova ao índice
X-RateLimit-Limit / -Remainingo limite por minuto da chave e quanto resta
X-Planfree | pro | scale | business

Seus créditos restantes também aparecem no campo _credits de cada resposta e em /v1/account (grátis).

Formato de resposta e erros

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. …" }
HTTPcodeQuando
400invalid_param, invalid_requestparâmetro inválido ou ausente
401missing_api_key, invalid_api_keysem chave, ou a chave foi revogada
402insufficient_creditscréditos insuficientes — recarregue ou mude de plano
403account_blocked, plan_requireda conta está bloqueada ou o endpoint exige um plano superior
404not_foundo app ou desenvolvedor não está na base, ou o endpoint não existe
429rate_limitedlimite de solicitações por minuto excedido
503service_unavailableproblema temporário na base — tente mais tarde; nenhum crédito é cobrado

Endpoints

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.

GET/api/v1/accountgrátis

Seu plano, créditos do plano e saldo, a data de renovação dos créditos e o limite por minuto.

Apps
GET/api/v1/app 1 cr.

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
GET · POST/api/v1/apps 1 crédito por 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
GET/api/v1/suggest grátis

Sugestões pelo início do título: as 10 correspondências mais populares. Grátis.

q *início do título, 2+ caracteres
Desenvolvedores
GET/api/v1/developer 2 cr.

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.

idID do desenvolvedor (da ficha de um app: developer.id)
nameou o nome exato do desenvolvedor
statusall (padrão), live ou removed
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagepágina, a partir de 1
perlinhas por página, 1–100 (padrão 20)
Mudanças na loja
GET/api/v1/new 2 cr.

Apps novos pela data do primeiro lançamento, os mais recentes primeiro.

sincea partir desta data, YYYY-MM-DD (padrão: 7 dias atrás)
untilaté esta data, inclusive
categoryID da categoria, ex. GAME_PUZZLE (veja /v1/categories)
min_installsmínimo de instalações (faixas do Google Play: 1000, 10000…)
langidioma do título, código ISO: en, de, pt…
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagepágina, a partir de 1
perlinhas por página, 1–100 (padrão 20)
GET/api/v1/removed 2 cr.

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.

sincea partir desta data, YYYY-MM-DD (padrão: 7 dias atrás)
untilaté esta data, inclusive
categoryID da categoria, ex. GAME_PUZZLE (veja /v1/categories)
min_installsmínimo de instalações (faixas do Google Play: 1000, 10000…)
sortremoved_at | installs | score
pagepágina, a partir de 1
perlinhas por página, 1–100 (padrão 20)
Mercado
GET/api/v1/keywords 2 cr.

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.

langidioma, padrão en
qpalavra ou frase
phrasetrue — só frases de duas palavras, false — só palavras isoladas
min_appsmínimo de apps
max_appsmáximo de apps
sortopportunity | apps | installs | strong | devs | max_installs
orderdesc | asc
pagepágina, a partir de 1
perlinhas por página, 1–100 (padrão 20)
GET/api/v1/categories grátis

Todas as categorias com número de apps e instalações totais. Grátis.

statuslive (na loja, padrão), removed ou all
GET/api/v1/free_domains 3 cr.Pro+

Apps cujo domínio do site do desenvolvedor está livre para registro, com a popularidade do app. Plano Pro ou superior.

categoryID da categoria, ex. GAME_PUZZLE (veja /v1/categories)
min_installsmínimo de instalações (faixas do Google Play: 1000, 10000…)
statuslive (na loja, padrão), removed ou all
tldzona de domínio, ex. com
sortrelevance | installs | real_installs | score | ratings | reviews | released | updated | price
pagepágina, a partir de 1
perlinhas por página, 1–100 (padrão 20)
GET/api/v1/charts 2 cr.

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
collectionfree | paid | grossing
pagepágina, a partir de 1
perlinhas por página, 1–100 (padrão 20)
GET/api/v1/rankings 1 cr.

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
countrysó um país
collectionfree | paid | grossing
GET/api/v1/availability 1 cr.

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
GET/api/v1/markets 1 cr.

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.

countrypaís, código ISO
categoryID da categoria, ex. GAME_PUZZLE (veja /v1/categories)
sortentry100 | entry200 | new_share | local_share | local_apps | local_installs | local_new
orderdesc | asc
pagepágina, a partir de 1
perlinhas por página, 1–100 (padrão 20)
GET/api/v1/stats grátis

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

Exemplos de código

# curl — one app
curl -H "X-API-Key: $KEY" "https://apiapk.cc/api/v1/app?id=org.telegram.messenger"

# curl — puzzle games with 10M+ installs, best rated first
curl -H "X-API-Key: $KEY" "https://apiapk.cc/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.cc/api/v1/apps"
# Python — apps removed from Google Play this week
import os, requests
r = requests.get("https://apiapk.cc/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.cc/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.cc/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;

Experimente

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.