Provided by Serpstat
List the Keywords a Domain Ranks For (Serpstat)
List the keywords one domain already ranks for in a regional database: every row carries the keyword, its organic position, its monthly search volume, its CPC and the landing URL that holds the position. Supply the domain, a regional database code such as g_us, and up to 20 rows per page with a page number for the next. One domain per call, so other domains need their own calls.
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 Serpstat endpoint /v4/SerpstatDomainProcedure.getDomainKeywords on Glasser.glasser run -p serpstat -e '/v4/SerpstatDomainProcedure.getDomainKeywords' -i '{"se":"g_us","size":10,"domain":"example.com"}' --endpoint-version 2Uses endpoint version 2. 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":"serpstat","endpoint":"/v4/SerpstatDomainProcedure.getDomainKeywords","input":{"se":"g_us","size":10,"domain":"example.com"},"endpoint_version":2}'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 2; 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 serpstat:/v4/SerpstatDomainProcedure.getDomainKeywords 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": [
"domain",
"se"
],
"properties": {
"se": {
"type": "string",
"pattern": "^[a-z]{1,2}_[a-z]{2,3}$",
"maxLength": 8
},
"page": {
"type": "integer",
"maximum": 1000,
"minimum": 1
},
"size": {
"type": "integer",
"maximum": 20,
"minimum": 1
},
"domain": {
"type": "string",
"pattern": "^(?!-)(?:[a-z0-9-]+\\.)+[a-z]{2,}$",
"maxLength": 253,
"minLength": 3
}
},
"additionalProperties": false
}{
"se": "g_us",
"size": 10,
"domain": "example.com"
}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
| Per result returned | Charged for each result returned. | $0.0005 |
|---|---|---|
| Maximum per Run | The total charge will not exceed this amount. | $0.04 |
| No matching data | The Provider answered: nothing matched. | $0.0005 |
| 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 |