# Docs Drift Monitor (`seeb/docs-drift-monitor`) Actor

Monitor public documentation and help pages for API, authentication, pricing, limit, deprecation, policy, and support-flow drift signals.

- **URL**: https://apify.com/seeb/docs-drift-monitor.md
- **Developed by:** [Techionik](https://apify.com/seeb) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $25.00 / 1,000 docs drift signals

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

## Docs Drift Monitor

Monitor public documentation and help pages for API, authentication, pricing, limit, deprecation, policy, and support-flow drift signals.

Docs Drift Monitor is for teams that depend on vendor documentation, API docs, help centers, and public policy pages. It turns scattered documentation changes into rows that identify the affected surface, risk level, effective date, and recommended action.

This actor is designed for focused marketplace research runs. You can give it public URLs, paste copied source text, or combine both. URL fetching is useful for public HTML pages; pasted text is useful when a site uses heavy JavaScript, login walls, CAPTCHA, or restrictive anti-bot controls that should not be bypassed.

### Who Uses It

- Engineering teams
- API consumers and platform teams
- Vendor-management teams
- Support operations
- Product and documentation managers

### What It Extracts

- `vendorName` - Vendor, platform, product, or documentation owner.
- `docsUrl` - Original docs/help/API page URL or synthetic URL for pasted text.
- `docSection` - Documentation section or topic area inferred from the text.
- `driftSignal` - Concrete documentation drift signal, such as deprecation, new auth rule, changed limit, or updated policy.
- `changeType` - Type of documentation change such as added, removed, deprecated, breaking change, limit change, or policy update.
- `apiOrPolicySurface` - API endpoint, auth method, SDK, plan limit, policy area, or support workflow affected.
- `effectiveDate` - Effective, migration, deadline, or deprecation date.
- `riskLevel` - Risk based on breaking changes, deprecated features, security/auth changes, or pricing/limit impact.
- `actionNeeded` - Recommended review action for product, engineering, support, or vendor-management teams.
- `evidenceText` - Short documentation phrase supporting the drift signal.

### Why This Actor Is Useful

Documentation changes can break integrations, alter support processes, or reveal product direction. This actor makes public docs changes easier to review and route to the right team.

### Input

- `startUrls` - Public pages to fetch and analyze.
- `sourceTexts` - Optional pasted source snippets for pages that are blocked, login-gated, JavaScript-heavy, or easier to collect manually.
- `maxPagesPerStartUrl` - Same-domain crawl depth for each URL. Use a low value for precise runs.
- `maxConcurrency` - Parallel request count.
- `proxyConfiguration` - Optional Apify Proxy settings for public pages that rate-limit normal requests.

### Example Input

```json
{
    "startUrls": [
        {
            "url": "https://docs.apify.com/"
        }
    ],
    "sourceTexts": [
        "Docs update: API v2 authentication now requires scoped tokens. Legacy API keys are deprecated on September 30, 2026. Rate limits remain 600 requests per minute for Pro plans."
    ],
    "maxPagesPerStartUrl": 2,
    "maxConcurrency": 2
}
```

### Example Output

```json
{
    "vendorName": "API v2",
    "docsUrl": "pasted://docs-1",
    "docSection": "authentication",
    "driftSignal": "legacy API keys are deprecated",
    "changeType": "deprecation",
    "apiOrPolicySurface": "scoped tokens",
    "effectiveDate": "September 30, 2026",
    "riskLevel": "high",
    "actionNeeded": "Review integrations that still use legacy API keys and schedule token migration.",
    "evidenceText": "API v2 authentication now requires scoped tokens."
}
```

### How It Works

1. The actor normalizes every URL and pasted text item.
2. Public URLs are fetched with a browser-like user agent and a clear timeout.
3. HTML pages are converted into readable page text while scripts, styles, iframes, and hidden noise are removed.
4. The actor applies Docs Drift Monitor-specific extraction rules rather than a generic page-summary template.
5. Only rows with useful actor-specific information are saved to the dataset.
6. A run summary is saved to the key-value store for quick review.

### Practical Workflows

- Watch API docs for breaking changes.
- Track vendor policy or help-center updates.
- Alert engineering teams about deprecations and migration dates.
- Compare documentation drift across important vendors.

### Reliability Notes

- Best results come from public HTML pages or pasted snippets that visibly contain the target signal.
- For JavaScript-heavy sites, paste the relevant text or use URLs that return readable HTML.
- The actor does not bypass logins, paywalls, CAPTCHA, private systems, or website restrictions.
- Some fields may be empty when the source does not contain that information.
- Use smaller crawl limits for broad portals and larger limits only for well-structured sites.

### Limitations

- This actor extracts public or user-provided visible text only.
- It is not a legal-access tool for restricted procurement portals, private retailer dashboards, closed review platforms, account-only changelogs, or internal documentation.
- Results should be reviewed before making procurement, legal, inventory, engineering, or sales decisions.

### Search Keywords

docs drift monitor, docs drift monitor, vendor name, docs url, doc section, drift signal, change type, api or policy surface, effective date, risk level, action needed, evidence text

# Actor input Schema

## `startUrls` (type: `array`):

Add public documentation/help-center URLs or paste docs snippets from API docs, policy pages, support articles, changelogs, or migration guides.

## `sourceTexts` (type: `array`):

Optional pasted snippets. Use this for blocked pages, login-gated portals you can view manually, newsletters, exported notes, or copied page sections.

## `maxPagesPerStartUrl` (type: `integer`):

How many same-domain pages to analyze from each start URL. Keep this low for focused, low-cost runs.

## `maxConcurrency` (type: `integer`):

How many pages to analyze at the same time.

## `proxyConfiguration` (type: `object`):

Optional proxy settings. Use Apify Proxy for public pages that rate-limit normal datacenter requests.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://docs.apify.com/"
    },
    {
      "url": "https://docs.stripe.com/"
    }
  ],
  "sourceTexts": [
    "Docs update: API v2 authentication now requires scoped tokens. Legacy API keys are deprecated on September 30, 2026. Rate limits remain 600 requests per minute for Pro plans.",
    "Help center article changed checkout troubleshooting steps, added a new support escalation path, and removed references to the legacy portal."
  ],
  "maxPagesPerStartUrl": 3,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `summary` (type: `string`):

