geondex
Documentation

ranked_keywords

The keywords a domain ranks for on Google, by traffic.

POST https://geondex.com/api/v1/ranked-keywords

The keywords your domain actually ranks for in Google's organic results, with position, the ranking page, monthly search volume and estimated monthly visits from each, highest traffic first — measured rankings an agent cannot see by searching. Works on any domain. Default United States, English; set location and language to change that. 7 credits per call, up to 100 keywords. Run it on a competitor, then check_visibility on its top keywords to see whether AI engines cite them too.

Not available on every deployment: returns 404 not_found when this server is not configured for it. GET /me lists what is configured.

Request

Request body (JSON)

  • domain · string · required — Any site, yours or a competitor's, e.g. ttsensei.com (no scheme). 3–253 characters
  • location · string · optional — Country or city by name, e.g. United States, Germany, or London,England,United Kingdom. 2–100 characters. Default "United States"
  • language · string · optional — Language by name, e.g. English, German. 2–50 characters. Default "English"
  • limit · integer · optional — 1-100 keywords, highest traffic first. Same price for any limit. 1–100. Default 50

Example request

curl -s https://geondex.com/api/v1/ranked-keywords -H "Authorization: Bearer gx_YOUR_KEY" -H "content-type: application/json" -d '{"domain":"ttsensei.com","limit":3}'

Response

200 with the envelope every tool returns: a one-line summary, the full data, and credits: { charged, remaining }. On a free call charged is 0 and remaining is null.

Fields of data

  • domain · string
  • total · number — How many keywords the domain ranks for; keywords holds the top limit
  • keywords · object[]
  • keywords[].keyword · string
  • keywords[].volume · number | null — Average monthly Google searches; null when unknown
  • keywords[].position · number | null — 1-based organic position on Google; null if unknown
  • keywords[].url · string | null — The page that ranks
  • keywords[].etv · number | null — Estimated monthly visits this keyword sends the domain

Example response

Real-shaped, checked against the output schema by a test. Long lists are shortened.

{
  "summary": "ttsensei.com ranks for 318 keywords on Google in United States; top by traffic \"table tennis blade\" at #4.",
  "data": {
    "domain": "ttsensei.com",
    "total": 318,
    "keywords": [
      {
        "keyword": "table tennis blade",
        "volume": 6600,
        "position": 4,
        "url": "https://ttsensei.com/blades",
        "etv": 363
      },
      {
        "keyword": "butterfly viscaria review",
        "volume": 720,
        "position": 3,
        "url": "https://ttsensei.com/blades/butterfly-viscaria",
        "etv": 72
      },
      {
        "keyword": "best table tennis blade for beginners",
        "volume": 390,
        "position": 4,
        "url": "https://ttsensei.com/blades/beginner",
        "etv": 27.3
      }
    ]
  },
  "credits": {
    "charged": 7,
    "remaining": 153
  }
}

Errors

Every error has the body {"error":{"code":"…","message":"…"}} and is not charged.

HTTPWhen
400Bad input
401Missing or invalid key
402Out of credits
404Tool not available on this server
429Rate limited
502Upstream failure

Every error.code and what to do about it: Errors & rate limits.

On this page