# WhoIsThisPerson (`rexreus/whoisthisperson`) Actor

Multi-engine search (Google, Bing, Yandex, FaceCheck.ID) with AI face verification and social discovery. It ranks and verifies matches using confidence scoring for faster, reliable OSINT investigations, due diligence, and identity verification.

- **URL**: https://apify.com/rexreus/whoisthisperson.md
- **Developed by:** [REXREUS D.O](https://apify.com/rexreus) (community)
- **Categories:** Integrations, Automation, Other
- **Stats:** 9 total users, 4 monthly users, 40.8% runs succeeded, NaN bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.50 / actor start

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## 🔍 Whoisthisperson - Find, Verify, and Rank People From an Image

> **Multi-engine reverse image search with AI face verification and social footprint discovery**

A production-ready Apify Actor for buyers who need faster, more reliable image intelligence. It combines multiple reverse image search engines, face verification, and result ranking into one cloud-run workflow.

[![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg)](https://opensource.org/licenses/ISC)
[![Node.js](https://img.shields.io/badge/Node.js-20%2B-green.svg)](https://nodejs.org/)
[![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://www.typescriptlang.org/)

---

### 🚀 Why Use This Actor?

#### The Problem
Standard reverse image search can produce a lot of noise. It is hard to know which results actually match the target person, and manual checking takes time.

#### Our Solution
- **🔗 Multi-engine coverage**: Search Google, Yandex, Bing, and FaceCheck.ID in one run
- **🧠 Face verification**: Compare likely matches with local embeddings and confidence scoring
- **🌐 Social discovery**: Surface related public profiles when available
- **⚡ Faster review**: Rank, deduplicate, and score results so you can focus on the strongest matches
- **🔒 Privacy-aware processing**: Verification happens inside the Actor runtime, not in your browser

#### What Buyers Get
- A single workflow instead of juggling separate search tools.
- Better signal quality with confidence and review flags.
- Structured output that is easy to read, export, or automate.
- Results that are useful for investigations, due diligence, and repeated checks.

#### Trust & Credibility
- **Transparent scoring** so buyers can see why a result ranked higher.
- **Clear review flags** so weak matches are easy to separate from stronger ones.
- **Engine-level metadata** so users can compare performance and coverage.
- **Structured output** so the result format stays consistent across runs.
- **Cloud-run execution** so buyers get a managed Actor experience inside Apify.

---

### ✨ Key Features

#### 1. **Multi-Engine Search**
Queries up to 4 reverse image search engines in parallel:
- **Google Lens** - Largest index, excellent general coverage
- **Yandex Images** - Strong for faces and Russian-language content
- **Bing Visual Search** - Good for technical/document images
- **FaceCheck.ID** - Specialized face search API (optional, API key required)

#### 2. **Intelligent Face Verification**
````

┌─ Input Image
│  └─→ \[Face Detection] → Extract primary face (128-d embedding)
│
├─→ Multi-Engine Search (Parallel)
│  ├─ Google Results
│  ├─ Yandex Results
│  ├─ Bing Results
│  └─ FaceCheck Results
│
└─→ Face Verification Pipeline
├─ Extract face embeddings from results
├─ Calculate cosine similarity scores
├─ Apply multi-tier confidence system
├─ Correlate with metadata (name, location, age)
└─→ Ranked & Deduplicated Results

````

**Multi-Tier Confidence System:**
- **🟢 Very High (0.95+)**: Same photo or identical person (auto-accept)
- **🟢 High (0.90-0.95)**: Highly likely match + metadata validation
- **🟡 Medium (0.85-0.90)**: Probable match, manual review recommended
- **🔴 Low (<0.85)**: Requires careful verification

#### 3. **Social Media Intelligence**
- Extracts names from search results
- Generates username variations (johndoe, john.doe, john_doe, etc.)
- Checks Instagram, LinkedIn, and Twitter/X for matching profiles
- Compares profile pictures with input face for additional verification

#### 4. **Advanced Result Aggregation**
- **URL Deduplication**: Removes duplicate results using URL normalization
- **Face-Based Deduplication**: Groups similar faces (similarity > 0.95)
- **Cross-Engine Validation**: Boosts confidence if result found by multiple engines
- **Domain Diversity**: Limits results per domain to avoid over-representation
- **Composite Scoring**: Combines face similarity, metadata quality, and engine reliability

#### 5. **Memory & Performance Optimization**
- Lazy-loads AI models (loaded only when needed)
- Quantized face-api models (50% size reduction)
- Forced garbage collection between batches
- Adaptive execution modes (full, fast, minimal)
- Automatic memory monitoring and fallback strategies

---

### 📋 Input Parameters

| Parameter | Type | Description | Default | Range |
|-----------|------|-------------|---------|-------|
| **imageUrl** | string | URL of image to search | - | - |
| **imageBase64** | string | Base64-encoded image data | - | - |
| **engines** | array | Search engines: google, yandex, bing, facecheck | All | - |
| **minSimilarity** | number | Face similarity threshold for filtering | 0.85 | 0.0-1.0 |
| **depth** | integer | Max results per engine | 20 | 1-100 |
| **maxResults** | integer | Max total results after aggregation | 50 | 1-200 |
| **timeout** | integer | Timeout per engine (seconds) | 30 | 10-120 |
| **sortBy** | string | Sort results by: similarity, confidence, engine | similarity | - |
| **enableSocialFootprint** | boolean | Search for social media profiles | true | - |
| **socialPlatforms** | array | Platforms to check: instagram, linkedin, twitter | All | - |
| **minSocialSimilarity** | number | Face match threshold for social profiles | 0.80 | 0.0-1.0 |
| **facecheckApiKey** | string | FaceCheck.ID API key (optional) | - | - |
| **googleApiKey** | string | Google API key for search/vision | - | - |
| **googleCx** | string | Google Custom Search Engine ID | - | - |
| **bingApiKey** | string | Bing Image Search API key | - | - |
| **twitterBearerToken** | string | Twitter/X API token for faster verification | - | - |
| **instagramAccessToken** | string | Instagram access token | - | - |
| **linkedinAccessToken** | string | LinkedIn access token | - | - |
| **proxyConfiguration** | object | Proxy settings (residential recommended) | - | - |

---

### 📤 Output Format

```json
{
  "searchId": "search_xyz123",
  "inputImageUrl": "https://example.com/photo.jpg",
  "inputFaceDetected": true,
  "engines": ["google", "yandex", "bing"],
  "results": [
    {
      "rank": 1,
      "imageUrl": "https://...",
      "sourceUrl": "https://example.com/photo",
      "title": "Person Profile",
      "snippet": "Professional headshot...",
      "engine": "google",
      "sources": ["google", "yandex"],
      "faceSimilarity": 0.96,
      "confidence": "very_high",
      "compositeScore": 0.94,
      "requiresReview": false,
      "verification": {
        "similarity": 0.96,
        "confidence": "very_high",
        "faceDetectionConfidence": 0.99,
        "verificationMethod": "facenet-cosine"
      }
    }
  ],
  "socialFootprint": {
    "instagram": [
      {
        "username": "johndoe",
        "url": "https://instagram.com/johndoe",
        "faceSimilarity": 0.91,
        "confidence": "high",
        "followersCount": 1250,
        "verified": false
      }
    ],
    "linkedin": [],
    "twitter": [],
    "summary": {
      "profilesFound": { "instagram": 1, "linkedin": 0, "twitter": 0 },
      "averageConfidence": 0.91,
      "executionTimeMs": 45230
    }
  },
  "aggregationMetadata": {
    "totalPerEngine": { "google": 20, "yandex": 18, "bing": 15 },
    "duplicatesRemovedUrl": 8,
    "duplicatesRemovedFace": 3,
    "finalCount": 42,
    "enginePerformance": {
      "google": {
        "status": "healthy",
        "resultsCount": 20,
        "responseTimeMs": 8500,
        "successRate": 1.0
      }
    }
  },
  "executionTimeMs": 127450,
  "executionMode": "full"
}
````

***

### 🚀 Quick Start & Step-by-step Tutorial

The following steps get you from opening the Actor to reviewing ranked, verified results. Includes both API-key and scraping workflows.

#### 1) Launch the Actor on Apify

1. Open the Actor page in Apify Store and click **Try for free**.
2. In the input form use either `imageUrl` or `imageBase64` (one required).

Example minimal input (paste into the UI input box):

```json
{
  "imageUrl": "https://example.com/your-photo.jpg",
  "engines": ["google", "yandex", "bing"],
  "minSimilarity": 0.85
}
```

#### 2) Add API Keys One by One (optional but recommended)

Fill the API fields directly in the form. Each key has its own input, so you do not need to paste a JSON object.

Use these fields when available:

- `googleApiKey` and `googleCx`
- `bingApiKey`
- `facecheckApiKey`
- `twitterBearerToken`
- `instagramAccessToken`
- `linkedinAccessToken`

Why put keys here?

- With `google` or `bing` API keys the Actor will prefer reliable API lookups (faster, less blocked).
- Without keys the Actor falls back to browser-based scraping (works but is more likely to be blocked and slower).

#### 3) Configure Proxy (strongly recommended for scraping)

In the `proxyConfiguration` input you can enable Apify Proxy or supply custom proxy URLs. Example:

```json
{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "proxyUrls": []
  }
}
```

Notes:

- For scraping (no API keys) a residential proxy drastically improves success rates.
- If `useApifyProxy` is true, set the `APIFY_PROXY_URL` environment variable or let Apify provide the proxy at runtime.

#### 4) Run and Inspect Results

1. Run the Actor. When finished, open the Dataset created by the run.
2. Inspect `aggregationMetadata.enginePerformance` to see per-engine `resultsCount` and `successRate`.

#### Typical Input Example (full)

```json
{
  "imageUrl": "https://upload.wikimedia.org/.../example.jpg",
  "engines": ["google","yandex","bing","facecheck"],
  "googleApiKey": "...",
  "googleCx": "...",
  "bingApiKey": "...",
  "facecheckApiKey": "...",
  "proxyConfiguration": { "useApifyProxy": true },
  "depth": 20,
  "maxResults": 50
}
```

#### What You Get

- Ranked results with confidence signals
- Face verification metadata (similarity, confidence)
- Per-engine performance stats so you can tell which engines worked

***

### 💼 Why Buyers Choose This Actor

This Actor is built for people who need reliable image intelligence without wasting time on manual checking. It combines search, verification, and ranking in one workflow so you can get to the useful result faster.

#### Why It Stands Out

- **Less manual work** because multiple engines are searched in one run.
- **Better signal quality** because face verification helps filter weak matches.
- **More confidence in results** because scoring and deduplication are included.
- **Easy to operationalize** because the output is structured and consistent.

#### What Makes It Valuable

- **Multi-engine coverage** helps you compare results instead of relying on one source.
- **Verification layers** help reduce false positives.
- **Social footprint analysis** helps connect image results to public profiles.
- **Clear result metadata** helps users decide what to trust and what to review.

#### Reliability Signals

- Results are ranked, deduplicated, and annotated with confidence data.
- The output includes engine performance details for visibility into run quality.
- The workflow is built for repeatable checks, not one-off manual browsing.
- The Actor is designed to present useful results quickly, without requiring users to build the pipeline themselves.

#### Ideal For

- Investigators and analysts who need repeatable image search runs.
- Due diligence teams checking identity consistency.
- OSINT workflows that require ranking and verification.
- Agencies and consultants offering paid research services.
- Teams that want an Apify-native data extraction step instead of a custom scraper.

#### Workflow Benefit

You submit an image, the Actor searches across engines, verifies likely matches, and returns ranked results with confidence signals. That makes it easier to review, share, or plug into a larger workflow without rebuilding the pipeline yourself.

***

### 📊 Use Cases

#### 🔎 **Investigative Journalism**

Find all mentions of a person across the web. Verify photo authenticity and discover related accounts.

#### 👮 **Law Enforcement**

Identify suspects from photographs. Cross-reference with social media for additional intelligence.

#### 🛡️ **Due Diligence & Background Checks**

Verify candidate information during hiring. Detect identity fraud and fake profiles.

#### 🔐 **Cybersecurity & Account Recovery**

Locate compromised or abandoned accounts. Find and secure related accounts.

#### 📱 **Social Media Management**

Find brand impersonators. Monitor unauthorized use of company photos.

#### 🎓 **Academic Research**

Study how images spread across the internet. Analyze face recognition accuracy.

***

### 🏗️ Architecture Highlights

#### Scalable Multi-Engine Design

```
Input Image
    ↓
[Image Preprocessing] (Sharp)
    ↓
[Face Detection] (face-api)
    ↓
    ├→ [Google Engine]    (Playwright + Stealth)
    ├→ [Yandex Engine]    (Playwright + Stealth)
    ├→ [Bing Engine]      (Playwright + Stealth)
    └→ [FaceCheck Engine] (API-based)
    ↓
[Result Aggregation] (URL + Face Deduplication)
    ↓
[Face Verification] (Batch Processing)
    ↓
[Social Footprint Analysis] (Parallel Platform Checks)
    ↓
Ranked Final Results
```

#### Technology Stack

- **Language**: TypeScript (strict mode)
- **Framework**: Crawlee (web scraping orchestration)
- **Browser**: Playwright with stealth plugin
- **Face Detection**: @vladmandic/face-api
- **Image Processing**: Sharp
- **Testing**: Jest with 60%+ coverage
- **Runtime**: Node.js 20+ with Apify Actor container

***

### ⚙️ Configuration Best Practices

#### For Speed (Fast Mode)

```json
{
  "depth": 10,
  "maxResults": 20,
  "enableSocialFootprint": false,
  "engines": ["google", "yandex"]
}
```

#### For Accuracy (Full Mode)

```json
{
  "depth": 30,
  "maxResults": 100,
  "minSimilarity": 0.90,
  "enableSocialFootprint": true,
  "socialPlatforms": ["instagram", "linkedin", "twitter"]
}
```

#### For Memory Efficiency

```json
{
  "depth": 15,
  "maxResults": 30,
  "enableSocialFootprint": true,
  "sortBy": "similarity"
}
```

***

### 🔒 Privacy & Security

✅ **Privacy-First Design**

- Face embeddings computed locally (not stored)
- No permanent biometric databases
- Only public data from search results collected
- No tracking or telemetry

✅ **Security Features**

- Input image validation and corruption detection
- Output sanitization
- Rate limiting to avoid detection
- Proxy rotation for anonymity

⚠️ **Ethical Considerations**

- Complies with GDPR, CCPA requirements
- Respects robots.txt policies
- For legitimate investigations only
- See [Privacy & Ethics Guide](docs/PRIVACY_ETHICS.md) for details

***

### 📚 Documentation

- **[Performance Tuning Guide](docs/PERFORMANCE_TUNING.md)** - Memory optimization, proxy setup, accuracy tips
- **[Privacy & Ethics Guide](docs/PRIVACY_ETHICS.md)** - Legal considerations and responsible use
- **[Troubleshooting Guide](docs/TROUBLESHOOTING.md)** - Common issues and solutions
- **[API Reference](docs/API_REFERENCE.md)** - Detailed specification for each module

***

### 📈 Performance Benchmarks

*Typical execution on 16GB Apify Actor with residential proxies:*

| Metric | Value | Notes |
|--------|-------|-------|
| **Search Time** | 45-90s | Parallel multi-engine queries |
| **Face Verification** | 15-30s | Batch processing 50-100 results |
| **Social Analysis** | 10-20s | 3 platforms, username generation |
| **Total Execution** | 90-180s | Full mode with all features |
| **Memory Usage** | 4-6GB | Face models + browser contexts |
| **Results Quality** | 90%+ | Verified with manual testing |

***

### 🐛 Troubleshooting Quick Links

- **No faces detected?** → [Troubleshooting Guide](docs/TROUBLESHOOTING.md#no-face-found-in-input-image)
- **Engines blocked?** → [Performance Tuning](docs/PERFORMANCE_TUNING.md#proxy-configuration)
- **Memory issues?** → [Performance Tuning](docs/PERFORMANCE_TUNING.md#memory-management)
- **Low accuracy?** → [Performance Tuning](docs/PERFORMANCE_TUNING.md#face-verification-accuracy)

***

### 📄 License

ISC License - See [LICENSE](LICENSE) file for details

***

### ⭐ Support & Community

- **Questions?** Check [FAQ](#faq) below
- **Issues?** See [Troubleshooting Guide](docs/TROUBLESHOOTING.md)
- **Feature Requests?** Open an issue on GitHub

***

### ❓ FAQ

**Q: Is this legal to use?**\
A: This actor searches only publicly available information. Ensure your use case complies with local laws (GDPR, CCPA, etc.). See [Privacy & Ethics Guide](docs/PRIVACY_ETHICS.md).

**Q: How accurate is face verification?**\
A: 90%+ accuracy for frontal faces with good lighting. Side profiles and poor quality images reduce accuracy.

**Q: What's the cost?**\
A: Pricing depends on your Apify plan and runtime usage. The Actor is designed to deliver high-value results per run so it can fit both ad-hoc investigations and recurring paid workflows.

**Q: Can I use my own proxies?**\
A: Yes, set `proxyConfiguration.proxyUrls` in the input.

**Q: How do I get a FaceCheck.ID API key?**\
A: Sign up at [facecheck.id](https://facecheck.id) and subscribe to their plan.

***

**Made with ❤️ for the OSINT community**

# Actor input Schema

## `imageUrl` (type: `string`):

URL of the image to search for

## `imageBase64` (type: `string`):

Base64-encoded image data (alternative to imageUrl)

## `engines` (type: `array`):

Search engines to use. Default: all available

## `minSimilarity` (type: `number`):

Minimum face similarity threshold (0.0-1.0). Results below this are excluded.

## `depth` (type: `integer`):

Maximum results per engine

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

Maximum total results after aggregation

## `timeout` (type: `integer`):

Timeout per engine request in seconds

## `facecheckApiKey` (type: `string`):

FaceCheck.ID API key

## `googleApiKey` (type: `string`):

Google API key for Programmable Search or Vision

## `googleCx` (type: `string`):

Programmable Search Engine (CSE) ID

## `bingApiKey` (type: `string`):

Bing Image Search API key

## `twitterBearerToken` (type: `string`):

OAuth2 Bearer token for Twitter API v2

## `instagramAccessToken` (type: `string`):

Instagram access token (if available)

## `linkedinAccessToken` (type: `string`):

LinkedIn access token (if available)

## `enableSocialFootprint` (type: `boolean`):

Search for social media profiles based on names found in results

## `socialPlatforms` (type: `array`):

Social media platforms to check

## `minSocialSimilarity` (type: `number`):

Minimum face similarity for social profile matches

## `sortBy` (type: `string`):

How to sort final results

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

Proxy settings for search engines. Provide either Apify proxy settings or custom proxy URLs as JSON. Residential proxies recommended for best results. Example:
{
"useApifyProxy": true,
"apifyProxyGroups": \["RESIDENTIAL"]
}
or
{
"proxyUrls": \["http://user:pass@host:port"]
}

## Actor input object example

```json
{
  "imageUrl": "https://i.imgur.com/a8ck3fP.png",
  "engines": [
    "google",
    "yandex",
    "bing"
  ],
  "minSimilarity": 0.85,
  "depth": 20,
  "maxResults": 50,
  "timeout": 30,
  "enableSocialFootprint": true,
  "socialPlatforms": [
    "instagram",
    "linkedin",
    "twitter"
  ],
  "minSocialSimilarity": 0.8,
  "sortBy": "similarity"
}
```

# Actor output Schema

## `searchId` (type: `string`):

Unique identifier for this search session

## `inputImageUrl` (type: `string`):

URL of the input image that was searched

## `inputFaceDetected` (type: `string`):

Whether a face was detected in the input image

## `engines` (type: `string`):

Search engines that were queried

## `results` (type: `string`):

Array of aggregated and ranked search results with verification scores

## `socialFootprint` (type: `string`):

Discovered social media profiles with matching analysis

## `aggregationMetadata` (type: `string`):

Statistics about the aggregation and deduplication process

## `executionTimeMs` (type: `string`):

Total execution time in milliseconds

## `executionMode` (type: `string`):

Mode used for this search execution (full, fast, minimal)

# 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 = {
    "imageUrl": "https://i.imgur.com/a8ck3fP.png",
    "engines": [
        "google",
        "yandex",
        "bing"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("rexreus/whoisthisperson").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 = {
    "imageUrl": "https://i.imgur.com/a8ck3fP.png",
    "engines": [
        "google",
        "yandex",
        "bing",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("rexreus/whoisthisperson").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 '{
  "imageUrl": "https://i.imgur.com/a8ck3fP.png",
  "engines": [
    "google",
    "yandex",
    "bing"
  ]
}' |
apify call rexreus/whoisthisperson --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WhoIsThisPerson",
        "description": "Multi-engine search (Google, Bing, Yandex, FaceCheck.ID) with AI face verification and social discovery. It ranks and verifies matches using confidence scoring for faster, reliable OSINT investigations, due diligence, and identity verification.",
        "version": "0.0",
        "x-build-id": "zCwlXOS7jbzec9Dk4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/rexreus~whoisthisperson/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-rexreus-whoisthisperson",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/rexreus~whoisthisperson/runs": {
            "post": {
                "operationId": "runs-sync-rexreus-whoisthisperson",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/rexreus~whoisthisperson/run-sync": {
            "post": {
                "operationId": "run-sync-rexreus-whoisthisperson",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "imageUrl": {
                        "title": "Image URL",
                        "type": "string",
                        "description": "URL of the image to search for"
                    },
                    "imageBase64": {
                        "title": "Image Base64",
                        "type": "string",
                        "description": "Base64-encoded image data (alternative to imageUrl)"
                    },
                    "engines": {
                        "title": "Search Engines",
                        "type": "array",
                        "description": "Search engines to use. Default: all available",
                        "items": {
                            "type": "string",
                            "enum": [
                                "google",
                                "yandex",
                                "bing",
                                "facecheck"
                            ]
                        },
                        "default": [
                            "google",
                            "yandex",
                            "bing"
                        ]
                    },
                    "minSimilarity": {
                        "title": "Minimum Face Similarity",
                        "minimum": 0,
                        "maximum": 1,
                        "type": "number",
                        "description": "Minimum face similarity threshold (0.0-1.0). Results below this are excluded.",
                        "default": 0.85
                    },
                    "depth": {
                        "title": "Search Depth",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum results per engine",
                        "default": 20
                    },
                    "maxResults": {
                        "title": "Max Total Results",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum total results after aggregation",
                        "default": 50
                    },
                    "timeout": {
                        "title": "Timeout Per Engine (seconds)",
                        "minimum": 10,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Timeout per engine request in seconds",
                        "default": 30
                    },
                    "facecheckApiKey": {
                        "title": "FaceCheck.ID API Key",
                        "type": "string",
                        "description": "FaceCheck.ID API key"
                    },
                    "googleApiKey": {
                        "title": "Google API Key",
                        "type": "string",
                        "description": "Google API key for Programmable Search or Vision"
                    },
                    "googleCx": {
                        "title": "Google Custom Search Engine ID",
                        "type": "string",
                        "description": "Programmable Search Engine (CSE) ID"
                    },
                    "bingApiKey": {
                        "title": "Bing Image Search API Key",
                        "type": "string",
                        "description": "Bing Image Search API key"
                    },
                    "twitterBearerToken": {
                        "title": "Twitter / X Bearer Token",
                        "type": "string",
                        "description": "OAuth2 Bearer token for Twitter API v2"
                    },
                    "instagramAccessToken": {
                        "title": "Instagram Access Token",
                        "type": "string",
                        "description": "Instagram access token (if available)"
                    },
                    "linkedinAccessToken": {
                        "title": "LinkedIn Access Token",
                        "type": "string",
                        "description": "LinkedIn access token (if available)"
                    },
                    "enableSocialFootprint": {
                        "title": "Enable Social Footprint Analysis",
                        "type": "boolean",
                        "description": "Search for social media profiles based on names found in results",
                        "default": true
                    },
                    "socialPlatforms": {
                        "title": "Social Platforms",
                        "type": "array",
                        "description": "Social media platforms to check",
                        "items": {
                            "type": "string",
                            "enum": [
                                "instagram",
                                "linkedin",
                                "twitter"
                            ]
                        },
                        "default": [
                            "instagram",
                            "linkedin",
                            "twitter"
                        ]
                    },
                    "minSocialSimilarity": {
                        "title": "Min Social Profile Similarity",
                        "minimum": 0,
                        "maximum": 1,
                        "type": "number",
                        "description": "Minimum face similarity for social profile matches",
                        "default": 0.8
                    },
                    "sortBy": {
                        "title": "Sort Results By",
                        "enum": [
                            "similarity",
                            "confidence",
                            "engine"
                        ],
                        "type": "string",
                        "description": "How to sort final results",
                        "default": "similarity"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for search engines. Provide either Apify proxy settings or custom proxy URLs as JSON. Residential proxies recommended for best results. Example:\n{\n  \"useApifyProxy\": true,\n  \"apifyProxyGroups\": [\"RESIDENTIAL\"]\n}\nor\n{\n  \"proxyUrls\": [\"http://user:pass@host:port\"]\n}",
                        "additionalProperties": true
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
