Dán bất kỳ ứng dụng Google Play nào và chọn quốc gia. Web Unlocker trả về xếp hạng và lượt cài đặt chính xác đằng sau "4.7" và "500M+", phiên bản, giá và 20 đánh giá kèm phản hồi của nhà phát triển. $0.98 cho 1.000 ứng dụng.
1.000 yêu cầu miễn phí · Chỉ tính phí khi thành công · 195+ quốc gia · Sẵn sàng cho Claude
Trang Google Play mất 3 đến 10 giây để tải. Hệ thống vẫn đang xử lý, bạn không cần nhấp lại.
Sẵn sàng cho các ứng dụng của riêng bạn? Nhận API key hoặc đặt lịch demo.
Hãy cho chúng tôi biết đôi nét về đội ngũ của bạn để nhận:
Google Play làm tròn những gì nó hiển thị: "4.7", "500M+". Trang bên dưới giữ các con số chính xác, và một yêu cầu trả về chúng kèm 20 đánh giá. Không cần tài khoản Google.
Một yêu cầu mang về toàn bộ trang của một ứng dụng: xếp hạng, lượt cài đặt, phiên bản, giá và 20 đánh giá. Web Unlocker tính phí nó như một trang. Apify và Bright Data tính phí ứng dụng và từng đánh giá của nó như một dòng, còn SerpApi tính phí từng lượt tìm kiếm.
Một ứng dụng kèm 20 đánh giá là 21 dòng trên Apify.
Ở đây chỉ là một trang.
Trang tải không được thì không tốn phí. Cùng ứng dụng đó từ một quốc gia khác, trang an toàn dữ liệu của nó hoặc một lượt tìm kiếm theo từ khóa là thêm một trang.
Chi phí cho 1.000 ứng dụng, mỗi ứng dụng 20 đánh giá
1.000 trang ứng dụng, thông tin chi tiết cùng 20 đánh giá, theo giá công bố
Gologin: $0.98 cho 1.000 trang ở gói Growth. Apify: 1.000 dòng ứng dụng và 20.000 dòng đánh giá, với $0.0007 và $0.00011 mỗi dòng ở một actor và $0.30 cho 1.000 kết quả ở actor còn lại. SerpApi: 1.000 lượt tìm kiếm ứng dụng ở gói $25. Bright Data: 21.000 bản ghi với $1.50 cho 1.000, giá pay-as-you-go.
Sẵn sàng chạy nó trên các ứng dụng của riêng bạn? Nhận API key và các yêu cầu miễn phí.
Bài kiểm tra thu thập dữ liệu Google Play, chạy hai lần cách nhau một giờ: 10 ứng dụng từ Mỹ, mỗi ứng dụng ba lần, 3 từ Đức, 2 lượt tìm kiếm và 2 trang an toàn dữ liệu, tối đa 3 lần mỗi trang.
78 trên 88 trả về ngay lần đầu.
10 trang còn lại ở lần thứ hai hoặc thứ ba.
Thư viện mã nguồn mở google-play-scraper, các actor Google Play trên Apify và Google Play Scraper API của Bright Data: mỗi bên tốn bao nhiêu cho cùng 1.000 ứng dụng, và để lại những gì cho bạn tự làm.
| Bạn cần gì | google-play-scraper | |||
|---|---|---|---|---|
| Bạn trả tiền cho | Một trang | Máy chủ của chính bạn | Mỗi dòng | Mỗi bản ghi |
| 1.000 ứng dụng kèm 20 đánh giá | $0.98 | Miễn phí, từ IP của bạn | $2.90 đến $6.30 | $31.50 |
| Số đánh giá mỗi ứng dụng | 20; nhiều hơn với Cloud Browser | Theo trang, 200 mỗi lần gọi | Tối đa 100.000 | Bao nhiêu tùy bạn đặt |
| Tìm kiếm theo từ khóa | Có | Có | Có | Không |
| Miễn phí để bắt đầu | 1.000 yêu cầu | Miễn phí | $5 mỗi tháng | 5.000 mỗi tháng |
| Toàn bộ trang ở dạng HTML | Có | Không | Không | Không |
| Cùng mức giá trên mọi trang web khác | Có | Chỉ Google Play | Không | Không |
Cần thu thập nhiều hơn Google Play? Web Unlocker trả về bất kỳ trang nào theo cùng cách, với cùng mức giá.
Web Unlocker trả về 20 đánh giá trên trang ứng dụng, phần còn lại nằm trong nguồn đánh giá của Google. Cloud Browser, sản phẩm Gologin riêng với các gói riêng, gọi nguồn đó từ trang ứng dụng: 2.000 đánh giá mới nhất của Duolingo trong 4.5 giây.
Xếp hạng, lượt cài đặt, giá, thứ hạng tìm kiếm và 20 đánh giá hàng đầu đều đến từ riêng Web Unlocker. Cloud Browser dành cho toàn bộ lịch sử đánh giá.
Từ trang ứng dụng đang mở, Cloud Browser yêu cầu nguồn của Google trả về 100 đánh giá mỗi lần, mới nhất trước: 20 lần gọi, 2.000 đánh giá, 4.5 giây.
Cloud Browser không nằm trong các yêu cầu Web Unlocker. Code Playwright hoặc Puppeteer của bạn, hoặc Claude, điều khiển nó. Đã bao gồm IP dân cư.
Chạy nó từ Playwright, Puppeteer hoặc Claude. Xem Cloud Browser.
Google Play giữ dữ liệu của một ứng dụng dưới dạng JSON bên trong trang của nó, cũng chính là JSON mà thư viện mã nguồn mở google-play-scraper đọc. Web Unlocker trả về trang đó từ quốc gia bạn chọn, và vài dòng code sẽ đọc ra ứng dụng, 20 đánh giá của nó hoặc kết quả tìm kiếm của một từ khóa.
Điền biểu mẫu ở trên. Key sẽ được gửi qua email trong vòng một ngày làm việc.
Một trang ứng dụng để lấy thông tin chi tiết và đánh giá, một trang tìm kiếm để lấy thứ hạng, một trang an toàn dữ liệu để biết ứng dụng thu thập những gì.
Cắt dữ liệu của ứng dụng ra khỏi trang, và yêu cầu lại với một URL mới khi trang trả về không kèm dữ liệu đó.
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`);Sẵn sàng chạy nó trên các ứng dụng của riêng bạn? Nhận API key và các yêu cầu miễn phí.
Một tài khoản, một mạng proxy, một hệ sinh thái. Chọn sản phẩm phù hợp với công việc.
Thu thập thêm nhiều trang web khác? Xem các scraper YouTube, Reddit và Instagram, hoặc mọi công cụ thu thập dữ liệu web.
Google Play scraper, hay Play Store scraper, là công cụ đọc các trang Google Play công khai và chuyển chúng thành dữ liệu: xếp hạng, lượt cài đặt, phiên bản, giá và đánh giá của một ứng dụng, hoặc các ứng dụng mà một lượt tìm kiếm theo từ khóa hiển thị. Google Play scraper API của Gologin là Web Unlocker: gửi cho nó địa chỉ của một ứng dụng và nó trả về trang kèm dữ liệu đó, với $0.98 cho 1.000 trang.
Để thu thập dữ liệu Google Play Store, gửi địa chỉ của ứng dụng, play.google.com/store/apps/details?id= theo sau là tên gói, tới Web Unlocker kèm quốc gia bạn muốn. Nó trả về trang giống như trình duyệt của một khách truy cập tải nó, kèm JSON của chính Google Play bên trong: thông tin chi tiết của ứng dụng và 20 đánh giá hàng đầu. Đoạn code ở trên đọc nó trong vài dòng.
Mỗi trang ứng dụng chứa 20 đánh giá kèm số sao, nội dung, ngày, lượt bình chọn hữu ích, phiên bản ứng dụng và phản hồi của nhà phát triển, và Web Unlocker trả về chúng cùng với ứng dụng. Mỗi quốc gia và ngôn ngữ hiển thị 20 đánh giá riêng. Để có nhiều hơn 20, hãy thêm Cloud Browser, một sản phẩm Gologin riêng với các gói riêng: từ trang ứng dụng, nó gọi nguồn đánh giá của Google 100 đánh giá mỗi lần, mới nhất trước, và đã trả về 2.000 đánh giá mới nhất của Duolingo trong 4.5 giây trong bài kiểm tra của chúng tôi.
Không phải cho ứng dụng của nhà phát triển khác: không có Google Play Store API công khai cho chúng. Google Play reviews API, một phần của Google Play Developer API, chỉ hoạt động với ứng dụng của chính bạn và trả về đánh giá trong tuần gần nhất. Xếp hạng, lượt cài đặt, giá và đánh giá của bất kỳ ứng dụng nào khác nằm trên trang Google Play công khai của nó, và đó chính là thứ mà một Google Play scraper đọc.
Gửi địa chỉ của ứng dụng tới Web Unlocker bằng thư viện requests và đọc JSON của Google Play từ trang. Tab Python ở trên là một script hoàn chỉnh, đã được kiểm thử trên API thật: nó in ra xếp hạng, số lượt xếp hạng, lượt cài đặt chính xác, phiên bản, giá và 20 đánh giá của ứng dụng.
Các thư viện google-play-scraper cho Node.js và Python là miễn phí và đọc cùng JSON đó từ máy chủ của chính bạn. Tác giả bản Node.js không còn duy trì nó và cảnh báo rằng nó hỏng khi Google Play thay đổi trang, và việc dùng nhiều từ một IP sẽ nhận về trang lỗi 503 trong khoảng một giờ. Web Unlocker tải mỗi trang từ một IP dân cư ở quốc gia bạn chọn, và trang không thành công thì không tốn phí.
Một trang ứng dụng cho tiêu đề, nhà phát triển, thể loại, xếp hạng chính xác, số lượt xếp hạng, số lượt cho mỗi mức sao, lượt cài đặt, giá và tiền tệ, khoảng giá mua trong ứng dụng, quảng cáo, phiên bản, ngày cập nhật và ngày phát hành, mức phân loại nội dung, thứ hạng trên bảng xếp hạng, ảnh chụp màn hình và 20 đánh giá. Một trang tìm kiếm cho các ứng dụng theo thứ tự của Google Play, và một trang an toàn dữ liệu cho biết ứng dụng thu thập và chia sẻ những gì.
Các đội tối ưu hóa cửa hàng ứng dụng (ASO) theo dõi thứ hạng của ứng dụng cho một từ khóa ở từng quốc gia. Nhà phát hành theo dõi xếp hạng, lượt cài đặt, phiên bản và giá của đối thủ từng ngày. Đội sản phẩm và nghiên cứu đọc đánh giá để tìm phàn nàn và yêu cầu tính năng, còn các nhà phân tích ước tính quy mô thị trường từ lượt cài đặt và bảng xếp hạng. Đoạn code ở trên lưu nó thành JSON hoặc CSV.
Có. Google Play hiển thị một con số làm tròn như 500M+, và giữ số chính xác trong dữ liệu của trang: 995.744.335 với Duolingo vào ngày 11 tháng 11 năm 2026. Web Unlocker trả về cả hai.
Có. Một trang tìm kiếm theo từ khóa trả về các ứng dụng theo thứ tự Google Play hiển thị, 21 đến 30 ứng dụng cho "meditation" trong bài kiểm tra của chúng tôi, mỗi ứng dụng kèm ID, tiêu đề, xếp hạng, thể loại và giá. Chạy cùng lượt tìm kiếm ở nhiều quốc gia để xem ứng dụng xếp hạng thế nào ở mỗi nơi: trong tab Thứ hạng theo quốc gia ở trên, Calm đứng #7 ở Mỹ, #6 ở Đức và #4 ở Úc.
Có. Bản demo có 10 quốc gia và API nhận bất kỳ quốc gia nào trong hơn 195 quốc gia. Mỗi quốc gia thấy xếp hạng riêng, giá bằng tiền tệ riêng và đánh giá bằng ngôn ngữ riêng: Spotify đạt 4.17 ở Đức và 4.35 ở Mỹ.
$0.98 cho 1.000 trang, cùng một mức giá cho mọi trang: một ứng dụng kèm 20 đánh giá là một trang, một lượt tìm kiếm là một trang. Yêu cầu không thành công thì không tốn phí. Các gói bắt đầu từ $49 mỗi tháng cho 50.000 yêu cầu.
Web Unlocker đi kèm 1.000 yêu cầu miễn phí, đủ cho 1.000 ứng dụng kèm đánh giá của chúng. Các thư viện mã nguồn mở google-play-scraper cũng miễn phí: chúng chạy trên máy chủ và IP của chính bạn, và việc giữ cho chúng hoạt động khi Google Play thay đổi là việc của bạn.
Không với Web Unlocker: nó mang theo IP dân cư từ hơn 195 quốc gia và chọn một IP cho mỗi yêu cầu. Nếu bạn tự chạy scraper của mình, Gologin Proxies là cùng mạng lưới đó.
Có. Claude và các agent khác gọi Web Unlocker như bất kỳ API nào, và MCP & AI Skills biến một yêu cầu đơn giản, như "so sánh xếp hạng của năm ứng dụng này ở Đức", thành một công cụ chạy được.
Trang ứng dụng, đánh giá và kết quả tìm kiếm trên Google Play tải được mà không cần tài khoản Google: chúng là các trang công khai. Bạn thu thập gì và dùng ra sao là quyết định của bạn, vì vậy hãy đối chiếu với các quy định áp dụng cho dự án của bạn, đặc biệt là với tên của người đánh giá.
Hãy cho chúng tôi biết đôi nét về đội ngũ của bạn để nhận: