get_keyword_serp

get_keyword_serp

get_keyword_serp returns who ranks for one keyword: snapshot freshness, volume, CPC, then an items array. Each item is rank, title, url, website, domain, description, and email (best cached address, or null).

Keyword input may arrive URL-encoded. The server decodes it.

Who ranks for "best ai presentation maker"? Give me the top ten.

Arguments

NameTypeRequired
keywordstring, 1–200 charactersYes
languageCodestringNo
locationCodepositive integerNo
limit1–100, default 100No
domainstring. Ranking host or title/snippet mentionNo
refreshboolean. Requests a SERP Update through the refresh-serp limiterNo

The default is cache-only. There is no page 2. The snapshot is the stored top 100.

Request

{
  "keyword": "best ai presentation maker",
  "limit": 10
}

Narrow a later call:

{
  "keyword": "best ai presentation maker",
  "domain": "canva.com"
}

domain matches the ranking host or a mention in the title or snippet. A brand that appears in every listicle (Canva) will not shrink the payload much.

Response

{
  "summary": "SERP snapshot: STALE=false | fetchedAt=2026-08-19T10:13:52.948Z | snapshotDate=Aug 19, 2026 UTC | refreshed=false | keyword=\"best ai presentation maker\" | items=10",
  "status": "found",
  "stale": false,
  "fetchedAt": "2026-08-19T10:13:52.948Z",
  "snapshotDate": "Aug 19, 2026",
  "keyword": "best ai presentation maker",
  "volume": 1000,
  "cpc": 15.76,
  "competition": "MEDIUM",
  "refreshed": false,
  "refreshStatus": "not_requested",
  "refreshMessage": null,
  "items": [
    {
      "rank": 1,
      "title": "17 Best AI Presentation Makers in 2026 (Tested With The ...",
      "url": "https://getalai.com/blog/best-ai-presentation-makers",
      "website": "Alai",
      "domain": "getalai.com",
      "description": "May 27, 2026 — Nano Banana Pro & GPT. Gamma: Best Free AI Presentation Maker.",
      "email": "founders@getalai.com"
    },
    {
      "rank": 2,
      "title": "AI Presentation Maker: Create presentations with AI",
      "url": "https://www.canva.com/create/ai-presentations/",
      "website": "Canva",
      "domain": "www.canva.com",
      "description": "Create slides in seconds with Magic Design™ for Presentations.",
      "email": null
    }
  ]
}

Publisher rows use the best cached DomainContact for the ranking host. YouTube, Instagram, and TikTok rows use a matched creator email only. We never attach youtube.com staff mail to a watch URL.

Freshness

CacheFlagsWhat you get
Newer than 30 daysstale: false, refreshed: falseStored snapshot
Older than 30 daysstale: true, refreshed: falseStored snapshot with a stale warning
Missingstatus: "no_snapshot"No stored SERP
refresh: true allowedrefreshed: true, refreshStatus: "refreshed" if the live call workedOne DataForSEO fetch for this keyword
refresh: true rate-limitedrefreshed: false, refreshStatus: "rate_limited"Stored snapshot when available
Already refreshed todayrefreshed: false, refreshStatus: "skipped_today"Stored snapshot from today
Live call failed, old snapshot existsstale: trueWhatever we still have
Live call failed, nothing storedstatus: "no_snapshot"No usable SERP

Treat no_snapshot as "no usable SERP," not a blank Google page.

Cap fan-out at about five keywords per turn. Each call counts against 120/hour. refresh: true also uses the refresh-serp limiter. It does not spend project credits.

Contacts

When email is null, try get_contacts on the URL or host, or search_creators when you only have a name.

What to explore next