# Privacy Cookie Vendor Risk Extractor (`seeb/privacy-cookie-vendor-risk-extractor`) Actor

Extract cookie vendors, purposes, retention periods, data-sharing signals, opt-out links, and privacy risk notes from cookie and privacy pages.

- **URL**: https://apify.com/seeb/privacy-cookie-vendor-risk-extractor.md
- **Developed by:** [Techionik](https://apify.com/seeb) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$25.00 / 1,000 cookie vendor risks

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## Privacy Cookie Vendor Risk Extractor

Extract cookie vendors, purposes, retention periods, data-sharing signals, opt-out links, and privacy risk notes from cookie and privacy pages.

### Why This Actor Is Useful

This actor turns cookie-policy and privacy-policy text into a vendor-risk inventory. It is built for users who need more than a list of cookies: vendor names, purpose, retention, opt-out links, sharing signals, and privacy risk all need to be visible in one row.

It only extracts vendors and risks visible in the supplied source. If a banner hides details behind JavaScript, paste the visible policy text into the input.

### What It Extracts

- `websiteName` - Website.
- `vendorName` - Vendor.
- `cookieName` - Cookie.
- `purpose` - Purpose.
- `dataCategory` - Data category.
- `retentionPeriod` - Retention.
- `optOutUrl` - Opt-out URL.
- `sharingSignal` - Sharing signal.
- `riskLevel` - Risk level.
- `sourceUrl` - Source URL.
- `evidenceText` - Evidence.

### Practical Workflows

- Build cookie/vendor inventories for client audits.
- Spot ad-tech and analytics sharing risks.
- Compare retention periods and opt-out coverage across websites.
- Prepare privacy review spreadsheets from public policy text.

### Input

Paste one or more public cookie policy, privacy policy, consent vendor, tracking disclosure, or cookie table URLs. The actor scans those pages and extracts cookie vendors, cookie names, purpose, retention, sharing signals, opt-out links, and risk indicators.

- `startUrls` - Add public cookie policy, privacy policy, cookie table, consent vendor, or tracking disclosure pages to analyze.
- `sourceText` - Optional: paste cookie table rows, privacy-policy sections, vendor lists, or consent text. Best when the cookie page needs JavaScript or is hard to fetch.
- `maxResults` - Stop after this many useful rows. Most users can leave this at 100.
- `requestTimeoutSecs` - How long to wait for each URL. Increase only for slow public pages.

### Example Input

```json
{
    "sourceText": [
        "ShopVista cookie policy lists Google Analytics cookie _ga for analytics and measurement, retention 2 years. Advertising cookies from Meta may share identifiers with partners. Opt out at https://shopvista.example/privacy-options.",
        "CloudDesk privacy page: HubSpot cookies track visitor sessions for marketing attribution for 6 months. Data may be shared with CRM and advertising partners."
    ],
    "maxResults": 10,
    "requestTimeoutSecs": 20
}
```

### Example Output

```json
{
    "websiteName": "ShopVista",
    "vendorName": "Google Analytics",
    "cookieName": "_ga",
    "purpose": "analytics and measurement",
    "dataCategory": "identifiers",
    "retentionPeriod": "2 years",
    "optOutUrl": "https://shopvista.example/privacy-options",
    "sharingSignal": "share identifiers with partners",
    "riskLevel": "advertising",
    "sourceUrl": "pasted://source-1",
    "evidenceText": "ShopVista cookie policy lists Google Analytics cookie _ga for analytics and measurement, retention 2 years. Advertising cookies from Meta may share identifiers with partners. Opt out at https://shopvista.example/privacy-options."
}
```

### Reliability Notes

The actor is intentionally lightweight and fast. It does not try to bypass captcha systems, private pages, paywalls, or login walls. When a site blocks direct fetching, paste the public visible text into `sourceText`; the same actor-specific parser will still produce structured rows.

### Limitations

- The actor extracts only information present in the supplied source.
- Missing source details remain blank instead of being guessed.
- Highly unusual wording may require pasted text or cleaner source snippets for best results.

### Output

Rows are written to the default Apify dataset with actor-specific fields and source evidence. The output is designed for spreadsheets, dashboards, client audits, procurement notes, SEO reports, developer research, and other marketplace buyer workflows.

# Actor input Schema

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

Paste one or more public cookie policy, privacy policy, consent vendor, tracking disclosure, or cookie table URLs.

## `maxResults` (type: `integer`):

Stop after this many useful rows. Leave this at 100 for normal runs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://example.com/privacy"
    }
  ],
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `summary` (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://example.com/privacy"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("seeb/privacy-cookie-vendor-risk-extractor").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://example.com/privacy" }] }

# Run the Actor and wait for it to finish
run = client.actor("seeb/privacy-cookie-vendor-risk-extractor").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 '{
  "startUrls": [
    {
      "url": "https://example.com/privacy"
    }
  ]
}' |
apify call seeb/privacy-cookie-vendor-risk-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,seeb/privacy-cookie-vendor-risk-extractor"
        }
    }
}

```

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/StR35FdTl2WD325Zg/builds/bHUjD9zAbDoS4fJW5/openapi.json