No description

## `rawJson` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://docs.apify.com/"
        },
        {
            "url": "https://docs.stripe.com/"
        }
    ],
    "sourceTexts": [
        "Docs update: API v2 authentication now requires scoped tokens. Legacy API keys are deprecated on September 30, 2026. Rate limits remain 600 requests per minute for Pro plans.",
        "Help center article changed checkout troubleshooting steps, added a new support escalation path, and removed references to the legacy portal."
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("seeb/docs-drift-monitor").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 = {
    "startUrls": [
        { "url": "https://docs.apify.com/" },
        { "url": "https://docs.stripe.com/" },
    ],
    "sourceTexts": [
        "Docs update: API v2 authentication now requires scoped tokens. Legacy API keys are deprecated on September 30, 2026. Rate limits remain 600 requests per minute for Pro plans.",
        "Help center article changed checkout troubleshooting steps, added a new support escalation path, and removed references to the legacy portal.",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("seeb/docs-drift-monitor").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://docs.apify.com/"
    },
    {
      "url": "https://docs.stripe.com/"
    }
  ],
  "sourceTexts": [
    "Docs update: API v2 authentication now requires scoped tokens. Legacy API keys are deprecated on September 30, 2026. Rate limits remain 600 requests per minute for Pro plans.",
    "Help center article changed checkout troubleshooting steps, added a new support escalation path, and removed references to the legacy portal."
  ]
}' |
apify call seeb/docs-drift-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=seeb/docs-drift-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/bihgUjoBX2ARK286M/builds/l1VuBWhd6br2xVvg1/openapi.json
