> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appeeky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SEO for Apps

> Track your website and store listing in Google, find keyword gaps, audit your site and build backlinks, all from one SEO project.

**SEO for Apps** helps an app get found on Google, not only in the App Store. You create a project for your marketing site, your store listing or both. Appeeky tracks where they rank, shows which searches your competitors win, checks your site for on-page problems and helps you earn links from pages that already rank.

> [!NOTE]
>
> Requires a **Startup** or **Agentic Scale** plan. Other plans get `403` on every `/v1/seo` route. In the dashboard, open **SEO for Apps** in the sidebar.

***

## How it fits together

```mermaid theme={"theme":{"light":"github-light","dark":"github-dark"}}
flowchart LR
  A[Project] --> B[Rank tracker]
  A --> C[Competitors<br/>and gaps]
  A --> D[Site audit]
  B --> E[Link prospects]
  E --> F[Outreach]
  F --> G[Backlinks]
  C --> B
```

Everything hangs off a **project**: one market (country, language, device) for one site or listing.

| Dashboard tab | What it does | Guide |
| - | - | - |
| **Overview** | Visibility score, average position, biggest movers, outreach and backlink summary | This page |
| **Domain** | Organic footprint of your domain or a competitor's | [Keywords and competitors](https://docs.appeeky.com/docs/seo-keywords.md) |
| **Rank tracker** | Google positions for every tracked keyword | [Keywords and competitors](https://docs.appeeky.com/docs/seo-keywords.md) |
| **Research** | Keyword ideas and search volume | [Keywords and competitors](https://docs.appeeky.com/docs/seo-keywords.md) |
| **Competitors** | Keywords competitors rank for and you don't | [Keywords and competitors](https://docs.appeeky.com/docs/seo-keywords.md) |
| **Site audit** | Crawl your site for on-page problems | [Site audit](https://docs.appeeky.com/docs/seo-site-audit.md) |
| **Complaints**, **Pages** | Pages to build from your app's context and reviews | [SEO playbook](https://docs.appeeky.com/docs/seo-playbook.md) |
| **Link building** | Find pages worth pitching and run outreach | [Link building](https://docs.appeeky.com/docs/seo-link-building.md) |
| **Backlinks** | Watch links to your site and study backlink profiles | [Backlinks](https://docs.appeeky.com/docs/seo-backlinks.md) |

***

## Get started

**1. Create a project**

Go to **SEO for Apps** and create a project with your website URL, your App Store or Google Play URL, or both. Pick the country, language and device you care about.

**2. Let the first run finish**

When the project has a website, Appeeky imports up to 40 keywords your domain already ranks for, so the rank tracker isn't empty, and starts the first rank scan.

**3. Add keywords**

Add the searches you want to rank for, or import them from [competitor gaps](https://docs.appeeky.com/docs/seo-keywords.md#competitors-and-keyword-gaps) and the [playbook](https://docs.appeeky.com/docs/seo-playbook.md).

**4. Fill in the product details**

Add a product description and target audience in **Settings**. They are used to score link prospects and write outreach drafts.

***

## Projects

| Method | Endpoint | Description |
| - | - | - |
| GET | `/v1/seo/projects` | List projects (`?enabled=`, `?userAppId=`) |
| POST | `/v1/seo/projects` | Create a project |
| GET | `/v1/seo/projects/:id` | Get one project |
| PATCH | `/v1/seo/projects/:id` | Update a project. Only the fields you send change |
| DELETE | `/v1/seo/projects/:id` | Delete a project with its keywords, rank history, prospects and outreach |
| POST | `/v1/seo/projects/:id/scan` | Run a rank scan now |
| POST | `/v1/seo/projects/:id/bootstrap` | Import keywords your website already ranks for |
| GET | `/v1/seo/projects/:id/stats` | Visibility, keyword bands, outreach and backlink summary (`?days=`, 1–365, default `30`) |
| GET | `/v1/seo/projects/:id/visibility` | Daily average position and top 3/10/100 counts (`?days=`, 1–365, default `30`) |
| GET | `/v1/seo/projects/:id/movers` | Biggest gains and losses (`?days=` 1–90, default `7`; `?limit=` 1–50, default `10`) |

### Create a project

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST https://api.appeeky.com/v1/seo/projects \
  -H "X-API-Key: $APPEEKY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Focus Timer US",
    "websiteUrl": "https://focustimer.app",
    "appStoreUrl": "https://apps.apple.com/us/app/focus-timer/id123456789",
    "country": "us",
    "languageCode": "en",
    "device": "mobile",
    "productDescription": "A Pomodoro timer that blocks distracting apps.",
    "targetAudience": "Students and remote workers",
    "keywords": ["pomodoro timer app", "focus app"]
  }'
```

| Field | Type | Description |
| - | - | - |
| `name` | string | Required, at least 2 characters |
| `websiteUrl` | string | Your marketing site. `websiteUrl` or `appStoreUrl` is required |
| `appStoreUrl` | string | Your App Store or Google Play listing URL |
| `userAppId` | string | Optional. Links the project to an app in **My Apps** |
| `appId` | string | Optional. Store app id (Apple numeric id or Play package name) |
| `platform` | string | `ios` or `android`. Default `ios` |
| `country` | string | Country code. Default `us` |
| `languageCode` | string | Language code. Default `en` |
| `device` | string | `desktop` or `mobile`. Default `desktop` |
| `productDescription` | string | What the product does, up to 2,000 characters |
| `targetAudience` | string | Who it is for, up to 1,000 characters |
| `outreachPersona` | string | Who outreach emails come from, up to 500 characters |
| `keywords` | string\[] | Optional keywords to start tracking right away |
| `scanIntervalHours` | number | Hours between scheduled rank scans. Default `72` (every 3 days) |
| `dataPoolEnabled` | boolean | Reuse anonymous results other members already fetched today. Default `true`. Your domains are never shared |
| `outreachEnabled` | boolean | Turn on [link building](https://docs.appeeky.com/docs/seo-link-building.md). Default `false` |
| `outreachAutopilot` | boolean | Queue new email drafts for sending without asking each time. Default `false` |
| `dailyProviderBudgetCents` | number | Daily cap on fresh search data for this project, in cents. Default `200` |

`PATCH` takes the same fields plus `enabled`. Set `enabled: false` to pause scheduled scans without losing history.

Response (`201`):

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "data": {
    "project": {
      "id": "PROJECT_ID",
      "name": "Focus Timer US",
      "websiteUrl": "https://focustimer.app",
      "websiteDomain": "focustimer.app",
      "country": "us",
      "languageCode": "en",
      "device": "mobile",
      "scanIntervalHours": 72,
      "enabled": true,
      "outreachEnabled": false,
      "dailyProviderBudgetCents": 200,
      "lastScannedAt": null
    }
  }
}
```

### Rank scans

Scheduled scans check every active keyword in the project. You can also start one with `POST /v1/seo/projects/:id/scan` or the scan button in the dashboard. Manual scans can run once every 3 days. The first scan of a new project is never blocked.

When the daily data budget is spent, scans keep running on pooled results only. Raise **Daily data budget** in the project's **Settings** to keep fetching fresh positions.

***

## Credits

Calls from the Appeeky dashboard don't use API credits. With an API key or MCP, reads and writes cost **0 credits** and the routes that fetch new search data cost **2 credits** each:

| Route | Credits |
| - | -: |
| `POST /v1/seo/projects/:id/bootstrap` | 2 |
| `POST /v1/seo/keywords/:id/live-check` | 2 |
| `POST /v1/seo/research/ideas` | 2 |
| `POST /v1/seo/research/metrics` | 2 |
| `POST /v1/seo/competitors/:id/analyze` | 2 |
| `POST /v1/seo/domain/overview` | 2 |
| `POST /v1/seo/domain/backlinks` | 2 |
| `POST /v1/seo/opportunities/:id/draft` | 2 |
| `POST /v1/seo/keywords/seed/preview`, `POST /v1/seo/complaints/mine`, `POST /v1/seo/briefs`, `POST /v1/seo/templates/expand` | 2 each |
| Every other `/v1/seo` route | 0 |

Each response carries an `X-Credit-Cost` header.

***

## Errors

| Status | Code | When |
| - | - | - |
| 400 | `missing_target` | Neither `websiteUrl` nor `appStoreUrl` was given |
| 400 | `missing_project` | A route that needs `projectId` (or `?project=`) didn't get one |
| 400 | `no_keywords` | Scan requested on a project with no active keywords |
| 400 | `project_disabled` | Scan requested on a paused project |
| 403 | `FORBIDDEN` | Your plan doesn't include SEO for Apps |
| 404 | `not_found` | The project doesn't exist or isn't yours |
| 429 | `manual_scan_cooldown` | A manual scan already ran in the last 3 days |

***

## MCP

| Tool | Description |
| - | - |
| `seo_projects_list` | List projects. Start here: the project id is the input for every other `seo_*` tool |
| `seo_projects_get` | One project's settings |
| `seo_projects_create` | Create a project |
| `seo_projects_update` | Update a project, pause or resume scans |
| `seo_projects_delete` | Delete a project and everything in it |
| `seo_projects_scan` | Run a rank scan now |
| `seo_projects_stats` | One-call summary of how SEO is doing |
| `seo_visibility_trend` | Daily position trend |
| `seo_keyword_movers` | Biggest gains and losses |

Example prompt: *"How is SEO doing for my Focus Timer project this month, and which keywords dropped the most this week?"*

***

## Next

* [Keywords and competitors](https://docs.appeeky.com/docs/seo-keywords.md): rank tracker, research, gaps and domain overview
* [Site audit](https://docs.appeeky.com/docs/seo-site-audit.md): find on-page problems
* [Link building](https://docs.appeeky.com/docs/seo-link-building.md): prospects, pitches and outreach
* [Backlinks](https://docs.appeeky.com/docs/seo-backlinks.md): watch your links and study backlink profiles
* [SEO playbook](https://docs.appeeky.com/docs/seo-playbook.md): decide which pages to build


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.