ASOhack

Developer documentation

ASOhack for developers

How the ASOhack audit pipeline works, what a report contains, and how to integrate ASOhack into your workflow.

Overview

ASOhack is a web-based App Store Optimization audit tool. Paste any App Store (apps.apple.com) or Google Play (play.google.com) URL and the system returns a six-category audit with ranked fix recommendations in under 15 seconds.

The tool runs at asohack.com, but understanding how it works is useful if you want to (a) integrate ASOhack into your ASO workflow, (b) build on top of the public report URLs, or (c) just understand what's under the hood.

How an audit works

  1. Submit a store URL — the client POSTs to /api/analyze-store with the App Store or Google Play URL.
  2. Metadata fetch — ASOhack scrapes the public store listing: title, subtitle (iOS) or short description (Android), long description, screenshots, icon, ratings, and a sample of recent reviews.
  3. Parallel AI analysis — four AI calls run in parallel: text analysis (OpenAI), sanity check (Anthropic), vision analysis on the icon (OpenAI vision), and vision analysis on the first three screenshots.
  4. Score synthesis — outputs are combined into six 0-100 category scores: ASO, Reviews, Ads, Conversion, Competitive, Technical.
  5. Persist + redirect — the report is saved with a random 6-byte base64url ID; the client receives the ID and navigates to /r/[id].

End-to-end latency is typically 12-18 seconds, dominated by AI inference. The parallel layout is what keeps it under 20s — sequential calls would take 40-50s.

Shareable report URLs

Every completed audit gets a public URL at:

https://asohack.com/r/[id]

The id is a 6-byte base64url-encoded random string (~8 chars). Anyone with the URL can view the report — there is no authentication. IDs are unguessable in practice (~10^14 search space) but should not be treated as secrets. Reports are intentionally meant to be shared.

Report URLs are stable: they don't expire and the underlying data is immutable once saved.

Rate limits

TierLimitWindow
Anonymous (no signin)5 auditsper IP per 24h
Free signed-in1 auditper rolling 7 days
ProUnlimited

Anonymous limits are enforced via an in-memory map keyed by IP. Free signed-in limits are enforced by counting audits in the user's rolling 7-day history in the database.

Report JSON shape

Each audit returns a structured object stored in the database and rendered at /r/[id]. The shape (simplified):

{
  "id": "string",
  "storeType": "ios" | "android",
  "appId": "string",
  "appTitle": "string",
  "overallScore": 0-100,
  "appData": {
    "title": "string",
    "subtitle": "string?",        // iOS only
    "shortDescription": "string?", // Android only
    "description": "string",
    "icon": "string (URL)",
    "screenshots": ["string"],
    "rating": 0-5,
    "reviewCount": number,
    "primaryGenreName": "string"
  },
  "reviews": [
    { "title": "string", "body": "string", "rating": 1-5 }
  ],
  "analysis": {
    "aso":         { "score": 0-100, "fixes": [...] },
    "reviews":     { "score": 0-100, "sentiment": "string", "themes": [...] },
    "ads":         { "score": 0-100, "fixes": [...] },
    "conversion":  { "score": 0-100, "fixes": [...] },
    "competitive": { "score": 0-100, "fixes": [...] },
    "technical":   { "score": 0-100, "fixes": [...] },
    "icon":        { "score": 0-100, "feedback": "string" },
    "screenshots": {
      "avgScore": 0-100,
      "frames": [{ "score": 0-100, "feedback": "string" }]
    }
  },
  "createdAt": "ISO-8601 timestamp"
}

The exact shape may evolve. For long-running integrations, contact us about the private API which has a stable, versioned contract.

How ASOhack is built

For the curious — the stack:

  • Web — Next.js 15 (App Router), TypeScript, Tailwind.
  • Hosting — Cloudflare via @opennextjs/cloudflare. Also has a Dockerfile for standalone Next output.
  • Database — Postgres via pg. Reports and rate-limit buckets live here. All queries parameterized.
  • AI — OpenAI (text + vision) and Anthropic SDK, called in parallel from /api/analyze-store.
  • Auth — NextAuth v5 beta, Google provider only.
  • Payments — Creem (Stripe-style processor with indie-friendly fees). Webhook signature verified.

API access (private beta)

We're running a limited private beta of an authenticated REST API for agencies and product teams running audits at scale. The beta covers:

  • Programmatic audit submission
  • Webhook callbacks on audit completion
  • Bulk audit history retrieval
  • Stable versioned response contract

If you'd like access, email [email protected] with a one-paragraph use case.

FAQ

Can I scrape ASOhack's public report pages?

Public /r/[id] pages are crawlable and indexable. Light scraping for analysis is fine. Heavy automated scraping triggers our rate limiter and is against the terms of use. If you need programmatic access, use the private API beta instead.

Does ASOhack store the audited app's data?

Yes — we store the publicly-fetched app metadata, a sample of recent reviews, and the resulting audit analysis. No personal data, no API keys, no developer-account access required. See our privacy policy for details.

How do I delete an audit report?

Report deletion requests can be submitted to [email protected]. Include the /r/[id] URL. We delete within 7 business days.

Is there a Slack / Discord integration?

Not yet built. If this is something you need, reply to [email protected]— it's on the roadmap and demand signals move it up.

Where can I see ASOhack's live usage stats?

asohack.com/metrics shows real-time audit counts, store breakdown, score distribution, and top categories audited. Updated every 10 minutes from production data.

Want API access?

The private beta is open to agencies and product teams running audits at scale.

Request access