Wklej dowolną aplikację z Google Play i wybierz kraj. Web Unlocker zwróci dokładną ocenę i liczbę instalacji kryjące się za „4.7” i „500M+”, wersję, cenę i 20 opinii z odpowiedziami dewelopera. $0.98 za 1000 aplikacji.
1000 darmowych żądań · Płatność tylko za sukces · 195+ krajów · Gotowe dla Claude
Strony Google Play ładują się od 3 do 10 sekund. Nadal pracuję, nie musisz klikać ponownie.
Gotowy na własne aplikacje? Pobierz klucz API albo umów demo.
Opowiedz nam trochę o swoim zespole i otrzymasz:
Google Play zaokrągla to, co pokazuje: „4.7”, „500M+”. Strona pod spodem zawiera dokładne liczby, a jedno żądanie zwraca je razem z 20 opiniami. Bez konta Google.
Jedno żądanie przynosi całą stronę aplikacji: ocenę, instalacje, wersję, cenę i 20 opinii. Web Unlocker rozlicza ją jako jedną stronę. Apify i Bright Data rozliczają aplikację i każdą z jej opinii jako osobny wiersz, a SerpApi każde wyszukiwanie.
Jedna aplikacja z 20 opiniami to 21 wierszy na Apify.
Tutaj to jedna strona.
Strona, która się nie załaduje, nic nie kosztuje. Ta sama aplikacja z innego kraju, jej strona bezpieczeństwa danych albo wyszukiwanie słowa kluczowego to jedna kolejna strona.
Ile kosztuje 1000 aplikacji z 20 opiniami każda
1000 stron aplikacji, szczegóły i 20 opinii, według opublikowanych cen
Gologin: $0.98 za 1000 stron w planie Growth. Apify: 1000 wierszy aplikacji i 20 000 wierszy opinii, po $0.0007 i $0.00011 za wiersz u jednego aktora oraz $0.30 za 1000 wyników u drugiego. SerpApi: 1000 wyszukiwań aplikacji w planie za $25. Bright Data: 21 000 rekordów po $1.50 za 1000, w cenach pay-as-you-go.
Chcesz uruchomić to na własnych aplikacjach? Odbierz klucz API i darmowe żądania.
Nasz test scrapowania Google Play, dwa razy w odstępie godziny: 10 aplikacji z USA po trzy razy, 3 z Niemiec, 2 wyszukiwania i 2 strony bezpieczeństwa danych, do 3 prób na każdą.
78 z 88 wróciło za pierwszym razem.
Pozostałe 10 za drugim lub trzecim.
Biblioteka open source google-play-scraper, aktorzy Google Play na Apify i Google Play Scraper API od Bright Data: ile każde z nich kosztuje za te same 1000 aplikacji i co zostawia Tobie.
| Czego to wymaga | google-play-scraper | |||
|---|---|---|---|---|
| Płacisz za | Stronę | Własne serwery | Każdy wiersz | Każdy rekord |
| 1000 aplikacji z 20 opiniami | $0.98 | Za darmo, z Twoich IP | $2.90 do $6.30 | $31.50 |
| Opinie na aplikację | 20; więcej z Cloud Browser | Stronami, 200 na wywołanie | Do 100 000 | Tyle, ile ustawisz |
| Wyszukiwanie po słowie kluczowym | Tak | Tak | Tak | Nie |
| Darmowy start | 1000 żądań | Za darmo | $5 miesięcznie | 5000 miesięcznie |
| Cała strona w HTML | Tak | Nie | Nie | Nie |
| Ta sama cena na każdej innej witrynie | Tak | Tylko Google Play | Nie | Nie |
Scrapujesz nie tylko Google Play? Web Unlocker zwraca każdą stronę w ten sam sposób, w tej samej cenie.
Web Unlocker zwraca 20 opinii ze strony aplikacji, reszta jest w feedzie opinii Google. Cloud Browser, osobny produkt Gologin z własnymi planami, wywołuje ten feed ze strony aplikacji: 2000 najnowszych opinii o Duolingo w 4.5 sekundy.
Oceny, instalacje, ceny, pozycje w wyszukiwaniu i 20 pierwszych opinii daje sam Web Unlocker. Cloud Browser jest do pełnej historii opinii.
Z otwartej strony aplikacji Cloud Browser prosi feed Google o 100 opinii naraz, od najnowszych: 20 wywołań, 2000 opinii, 4.5 sekundy.
Cloud Browser nie jest częścią żądań Web Unlocker. Steruje nim Twój kod w Playwright lub Puppeteer albo Claude. Rezydencyjne adresy IP w cenie.
Uruchom z Playwright, Puppeteer lub Claude. Zobacz Cloud Browser.
Google Play trzyma dane aplikacji jako JSON wewnątrz strony, ten sam JSON, który czyta biblioteka open source google-play-scraper. Web Unlocker zwraca tę stronę z wybranego kraju, a kilka linii kodu odczytuje z niej aplikację, jej 20 opinii albo wyniki wyszukiwania słowa kluczowego.
Wypełnij formularz powyżej. Klucz przychodzi e-mailem w ciągu jednego dnia roboczego.
Strona aplikacji dla szczegółów i opinii, strona wyszukiwania dla pozycji, strona bezpieczeństwa danych dla tego, co aplikacja zbiera.
Wytnij dane aplikacji ze strony i poproś o nią ponownie z nowym adresem URL strony, gdy przyszła bez nich.
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`);Chcesz uruchomić to na własnych aplikacjach? Odbierz klucz API i darmowe żądania.
Jedno konto, jedna sieć proxy, jeden ekosystem. Wybierz produkt, którego wymaga zadanie.
Scrapujesz więcej witryn? Zobacz scrapery YouTube, Reddit i Instagram albo wszystkie narzędzia do web scrapingu.
Google Play scraper, czyli scraper Play Store, to narzędzie, które czyta publiczne strony Google Play i zamienia je w dane: ocenę aplikacji, instalacje, wersję, cenę i opinie albo aplikacje, które pokazuje wyszukiwanie słowa kluczowego. Google Play scraper API od Gologin to Web Unlocker: wyślij mu adres aplikacji, a zwróci stronę z tymi danymi, po $0.98 za 1000 stron.
Aby scrapować Google Play Store, wyślij adres aplikacji, czyli play.google.com/store/apps/details?id= z nazwą pakietu, do Web Unlocker z wybranym krajem. Zwróci stronę tak, jak ładuje ją przeglądarka odwiedzającego, z własnym JSON Google Play w środku: szczegółami aplikacji i jej 20 pierwszymi opiniami. Kod powyżej odczytuje je w kilku liniach.
Każda strona aplikacji zawiera 20 opinii z gwiazdkami, tekstem, datą, głosami „przydatna”, wersją aplikacji i odpowiedzią dewelopera, a Web Unlocker zwraca je razem z aplikacją. Każdy kraj i język pokazuje własne 20. Po więcej niż 20 dodaj Cloud Browser, osobny produkt Gologin z własnymi planami: ze strony aplikacji wywołuje feed opinii Google po 100 opinii naraz, od najnowszych, i w naszym teście zwrócił 2000 najnowszych opinii o Duolingo w 4.5 sekundy.
Nie dla aplikacji innych deweloperów: nie ma dla nich publicznego Google Play Store API. Google Play reviews API, część Google Play Developer API, działa tylko dla Twoich własnych aplikacji i zwraca opinie z ostatniego tygodnia. Ocena, instalacje, cena i opinie każdej innej aplikacji są na jej publicznej stronie Google Play, którą czyta Google Play scraper.
Wyślij adres aplikacji do Web Unlocker biblioteką requests i odczytaj JSON Google Play ze strony. Zakładka Python powyżej to kompletny skrypt, przetestowany na działającym API: wypisuje ocenę aplikacji, liczbę ocen, dokładną liczbę instalacji, wersję, cenę i 20 opinii.
Biblioteki google-play-scraper dla Node.js i Pythona są darmowe i czytają ten sam JSON z Twojego własnego serwera. Autor wersji dla Node.js już jej nie utrzymuje i ostrzega, że przestaje ona działać, gdy Google Play zmienia swoje strony, a intensywne użycie z jednego IP kończy się stronami błędu 503 na mniej więcej godzinę. Web Unlocker ładuje każdą stronę z rezydencyjnego IP w wybranym kraju, a strona, która się nie załaduje, nic nie kosztuje.
Strona aplikacji daje tytuł, dewelopera, kategorię, dokładną ocenę, liczbę ocen, liczbę ocen dla każdej gwiazdki, instalacje, cenę i walutę, zakres cen w aplikacji, reklamy, wersję, daty aktualizacji i premiery, klasyfikację treści, miejsce w rankingu, zrzuty ekranu i 20 opinii. Strona wyszukiwania daje aplikacje w kolejności Google Play, a strona bezpieczeństwa danych to, co aplikacja zbiera i udostępnia.
Zespoły ASO (app store optimization) śledzą, na którym miejscu są aplikacje dla danego słowa kluczowego w każdym kraju. Wydawcy dzień po dniu obserwują oceny, instalacje, wersje i ceny konkurencji. Zespoły produktowe i badawcze czytają opinie w poszukiwaniu skarg i próśb o nowe funkcje, a analitycy szacują rynki na podstawie instalacji i rankingów. Kod powyżej zapisuje to jako JSON lub CSV.
Tak. Google Play pokazuje zaokrągloną liczbę, np. 500M+, a dokładną trzyma w danych strony: 995,744,335 dla Duolingo 11 listopada 2026. Web Unlocker zwraca obie.
Tak. Strona wyszukiwania słowa kluczowego zwraca aplikacje w kolejności, w jakiej pokazuje je Google Play, w naszym teście od 21 do 30 dla „meditation”, każdą z ID, tytułem, oceną, kategorią i ceną. Uruchom to samo wyszukiwanie w kilku krajach, aby zobaczyć pozycję aplikacji w każdym z nich: w zakładce Pozycja według kraju powyżej Calm zajmuje 7. miejsce w USA, 6. w Niemczech i 4. w Australii.
Tak. Demo oferuje 10 krajów, a API przyjmuje dowolny z ponad 195. Każdy kraj widzi własną ocenę, ceny we własnej walucie i opinie we własnym języku: Spotify ma 4.17 w Niemczech i 4.35 w USA.
$0.98 za 1000 stron i ta sama cena za każdą stronę: aplikacja z 20 opiniami to jedna strona, wyszukiwanie to jedna strona. Nieudane żądanie nic nie kosztuje. Plany zaczynają się od $49 miesięcznie za 50 000 żądań.
Web Unlocker zawiera 1000 darmowych żądań, czyli wystarczająco na 1000 aplikacji z ich opiniami. Biblioteki open source google-play-scraper też są darmowe: działają na Twoich własnych serwerach i IP, a utrzymanie ich w działaniu, gdy Google Play się zmienia, należy do Ciebie.
Nie z Web Unlocker: ma rezydencyjne adresy IP z ponad 195 krajów i wybiera jeden do każdego żądania. Jeśli uruchamiasz własny scraper, Gologin Proxies to ta sama sieć.
Tak. Claude i inni agenci wywołują Web Unlocker jak każde API, a MCP & AI Skills zamieniają zwykłą prośbę, np. „porównaj oceny tych pięciu aplikacji w Niemczech”, w działające narzędzie.
Strony aplikacji, opinie i wyniki wyszukiwania w Google Play ładują się bez konta Google: to publiczne strony. To, co zbierasz i jak tego używasz, zależy od Ciebie, więc sprawdź to z zasadami obowiązującymi w Twoim projekcie, zwłaszcza w przypadku nazw autorów opinii.
Opowiedz nam trochę o swoim zespole i otrzymasz: