Skip to main content
Use REST API v1 to complete four common tasks:
  1. Create a project.
  2. Add keywords.
  3. Start a rank check.
  4. Retrieve ranking history.

Client libraries

Start with those task guides if you are building an integration. Use the route inventory below as a reference after the first request works. The REST API is served from:
Hosted:
Self-hosted:

Core resource routes

These core routes are handled by lib/api/router.ts. See /openapi.json for the full generated inventory. Cloud import is also mounted at /api/cloud/import outside the /api/v1 base path for the in-app cloud migration handoff. The /api/v1/cloud/import path re-exports the same handler. It is not currently listed in /openapi.json. Inbound deploy hooks are also mounted outside /api/v1 at POST /api/ingest/deploy. See Deploy webhooks. Alert rules, competitors, provider connections, saved views, signals, personal access tokens, webhooks, notification preferences, and team routes have dedicated pages. Migration tokens are covered in Cloud import. PUT, OPTIONS, and other methods return 405 Method Not Allowed.

Response shapes

List routes return:
Resource and mutation routes return the resource object directly. They are not wrapped in data. Discovery routes are mixed:

Pagination

List routes accept: The cursor is an opaque base64url value. Do not parse it in clients.

Errors

Errors use application/problem+json.
See API errors.