# Competitors: see who ranks ahead of you

URL: https://serpel.app/docs/competitors

Updated: 2026-11-05

Serpel’s competitor analysis shows which domains rank ahead of you for the keywords you track, using the Google results that your last rank check already stored. It sends no extra request and costs no extra credits. You add up to 10 competitors yourself or take suggestions from the search results.

## How does competitor analysis work?

Competitor analysis is a second reading of data you already have. Every rank check stores the organic Google results for each tracked keyword. Serpel looks up your domain and each competitor in those stored results and compares their positions. Nothing new is fetched from Google when you open the page, so the numbers are exactly as fresh as your last [rank check](https://serpel.app/docs/rank-tracking). The [rank tracking overview](https://serpel.app/features/rank-tracking) shows what those checks do.

**From tracked keywords to a competitor comparison**

1. **Track keywords**: The comparison covers the keywords you track in rank tracking.
2. **Run a rank check**: Each check stores the organic results up to your depth, not only your own position.
3. **Add competitors**: Add up to 10 domains yourself, or take suggestions from the stored results.
4. **Read the stored results** (No credits): Serpel finds each domain’s best position per keyword. No new request is sent.
5. **Compare**: You see share of clicks, page 1 and top 3 counts, and a keyword-by-keyword table.

Only keywords whose latest check stored its search results are measured. A keyword that has not been checked yet does not count. The page says how many of your tracked keywords it measured, and it tells you when to run a check first. The numbers also appear in your [monitoring reports](https://serpel.app/docs/monitoring-and-reports), so you can follow competitors over time. Your competitors also feed the **Competitor ahead** [opportunity](https://serpel.app/docs/opportunities), which flags keywords where a tracked competitor ranks in the top 3 while you rank outside the top 10, as long as the keyword has search volume or Search Console impressions.

## How do you add competitors?

1. **Open Competitors.** Choose **Competitors** under **Research** in the sidebar.

2. **Add a domain.** Click **Competitor** in the page header, or **Add competitor** on an empty page. Type the domain without `https://` and path, for example `competitor.com`, and click **Add**.

3. **Or take a suggestion.** Click **View suggestions** in the banner “Who ranks ahead of you for your keywords?”. The dialog lists domains from your search results. Click **Add** next to the ones you want.

4. **Remove a competitor.** Click **Remove** on its card. A message offers **Undo** for a moment.

Adding and removing competitors needs the editor role in the project. Viewers can read the page and the suggestions. A project compares at most 10 competitors, and the dialog tells you when all slots are used. Serpel keeps only the domain, so a pasted address such as `https://www.competitor.com/blog` becomes `competitor.com`. It refuses your own domain, and also a parent domain or a subdomain of it. Adding a domain twice changes nothing.

### How does Serpel suggest competitors?

Suggestions come from the stored results of your last checks. Serpel takes every domain that shows up in the first 20 positions for your tracked keywords, or within your depth if that is lower, and leaves out your own domain and the competitors you already added. It counts per domain how many keywords it appears for and how many of those are on page 1, and it lists up to 15 domains. The ones with the most page-1 keywords come first, then the ones with the most keywords, then the better average position. Without a rank check there are no suggestions.

## What do the competitor numbers show?

The bar cards **Share of clicks**, **On page 1** and **In the top 3** rank you and your competitors side by side. They appear once at least one competitor is added and keywords are measured. The list **Your competitors** has one card per competitor, sorted by share of clicks. The table **Keyword by keyword** shows every position.

- A card says “ranks for X of N keywords, Y of them on page 1” and shows the average position, counted over the keywords where the domain ranks.
- The red pill **ahead of you on** counts keywords where the competitor ranks better than you or ranks while you do not. The green pill **behind you on** counts keywords where you rank better, including keywords where only you rank. Keywords where both rank equally count for neither, and so do keywords where neither ranks.
- The percentage on a card is the estimated share of clicks. A trend badge appears when the latest monitoring report matches the latest check, and it compares with the previous run.
- Positions count only within the depth that was checked. A dash means that the domain is not within it.

## How is the estimated click share calculated?

Share of clicks is an estimate, not a measurement. Serpel multiplies the expected click rate of each position by the search volume of the keyword, adds this up over all measured keywords and divides the sum by what the domain would get with first place everywhere. A domain that is first for every keyword scores 100%, and a domain that is not found scores 0%. Keywords with no or very little search volume still count, with a weight of 10.

**How the share of clicks is calculated:** Share of clicks = Click rate × Search volume ÷ Best case

- **Click rate**: The expected share of searches that click a result at the domain’s best position for a keyword, taken from a fixed curve.
- **Search volume**: The monthly searches of the keyword, so popular keywords weigh more. A volume below 10 or a missing one counts as 10.
- **Best case**: The same calculation if the domain ranked first for every keyword.

**The click rate curve for organic positions**
| Range | Meaning | Details |
| --- | --- | --- |
| 1 | First place | 27.6% of searches click it. |
| 2–3 | Next two | 15.8% at position 2 and 11.0% at position 3. |
| 4–10 | Rest of the top 10 | 8.4% at position 4, falling to 2.4% at position 10. |
| 11–30 | Beyond the top 10 | 1.2% at position 11, falling to 0.4% at position 30. |
| 31–100 | Far down | 0.1% per position. Beyond position 100 the rate is 0%. |

The curve is a fixed model that Serpel applies to every project, not your own click data. For measured clicks, connect [search data](https://serpel.app/docs/search-data). The same estimate appears as **Visibility** on the tracked keywords page, on the project overview and in reports. The CLI and the MCP tool also report estimated monthly clicks, which is the click rate times the search volume, added up.

## What do the page 1 and top 3 counts mean?

**On page 1** counts the measured keywords where the domain’s best position is 10 or better. **In the top 3** counts those with position 3 or better. Both show as “N of M”, where M is the number of measured keywords.

A domain’s best position on a keyword is the highest of all its results, including subdomains. If a competitor has two pages in the results, only the better one counts. The counts use the rank depth of each keyword’s latest check, so they cannot see results beyond it.

## How does the keyword-by-keyword comparison work?

The table lists one row per measured tracked keyword, sorted by search volume. Its columns are **Keyword**, **You**, one column per competitor and **Search volume**. A **Location** column appears when the same keyword is tracked for several places or devices. Click a keyword to open its [keyword page](https://serpel.app/docs/rank-tracking) with the full results.

**How to read the positions in the table**

- **Blue** (You): Your own position for the keyword. A dash means you are not within the checked depth.
- **Red** (Ahead of you): The competitor ranks better than you. It also shows red when it ranks and you do not.
- **Grey** (Behind or level): The competitor ranks worse than you, or ties with you. A dash means it is not within the depth.

Keywords tracked for more than one device or location appear as separate rows, because each combination is its own search. The keyword page also marks competitors in its list of top results, so you can see who stands between you and the first position.

## How do you use competitor analysis from the CLI, API and MCP?

Everything in the dashboard works from the [CLI](https://serpel.app/docs/cli). `serpel competitors list` prints keywords, top 3, top 10, average position, visibility and estimated clicks per month for each domain. `serpel competitors compare` prints the keyword table and marks competitors that rank ahead of you with ▲. All reading commands use the stored results and cost nothing.

```bash
serpel competitors suggest --project <id>
serpel competitors add --project <id> --domain competitor.com
serpel competitors list --project <id>
serpel competitors compare --project <id>
serpel competitors remove --project <id> --domain competitor.com
```

The [REST API](https://serpel.app/docs/api) has matching endpoints: `GET` and `POST` on `/projects/{id}/competitors`, `GET /projects/{id}/competitors/overview`, `/suggestions` and `/comparison`, and `DELETE /projects/{id}/competitors/{competitorId}`. Reading needs the `rankings:read` scope and changing needs `rankings:write`.

```bash
curl -X POST https://serpel.app/api/v1/projects/$PROJECT_ID/competitors \
  -H "Authorization: Bearer $SERPEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain": "competitor.com"}'

curl https://serpel.app/api/v1/projects/$PROJECT_ID/competitors/overview \
  -H "Authorization: Bearer $SERPEL_TOKEN"
```

The MCP tool `analyze_competitors` compares the project with its saved competitors. It is read-only and free, runs no new searches and needs the `rankings:read` scope. It returns the visibility per domain, how often each competitor is ahead or behind and up to 25 keywords where a competitor leads. When you have no competitors yet, it suggests a few domains. The [Claude Code guide](https://serpel.app/docs/mcp/claude-code) explains how to connect an agent.

## Why are my competitor numbers missing or old?

| What you see | What to do |
| --- | --- |
| “No keywords checked yet”, or a card that says “Values arrive with the next ranking check” | No tracked keyword has stored search results yet. Track keywords and run a rank check. |
| No suggestions | Suggestions appear after a rank check. Run one with **Check now** on the tracked keywords page. |
| The numbers do not change | They follow your rank checks. Check more often with a schedule, see [monitoring and reports](https://serpel.app/docs/monitoring-and-reports). |
| “Competitor not added” | The domain may be your own, a parent or subdomain of it, or you reached the limit. Remove a competitor to free a slot. |
| A competitor shows dashes everywhere | It does not appear within the checked depth for your keywords. Raise the depth in the project settings if you want to see further down. |
| The buttons are missing | You are a viewer. Ask a project owner to give you the editor role. |

## Where to go next

- [Rank tracking](https://serpel.app/docs/rank-tracking): Track keywords and run the checks that feed this page.
- [Monitoring and reports](https://serpel.app/docs/monitoring-and-reports): Follow competitors over time in every report.
- [Search data](https://serpel.app/docs/search-data): Compare estimates with your measured clicks.
- [Opportunities](https://serpel.app/docs/opportunities): Turn gaps against competitors into next steps.