Provided by DataForSEO
List the Organic Keywords a Domain or URL Already Ranks For (DataForSEO)
List the organic keywords one domain or URL already ranks for, each term with its position, its estimated share of the traffic and the page that ranks. Hand it a domain, not a keyword. Pay per request, with no plan.
How to run it
Step 1Set up
Once: paste this into your agent's chat. The Skill installs the CLI and logs in by itself. For an agent that cannot use a shell, connect it over MCP instead.
set up https://glasser.ai/SKILL.md
Show me how to use the DataForSEO endpoint /v3/dataforseo_labs/google/ranked_keywords/live on Glasser.glasser run -p dataforseo -e '/v3/dataforseo_labs/google/ranked_keywords/live' -i '{"limit":20,"target":"anthropic.com","language_code":"en","location_code":2840}' --endpoint-version 8Uses endpoint version 8. Inspect the current price before running. Install and log in first on Get Started.
Once per Run:
IDEMPOTENCY_KEY=$(uuidgen)Run it, and copy this same block to send it again:
curl -X POST https://api.glasser.ai/v1/runs \
-H "Authorization: Bearer gl_..." \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{"provider":"dataforseo","endpoint":"/v3/dataforseo_labs/google/ranked_keywords/live","input":{"limit":20,"target":"anthropic.com","language_code":"en","location_code":2840},"endpoint_version":8}'Reuse the same Idempotency-Key to send it again: the second send is a read of the first Run. A new key is a new Run and a new Charge. Uses endpoint version 8; inspect the current price before running.
Step 2Try a specific example task
When you need to plan new content, you might organize keyword ideas into related topics to build a workable content plan.
Copy this prompt into your agent to group keyword ideas for your content plan.
Use dataforseo:/v3/dataforseo_labs/google/ranked_keywords/live on Glasser.
Group the returned keywords into topics I can use to plan content.Endpoint structure
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"target"
],
"properties": {
"tag": {
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1
},
"offset": {
"type": "integer"
},
"target": {
"type": "string",
"maxLength": 255,
"minLength": 3
},
"filters": {
"type": "array",
"description": "DataForSEO filter expression, passed through unchanged: one condition [field, operator, value], or conditions joined by \"and\" / \"or\" ([[a], \"and\", [b]]). Field names come from this endpoint's result items; the number of conditions allowed is in the endpoint's docUrl."
},
"order_by": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 3,
"description": "DataForSEO sorting rules, passed through unchanged: up to 3 \"field,asc\" or \"field,desc\" strings, using the same field names as filters."
},
"item_types": {
"type": "array"
},
"language_code": {
"type": "string",
"pattern": "^[a-z]{2}$"
},
"language_name": {
"type": "string"
},
"location_code": {
"type": "integer",
"maximum": 99999999,
"minimum": 1
},
"location_name": {
"type": "string"
},
"ignore_synonyms": {
"type": "boolean"
},
"load_rank_absolute": {
"type": "boolean"
},
"historical_serp_mode": {
"type": "string"
},
"include_clickstream_data": {
"type": "boolean",
"description": "Add clickstream-based metrics. DataForSEO doubles the price of the call."
}
},
"additionalProperties": false
}{
"limit": 20,
"target": "anthropic.com",
"language_code": "en",
"location_code": 2840
}This Endpoint publishes no output schema. You get the Provider's own response body, unchanged — we do not warrant a shape we cannot guarantee.
How pricing works
| Default-size input | Larger inputs and paid options vary with Provider usage. | $0.024 |
|---|---|---|
| Maximum per Run | The total charge will not exceed this amount. | $0.264 |
| No matching data | The Provider answered: nothing matched. | $0.012 |
| Provider error | The Provider failed to answer. | $0.00 |
| Timed out | The Run exceeded its time limit. | $0.00 |
| Internal failure | An internal error prevented completion. | $0.00 |