REST API · v1 · JSON

AEO Audit API for Developers

Run AI citation audits programmatically. One endpoint, structured JSON, actionable fixes. The only self-serve AEO API under $100/mo. No sales call. No enterprise gate.

shell
curl -X POST https://webmole.ai/api/v1/audit \
  -H "Authorization: Bearer wbm_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

# → {"score": 73, "factors": [...], "fixSuggestions": [...]}

100 requests/day on Starter · Bearer token auth · JSON responses · Resets midnight UTC

Otterly — no API·Peec — enterprise only (€499+/mo)·Profound — sales call required·WebMole — self-serve from $29/mo

How it works

1

Get an API key

Sign up and go to Dashboard → Settings → API Keys. Click Generate API Key. Keys start with wbm_ and are scoped to your account.

Request header
Authorization: Bearer wbm_your_api_key_here
2

POST your URL

Send a POST request to /api/v1/audit with a JSON body. That is the entire API surface — one endpoint, one required field.

shell
curl -X POST https://webmole.ai/api/v1/audit \
  -H "Authorization: Bearer wbm_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://yoursite.com/page"}'
3

Read structured JSON back

The response includes a 0–100 score, per-category breakdown, per-factor pass/fail results, and fix suggestions with copy-pasteable code blocks.

javascript
const data = await res.json()
console.log(data.score)           // 73
console.log(data.fixSuggestions)  // [{factorId, instruction, codeBlock}]

Full response example

One payload. Score, per-factor breakdown, and prioritised fix suggestions — including the code to paste.

200 OK · application/jsonSuccess
{
  "url": "https://example.com",
  "score": 73,
  "categories": {
    "answerReadiness": 80,
    "structure": 65,
    "authoritySignals": 70,
    "technicalGEO": 75
  },
  "factors": [
    {
      "id": 1,
      "name": "Structured Data (JSON-LD)",
      "score": 15,
      "max": 15,
      "status": "pass",
      "details": "Valid JSON-LD found with @type Organization"
    },
    {
      "id": 2,
      "name": "Meta Description",
      "score": 0,
      "max": 8,
      "status": "fail",
      "details": "No meta description found"
    }
  ],
  "fixSuggestions": [
    {
      "factorId": 2,
      "factorName": "Meta Description",
      "impact": "High",
      "instruction": "Add a concise meta description (120-160 chars).",
      "codeBlock": "<meta name=\"description\" content=\"Your page summary.\" />"
    }
  ],
  "scannedAt": "2026-03-17T12:00:00.000Z",
  "rateLimit": {
    "remaining": 99,
    "limit": 100,
    "resetAt": "2026-03-18T00:00:00.000Z"
  }
}

The only self-serve AEO API at this price

Every other AEO tool either has no API, gates it behind enterprise pricing, or requires a sales call. WebMole gives you API access from $29/mo, no negotiation required.

ToolAPI accessEntry price
WebMoleSelf-serve, immediate$29/mo
OtterlyNo API$29/mo
PeecEnterprise beta only€499+/mo
ProfoundSales call requiredCustom
CairrotSelf-serve (freemium)Freemium

Rate limits

Per API key per calendar day (UTC). Usage is returned in every response under rateLimit.remaining.

PlanRequests / dayPrice
Starter100 / day$29/mo
Pro500 / day$49/mo
Agency2,000 / day$99/mo

Need more? Compare plans or contact us for custom volume.

Use cases

CI/CD integration

Gate deploys on AEO score. If your page drops below 60 after a content change, the pipeline fails before it ships.

# .github/workflows/aeo-check.yml
- name: Check AEO score
  run: |
    SCORE=$(curl -s -X POST https://webmole.ai/api/v1/audit \
      -H "Authorization: Bearer $WBM_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"url":"$DEPLOY_URL"}' | jq '.score')
    [ "$SCORE" -ge 60 ] || exit 1

Agency dashboards

Monitor 50 client domains from one API key. Pull scores nightly, store in your own DB, surface in your client-facing dashboard.

// Audit all client domains
const domains = ['client-a.com', 'client-b.com', 'client-c.com']

const results = await Promise.all(
  domains.map(url =>
    fetch('https://webmole.ai/api/v1/audit', {
      method: 'POST',
      headers: { 'Authorization': `Bearer ${apiKey}` },
      body: JSON.stringify({ url: `https://${url}` }),
    }).then(r => r.json())
  )
)

Custom tooling

Build your own AEO monitoring on top of WebMole's data layer. Webhooks, alerts, custom scoring — you own the logic.

import requests

# Weekly audit + alert if score drops
def audit_and_alert(url, threshold=65):
    r = requests.post(
        'https://webmole.ai/api/v1/audit',
        headers={'Authorization': f'Bearer {API_KEY}'},
        json={'url': url},
    )
    data = r.json()
    if data['score'] < threshold:
        send_slack_alert(url, data['score'])

Prefer the command line?

The WebMole CLI wraps the API for one-off audits and continuous monitoring. No boilerplate required.

Install
npm install -g @webmole/cli
Usage
# Run a one-off audit
webmole audit https://example.com --json

# Watch a URL and alert when score drops
webmole watch https://example.com --interval 6h

# Fail if score is below threshold (useful in CI)
webmole audit https://example.com --threshold 70

Full CLI docs in the quickstart guide.

Common questions

What is the WebMole API?

The WebMole API lets you run AEO (Answer Engine Optimisation) audits programmatically. POST a URL, get back a structured JSON report with a 0–100 score, 12-factor analysis, and fix suggestions including JSON-LD code blocks.

How do I authenticate with the API?

Use Bearer token authentication. Add an Authorization header to every request: Authorization: Bearer wbm_your_api_key. Generate your key from Dashboard → Settings → API Keys. Keys start with wbm_ and are scoped to your account.

What does the API return?

The API returns a JSON object with a numeric score (0–100), category scores (answerReadiness, structure, authoritySignals, technicalGEO), per-factor results with score/max/status, and fixSuggestions with instruction and optional codeBlock for each failing factor.

Can I use the WebMole API in CI/CD pipelines?

Yes. The API returns an HTTP 200 with structured JSON. You can script it to fail deploys when score drops below a threshold. The quickstart guide at /guides/aeo-api-quickstart has a ready-to-use GitHub Actions YAML example.

What's the rate limit?

Starter: 100 requests/day. Pro: 500 requests/day. Agency: 2,000 requests/day. Limits reset at midnight UTC. Current usage is returned in every response under rateLimit.remaining. Free accounts cannot access the API — upgrade to Starter.

Start building with WebMole

Starter plan: 100 audits/day from $29/month. API key ready in 60 seconds.