# AI SEO Tracker - Technical & AI Search Audit (`khadinakbar/ai-seo-tracker`) Actor

Audit a public site for technical SEO and AI-search readiness. Returns source-linked checks for robots.txt, sitemap, llms.txt, indexing directives, metadata, canonical URLs and structured data. Use for site audits and repeatable monitoring; not for AI-answer brand visibility.

- **URL**: https://apify.com/khadinakbar/ai-seo-tracker.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** SEO tools, AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 site audit completeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## AI SEO Tracker

AI SEO Tracker gives technical SEO teams, agencies, and product marketers one structured site-audit record with crawlability, indexation, metadata, canonical, sitemap, structured-data, and AI-search-readiness fields. It returns a source-linked dataset item that turns a public website URL into prioritized, actionable audit evidence.

### Best fit and workflow routing

Choose AI SEO Tracker for a public website baseline before a release, content migration, or recurring technical review. It works well for teams that need a compact audit record and evidence URLs they can validate with the site owner.

Start with this Actor to establish page-level technical evidence, then use [AI Search Visibility Tracker](https://apify.com/khadinakbar/ai-search-visibility-tracker) when the next decision is measuring whether a domain appears as a source in AI answers. Together, the two records support a practical workflow from site readiness to observed AI-search visibility.

### Quick start and input

```json
{
  "siteUrl": "https://example.com",
  "maxPages": 5,
  "checkAiReadiness": true,
  "previousSnapshot": {
    "overallScore": 72,
    "criticalIssueCount": 1,
    "warningIssueCount": 4
  }
}
```

`siteUrl` is the public homepage or page that starts the audit. `maxPages` bounds the same-origin HTML sample from one to 25 pages. `checkAiReadiness` adds named AI-crawler directives, `llms.txt`, and structured-data signals. `previousSnapshot` supplies a prior summary so the next audit can calculate an overall-score change.

### Workflow story: release baseline to fix list

A technical marketer starts with the production homepage and a five-page sample. The Actor collects robots, sitemap, page metadata, canonical, heading, and structured-data evidence, then returns one report. Next, the marketer assigns critical issues from the report, validates each evidence URL with the site owner, and schedules the same bounded input after the release. The new report compares its score with the prior snapshot and becomes a source-linked change record for the team.

### Output data

Each dataset item represents one completed public-site audit.

| Field | Meaning |
| --- | --- |
| `overallScore` | Bounded 0–100 readiness score for the sampled site evidence |
| `technicalScore` | Crawlability, metadata, canonical, and indexation signal score |
| `aiReadinessScore` | AI-search readiness signal score when enabled |
| `issues` | Prioritized issue objects with severity, code, evidence URL, and recommendation |
| `robotsStatus`, `sitemapStatus`, `llmsStatus` | Presence status for the public discovery resources |
| `auditedAt` | Collection timestamp for comparing repeat audits |

```json
{
  "siteUrl": "https://example.com",
  "overallScore": 78,
  "technicalScore": 82,
  "aiReadinessScore": 70,
  "pagesAudited": 5,
  "criticalIssueCount": 0,
  "warningIssueCount": 2,
  "robotsStatus": "present",
  "sitemapStatus": "present",
  "llmsStatus": "missing",
  "issues": [
    {
      "severity": "warning",
      "code": "canonical-missing",
      "message": "Page needs an absolute canonical URL.",
      "evidenceUrl": "https://example.com/pricing",
      "recommendation": "Add one absolute canonical URL for the preferred indexable version."
    }
  ],
  "auditedAt": "ISO-8601 collection timestamp"
}
```

`OUTPUT` and `RUN_SUMMARY` are written to the default key-value store. The dataset is the durable audit record for export, API readback, or a scheduled comparison.

### Pricing

AI SEO Tracker uses Pay per event pricing. One persisted `site-audit-completed` report is the billable event, and Apify platform usage is charged separately. A five-page audit produces one report event; `maxPages` keeps the public-page sample specific and bounded. Use the live [Pricing tab](https://apify.com/khadinakbar/ai-seo-tracker/pricing) when planning a scheduled audit's current event price and platform-usage details.

### API example

```bash
curl "https://api.apify.com/v2/acts/khadinakbar~ai-seo-tracker/runs?token=$APIFY_TOKEN" \
  -H 'content-type: application/json' \
  -d '{"siteUrl":"https://example.com","maxPages":5,"checkAiReadiness":true}'
```

### AI agent prompt

> Audit `https://example.com` across five pages. Return the overall score, critical issues, and the three highest-priority warnings with source URLs. Read the dataset item after completion, preserve the collection timestamp, and state the Pay per event scope before scheduling a comparison.

The Actor reads public web resources and returns one bounded dataset item. An agent can retrieve that item from the default dataset and pass its summary into the next scheduled audit as `previousSnapshot`.

### Best results and practical guidance

Provide a canonical public URL that represents the release or section you want to assess. Start with five pages for a focused baseline, validate issue evidence URLs with the site owner, and schedule the same input after a meaningful site change. Use a consistent sample size so score comparisons remain useful. Pair the audit with the visibility workflow above when source-citation measurement is the next business question.

### Builder's note

I designed the Actor around one complete, validated audit record per site. That shape keeps evidence URLs, charge accounting, exports, and repeat comparisons aligned for both technical teams and AI-agent readback.

### Responsible use

Use public websites you are authorized to assess and follow applicable laws, site terms, intellectual-property requirements, privacy obligations, and the site's published access guidance.

# Actor input Schema

## `siteUrl` (type: `string`):

The public site or page to audit, for example https://example.com. A homepage is best for site-level discovery checks. Required and used as the crawl origin. Not a private dashboard or URL containing credentials.

## `maxPages` (type: `integer`):

Maximum same-origin HTML pages sampled from the sitemap or homepage links. Use 1 for a fast spot check and up to 25 for a broader sample. Defaults to 5 to keep the audit bounded. Not a billing cap; one completed site audit is billed once.

## `checkAiReadiness` (type: `boolean`):

Checks llms.txt, AI crawler directives, cited-content signals and structured data alongside conventional SEO checks. Defaults to true. Turn off only for a conventional technical SEO snapshot. Not a claim that a site will appear in an AI answer.

## `previousSnapshot` (type: `object`):

Optional prior output summary used to label score and issue-count changes on a repeat audit. Supply only a prior AI SEO Tracker summary object. Defaults to no comparison. Not a private analytics export or credentials.

## `demoMode` (type: `boolean`):

Validates the run contract without fetching a website or charging the report event. Defaults to false. Use for integration smoke tests only. Not a real audit or cached report.

## Actor input object example

```json
{
  "siteUrl": "https://example.com",
  "maxPages": 5,
  "checkAiReadiness": true,
  "previousSnapshot": {
    "overallScore": 72,
    "criticalIssueCount": 1,
    "warningIssueCount": 4
  },
  "demoMode": false
}
```

# Actor output Schema

## `audits` (type: `string`):

One validated audit report per completed site.

## `output` (type: `string`):

Run-level outcome and audit summary.

## `runSummary` (type: `string`):

Terminal diagnostics, issue counts and event-charge accounting.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "siteUrl": "https://apify.com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/ai-seo-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "siteUrl": "https://apify.com" }

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/ai-seo-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "siteUrl": "https://apify.com"
}' |
apify call khadinakbar/ai-seo-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,khadinakbar/ai-seo-tracker"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/WPnjxmwdCSKMsY9Am/builds/GbS5Ih2mZ3aZfrhF1/openapi.json
