App Store & Google Play Listing Policy Checker avatar

App Store & Google Play Listing Policy Checker

Pricing

from $20.00 / 1,000 results

Go to Apify Store
App Store & Google Play Listing Policy Checker

App Store & Google Play Listing Policy Checker

Check App Store and Google Play listings for metadata policy problems before you submit. For app developers, ASO agencies and AI listing tools. Flags ranking and price claims in titles, competitor names, keyword stuffing, emoji, caps and length limits, with severity per store, policy link and fix.

Pricing

from $20.00 / 1,000 results

Rating

0.0

(0)

Developer

Ultimate Foresight Inc

Ultimate Foresight Inc

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

App Store & Google Play Listing Policy Checker scans your app's name, subtitle, keywords, short and full description, promotional text and What's New for metadata that gets apps rejected or listings suspended: ranking and price claims in the title, competitor and trademark names, other platforms in App Store text, keyword stuffing, emoji and ALL CAPS, unattributed testimonials and over-length fields. Each issue comes with its severity on the App Store and on Google Play separately, the exact words, a link to the public guideline and a plain-English fix. Click Start with the prefilled example to see a result in a few seconds.

A pre-check, not a review decision. This is a fixed, rule-based text checker written from Apple's App Review Guidelines (section 2.3, checked after the October 2026 update) and Google Play's Metadata policy. A flag means "review this"; a clean result does not guarantee approval. Screenshots, icons, app behavior and reviewer judgment also matter. Not affiliated with Apple or Google.

What does App Store & Google Play Listing Policy Checker do?

  • ✅ Runs 25+ metadata checks, each with its own Apple and Google severity and guideline link
  • ✅ Ranking and award claims in titles: "#1", "Best", "Top", "App of the Year", "Editor's Choice"
  • ✅ Price and promotion in the title, icon text or short description: "FREE", "50% off", "Sale" (with traps avoided: "gluten-free", "garage sale", "sales CRM", and promo text on Apple, where sales are allowed)
  • ✅ Other apps, brands and trademarks in keywords and titles (Apple rejects these in the keyword field), "Instagram alternative", "better than Snapchat", and a curated list of 100 well-known app names; your own brand is never flagged
  • ✅ Other platforms in App Store text: Android, Google Play, APK (Apple guideline 2.3.10)
  • ✅ Formatting: emoji, repeated symbols ("!!!"), ALL CAPS words, HTML tags, repeated words in the title, long keyword lists in the description, unattributed user testimonials, calls to action like "Download now"
  • ✅ Apple keyword field hygiene: 100-byte limit, spaces after commas, duplicates, plurals, words already in your app name, category words like "app"
  • ✅ Length limits for every field (Apple: name and subtitle 30, keywords 100 bytes, promo text 170, description 4,000; Google: title 30, short description 80, full description 4,000)
  • ✅ Returns riskLevel, riskByStore, categoriesFlagged, fieldLengths, and per issue ruleId, severity, field, quote, context, per-store policyUrl and rewriteHint

Who is it for?

  • 📱 Indie developers and app studios about to submit an update
  • 📈 ASO agencies and consultants auditing many client listings
  • 🤖 AI listing and ASO tools that generate titles and descriptions and need a policy gate
  • 🌍 Teams publishing on both stores (the stores treat the same words differently: "Android" is fine on Google Play, a rejection risk on Apple)

How to check an app listing before you submit

  1. Click Try for free or Start. The input is prefilled with two example listings.
  2. Replace them with your own in App listings (any of name, subtitle, keywords, promotionalText, description, shortDescription, whatsNew).
  3. Add your own brand and product names in Your brand terms so they aren't flagged.
  4. Click Start. Each listing becomes one row in the results table.
  5. Download the results or fetch them through the API.

Input example

This is the prefilled input:

{
"apps": [
{
"id": "photo-app",
"store": [
"apple",
"google"
],
"name": "#1 Best FREE Photo Editor!!! 📸",
"subtitle": "Better than Snapchat filters",
"keywords": "photo, editor,photos,instagram,app,filter,filters,android",
"shortDescription": "Download now - 50% off Pro today only",
"description": "Top rated photo editor.\n\"Best app I ever used!\" - Happy user\nShare your edits straight to Instagram and TikTok."
},
{
"id": "budget-app",
"store": [
"apple",
"google"
],
"name": "Budget Planner: Money Tracker",
"subtitle": "Expenses, bills and savings",
"keywords": "expense,bills,savings goal,debt payoff,paycheck",
"promotionalText": "Spring sale: Premium is 40% off until April 30.",
"shortDescription": "Track spending, plan bills and reach savings goals.",
"description": "Track spending, plan bills and set savings goals. Export reports to Excel. Sync across your devices."
}
]
}

From an App Store or Google Play scraper's dataset (common fields such as title, trackName, summary and releaseNotes are detected automatically):

{
"datasetId": "YOUR_APP_SCRAPER_DATASET_ID",
"stores": [
"apple"
],
"brandTerms": [
"Acme",
"Acme Pro"
],
"fieldMap": {
"name": "appTitle"
}
}

Output example

Real output from the prefilled input above (run on 2026-10-21, America/Chicago). The risky photo app had 16 issues; here they are at a glance:

SeverityFieldQuoteRule
highkeywordsinstagramcompetitor_or_trademark
highkeywordsandroidother_platform_mention
highname#1ranking_claim
highnameFREEprice_promo_in_headline
highname📸emoji_or_emoticon
highname!!!repeated_special_characters
highsubtitleSnapchatcompetitor_or_trademark
mediumdescription"Best app I ever used!" - Happy userunattributed_testimonial
mediumshortDescriptionDownload nowcall_to_action
lowdescriptionBest appranking_claim
lowdescriptionTop ratedranking_claim
lowkeywordsspaces after commaskeyword_spaces
lowkeywordseditor, photokeyword_repeats_name
lowkeywordsapp, photokeyword_category_words
lowkeywordsfilters, photoskeyword_plurals
lowshortDescription50% offprice_promo_in_headline

The photo app row, trimmed to 4 of its 16 issues, then the clean budget app in full:

[
{
"appId": "photo-app",
"name": "#1 Best FREE Photo Editor!!! 📸",
"storesChecked": [
"apple",
"google"
],
"riskLevel": "high",
"riskByStore": {
"apple": "high",
"google": "high"
},
"issueCount": 16,
"categoriesFlagged": [
"Formatting (emoji, symbols, caps)",
"Keyword field (App Store)",
"Misleading or irrelevant metadata",
"Other apps, brands & trademarks",
"Other platforms & app stores",
"Price & promotion in metadata",
"Ranking, award & performance claims"
],
"issues": [
{
"ruleId": "competitor_or_trademark",
"category": "Other apps, brands & trademarks",
"severity": "high",
"field": "keywords",
"quote": "instagram",
"context": "photo, editor,photos,instagram,app,filter,filters,android",
"stores": [
{
"store": "apple",
"severity": "high",
"policyUrl": "https://developer.apple.com/app-store/review/guidelines/#2.3.7"
}
],
"rewriteHint": "Apple doesn't allow names of other apps or companies in keywords (App Store Connect reference, guideline 2.3.7)."
},
{
"ruleId": "ranking_claim",
"category": "Ranking, award & performance claims",
"severity": "high",
"field": "name",
"quote": "#1",
"context": "#1 Best FREE Photo Editor!!! 📸",
"stores": [
{
"store": "apple",
"severity": "medium",
"policyUrl": "https://developer.apple.com/app-store/product-page/"
},
{
"store": "google",
"severity": "high",
"policyUrl": "https://support.google.com/googleplay/android-developer/answer/9898842"
}
],
"rewriteHint": "Store ranking, award and 'best/#1/top' claims aren't allowed in the title, icon or developer name on Google Play, and Apple asks for no unverifiable claims in names and subtitles. Describe what the app does instead ('Budget planner with bank sync'). In the description, only keep claims you can attribute ('Apple Design Award 2024 finalist')."
},
{
"ruleId": "competitor_or_trademark",
"category": "Other apps, brands & trademarks",
"severity": "high",
"field": "subtitle",
"quote": "Snapchat",
"context": "Better than Snapchat filters",
"stores": [
{
"store": "apple",
"severity": "high",
"policyUrl": "https://developer.apple.com/app-store/review/guidelines/#2.3.7"
}
],
"rewriteHint": "Comparing yourself to named apps or brands in the listing ('better than X', 'X alternative') is flagged by both stores; Google lists brand comparisons as a metadata violation."
},
{
"ruleId": "unattributed_testimonial",
"category": "Misleading or irrelevant metadata",
"severity": "medium",
"field": "description",
"quote": "\"Best app I ever used!\" - Happy user",
"context": "Top rated photo editor. \"Best app I ever used!\" - Happy user Share your edits straight to Instagram and T...",
"stores": [
{
"store": "apple",
"severity": "low",
"policyUrl": "https://developer.apple.com/app-store/review/guidelines/#2.3"
},
{
"store": "google",
"severity": "medium",
"policyUrl": "https://support.google.com/googleplay/android-developer/answer/9898842"
}
],
"rewriteHint": "Google Play doesn't allow unattributed or anonymous user testimonials in the description. Remove them, or attribute press quotes to the publication."
}
],
"fieldLengths": {
"name": {
"length": 30,
"unit": "characters",
"limits": {
"apple": 30,
"google": 30
}
},
"subtitle": {
"length": 28,
"unit": "characters",
"limits": {
"apple": 30
}
},
"keywords": {
"length": 57,
"unit": "bytes",
"limits": {
"apple": 100
}
},
"description": {
"length": 111,
"unit": "characters",
"limits": {
"apple": 4000,
"google": 4000
}
},
"shortDescription": {
"length": 37,
"unit": "characters",
"limits": {
"google": 80
}
}
},
"disclaimer": "Automated text pre-check based on Apple's App Store Review Guidelines (2.3 Accurate Metadata) and Google Play's Metadata policy. Flags are possible issues, not App Review decisions; a clean result does not guarantee approval. Icons, screenshots, previews and the app itself are also reviewed. Not affiliated with Apple or Google."
},
{
"appId": "budget-app",
"name": "Budget Planner: Money Tracker",
"storesChecked": [
"apple",
"google"
],
"riskLevel": "none found",
"riskByStore": {
"apple": "none found",
"google": "none found"
},
"issueCount": 0,
"categoriesFlagged": [],
"issues": [],
"fieldLengths": {
"name": {
"length": 29,
"unit": "characters",
"limits": {
"apple": 30,
"google": 30
}
},
"subtitle": {
"length": 27,
"unit": "characters",
"limits": {
"apple": 30
}
},
"keywords": {
"length": 47,
"unit": "bytes",
"limits": {
"apple": 100
}
},
"promotionalText": {
"length": 47,
"unit": "characters",
"limits": {
"apple": 170
}
},
"description": {
"length": 100,
"unit": "characters",
"limits": {
"apple": 4000,
"google": 4000
}
},
"shortDescription": {
"length": 51,
"unit": "characters",
"limits": {
"google": 80
}
}
},
"disclaimer": "Automated text pre-check based on Apple's App Store Review Guidelines (2.3 Accurate Metadata) and Google Play's Metadata policy. Flags are possible issues, not App Review decisions; a clean result does not guarantee approval. Icons, screenshots, previews and the app itself are also reviewed. Not affiliated with Apple or Google."
}
]

