Skip to main content
Developers

SERPHub REST API

35+ endpoints. JSON responses. Sanctum token auth. Pull your SEO data into any tool, dashboard, or workflow.

Quick Start

Generate a Sanctum API token from your account settings, then include it as a Bearer token on every request.

  1. 1 Log in → Account Settings → Security → API Tokens → Generate token
  2. 2 Include the token as Authorization: Bearer YOUR_TOKEN on each request
  3. 3 Base URL: https://serphub.io/api/v1
curl
curl https://serphub.io/api/v1/sites \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"
Response (200)
{
  "data": [
    {
      "id": 42,
      "domain": "example.com",
      "health_score": 91,
      "last_audit_at": "2026-05-20T08:15:00Z"
    }
  ]
}

API Reference

All endpoints return JSON. All write operations require a POST body as JSON with Content-Type: application/json.

Sites

GET /sites
GET /sites/{id}
POST /sites
DELETE /sites/{id}

Audits

GET /sites/{id}/audits
GET /sites/{id}/audits/latest
POST /sites/{id}/audits
GET /sites/{id}/issues

Keywords

GET /sites/{id}/keywords
GET /sites/{id}/keywords/top
GET /sites/{id}/cannibalization
GET /sites/{id}/search-intent

Backlinks

GET /sites/{id}/backlinks
POST /sites/{id}/backlinks/verify
GET /sites/{id}/backlinks/stats

AI Mentions

GET /sites/{id}/ai-mentions
GET /sites/{id}/ai-mentions/sov
POST /sites/{id}/ai-mentions/run

Competitors

GET /sites/{id}/competitors
POST /sites/{id}/competitors
DELETE /sites/{id}/competitors/{competitorId}

Authentication & Rate Limits

Bearer Token (Sanctum)

All API requests must include a valid Sanctum personal access token. Generate tokens in Account → Security → API Tokens. Tokens do not expire but can be revoked at any time.

Rate Limits

API access is available on the Agency and Enterprise plans.

Plan Requests/min Requests/day
Agency12050,000
EnterpriseCustomCustom

Error Responses

The API uses standard HTTP status codes. Error responses include a JSON body with a message field. 401 = invalid token, 403 = forbidden, 422 = validation error, 429 = rate limit exceeded.

Error Example

HTTP/1.1 422
{
  "message": "Validation error",
  "errors": {
    "domain": [
      "The domain field is required."
    ]
  }
}

Ready to integrate?

API access is available on the Agency and Enterprise plans. Sign up to get started.

We use cookies to improve your experience and analyze site usage. You can accept all cookies, reject non-essential ones, or customize your preferences. Privacy Policy

Cookie Preferences