
Website Content Crawler
scrape.ly/store/querystone/website-content-crawlerAIDeveloper tools
1 monthly user

Scrape public Google Play search results, app details, similar apps, developer contacts, and categories.
Search the Google Play Store, read full app listings, and find similar apps, all as clean structured data. Search by keyword to get app cards, pass app URLs or package names to get the full listing with developer contact fields, or list the apps shown next to a known app. No Google login and no API key.
us/en or de/de.com.tradingview.tradingviewapp and the full details URL read the same listing.| Field | Type | What it does |
|---|---|---|
action | string | scrapeAppSearch (cards), scrapeAppUrls (full listings), or scrapeSimilarApps (related cards). |
keywords | array | Search terms. Results fill from the first term until the limit is reached. |
appUrls | array | Play Store URLs or package names, for app details and similar apps. |
maxResults | integer | Total rows to save. Default 10. |
country | string | Two-letter storefront code. Default us. |
language | string | Two-letter listing language. Default en. |
proxyConfiguration | object | Datacenter proxy by default. |
Search:
{
"action": "scrapeAppSearch",
"keywords": ["trading"],
"maxResults": 10,
"country": "us",
"language": "en"
}
App details:
{
"action": "scrapeAppUrls",
"appUrls": ["https://play.google.com/store/apps/details?id=com.tradingview.tradingviewapp"],
"maxResults": 10,
"country": "us",
"language": "en"
}
Search and similar-apps modes save one card per app (title, appId, url, icon, developer, score, price, free flag, currency, summary). App details mode adds the fields below.
| Field | Description |
|---|---|
title, appId, url, inputUrl | Name, package, and links. |
description, descriptionHTML, summary | Listing text. |
installs, minInstalls, maxInstalls | Install band. |
score, scoreText, ratings, reviews, histogram | Rating data. |
price, free, currency, offersIAP, IAPRange | Pricing. |
developer, developerId, developerEmail, developerWebsite, privacyPolicy | Developer details. |
genre, genreId, categories | Category. |
icon, headerImage, screenshots | Images. |
contentRating, adSupported, released, updated, version, androidVersionText, recentChanges | Release details. |
Real item from a test run (long text trimmed):
{
"title": "TradingView: Track All Markets",
"summary": "Explore stock markets, trading ideas and news. Stocks, crypto and forex charts.",
"installs": "50,000,000+",
"minInstalls": 50000000,
"score": 4.6473083,
"scoreText": "4.6",
"ratings": 954300,
"reviews": 13080,
"histogram": { "1": 48339, "2": 11511, "3": 19819, "4": 68964, "5": 805624 },
"price": 0,
"free": true,
"currency": "USD",
"priceText": "Free",
"offersIAP": true,
"IAPRange": "$9.99 - $759.00 per item",
"androidVersionText": "Varies with device",
"developer": "TradingView Inc.",
"developerEmail": "mobile-support@tradingview.com",
"developerWebsite": "https://www.tradingview.com",
"privacyPolicy": "https://www.tradingview.com/privacy-policy/",
"genre": "Finance",
"genreId": "FINANCE",
"categories": [{ "name": "Finance", "id": "FINANCE" }],
"contentRating": "Everyone",
"adSupported": true,
"released": "Nov 14, 2018",
"updated": 1791819460000,
"appId": "com.tradingview.tradingviewapp",
"url": "https://play.google.com/store/apps/details?id=com.tradingview.tradingviewapp&hl=en&gl=us"
}
An unknown package saves one row: {"error": "App not found (404)", "inputUrl": "..."}.
$0.001 per 1,000 results, which is $0.000001 per saved row. An unknown package counts as a saved row.
Worked example: a 10-app search costs $0.00001 in result fees. Platform usage (compute, storage, proxy) is billed separately at standard rates and makes up almost all of the cost: in our billing test a 10-app search cost about $0.0022 in total.
Is it legal to scrape Google Play? The actor reads the public storefront only. You are responsible for using the data in line with Google's terms and the privacy rules that apply to you.
Do I need a Google login or my own proxy? No. Datacenter proxy is built in.
Can I pass a package name instead of a URL? Yes. The package name and the details URL read the same listing.
What happens for an unknown package?
The run succeeds and saves one row with error set to App not found (404).
Where are the reviews?
Review text is not part of this actor. The reviews count is included, but the comments field stays an empty placeholder.
Can I schedule it or use the API? Yes. Use schedules in the console, or start runs and read the dataset through the API.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
actionenumOptionaldefault "scrapeAppSearch"What to scrape
App search returns listing cards. App details returns one full listing per URL. Similar apps returns cards related to each app.
keywordsarrayOptionalSearch keywords
Terms to search on the Play Store. Used when What to scrape is App search. Results fill from the first term until the limit is reached.
appUrlsarrayOptionalApp URLs or package names
Play Store app URLs or package names such as com.tradingview.tradingviewapp. Used for app details and similar apps.
maxResultsintegerOptionaldefault 10Maximum results
Stop after this many apps. For app details, each URL is one result. An unknown package is one result with an error.
Storefront country and listing language.
countrystringOptionaldefault "us"Country
Two-letter storefront code, such as us, de, or in.
languagestringOptionaldefault "en"Language
Two-letter listing language, such as en or de.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter addresses are the default. Residential is used when a datacenter exit is blocked.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| title | string | App title |
| appId | string | Package name |
| url | string | Play Store listing URL |
| developer | string | Developer name |
| score | number | Average star rating |
| scoreText | string | Average rating as shown on the store |
| price | number | Price in the listing currency. Zero when the app is free. |
| free | boolean | True when the app is free to install |
| currency | string | Listing currency |
| summary | string | Short description |
| genre | string | Primary category name |
| genreId | string | Primary category id |
| installs | string | Install band shown on the listing |
| icon | string | Icon URL |
| searchTerm | string | Search term that returned this app |
| inputUrl | string | URL or package name from the input |
| error | string | Present when the package could not be read |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | $0.000001 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/google-play-scraper').call({
"action": "scrapeAppSearch",
"keywords": [
"trading"
],
"appUrls": [
"https://play.google.com/store/apps/details?id=com.tradingview.tradingviewapp"
],
"maxResults": 10,
"country": "us",
"language": "en",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/google-play-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/google-play-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Search Google Play apps by keyword.
Full app details from Google Play links.
Apps Google Play lists as similar to an app.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.