API Reference

Build on top of DadSEO. Access your sites, audits, rankings, and SEO intelligence programmatically through a simple REST API.

Base URLhttps://getdadseo.com/api/v1

Authentication

All API requests require a Bearer token in the Authorization header. You can generate and manage your API key from Settings → Developer API in your DadSEO dashboard.

API keys are prefixed with dadseo_sk_ and should be treated as secrets. Never expose them in client-side code or public repositories.

Example Request

curl -X GET https://getdadseo.com/api/v1/me \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Authentication Error

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing API key."
  }
}

Response Format

All successful responses return a JSON object with a data field. Paginated endpoints also include a meta object.

Success (Single Object)

{
  "data": {
    "id": 42,
    "domain": "example.com",
    "name": "My Site"
  }
}

Success (Paginated List)

{
  "data": [ ... ],
  "meta": {
    "page": 1,
    "perPage": 20,
    "total": 87,
    "totalPages": 5
  }
}

Error Response

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Site not found."
  }
}

Common Error Codes

401UNAUTHORIZEDMissing or invalid API key
403FORBIDDENInsufficient permissions
404NOT_FOUNDResource does not exist
422VALIDATION_ERRORInvalid request body
429RATE_LIMITEDToo many requests
500INTERNAL_ERRORUnexpected server error

Rate Limiting

The API enforces a rate limit of 60 requests per minute per API key. Rate limit headers are included in every response:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 54
X-RateLimit-Reset: 1709150400

When the limit is exceeded, the API returns a 429 status with a Retry-After header indicating how many seconds to wait before retrying.

Account

Manage your user account and API keys.

GET/api/v1/meexpand

Returns information about the authenticated user, including email, subscription plan, usage limits, and creation date.

Example Request

curl https://getdadseo.com/api/v1/me \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 12,
    "email": "alice@example.com",
    "name": "Alice Martin",
    "plan": "pro",
    "sitesUsed": 3,
    "sitesLimit": 10,
    "createdAt": "2025-11-02T10:30:00Z"
  }
}
POST/api/v1/keys/rotateexpand

Rotates your API key. The current key is immediately invalidated and a new key is returned. Store the new key securely — it will not be shown again.

Example Request

curl -X POST https://getdadseo.com/api/v1/keys/rotate \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "key": "dadseo_sk_live_xyz789newkey",
    "createdAt": "2026-02-28T14:00:00Z"
  }
}

Sites

Manage the websites you track in DadSEO.

GET/api/v1/sitesexpand

Returns a list of all sites associated with your account, including domain, name, creation date, and high-level stats.

Example Request

curl https://getdadseo.com/api/v1/sites \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": [
    {
      "id": 1,
      "domain": "example.com",
      "name": "Example Site",
      "businessType": "ecommerce",
      "totalClicks": 12450,
      "totalImpressions": 384200,
      "createdAt": "2025-12-01T08:00:00Z"
    }
  ],
  "meta": {
    "page": 1,
    "perPage": 20,
    "total": 3,
    "totalPages": 1
  }
}
POST/api/v1/sitesexpand

Creates a new site and begins syncing data from Google Search Console. The domain must be verified in your connected GSC account.

Request Body

FieldTypeRequiredDescription
domainstringYesThe domain exactly as it appears in GSC (e.g. sc-domain:example.com)
namestringYesDisplay name for the site
businessTypestringNoBusiness category: "saas", "ecommerce", "blog", "agency", "other"

Example Request

curl -X POST https://getdadseo.com/api/v1/sites \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "sc-domain:example.com",
    "name": "Example Site",
    "businessType": "saas"
  }'

Example Response

{
  "data": {
    "id": 4,
    "domain": "sc-domain:example.com",
    "name": "Example Site",
    "businessType": "saas",
    "createdAt": "2026-02-28T14:00:00Z"
  }
}
GET/api/v1/sites/:siteIdexpand

Returns detailed information about a single site, including 28-day performance stats (clicks, impressions, CTR, average position).

Example Request

curl https://getdadseo.com/api/v1/sites/1 \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 1,
    "domain": "example.com",
    "name": "Example Site",
    "businessType": "ecommerce",
    "stats28d": {
      "clicks": 12450,
      "impressions": 384200,
      "ctr": 0.0324,
      "position": 14.7
    },
    "pagesIndexed": 342,
    "lastSyncAt": "2026-02-28T06:00:00Z",
    "createdAt": "2025-12-01T08:00:00Z"
  }
}
DELETE/api/v1/sites/:siteIdexpand

