Built-in tool
Get Ranked Keywords
Keywords a domain already ranks for in Google organic, with each keyword's position, search volume and URL.
Endpoint
Parameters
| Name | Type | Required | Note |
|---|---|---|---|
| targetstring · required | string | required | Domain to analyse, e.g. "example.com" (no protocol). Example: |
| limitnumber · optional | number | optional | Maximum number of records to return (1-1000). Defaults to 100. Default: |
| sort_bystring · optional | string | optional | Which keywords come first when Limit cuts the list. "traffic" (default) = the keywords sending the most estimated organic visits to the domain; "search_volume" = highest monthly searches; "rank" = best position first (the provider default — for a large domain this is alphabetical within the #1 ties); "keyword_difficulty" = hardest first; "cpc" = most valuable clicks first. One of: Default: |
| language_namestring · optional | string | optional | Language for results. Choose "All languages" (or leave blank) to aggregate every language. One of: |
| location_namestring · optional | string | optional | Country for results. Choose "Worldwide" (or leave blank) to aggregate every location. One of: |
Response schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"elements"
],
"properties": {
"elements": {
"type": "array",
"items": {
"type": "object",
"properties": {
"cpc": {
"type": [
"number",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
},
"keyword": {
"type": [
"string",
"null"
]
},
"rank_group": {
"type": [
"number",
"null"
]
},
"rank_absolute": {
"type": [
"number",
"null"
]
},
"search_volume": {
"type": [
"number",
"null"
]
},
"estimated_traffic": {
"type": [
"number",
"null"
],
"description": "Estimated monthly organic visits this keyword sends the domain, modelled from its organic position × the keyword’s search volume. Null when the row has no position or no volume data."
},
"keyword_difficulty": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": true
}
},
"returned": {
"type": "number",
"description": "How many rows this run returned, after any Limit was applied."
},
"truncated": {
"type": "boolean"
},
"suggestion": {
"type": "string"
},
"totalCount": {
"type": "number",
"description": "How many records the provider says MATCH in total, independent of Limit — routinely in the millions (spotify.com has 2,583,327 ranking pages). It is a match count, NOT how many this endpoint will serve: Limit caps what one call returns, so do not compare it against the row count to judge completeness and do not paginate towards it. Absent when the provider sent no count."
},
"totalElements": {
"type": "number",
"description": "DEPRECATED — despite the name this is the count RETURNED by this run, not a grand total, so it equals your Limit on a limited run. Kept at that value deliberately: ENG-17058 asked for depth 5 to report 5, and it is a live number in existing flows. Use `returned` for this number or `totalCount` for how many records match."
}
},
"additionalProperties": true
}