# Public Competitive Alternatives Directory Quality Agent (`jacksu/public-competitive-alternatives-directory-quality-agent`) Actor

Evaluate public alternatives, competitors, tools, or software directory pages for listing coverage, ranking, ratings, review counts, filters, sponsorship disclosure, and stable quality hashes.

- **URL**: https://apify.com/jacksu/public-competitive-alternatives-directory-quality-agent.md
- **Developed by:** [jack su](https://apify.com/jacksu) (community)
- **Categories:** Business, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 useful alternatives directory quality results

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/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

## Public Competitive Alternatives Directory Quality Agent

Evaluate public alternatives, competitors, tools, marketplace, or software
directory pages for quality evidence: listing coverage, ranking, ratings,
review counts, filter/sort controls, sponsored disclosure, pagination, CTA
links, risk diagnostics, and stable hashes.

This Actor is built for AI agents, competitive-intelligence workflows, product
marketers, and analyst assistants that need to decide whether one public
directory page is usable evidence without crawling the directory, scraping
review sites, or making recommendations.

### What It Returns

- Directory page type and context terms.
- Sampled listing cards with names, ranks, ratings, review counts, sanitized
  profile links, and evidence text.
- Ranking, rating, review-count, filter/sort, sponsorship disclosure,
  pagination, and listing CTA signals.
- Focus-term matches, evidence snippets, evidence URLs, quality/confidence/
  completeness scores, diagnostics, and a stable `directoryQualityHash`.

### Pricing Behavior

The Actor uses pay-per-event pricing and only charges the useful result event
when it finds useful, new or changed public directory-quality evidence.

Paid event:

- `useful-alternatives-directory-quality-result`

It does not charge the useful event for:

- invalid or private-network URLs;
- failed fetches;
- generic home, pricing, blog, case-study, procurement, hiring, privacy, or
  landing pages;
- explicit side-by-side product comparison pages;
- SaaS plan or feature entitlement matrices;
- pages with only one or two alternatives and no real directory structure;
- `focusTerms` misses;
- unchanged records when you pass a previous `directoryQualityHash`;
- duplicate normalized URLs in the same run.

`apify-default-dataset-item` is intentionally not used.

### Scope And Safety

- Public HTTP/HTTPS HTML or text pages only.
- Private-network hosts, credentials, query strings, fragments, path
  parameters, and token-like account paths are rejected.
- JavaScript is not executed.
- Forms are not submitted.
- Listed product/profile/detail pages, review pages, PDFs, and external assets
  are recorded only as sanitized links and are not fetched.
- The Actor does not verify reviews, rank vendors, recommend purchases, scrape
  private pages, or enrich companies.

### Example Input

```json
{
  "directoryPageUrls": [
    "https://www.techjockey.com/category/project-management-software"
  ],
  "focusTerms": [
    "reviews"
  ],
  "requestTimeoutSecs": 20
}
```

### Best Use Cases

- Check whether an alternatives or software directory page is evidence-rich or
  too thin.
- Monitor directory-quality changes without paying for unchanged results.
- Extract structured quality signals for market maps, battlecards, and AI
  research pipelines.
- Filter directory pages by focus product, category, review, rating, sponsored,
  or other evidence terms.

# Actor input Schema

## `directoryPageUrls` (type: `array`):

Public HTTP/HTTPS alternatives, competitors, tools, marketplace, category, or software directory pages. Query parameters, fragments, credentials, path params, private-network hosts, and token-like account paths are rejected.

## `focusTerms` (type: `array`):

Optional terms such as ratings, reviews, sponsored, filter, Asana, CRM, project management, or vendor names that must match before the useful result event is charged.

## `previousDirectoryRecords` (type: `array`):

Optional previous records from this Actor. If directoryQualityHash is unchanged for the same page, the result is written without charging the useful event.

## `requestTimeoutSecs` (type: `integer`):

Maximum time in seconds to wait for each public page response.

## Actor input object example

```json
{
  "directoryPageUrls": [
    "https://www.techjockey.com/category/project-management-software"
  ],
  "focusTerms": [],
  "previousDirectoryRecords": [],
  "requestTimeoutSecs": 20
}
```

# Actor output Schema

## `datasetId` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("jacksu/public-competitive-alternatives-directory-quality-agent").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("jacksu/public-competitive-alternatives-directory-quality-agent").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 '{}' |
apify call jacksu/public-competitive-alternatives-directory-quality-agent --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jacksu/public-competitive-alternatives-directory-quality-agent",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/7etRyJ41lnJNngTtz/builds/CzjKFfJQRX9XFVY4j/openapi.json