Permanently deletes a site and all associated data (audits, rankings, pages, queries). This action is irreversible.

Example Request

curl -X DELETE https://getdadseo.com/api/v1/sites/1 \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "deleted": true,
    "id": 1
  }
}

Audits

Run and retrieve SEO audits for your sites.

GET/api/v1/sites/:siteId/auditsexpand

Returns a list of audits that have been run for the specified site, ordered by most recent first.

Example Request

curl https://getdadseo.com/api/v1/sites/1/audits \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": [
    {
      "id": 78,
      "siteId": 1,
      "auditType": "full",
      "status": "completed",
      "score": 72,
      "issuesFound": 14,
      "createdAt": "2026-02-20T09:00:00Z",
      "completedAt": "2026-02-20T09:04:32Z"
    }
  ],
  "meta": {
    "page": 1,
    "perPage": 20,
    "total": 5,
    "totalPages": 1
  }
}
POST/api/v1/sites/:siteId/auditsexpand

Triggers a new SEO audit for the specified site. The audit runs asynchronously — poll the audit detail endpoint to check progress.

Request Body

FieldTypeRequiredDescription
auditTypestringNoType of audit: "full" (default), "quick", or "technical"

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/audits \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456" \
  -H "Content-Type: application/json" \
  -d '{ "auditType": "full" }'

Example Response

{
  "data": {
    "id": 79,
    "siteId": 1,
    "auditType": "full",
    "status": "pending",
    "createdAt": "2026-02-28T14:00:00Z"
  }
}
GET/api/v1/audits/:auditIdexpand

Returns full details for a specific audit, including the overall score, individual findings grouped by category, and recommendations.

Example Request

curl https://getdadseo.com/api/v1/audits/78 \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 78,
    "siteId": 1,
    "auditType": "full",
    "status": "completed",
    "score": 72,
    "findings": [
      {
        "category": "meta",
        "severity": "warning",
        "title": "Missing meta descriptions",
        "description": "12 pages have no meta description.",
        "affectedPages": 12
      },
      {
        "category": "performance",
        "severity": "critical",
        "title": "Slow page load time",
        "description": "3 pages exceed 4s load time.",
        "affectedPages": 3
      }
    ],
    "createdAt": "2026-02-20T09:00:00Z",
    "completedAt": "2026-02-20T09:04:32Z"
  }
}

Pages & Data

Access crawled pages, search query data, and KPI snapshots.

GET/api/v1/sites/:siteId/pagesexpand

Returns a paginated list of crawled pages for the site, including URL, title, status code, and indexing status.

Query Parameters

ParameterTypeDescription
pageintegerPage number (default: 1)
perPageintegerResults per page (default: 20, max: 100)

Example Request

curl "https://getdadseo.com/api/v1/sites/1/pages?page=1&perPage=20" \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": [
    {
      "url": "https://example.com/blog/seo-guide",
      "title": "Ultimate SEO Guide 2026",
      "statusCode": 200,
      "indexable": true,
      "clicks28d": 340,
      "impressions28d": 8900,
      "lastCrawledAt": "2026-02-27T03:00:00Z"
    }
  ],
  "meta": {
    "page": 1,
    "perPage": 20,
    "total": 342,
    "totalPages": 18
  }
}
GET/api/v1/sites/:siteId/queriesexpand

Returns Google Search Console query data for the site — keywords, clicks, impressions, CTR, and average position.

Query Parameters

ParameterTypeDescription
pageintegerPage number (default: 1)
perPageintegerResults per page (default: 20, max: 100)
daysintegerLookback window in days (default: 28, max: 90)

Example Request

curl "https://getdadseo.com/api/v1/sites/1/queries?days=28&page=1" \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": [
    {
      "query": "best seo tools 2026",
      "clicks": 890,
      "impressions": 24300,
      "ctr": 0.0366,
      "position": 4.2
    },
    {
      "query": "seo audit checklist",
      "clicks": 432,
      "impressions": 12100,
      "ctr": 0.0357,
      "position": 6.8
    }
  ],
  "meta": {
    "page": 1,
    "perPage": 20,
    "total": 1240,
    "totalPages": 62
  }
}
GET/api/v1/sites/:siteId/kpiexpand

