Вставьте любое приложение Google Play и выберите страну. Web Unlocker вернёт точный рейтинг и число установок за «4.7» и «500M+», версию, цену и 20 отзывов с ответами разработчика. $0.98 за 1000 приложений.
1000 бесплатных запросов · Оплата только за успех · 195+ стран · Работает с Claude
Страницы Google Play загружаются от 3 до 10 секунд. Всё ещё работаем, нажимать снова не нужно.
Готовы спарсить свои приложения? Получите API-ключ или запишитесь на демо.
Расскажите немного о вашей команде и получите:
Google Play округляет то, что показывает: «4.7», «500M+». На странице под ними лежат точные числа, и один запрос возвращает их вместе с 20 отзывами. Без аккаунта Google.
Один запрос приносит всю страницу приложения: рейтинг, установки, версию, цену и 20 отзывов. Web Unlocker берёт за неё как за одну страницу. Apify и Bright Data берут плату за приложение и за каждый его отзыв как за отдельную строку, а SerpApi - за каждый поиск.
Приложение с 20 отзывами - это 21 строка на Apify.
Здесь это одна страница.
Страница, которая не загрузилась, ничего не стоит. То же приложение из другой страны, его страница безопасности данных или поиск по ключевому слову - ещё одна страница.
Сколько стоят 1000 приложений с 20 отзывами у каждого
1000 страниц приложений, данные и 20 отзывов, по опубликованным ценам
Gologin: $0.98 за 1000 страниц на тарифе Growth. Apify: 1000 строк приложений и 20 000 строк отзывов, по $0.0007 и $0.00011 за строку у одного актора и $0.30 за 1000 результатов у другого. SerpApi: 1000 поисков приложений на тарифе за $25. Bright Data: 21 000 записей по $1.50 за 1000, по цене pay-as-you-go.
Готовы запустить на своих приложениях? Получите API-ключ и бесплатные запросы.
Наш тест парсинга Google Play, два прогона с разницей в час: 10 приложений из США по три раза, 3 из Германии, 2 поиска и 2 страницы безопасности данных, до 3 попыток на каждую.
78 из 88 вернулись с первой попытки.
Остальные 10 - со второй или третьей.
Библиотека с открытым кодом google-play-scraper, акторы Google Play на Apify и Google Play Scraper API от Bright Data: сколько каждый стоит за те же 1000 приложений и что оставляет вам.
| Что нужно | google-play-scraper | |||
|---|---|---|---|---|
| Вы платите за | Страницу | Свои серверы | Каждую строку | Каждую запись |
| 1000 приложений с 20 отзывами | $0.98 | Бесплатно, с ваших IP | от $2.90 до $6.30 | $31.50 |
| Отзывов на приложение | 20, больше с Cloud Browser | Постранично, 200 за вызов | До 100 000 | Сколько зададите |
| Поиск по ключевому слову | Да | Да | Да | Нет |
| Бесплатный старт | 1000 запросов | Бесплатно | $5 в месяц | 5000 в месяц |
| Страница целиком в HTML | Да | Нет | Нет | Нет |
| Та же цена на любом другом сайте | Да | Только Google Play | Нет | Нет |
Парсите не только Google Play? Web Unlocker возвращает любую страницу так же и по той же цене.
Web Unlocker возвращает 20 отзывов со страницы приложения, остальные лежат в ленте отзывов Google. Её читает Cloud Browser, отдельный продукт Gologin со своими тарифами: 2000 самых новых отзывов Duolingo за 4.5 секунды.
Рейтинги, установки, цены, места в поиске и 20 верхних отзывов даёт один Web Unlocker. Cloud Browser нужен для всей истории отзывов.
С открытой страницы приложения Cloud Browser запрашивает у ленты Google по 100 отзывов за раз, сначала новые: 20 вызовов, 2000 отзывов, 4.5 секунды.
Cloud Browser не входит в запросы Web Unlocker. Им управляет ваш код на Playwright или Puppeteer либо Claude. Резидентные IP включены.
Запускайте из Playwright, Puppeteer или Claude. Посмотреть Cloud Browser.
Google Play хранит данные приложения как JSON внутри страницы, этот же JSON читает библиотека google-play-scraper. Web Unlocker возвращает страницу из выбранной страны, а несколько строк кода достают из неё приложение, его 20 отзывов или результаты поиска.
Заполните форму выше. Ключ придёт на почту в течение одного рабочего дня.
Страница приложения - для данных и отзывов, страница поиска - для мест в выдаче, страница безопасности данных - для того, что собирает приложение.
Вырежьте данные приложения из страницы и запросите её снова по новому адресу, если она пришла без них.
pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python google_play_app.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport json
import os
import re
import time
from datetime import datetime, timezone
import requests
app_id = "com.duolingo"
country = "us"
def scrape(url):
for attempt in range(3):
address = url if attempt == 0 else f"{url}&fresh={int(time.time())}"
response = requests.get(
"https://parsing.webunlocker.gologin.com/v1/scrape",
params={"url": address, "geo": country, "format": "json"},
headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
timeout=90,
)
page = response.json().get("data", {}).get("html", "") if response.ok else ""
if "key: 'ds:5'" in page:
return page
time.sleep(3)
raise RuntimeError("The page came back without the app data, try again later")
def blocks(page):
for key, data in re.findall(r"AF_initDataCallback\(\{key: '(ds:\d+)'.*?data:(.*?), sideChannel: \{\}\}\);</script>", page, re.S):
yield key, json.loads(data)
def at(node, *path):
for step in path:
if not isinstance(node, list) or step >= len(node):
return None
node = node[step]
return node
def day(stamp):
return datetime.fromtimestamp(stamp[0], timezone.utc).date().isoformat() if stamp else None
page = scrape(f"https://play.google.com/store/apps/details?id={app_id}&hl=en&gl={country.upper()}")
data = dict(blocks(page))
d = at(data["ds:5"], 1, 2)
reviews = next(
(value[0] for value in data.values() if isinstance(at(value, 0, 0, 0), str) and re.match(r"^[0-9a-f]{8}-", at(value, 0, 0, 0))),
[],
)
app = {
"id": app_id,
"title": at(d, 0, 0),
"developer": at(d, 68, 0),
"genre": at(d, 79, 0, 0, 0),
"rating": at(d, 51, 0, 1),
"ratings": at(d, 51, 2, 1),
"installs": at(d, 13, 0),
"installs_exact": at(d, 13, 2),
"price": (at(d, 57, 0, 0, 0, 0, 1, 0, 0) or 0) / 1e6,
"currency": at(d, 57, 0, 0, 0, 0, 1, 0, 1),
"version": at(d, 140, 0, 0, 0) or "Varies with device",
"updated": at(d, 145, 0, 0),
"reviews": [
{
"author": at(review, 1, 0),
"stars": at(review, 2),
"text": at(review, 4),
"date": day(at(review, 5)),
"helpful": at(review, 6),
"app_version": at(review, 10),
"reply": at(review, 7, 1),
}
for review in reviews
],
}
print(json.dumps(app, indent=2, ensure_ascii=False))
print(f"{app['title']}: {app['rating']:.2f} from {app['ratings']:,} ratings, {app['installs_exact']:,} installs, {len(app['reviews'])} reviews from one page")GOLOGIN_SCRAPING_API_KEY=your_key node google-play-apps.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { writeFileSync } from 'node:fs';
const apps = ['com.duolingo', 'com.babbel.mobile.android.en', 'com.memrise.android.memrisecompanion', 'com.busuu.android.enc', 'com.hellotalk'];
const country = 'us';
async function scrape(url) {
for (let attempt = 1; attempt <= 3; attempt++) {
const address = attempt === 1 ? url : `${url}&fresh=${Date.now()}`;
const params = new URLSearchParams({ url: address, geo: country, format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes("key: 'ds:5'")) return page;
await new Promise((resolve) => setTimeout(resolve, 3000));
}
return '';
}
const at = (node, ...path) => path.reduce((value, step) => (Array.isArray(value) ? value[step] : undefined), node);
const appData = (page) => {
const block = page.match(/AF_initDataCallback\(\{key: 'ds:5'.*?data:(.*?), sideChannel: \{\}\}\);<\/script>/s)?.[1];
return block ? at(JSON.parse(block), 1, 2) : null;
};
const rows = [];
for (const id of apps) {
const d = appData(await scrape(`https://play.google.com/store/apps/details?id=${id}&hl=en&gl=${country.toUpperCase()}`));
rows.push({
id,
title: at(d, 0, 0),
rating: at(d, 51, 0, 1)?.toFixed(3),
ratings: at(d, 51, 2, 1),
installs: at(d, 13, 2),
version: at(d, 140, 0, 0, 0) ?? 'Varies with device',
updated: at(d, 145, 0, 0),
price: (at(d, 57, 0, 0, 0, 0, 1, 0, 0) ?? 0) / 1e6,
});
}
writeFileSync('apps.csv', ['id,title,rating,ratings,installs,version,updated,price', ...rows.map((row) => Object.values(row).map((value) => JSON.stringify(value ?? '')).join(','))].join('\n'));
console.table(rows);
console.log(`${rows.length} apps in ${rows.length} pages: $${(rows.length * 0.00098).toFixed(4)} on the Growth plan`);GOLOGIN_SCRAPING_API_KEY=your_key node google-play-rank.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst keyword = 'meditation';
const app = 'com.calm.android';
const countries = ['us', 'gb', 'de', 'ca', 'au'];
async function scrape(url, geo) {
for (let attempt = 1; attempt <= 3; attempt++) {
const address = attempt === 1 ? url : `${url}&fresh=${Date.now()}`;
const params = new URLSearchParams({ url: address, geo, format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes("key: 'ds:4'")) return page;
await new Promise((resolve) => setTimeout(resolve, 3000));
}
return '';
}
const results = (page) => {
const block = page.match(/AF_initDataCallback\(\{key: 'ds:4'.*?data:(.*?), sideChannel: \{\}\}\);<\/script>/s)?.[1];
const sections = block ? JSON.parse(block)?.[0]?.[1] : null;
const items = sections?.find((section) => section?.[22]?.[0])?.[22]?.[0];
return (items ?? []).map(([item]) => ({ id: item[0][0], title: item[3], rating: item[4]?.[1] }));
};
for (const country of countries) {
const found = results(await scrape(`https://play.google.com/store/search?q=${encodeURIComponent(keyword)}&c=apps&hl=en&gl=${country.toUpperCase()}`, country));
const place = found.findIndex((item) => item.id === app) + 1;
console.log(`${country.toUpperCase()}: ${app} is #${place || '-'} of ${found.length} for "${keyword}", top app: ${found[0]?.title} (${found[0]?.rating?.toFixed(1)})`);
}
console.log(`${countries.length} countries in ${countries.length} pages: $${(countries.length * 0.00098).toFixed(4)} on the Growth plan`);Готовы запустить на своих приложениях? Получите API-ключ и бесплатные запросы.
Один аккаунт, одна прокси-сеть, одна экосистема. Выберите продукт под задачу.
Парсите больше сайтов? Смотрите парсеры YouTube, Reddit и Instagram или все инструменты для веб-парсинга.
Парсер Google Play, или парсер Play Store, - это инструмент, который читает публичные страницы Google Play и превращает их в данные: рейтинг, установки, версию, цену и отзывы приложения или приложения, которые показывает поиск по ключевому слову. API парсера Google Play от Gologin - это Web Unlocker: отправьте ему адрес приложения, и он вернёт страницу с этими данными по $0.98 за 1000 страниц.
Для парсинга Google Play Store отправьте в Web Unlocker адрес приложения, play.google.com/store/apps/details?id= и имя пакета, вместе с нужной страной. Он вернёт страницу такой, какой её загружает браузер посетителя, с собственным JSON Google Play внутри: данными приложения и его 20 верхними отзывами. Код выше читает их в несколько строк.
Каждая страница приложения содержит 20 отзывов со звёздами, текстом, датой, отметками «полезно», версией приложения и ответом разработчика, и Web Unlocker возвращает их вместе с приложением. Каждая страна и язык показывают свои 20. Чтобы получить больше 20, добавьте Cloud Browser, отдельный продукт Gologin со своими тарифами: со страницы приложения он обращается к ленте отзывов Google по 100 отзывов за раз, сначала новые, и в нашем тесте вернул 2000 самых новых отзывов Duolingo за 4.5 секунды.
Не для чужих приложений: публичного Google Play Store API для них нет. Google Play reviews API, часть Google Play Developer API, работает только с вашими собственными приложениями и возвращает отзывы за последнюю неделю. Рейтинг, установки, цена и отзывы любого другого приложения есть на его публичной странице в Google Play, и именно её читает парсер Google Play.
Отправьте адрес приложения в Web Unlocker через библиотеку requests и прочитайте JSON Google Play со страницы. Вкладка Python выше - готовый скрипт, проверенный на живом API: он выводит рейтинг приложения, число оценок, точное число установок, версию, цену и 20 отзывов.
Библиотеки google-play-scraper для Node.js и Python бесплатны и читают тот же JSON с вашего собственного сервера. Автор версии для Node.js больше её не поддерживает и предупреждает, что она ломается, когда Google Play меняет страницы, а при активном использовании с одного IP примерно на час приходят страницы с ошибкой 503. Web Unlocker загружает каждую страницу с резидентного IP в выбранной вами стране, а страница, которая не загрузилась, ничего не стоит.
Страница приложения даёт название, разработчика, жанр, точный рейтинг, число оценок, число оценок по каждой звезде, установки, цену и валюту, диапазон цен покупок в приложении, наличие рекламы, версию, даты обновления и выпуска, возрастной рейтинг, место в чарте, скриншоты и 20 отзывов. Страница поиска даёт приложения в порядке Google Play, а страница безопасности данных - что приложение собирает и передаёт.
Команды ASO отслеживают, на каком месте стоят приложения по ключевому слову в каждой стране. Издатели день за днём следят за рейтингами, установками, версиями и ценами конкурентов. Продуктовые и исследовательские команды читают отзывы, чтобы найти жалобы и запросы на функции, а аналитики оценивают рынки по установкам и чартам. Код выше сохраняет данные в JSON или CSV.
Да. Google Play показывает округлённое число, например 500M+, а точное хранит в данных страницы: 995,744,335 у Duolingo на 11 ноября 2026 года. Web Unlocker возвращает оба.
Да. Страница поиска по ключевому слову возвращает приложения в том порядке, в каком их показывает Google Play, в нашем тесте от 21 до 30 по запросу «meditation», у каждого ID, название, рейтинг, жанр и цена. Запустите тот же поиск в нескольких странах, чтобы увидеть место приложения в каждой: на вкладке «Места по странам» выше Calm на 7-м месте в США, на 6-м в Германии и на 4-м в Австралии.
Да. В демо 10 стран, а API работает с любой из 195+. Каждая страна видит свой рейтинг, цены в своей валюте и отзывы на своём языке: у Spotify 4.17 в Германии и 4.35 в США.
$0.98 за 1000 страниц, одна цена за любую страницу: приложение с 20 отзывами - одна страница, поиск - одна страница. Неудачный запрос ничего не стоит. Тарифы начинаются от $49 в месяц за 50 000 запросов.
С Web Unlocker вы получаете 1000 бесплатных запросов, этого хватит на 1000 приложений с отзывами. Библиотеки с открытым кодом google-play-scraper тоже бесплатны: они работают на ваших серверах и IP, а поддерживать их работу при изменениях в Google Play придётся вам.
Не с Web Unlocker: он даёт резидентные IP из 195+ стран и подбирает IP для каждого запроса. Если вы запускаете свой парсер, Gologin Proxies - это та же сеть.
Да. Claude и другие агенты вызывают Web Unlocker как любой API, а MCP & AI Skills превращают простую просьбу, например «сравни рейтинги этих пяти приложений в Германии», в рабочий инструмент.
Страницы приложений, отзывы и результаты поиска в Google Play открываются без аккаунта Google: это публичные страницы. Что вы собираете и как используете, решаете вы, поэтому сверьтесь с правилами, которые относятся к вашему проекту, особенно в части имён авторов отзывов.
Расскажите немного о вашей команде и получите: