/dashboard/seo) and uses what Appeeky already knows about your app — its store listing, its competitors and their reviews — to decide which pages to build and what to put on them.
It is four tools that feed each other:
The fifth playbook piece — AI Visibility → Sources cited → Fixes → re-measure — lives under
/v1/ai-visibility and is documented in AI Visibility.
All endpoints require an SEO project and are scoped to the authenticated user. Reads and “track” writes cost 0 credits. The routes that buy provider data or run an LLM (
seed/preview, complaints/mine, briefs POST, templates/expand) cost 2 credits each. See Limits below.Where the app context comes from
Every tool resolves the project’s app context the same way, in order of preference:- My Apps — when the project is linked to a My Apps entry (
userAppId), the app name, description, category, icon and its My Apps competitors are used. Competitors with a store id are the ones the complaint miner can review-mine. - Store lookup — otherwise
seo_projects.app_idis looked up on the App Store / Play Store. - Project fields — name and product description as a last resort.
seo_competitors): the label you gave, or a brand derived from the domain (app.sensortower.com → sensortower).
Alternative / vs seeds
Preview candidates
Patterns generated per competitor:
{competitor} alternative, {competitor} alternatives, apps like {competitor}, {competitor} vs {app}, {app} vs {competitor}, {competitor} free alternative. Per category: best {category} apps, best {category} app, {category} app alternatives, free {category} apps. Plus {app} alternative.
alreadyTracked is true when the keyword is already active in the project.
Track selected candidates
Tracked keywords get
source: "template_seed" and the tag alt-vs. Returns { keywords, added } (201).
Complaint miner
1–2★ reviews are people describing, in their own words, the problem they’d Google. The miner pulls them for a set of apps, clusters them with an LLM into themes, and returns the queries to rank for.Start a mine
At most 15 apps are mined per run (explicit apps first, then competitors, then own app). Names are resolved from the store up front so a queued mine already shows readable app names.
Response (201 Created):
mode is queued when a background worker is configured (poll GET /v1/seo/complaints/:id until status is done or failed), inline otherwise (the response already contains the clusters).
Errors: no_apps (400) when nothing could be selected, dispatch_failed (502) when the job could not be queued.
Read mines
suggestedPageType is one of problem, alternative, vs, roundup, use_case.
Track queries from a mine
Pass at least one of the two. Keywords get
source: "complaint" and the cluster theme as a tag. Metrics are fetched for the tracked queries in the same call.
Page briefs
A brief is everything a writer (or an LLM) needs to produce one page, generated from the keyword’s SERP context, your app description and the competitors it should mention honestly.Generate
Response (201 Created) —
brief.brief has this shape:
List, read, update, delete
published with a publishedUrl is what lets the rank tracker attribute later movement to that page.
Programmatic templates
Presets
personas, platforms, integrations, modifiers, goals, languages), example templates, and autoVariables — {app}, {category} and {competitor} filled from the project’s app context.
Expand
Resolution order per variable: explicit
variables → chosen preset → any preset for that variable → auto variable. Missing values return missing_variables (400).
Response (200 OK):
zeroVolume rows are the pages you should not build.
Track expansions
Limits
Access
The whole SEO module requires a Startup or Agentic Scale web plan (or an explicitseo beta grant). Indie Dev and API-only plans get 403 on every /v1/seo/* route.
Credits
Credits are deducted from the general bucket for both API-key and dashboard (web) calls.
Provider spend
The real cost behind these calls is DataForSEO (keyword metrics) and the LLM (clustering, briefs). Every spend is recorded per project in the usage ledger and shows up as Spent today on the project’s Overview tab. Typical costs:Hard caps
There is no per-plan cap on the number of mines, briefs or tracked SEO keywords beyond the credit balance and the caps above.

