# Competitor Displacement Intelligence (`tryva/competitor-displacement-intelligence`) Actor

Find accounts becoming winnable because a competitor's technology is disappearing or changing. Observable public-web evidence and conservative displacement signals; never confirmed purchase intent or a confirmed buyer.

- **URL**: https://apify.com/tryva/competitor-displacement-intelligence.md
- **Developed by:** [smile flow](https://apify.com/tryva) (community)
- **Categories:** Developer tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 1,000 competitor displacement analyses

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

## Competitor Displacement Intelligence

Status: **Apify Store Actor — REST + MCP**

Find accounts becoming winnable because a competitor’s technology is disappearing or changing. This single Actor exposes REST and MCP surfaces over the same engine. It separates observable public-web evidence from inference; it never claims confirmed purchase intent, a confirmed buyer, or internal software usage.

### Surfaces

REST endpoints:

- `POST /v1/scan` — observe one current stack without changing the baseline.
- `POST /v1/change` — compare and persist one observation.
- `POST /v1/displacement/search` — scan up to 1,000 domains and filter competitor/replacement matches.
- `GET /v1/history/{domain}` — return the latest 20 stored observations.

MCP uses the same engine over Streamable HTTP at `/mcp` with `stateless_http=true`: `scan_technology_stack`, `detect_technology_change`, `find_competitor_displacement`, and `get_technology_history`.

Example displacement request:

```json
{"competitors":["Salesforce"],"replacement_candidates":["HubSpot","Pipedrive"],"domains":["company-a.com"],"min_evidence_score":70}
```

### V1 interpretation

Signals: `NO_CHANGE`, `OBSERVED_ADDED`, `OBSERVED_REMOVED`, `LIKELY_REPLACEMENT`, `INSUFFICIENT_EVIDENCE`.

Reason codes are machine-readable: `competitor_removed`, `competitor_added`, `same_category_replacement_detected`, `scan_quality_comparable`, `scan_quality_insufficient`, `change_confirmed`, `insufficient_evidence`, and `no_material_change`.

`LIKELY_REPLACEMENT` requires reliable removal and addition, shared category, adjacent observations, and comparable scan quality. A degraded scan exposes `provisional_removed` and cannot produce a removal or replacement claim. Evidence score is not purchase probability.

The detector runs Opentechalyzer built-in MIT fingerprints only, with `--no-external`; no enrichment, intent data, webhooks, Wappalyzer database, or HTTP Archive is used. Snapshots and bounded history use the named Apify Key-Value Store `technology-change-buying-signals-v1`.

### Distribution and pricing

This is one Apify Actor with REST and stateless Streamable HTTP MCP. PAY\_PER\_EVENT pricing is declared in `.actor/pay_per_event.json`: technology scan $0.01/domain, technology change $0.02/domain, and displacement analysis $0.03/domain, with displacement analysis as the primary event.

### Limitations and release gate

Results describe observable public-web technology evidence only. 403/blocked pages can have low evidence quality; a timeout is a failed scan. An evidence score is not purchase probability, and no result confirms purchase intent or that a company bought a product. No RapidAPI or ApyHub publication is part of this product.

# Actor input Schema

## `endpoint` (type: `string`):

Select the operation to expose for this Actor request.

## `domain` (type: `string`):

One domain for a scan or change detection request.

## `competitors` (type: `array`):

Technology names to monitor for removal in displacement analysis.

## `replacement_candidates` (type: `array`):

Technology names that may replace a monitored competitor.

## `domains` (type: `array`):

Domains to scan for displacement signals, up to 1,000 entries.

## `min_evidence_score` (type: `integer`):

Minimum evidence score required for a displacement result, from 0 to 100.

## Actor input object example

```json
{
  "endpoint": "displacement_search",
  "min_evidence_score": 70
}
```

# Actor output Schema

## `mcpEndpoint` (type: `string`):

No description

## `healthEndpoint` (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("tryva/competitor-displacement-intelligence").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("tryva/competitor-displacement-intelligence").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 '{}' |
apify call tryva/competitor-displacement-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tryva/competitor-displacement-intelligence"
        }
    }
}
```

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/kfIABadN1TuOP55yY/builds/CWhkbFYa80Rp1FJcl/openapi.json
