Skip to main content
Jam tracks the keywords your site cares about on Google, ChatGPT, Perplexity, and Gemini, and refreshes rankings daily. The /v1/keywords endpoint returns that dataset so you can pipe it into your own dashboards, alerts, or agents.

Get an API key

  1. Open your Jam workspace and go to Settings, Developer.
  2. Click Generate API key.
  3. Copy the key. It is shown once. Test keys begin with sk_test_ and are available on every plan. Live keys begin with sk_live_ and are enabled on paid plans.
Keys are scoped to the workspace that created them. Regenerating a key immediately invalidates the old one.

Endpoint

Authenticate with a bearer token:

Try it in your terminal

Export the key once per shell session, then pipe results into jq.

Use with Claude

The response is structured so an agent can act on it directly. The simplest setup is to run claude in a shell that already has JAM_API_KEY exported, then paste the prompt below. Claude Code calls the endpoint with its built-in shell tool and summarises what came back.
For Claude Desktop, the same prompt works if you have a shell MCP server enabled. Otherwise, paste the curl output into a Claude conversation and ask for the summary you want.

Request examples

Query parameters

enum
Restrict to one engine: google, chatgpt, perplexity, or gemini. Omit to include every engine Jam tracks.
enum
Restrict to a single topic: seo, geo, or social. Omit to include all topics.
string
Optional substring filter, applied to the keyword term. Useful for pulling one cluster at a time.
boolean
Pass true to return only keywords where you currently rank, or false for keywords you track but do not yet rank for.
integer
default:"50"
How many keywords to return per page. Max 200.
string
Pagination cursor. Pass the nextCursor value from a previous response.

Response

200 OK

Response fields

array
The list of tracked keywords.
boolean
true if another page of results is available.
string | null
Pass this back as the cursor query param to fetch the next page.

Errors

Rate limits

Each API key is limited to 60 requests per minute. Every response carries X-RateLimit-Remaining, and throttled responses include Retry-After in seconds. Keep polling loops modest: the tracked keyword set changes at most a few times a day.