# BoostHunterAI (`ivotints/boosthunterai`) Actor

Analyzes a person's GitHub, Twitter, and LinkedIn accounts, and AI provides a complete analysis and overview of that person, what they write, what they develop, and what they discuss on LinkedIn and Twitter.

- **URL**: https://apify.com/ivotints/boosthunterai.md
- **Developed by:** [Igor Votintsev](https://apify.com/ivotints) (community)
- **Categories:** Agents, AI, Other
- **Stats:** 3 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

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

## Ghost Hunter AI

An Apify Actor that scrapes developer profiles from GitHub, Twitter/X, and LinkedIn, then uses Grok AI to analyze and compare candidates.

### Features

- **Multi-candidate support** - Analyze and compare multiple developers at once
- **GitHub scraping** - Fetches up to 20 repositories with README contents via GitHub API
- **Twitter/X scraping** - Collects recent tweets using Apify's Twitter scraper
- **LinkedIn scraping** - Extracts comprehensive profile data including skills, experience, education
- **Grok AI analysis** - Send all scraped data to Grok AI with your custom prompt

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `candidates` | Array | Yes | List of candidates to analyze |
| `grokApiKey` | String | Yes | Your Grok API key from [x.ai](https://x.ai) |
| `grokPrompt` | String | Yes | Prompt for Grok AI to analyze the candidates |

#### Candidates Format

```json
[
    {
        "name": "John Smith",
        "githubUserUrl": "https://github.com/johnsmith",
        "twitterHandle": "@johnsmith",
        "linkedinUrl": "https://linkedin.com/in/johnsmith"
    },
    {
        "name": "Jane Doe",
        "githubUserUrl": "https://github.com/janedoe",
        "twitterHandle": "janedoe",
        "linkedinUrl": ""
    }
]
````

All profile fields are optional per candidate - leave empty (`""`) if not available.

### Example Input

```json
{
    "candidates": [
        {
            "name": "Candidate 1",
            "githubUserUrl": "https://github.com/user1",
            "twitterHandle": "@user1",
            "linkedinUrl": "https://linkedin.com/in/user1"
        },
        {
            "name": "Candidate 2",
            "githubUserUrl": "https://github.com/user2",
            "twitterHandle": "",
            "linkedinUrl": "https://linkedin.com/in/user2"
        }
    ],
    "grokApiKey": "your-grok-api-key",
    "grokPrompt": "Compare these developer candidates for a senior full-stack position. Rank them and explain your reasoning."
}
```

### Output

The actor outputs:

```json
{
    "candidatesData": [
        {
            "name": "Candidate 1",
            "github": {
                "username": "user1",
                "profileUrl": "https://github.com/user1",
                "repositories": [...]
            },
            "twitter": {
                "handle": "user1",
                "recentTweets": [...]
            },
            "linkedin": {
                "fullName": "...",
                "headline": "...",
                "skills": [...],
                "experiences": [...],
                ...
            }
        }
    ],
    "grokAnalysis": "Grok's comparison and analysis...",
    "totalCandidates": 2,
    "scrapedAt": "2026-01-17T12:00:00.000Z"
}
```

### Example Prompts

- "Compare these candidates for a senior developer role. Who would be the best fit?"
- "Analyze these developers' open source contributions and rank them by impact"
- "Which candidate has the strongest AI/ML background based on their projects?"
- "Summarize each candidate's expertise in 2-3 sentences"

### Data Collected

#### GitHub

- Repository names, descriptions, languages
- Star counts
- README contents (full text)

#### Twitter/X

- Recent tweets (up to 10)
- Likes and retweet counts
- Tweet timestamps

#### LinkedIn

- Full name, headline, about section
- Skills and endorsements
- Work experience with durations
- Education history
- Certifications and awards
- Projects
- Connection/follower counts

### Requirements

- **Grok API Key** - Get one from [x.ai](https://x.ai)
- **Apify Account** - For running Twitter and LinkedIn scrapers

### Cost

The actor uses these Apify scrapers which consume platform credits:

- `apidojo/twitter-scraper-lite` - For Twitter data
- `dev_fusion/Linkedin-Profile-Scraper` - For LinkedIn data

GitHub data is fetched directly via the GitHub API (free).

### License

MIT

# Actor input Schema

## `candidates` (type: `array`):

List of candidates to analyze. Each candidate can have GitHub, Twitter, and LinkedIn profiles.

## `grokApiKey` (type: `string`):

Your Grok API key from x.ai

## `grokPrompt` (type: `string`):

Prompt for Grok AI to analyze and compare the candidates

## Actor input object example

```json
{
  "candidates": [
    {
      "name": "Candidate 1",
      "githubUserUrl": "https://github.com/ivotints",
      "twitterHandle": "",
      "linkedinUrl": ""
    }
  ],
  "grokPrompt": "Analyze these developer candidates and compare their skills and expertise. Rank them and explain your reasoning."
}
```

# 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 = {
    "candidates": [
        {
            "name": "Candidate 1",
            "githubUserUrl": "https://github.com/ivotints",
            "twitterHandle": "",
            "linkedinUrl": ""
        }
    ],
    "grokPrompt": "Analyze these developer candidates and compare their skills and expertise. Rank them and explain your reasoning."
};

// Run the Actor and wait for it to finish
const run = await client.actor("ivotints/boosthunterai").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 = {
    "candidates": [{
            "name": "Candidate 1",
            "githubUserUrl": "https://github.com/ivotints",
            "twitterHandle": "",
            "linkedinUrl": "",
        }],
    "grokPrompt": "Analyze these developer candidates and compare their skills and expertise. Rank them and explain your reasoning.",
}

# Run the Actor and wait for it to finish
run = client.actor("ivotints/boosthunterai").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 '{
  "candidates": [
    {
      "name": "Candidate 1",
      "githubUserUrl": "https://github.com/ivotints",
      "twitterHandle": "",
      "linkedinUrl": ""
    }
  ],
  "grokPrompt": "Analyze these developer candidates and compare their skills and expertise. Rank them and explain your reasoning."
}' |
apify call ivotints/boosthunterai --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BoostHunterAI",
        "description": "Analyzes a person's GitHub, Twitter, and LinkedIn accounts, and AI provides a complete analysis and overview of that person, what they write, what they develop, and what they discuss on LinkedIn and Twitter.",
        "version": "0.0",
        "x-build-id": "Ghta0zw3rcvoYqZzb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ivotints~boosthunterai/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ivotints-boosthunterai",
                "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/ivotints~boosthunterai/runs": {
            "post": {
                "operationId": "runs-sync-ivotints-boosthunterai",
                "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/ivotints~boosthunterai/run-sync": {
            "post": {
                "operationId": "run-sync-ivotints-boosthunterai",
                "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",
                "required": [
                    "candidates",
                    "grokApiKey",
                    "grokPrompt"
                ],
                "properties": {
                    "candidates": {
                        "title": "Candidates",
                        "type": "array",
                        "description": "List of candidates to analyze. Each candidate can have GitHub, Twitter, and LinkedIn profiles.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "name": {
                                    "title": "Name",
                                    "type": "string",
                                    "description": "Candidate name or identifier"
                                },
                                "githubUserUrl": {
                                    "title": "GitHub URL",
                                    "type": "string",
                                    "description": "GitHub user profile URL"
                                },
                                "twitterHandle": {
                                    "title": "Twitter Handle",
                                    "type": "string",
                                    "description": "Twitter/X handle or URL"
                                },
                                "linkedinUrl": {
                                    "title": "LinkedIn URL",
                                    "type": "string",
                                    "description": "LinkedIn profile URL"
                                }
                            }
                        }
                    },
                    "grokApiKey": {
                        "title": "Grok API Key",
                        "type": "string",
                        "description": "Your Grok API key from x.ai"
                    },
                    "grokPrompt": {
                        "title": "Grok Prompt",
                        "type": "string",
                        "description": "Prompt for Grok AI to analyze and compare the candidates"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