Returns KPI snapshots for the site — a daily time series of clicks, impressions, CTR, and average position. Useful for charting performance trends.

Example Request

curl https://getdadseo.com/api/v1/sites/1/kpi \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": [
    {
      "date": "2026-02-27",
      "clicks": 456,
      "impressions": 13200,
      "ctr": 0.0345,
      "position": 14.2
    },
    {
      "date": "2026-02-26",
      "clicks": 489,
      "impressions": 14100,
      "ctr": 0.0347,
      "position": 13.9
    }
  ]
}

Rankings

Track keyword positions over time.

GET/api/v1/sites/:siteId/rankingsexpand

Returns all tracked keywords for the site with their current position, previous position, and trend data.

Example Request

curl https://getdadseo.com/api/v1/sites/1/rankings \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": [
    {
      "id": 101,
      "keyword": "best seo tools",
      "targetUrl": "https://example.com/blog/seo-tools",
      "currentPosition": 4,
      "previousPosition": 6,
      "bestPosition": 3,
      "trend": "up",
      "lastCheckedAt": "2026-02-28T06:00:00Z"
    }
  ],
  "meta": {
    "page": 1,
    "perPage": 20,
    "total": 25,
    "totalPages": 2
  }
}
POST/api/v1/sites/:siteId/rankingsexpand

Starts tracking a new keyword for the site. Position data will be available within a few hours of creation.

Request Body

FieldTypeRequiredDescription
keywordstringYesThe keyword or phrase to track
targetUrlstringNoExpected ranking URL (for monitoring the right page)

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/rankings \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "seo audit tool",
    "targetUrl": "https://example.com/features/audit"
  }'

Example Response

{
  "data": {
    "id": 102,
    "keyword": "seo audit tool",
    "targetUrl": "https://example.com/features/audit",
    "currentPosition": null,
    "status": "pending",
    "createdAt": "2026-02-28T14:00:00Z"
  }
}
DELETE/api/v1/sites/:siteId/rankingsexpand

Stops tracking a keyword. Historical position data is retained for 30 days after untracking.

Query Parameters

ParameterTypeDescription
keywordIdintegerID of the keyword to stop tracking (required)

Example Request

curl -X DELETE "https://getdadseo.com/api/v1/sites/1/rankings?keywordId=102" \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "deleted": true,
    "id": 102,
    "keyword": "seo audit tool"
  }
}

Alerts

View SEO alerts and notifications for your sites.

GET/api/v1/sites/:siteId/alertsexpand

Returns alerts triggered for the site, such as traffic drops, ranking changes, crawl errors, and audit findings. Alerts are ordered by most recent first.

Example Request

curl https://getdadseo.com/api/v1/sites/1/alerts \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": [
    {
      "id": 201,
      "type": "traffic_drop",
      "severity": "warning",
      "title": "Clicks dropped 18% week-over-week",
      "message": "Organic clicks fell from 3,200 to 2,624 compared to last week.",
      "read": false,
      "createdAt": "2026-02-27T08:00:00Z"
    },
    {
      "id": 200,
      "type": "ranking_change",
      "severity": "info",
      "title": "Keyword 'seo tools' moved to position 3",
      "message": "Up from position 6. Best position ever recorded.",
      "read": true,
      "createdAt": "2026-02-26T06:00:00Z"
    }
  ],
  "meta": {
    "page": 1,
    "perPage": 20,
    "total": 8,
    "totalPages": 1
  }
}

Actions

Manage SEO tasks and action items.

GET/api/v1/sites/:siteId/actionsexpand

Returns a list of SEO action items (tasks) for the site, including title, status, priority, and category.

Example Request

curl https://getdadseo.com/api/v1/sites/1/actions \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": [
    {
      "id": 301,
      "title": "Add meta descriptions to 12 pages",
      "description": "Pages missing meta descriptions were flagged in the latest audit.",
      "status": "open",
      "priority": "high",
      "category": "meta",
      "createdAt": "2026-02-20T09:05:00Z"
    },
    {
      "id": 302,
      "title": "Fix broken internal links",
      "description": null,
      "status": "in_progress",
      "priority": "medium",
      "category": "links",
      "createdAt": "2026-02-21T10:00:00Z"
    }
  ],
  "meta": {
    "page": 1,
    "perPage": 20,
    "total": 6,
    "totalPages": 1
  }
}
POST/api/v1/sites/:siteId/actionsexpand