The budget app's "Spring sale: Premium is 40% off" is not flagged because it is in Apple promotional text, where sales are allowed, and "Export reports to Excel" is an integration, not a competitor claim.

Severity: high = commonly rejected or removed (ranking claims and emoji in titles, competitor names in Apple keywords). medium = depends on context or likely to draw a reviewer comment. low = a weak signal or an ASO hygiene tip. riskLevel is the highest severity found.

How much does it cost to check app listings?

This Actor uses pay-per-event pricing:

  • $0.02 per app listing (one result row per listing, both stores included)
  • a tiny Actor start fee of $0.00005 per run
  • plus the small Apify platform usage of the run, paid by you. For the prefilled 2-listing example this was about $0.0001 (256 MB, under 4 seconds).

So 50 listings cost about $1.00. Apify lets you set a maximum cost per run.

Use it through the API, integrations or AI agents

  • API: POST https://api.apify.com/v2/acts/ultimatemc~app-store-listing-policy-checker/run-sync-get-dataset-items with your Apify token and the input JSON as the body. Client libraries for JavaScript and Python are on the API tab.
  • AI agents (MCP): add https://mcp.apify.com?tools=ultimatemc/app-store-listing-policy-checker to Claude, Cursor, ChatGPT or any MCP client, so your agent can check generated listing text before you paste it into App Store Connect or Play Console. See Apify MCP server.
  • Chain it after a scraper: pass an app scraper's datasetId to audit competitor or client listings in bulk.
  • Automation: connect webhooks, Make, Zapier, n8n or Google Sheets from Apify Console.

FAQ

Does a clean result guarantee approval?

No. It means none of the rules matched your text. Apple and Google also review screenshots, icons, previews, app behavior and context.

Can I mention integrations like "Export to Excel" or "Share to Instagram"?

Usually yes, and the checker allows them in descriptions. It flags other app names in titles, subtitles and Apple keywords, and comparison wording like "better than" or "alternative to".

My own brand is flagged. What do I do?

Add it to Your brand terms. It is then skipped in the competitor and ALL CAPS checks.

Does it use AI?

No. It's rule-based (keywords, patterns and limits), so results are repeatable and every flag links to a guideline. No text is sent to any outside service.

Which languages are supported?

English text. Length limits apply to any language.

Limitations

  • Text only: it doesn't see screenshots, icons, previews or the app itself, and doesn't check age ratings, privacy labels or in-app behavior.
  • English, keyword-based. The app-name list is curated, not complete, so a competitor name that isn't on the list won't be flagged.
  • Rules are our paraphrase of public guidelines checked on 2026-10-21; Apple and Google update them, so confirm on the linked pages.

Policy sources

Rules are paraphrased from these public pages (checked 2026-10-21; Apple updated section 2.3 on 2026-10-16):

Data and privacy

The checker makes no network calls (except reading your own dataset when you give one). Listing text is processed only during the run and saved only to your own Apify dataset.

Other tools by Ultimate Foresight

Found a false positive or a missed phrase? Open an issue on the Issues tab with the listing text, and we'll review the rule.