OctoBoost
Docs
Get free API key

Quick Start

Analyze any URL in under a minute.

  1. 1

    Get your API key

    Sign up at octo-boost.com — new accounts get 100 free credits, no card required.

  2. 2

    Run your first analysis

    curl -X POST https://octo-boost.com/api/seo/analyze/batch \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"urls": ["https://example.com"]}'
  3. 3

    Read the compact result

    The response is LLM-friendly — scores, flags, and fix suggestions, not raw HTML. A full audit fits in a few hundred tokens.

Authentication

All endpoints except GET /api/seo/analyzers require an API key.

Pass your API key as a Bearer token in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Errors: 401 — invalid or missing key  ·  402 — insufficient credits  ·  429 — rate limit exceeded

Rate limit: 60 requests / 60s per API key

Endpoints

EndpointMethodAuthCost
/api/seo/analyze/batchPOSTRequired3 credits / URL
/api/seo/scan/domainPOSTRequired1 credit / scan
/api/seo/analyzersGETOptionalFree
/api/reportsGETRequiredFree
POST/api/seo/analyze/batch3 credits per URL

Analyze up to 20 URLs concurrently. Only successful analyses are charged.

Request body

{
  "urls": [
    "https://example.com",
    "https://example.com/about",
    "https://example.com/pricing"
  ]
}

Response shape

{
  "results": [
    {
      "url": "https://example.com",
      "analyzedAt": "2025-01-15T12:00:00.000Z",
      "score": 82,
      "scores": { "seo": 90, "geo": 74, "accessibility": 88, "performance": 70 },
      "geoScore": {
        "score": 74,
        "subMetrics": {
          "technicalAccess": 0.9,
          "contentStructure": 0.7,
          "entityClarity": 0.65,
          "authoritySignals": 0.6
        },
        "citationLikelihood": 0.68,
        "ragReadiness": 0.72,
        "whyThisMattersForAgents": "Content structure is the weakest signal — AI agents struggle to extract key entities.",
        "llmAssessment": "Good technical access, but entity clarity and authority signals need improvement."
      },
      "issues": [
        {
          "key": "meta-description",
          "level": "warning",
          "summary": "Meta description is too short (42 chars)",
          "fix": "Expand to 120–160 characters"
        },
        {
          "key": "alt-tags",
          "level": "error",
          "summary": "3 images are missing alt text",
          "count": 3,
          "examples": [
            { "where": "<img src=\"/hero.jpg\">" },
            { "where": "<img src=\"/team.png\">" }
          ],
          "fix": "Add descriptive alt attributes to all img elements"
        }
      ],
      "passed": ["title-tag", "canonical", "robots-txt", "schema-markup", "open-graph"]
    },
    {
      "url": "https://example.com/about",
      "analyzedAt": "2025-01-15T12:00:00.000Z",
      "error": "Page returned HTTP 404 (Not Found)"
    }
  ],
  "total_urls": 3,
  "successful": 2,
  "failed": 1,
  "total_cost": 6,
  "remaining_credits": 94
}
POST/api/seo/scan/domain1 credit / scan

Crawl a domain and return a list of SEO-relevant URLs — useful before running a batch analysis.

Request body

{
  "domain": "example.com",
  "maxPages": 20,
  "excludePatterns": ["/blog/*"],
  "respectRobotsTxt": true,
  "defaultLanguageOnly": true
}

Response shape

{
  "success": true,
  "message": "Found 120 URLs, filtered to 48 SEO-relevant pages",
  "data": {
    "urls": ["https://example.com", "https://example.com/about", "..."],
    "totalFound": 120
  },
  "cost": 1,
  "remaining_credits": 99
}
GET/api/seo/analyzersFree

List all available analyzers and their categories. Pass your API key to see your custom weights.

Example

curl https://octo-boost.com/api/seo/analyzers \
  -H "Authorization: Bearer YOUR_API_KEY"

Response shape

{
  "analyzers": [
    { "key": "title-tag", "categories": ["seo"], "weight": 1 },
    { "key": "meta-description", "categories": ["seo"], "weight": 1 },
    { "key": "schema-markup", "categories": ["geo", "seo"], "weight": 1.5 }
  ],
  "categories": ["seo", "geo", "accessibility", "performance", "ux"]
}
GET/api/reportsFree

Retrieve your analysis history. Returns the latest report per URL. Supports filtering.

Query params

ParamDescription
urlFilter by URL substring
categoryFilter results by category (e.g. seo, geo)
analyzerFilter results by analyzer key

Response shape

{
  "reports": [
    {
      "id": "clx1234...",
      "url": "https://example.com",
      "analyzedAt": "2025-01-15T12:00:00.000Z",
      "statusCode": 200,
      "score": { "overall": 82, "seo": 90, "geo": 74 },
      "geoScore": { "overall": 74 },
      "passing": ["title-tag", "canonical", "robots-txt"],
      "todos": [
        { "key": "meta-description", "level": "warning", "summary": "...", "fixes": [...] }
      ]
    }
  ]
}

MCP Server

Use OctoBoost directly inside AI agents and MCP clients like Claude Desktop or Cursor — no code required.

The octoboost-mcp-server package exposes three tools to any MCP-compatible client: list_analyzers, analyze, and scan_domain.

Add to your MCP config
{
  "mcpServers": {
    "octoboost-seo": {
      "command": "npx",
      "args": ["-y", "octoboost-mcp-server"],
      "env": {
        "OCTOBOOST_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Config file locations:

  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Cursor: ~/.cursor/mcp.json
  • VS Code (Copilot): .vscode/mcp.json

Available tools

list_analyzers

List all available analyzers and categories. Good first call to verify connectivity.

analyze

Run a full SEO/GEO/accessibility audit on a URL. Returns compact, LLM-friendly results.

scan_domain

Crawl a domain and return SEO-relevant URLs. Use before batch analyzing a whole site.