Creates a new action item (task) for the site. Tasks can be created manually or are automatically generated by audits.

Request Body

FieldTypeRequiredDescription
titlestringYesShort description of the task
descriptionstringNoDetailed explanation or context
prioritystringNo"low", "medium" (default), "high", or "critical"
categorystringNo"meta", "content", "technical", "links", "performance", "other"

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/actions \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Optimize hero image on homepage",
    "description": "Image is 2.4MB, should be compressed and served as WebP.",
    "priority": "high",
    "category": "performance"
  }'

Example Response

{
  "data": {
    "id": 303,
    "title": "Optimize hero image on homepage",
    "description": "Image is 2.4MB, should be compressed and served as WebP.",
    "status": "open",
    "priority": "high",
    "category": "performance",
    "createdAt": "2026-02-28T14:00:00Z"
  }
}
PATCH/api/v1/actions/:taskIdexpand

Updates the status or priority of an existing task. Use this to mark tasks as completed or change their priority.

Request Body

FieldTypeRequiredDescription
statusstringNo"open", "in_progress", "completed", or "dismissed"
prioritystringNo"low", "medium", "high", or "critical"

Example Request

curl -X PATCH https://getdadseo.com/api/v1/actions/301 \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456" \
  -H "Content-Type: application/json" \
  -d '{ "status": "completed" }'

Example Response

{
  "data": {
    "id": 301,
    "title": "Add meta descriptions to 12 pages",
    "status": "completed",
    "priority": "high",
    "category": "meta",
    "updatedAt": "2026-02-28T14:05:00Z"
  }
}

SEO Audits

Trigger and list specialized SEO audits. Each audit type has its own endpoint under /api/v1/sites/:siteId/<type>. POST triggers a new audit, GET lists previous runs.

All POST endpoints are rate-limited to 5 requests/minute. Audits run asynchronously — poll the /audits/:auditId endpoint to check status.

GET/api/v1/sites/:siteId/competitorsexpand

Lists all competitor analysis audits for the site.

Example Request

curl https://getdadseo.com/api/v1/sites/1/competitors \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": [
    {
      "id": 501,
      "status": "completed",
      "diagnosisText": "Found 5 direct competitors...",
      "progress": 100,
      "startedAt": "2026-02-20T10:00:00Z",
      "completedAt": "2026-02-20T10:02:30Z",
      "createdAt": "2026-02-20T10:00:00Z"
    }
  ]
}
POST/api/v1/sites/:siteId/competitorsexpand

Triggers a new competitor analysis audit. Identifies competing domains, shared keywords, and competitive gaps.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/competitors \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 502,
    "status": "pending",
    "auditType": "competitors"
  }
}
POST/api/v1/sites/:siteId/content-auditexpand

Triggers a content quality audit. Analyzes page content for thin content, duplicate content, and quality issues.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/content-audit \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 503,
    "status": "pending",
    "auditType": "content"
  }
}
POST/api/v1/sites/:siteId/content-intelexpand

Triggers a content intelligence analysis. Provides AI-powered content recommendations, gap analysis, and topic opportunities.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/content-intel \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 504,
    "status": "pending",
    "auditType": "content-intel"
  }
}
POST/api/v1/sites/:siteId/geoexpand

Triggers a geo/local SEO audit. Analyzes geographic targeting, local signals, and regional performance.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/geo \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 505,
    "status": "pending",
    "auditType": "geo"
  }
}
POST/api/v1/sites/:siteId/hreflangexpand

Triggers an hreflang audit. Validates international targeting tags, identifies missing or conflicting hreflang annotations.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/hreflang \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 506,
    "status": "pending",
    "auditType": "hreflang"
  }
}
POST/api/v1/sites/:siteId/imagesexpand

Triggers an image SEO audit. Checks alt text, file sizes, formats, lazy loading, and image optimization opportunities.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/images \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 507,
    "status": "pending",
    "auditType": "image"
  }
}
POST/api/v1/sites/:siteId/internal-linksexpand

Triggers an internal linking audit. Maps link structure, finds orphan pages, and identifies linking opportunities.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/internal-links \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 508,
    "status": "pending",
    "auditType": "internal-links"
  }
}
POST/api/v1/sites/:siteId/offpageexpand

