Skip to main content
Back to all posts

How to Find Every Keyword a Domain Ranks For, via API

6 min readJonathan Geiger
ranked keywordscompetitor researchtutorialSEO

Your competitor ranks for hundreds of keywords you have never thought to target. Some of them are buying-intent terms you could win with one good page. The problem is you cannot see them. Their ranking list is invisible from the outside unless you go pull it.

That is exactly what this endpoint does. Give it a domain and it returns the keywords that domain ranks for in Google, each one with its position, search volume, CPC, difficulty, estimated traffic value, and the exact URL that ranks. Point it at your own site to audit yourself, or point it at a rival to reverse-engineer their whole SEO strategy.

If you just want to eyeball it first, the ranked keywords checker does the same thing in the browser with no code. Drop in a domain, see what it ranks for. This tutorial covers the Ranked Keywords API so you can pull it in bulk and feed it into your own tools.

Running a request in the Trackee API playground
Running a request in the Trackee API playground

What you need

Three things and you are ready:

  • A free Trackee account. The free plan has enough credits to run the examples here.
  • An access key from your dashboard.
  • The x-access-key header on every request.

No SDK, no OAuth, no approval queue.

Step 1: Get your API key

Sign in to your dashboard, open the API keys section, and create a key. Copy it right away, since the full value only shows once.

That key goes in the x-access-key header on every call. Keep it on your server, out of any client-side code.

Step 2: Pull a domain's keywords

Here is a full request. Swap in your key and the domain you want to look at. Each lookup costs 10 credits.

curl -X POST https://api.trackee.dev/v1/ranked-keywords \
  -H "x-access-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "domain": "stripe.com", "limit": 50 }'

The limit controls how many keywords come back per call, up to 100. The response looks like this:

{
  "success": true,
  "credits": { "charged": 10, "remaining": 4970 },
  "data": {
    "domain": "stripe.com",
    "total": 115957,
    "keywords": [
      { "keyword": "payment processing", "position": 2, "search_volume": 18100, "etv": 5400, "url": "https://stripe.com/payments" }
    ]
  }
}

Look at total first. That is how many keywords the domain ranks for in all, 115,957 in this example. The keywords array is the slice you asked for. Bump limit to 100 to grab more per call.

What each field tells you

Every entry in keywords carries the numbers you need to judge whether a keyword is worth chasing.

  • keyword is the search term the domain ranks for.
  • position is where it sits on the results page. Lower is better, and anything in the top 3 is real traffic.
  • search_volume is roughly how many times that term gets searched each month. This is the demand.
  • etv is estimated traffic value, the dollar value of the visits that keyword sends. It blends volume, position, and CPC into one number, so it is the fastest way to sort by impact instead of raw volume.
  • url is the exact page that ranks. Handy for seeing whether they win with a blog post, a product page, or a doc.

The endpoint also carries CPC and keyword difficulty per keyword, so you can spot the terms that are both cheap to rank for and worth money when you do.

Mining a competitor for your content plan

Here is where this gets useful. Run it on a competitor instead of yourself.

curl -X POST https://api.trackee.dev/v1/ranked-keywords \
  -H "x-access-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "domain": "competitor.com", "limit": 100 }'

Now you have their ranked list. Sort it by etv and the top of that list is the traffic actually paying their bills. Those are the keywords to study.

Then do the subtraction. Pull your own domain the same way, and any keyword they rank for that you do not is a gap. High volume, decent difficulty, no page on your side? That is a brief writing itself.

A workflow that holds up:

  1. Pull the competitor at limit: 100, sorted mentally by etv.
  2. Pull yourself with the same call.
  3. Find keywords in their list that are missing from yours.
  4. Look at their url for each one to see what kind of page wins, then write a better version.

Run this across three or four competitors and the keywords that show up on all of them are the ones your whole category is fighting over.

No code? Use the dashboard

You do not have to touch the API to get this. The same ranked-keyword pull runs from the Trackee dashboard with no code, and if you manage several sites, the brands view keeps each one's keywords in its own place. That is how agencies run keyword research for a whole roster of clients from one screen instead of juggling spreadsheets.

Let an AI agent pull it for you

If you work in an AI coding tool or a chat agent, Trackee has an MCP server and a coding skill so an agent can call this in plain language. You ask it "what does competitor.com rank for that we don't," and it runs the calls, diffs the lists, and hands you the gaps. No wiring up the request yourself.

What's next

You can now pull any domain's full keyword profile, read the metrics on each one, and diff a competitor against yourself to find your next posts.

Good next steps:

Pick your closest competitor, pull their top 100 by traffic value, and cross off everything you already rank for. What is left is your content plan for the next quarter.

You might also like