Projects and keywords
List owned projects and read current keyword positions with pagination.
Developer platform
A read-focused REST API for keyword rank checking: projects, current positions, up to 90 days of ranking history and stored SERP snapshot flags. Authenticate with an owner-scoped API key created inside your own workspace.
List owned projects and read current keyword positions with pagination.
Retrieve project ranking history for up to 90 days per request.
Read stored SERP snapshot flags for a keyword, including AI Overview, featured snippet and local pack presence.
Every project request is checked against the owner attached to the API key.
The same data over Model Context Protocol, so Claude, ChatGPT, Cursor and Claude Code can read your rankings directly. Uses the same API key.
Authentication
X-API-Key header.https://lemrank.com/api/public/v1
curl -H "X-API-Key: YOUR_KEY" \ https://lemrank.com/api/public/v1/projects
Keys are scoped to the account that created them. Every project request is re-checked against that owner, so a key can never read another workspace.
Reference
GET /projects
List every project owned by the key holder.
Example response
{
"projects": [
{
"id": "1f0c…",
"name": "Acme",
"domain": "acme.com",
"tracking_frequency": "daily",
"default_language": "en",
"default_location": "United States",
"created_at": "2026-01-14T09:12:04.118Z"
}
]
}GET /projects/:id
Read a single project you own. Returns 404 for any project you do not own.
Example response
{ "project": { "id": "1f0c…", "name": "Acme", "domain": "acme.com", … } }GET /projects/:id/keywords
Current keyword positions, ordered best position first.
Query parameters: limit (default 100, max 1000) · offset (default 0)
Example response
{
"keywords": [
{
"id": "8ab2…",
"keyword": "best seo tools",
"current_position": 3,
"previous_position": 5,
"best_position": 2,
"current_url": "https://acme.com/tools",
"search_volume": 12100,
"cpc": 4.5,
"difficulty": 45,
"engine": "google_organic",
"location": "United States",
"device": "desktop",
"updated_at": "2026-09-17T06:02:11.904Z"
}
],
"total": 150,
"limit": 100,
"offset": 0
}GET /projects/:id/rankings
Position history for the project.
Query parameters: days (default 30, max 90) · limit (default 1000, max 5000) · offset
Example response
{
"rankings": [
{ "keyword_id": "8ab2…", "position": 3, "url": "https://acme.com/tools", "checked_at": "2026-09-17T05:58:02.331Z" }
],
"total": 4120,
"days": 30,
"limit": 1000,
"offset": 0
}GET /projects/:id/snapshots
Stored SERP feature flags for one keyword, newest first (50 most recent).
Query parameters: keyword_id (required)
Example response
{
"snapshots": [
{
"id": "c41d…",
"keyword_id": "8ab2…",
"captured_at": "2026-09-17T05:58:02.331Z",
"has_ai_overview": true,
"has_featured_snippet": false,
"has_local_pack": false
}
]
}AI assistants
LemRank runs a remote MCP server over Streamable HTTP at https://lemrank.com/api/public/mcp. It authenticates with the same API key and exposes projects, keyword positions, ranking history, SERP snapshots, keyword tracking and URL intelligence as tools. Requests are scoped to the key's owner exactly as the REST API is.
Operating limits
Per API key. Responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset; a 429 carries Retry-After.
limit and offset on keywords and rankings. Every paged response returns total so you know when to stop.
The rankings endpoint reads up to 90 days per request. Older history stays available inside the workspace.
| Status | Error | Meaning |
|---|---|---|
| 401 | Missing X-API-Key header | No key was sent. |
| 401 | Invalid API key | The key is unknown, revoked or deactivated. |
| 401 | API key expired | The key passed its expiry date. Create a new one. |
| 400 | keyword_id query parameter is required | A required parameter was missing. |
| 404 | Project not found | The project does not exist, or the key's owner does not own it. |
| 429 | Rate limit exceeded | More than 60 requests in one minute. Check the Retry-After header. |
What it costs
There is no separate API price list and no per-call metering on top of your plan — you read the data your workspace already tracks, within the rate limit above. Start on a free trial, or talk to us if you need a higher limit or a bulk extraction window.
Related