Triggers an off-page SEO audit. Analyzes backlink profile, domain authority signals, and external linking patterns.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/offpage \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 509,
    "status": "pending",
    "auditType": "offpage"
  }
}
POST/api/v1/sites/:siteId/optimizerexpand

Triggers a page optimizer audit for a specific URL and keyword. Provides on-page optimization recommendations.

Request Body

FieldTypeRequiredDescription
urlstringYesThe page URL to optimize
keywordstringYesThe target keyword to optimize for

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/optimizer \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/blog/seo-guide",
    "keyword": "SEO guide 2026"
  }'

Example Response

{
  "data": {
    "id": 510,
    "status": "pending",
    "auditType": "optimizer"
  }
}
POST/api/v1/sites/:siteId/planexpand

Triggers an AI-powered SEO strategy plan. Generates a comprehensive action plan based on site data and audit findings.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/plan \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 511,
    "status": "pending",
    "auditType": "plan"
  }
}
POST/api/v1/sites/:siteId/programmaticexpand

Triggers a programmatic SEO audit. Analyzes template-based pages, parameter URLs, and scalable content patterns.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/programmatic \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 512,
    "status": "pending",
    "auditType": "programmatic"
  }
}
POST/api/v1/sites/:siteId/schema-auditexpand

Triggers a structured data (Schema.org) audit. Validates JSON-LD markup, identifies missing schemas, and checks for errors.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/schema-audit \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 513,
    "status": "pending",
    "auditType": "schema"
  }
}
POST/api/v1/sites/:siteId/sitemap-auditexpand

Triggers a sitemap audit. Validates XML sitemaps, checks for missing pages, and identifies sitemap configuration issues.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/sitemap-audit \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 514,
    "status": "pending",
    "auditType": "sitemap"
  }
}
POST/api/v1/sites/:siteId/socialexpand

Triggers a social SEO audit. Checks Open Graph tags, Twitter cards, and social sharing metadata.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/social \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 515,
    "status": "pending",
    "auditType": "social"
  }
}
POST/api/v1/sites/:siteId/technicalexpand

Triggers a technical SEO audit. Analyzes Core Web Vitals, crawlability, indexation, redirects, and server configuration.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/technical \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 516,
    "status": "pending",
    "auditType": "technical"
  }
}
GET/api/v1/sites/:siteId/topicsexpand

Lists topic analysis runs for the site. Each run clusters search queries into topical groups.

Example Request

curl https://getdadseo.com/api/v1/sites/1/topics \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": [
    {
      "id": 201,
      "status": "completed",
      "queryCount": 1250,
      "clusterCount": 48,
      "progress": 100,
      "progressDetail": null,
      "startedAt": "2026-02-20T10:00:00Z",
      "completedAt": "2026-02-20T10:05:00Z",
      "createdAt": "2026-02-20T10:00:00Z"
    }
  ]
}
POST/api/v1/sites/:siteId/topicsexpand

Triggers a new topic clustering analysis. Groups search queries into semantic topic clusters for content strategy.

Example Request

curl -X POST https://getdadseo.com/api/v1/sites/1/topics \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "id": 202,
    "status": "pending",
    "type": "topics"
  }
}

Stats

Aggregate dashboard statistics across all your sites.

GET/api/v1/statsexpand

Returns aggregate GSC performance data (last 28 days) across all sites, plus per-site click and impression totals.

Example Request

curl https://getdadseo.com/api/v1/stats \
  -H "Authorization: Bearer dadseo_sk_live_abc123def456"

Example Response

{
  "data": {
    "totalClicks": 45230,
    "totalImpressions": 1250000,
    "avgCtr": 0.036,
    "avgPosition": 14.2,
    "sites": [
      {
        "id": 1,
        "name": "Main Site",
        "domain": "example.com",
        "clicks28d": 32100,
        "impressions28d": 890000
      },
      {
        "id": 2,
        "name": "Blog",
        "domain": "blog.example.com",
        "clicks28d": 13130,
        "impressions28d": 360000
      }
    ]
  }
}
AI

Connect your AI assistant

Use the same API key with our MCP Server to give Claude, Cursor, or any MCP client direct access to your SEO data and audits.

Need help? support@getdadseo.com — We typically respond within 24 hours.