# B2B Social Profiles, Posts & Leads Scraper (`kleioks/b2b-social-leads-scraper`) Actor

Extract targeted B2B profiles, handles, bios, recent posts, emails, and founder/executive buying signals across social platforms and profile URLs.

- **URL**: https://apify.com/kleioks/b2b-social-leads-scraper.md
- **Developed by:** [Akkouch Sofiane](https://apify.com/kleioks) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.20 / 1,000 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

<div align="center">

## B2B Social Leads & Executive Signal Extractor

**High-throughput profile, bio, and activity intelligence across Bluesky, GitHub, Hacker News, and corporate domains.**

[![Apify Actor](https://img.shields.io/badge/Apify-Verified_Architecture-00C853?style=flat-square)](https://apify.com)
[![Runtime](https://img.shields.io/badge/Runtime-Python_3.12_%7C_HTTP/2-2563EB?style=flat-square)](https://www.python.org/)
[![Memory Footprint](https://img.shields.io/badge/Memory-256_MB_Default-0F172A?style=flat-square)](https://docs.apify.com)
[![Output Format](https://img.shields.io/badge/Output-JSON_%7C_CSV_%7C_Parquet-475569?style=flat-square)](https://docs.apify.com)

</div>

***

### Overview

Most B2B outbound campaigns fail because they rely on stale static databases where every prospect receives the exact same template. **B2B Social Leads & Executive Signal Extractor** solves this by querying live public social graphs and technical communities in real time, returning both **verified decision-maker profiles** and their **most recent public post or technical contribution** to power contextual outreach.

Instead of spinning up heavy headless browsers that burn compute units and fail on login walls, this Actor communicates directly with public JSON endpoints (`ATProtocol / Bluesky`, `GitHub REST v3`, `Algolia HN Search`) and parses OpenGraph/HTML metadata on direct landing pages.

#### Core Capabilities

| Capability | Technical Implementation | B2B Value |
| :--- | :--- | :--- |
| **Multi-Network Persona Search** | Concurrent async queries across Bluesky, GitHub, and Hacker News | Locate technical founders, CTOs, indie hackers, and GTM operators by niche |
| **Contextual Icebreaker Capture** | Pulls the prospect's latest non-reply post or `Show HN` launch (`postContent`) | Feed directly into Clay, Make, or n8n LLM steps for 1-to-1 cold email hooks |
| **Executive Role Classification** | Deterministic regex & taxonomy tagging on biographies and headlines | Filter instantly by `Founder / Co-Founder`, `C-Level Executive`, `VP / Director`, or `AI / ML Builder` |
| **Contact & Domain Resolution** | Extracts public emails, personal blogs, company domains, and X/LinkedIn URLs | Enrich CRM records without paying secondary waterfall credits |

***

### Input Parameters

Configure the run via the Apify Console visual form or pass a JSON payload through the API:

| Field | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `searchQueries` | `string[]` | `["SaaS founder", "AI startup"]` | Target personas, industries, job titles, or product categories. |
| `targetUrls` | `string[]` | `[]` | Optional list of direct profile URLs or company pages to enrich. |
| `platforms` | `string[]` | `["bluesky", "github", "hackernews"]` | Networks to query for each search term. |
| `includeLatestPost` | `boolean` | `true` | When enabled, fetches the prospect's latest public post or thread text. |
| `maxResults` | `integer` | `50` | Maximum number of deduplicated leads returned across the run (`1`–`5000`). |

#### Example Input (`INPUT.json`)

```json
{
  "searchQueries": [
    "SaaS founder",
    "DevTools CEO",
    "RevOps consultant"
  ],
  "targetUrls": [
    "https://feedbask.com"
  ],
  "platforms": [
    "bluesky",
    "github",
    "hackernews"
  ],
  "includeLatestPost": true,
  "maxResults": 100
}
```

***

### Output Dataset Schema

Every item pushed to the default Apify Dataset is validated against a strict Pydantic model before storage.

| Property | Type | Description |
| :--- | :--- | :--- |
| `profileName` | `string` | Full display name or title of the lead. |
| `handle` | `string` | Normalized social handle (e.g., `@pauline-cx.bsky.social`, `@torvalds`). |
| `platform` | `string` | Source network (`bluesky`, `github`, `hackernews`, or `web`). |
| `bio` | `string \| null` | Full biography, headline, or "about" section. |
| `postContent` | `string \| null` | Most recent public post, launch announcement, or activity summary. |
| `url` | `string` | Canonical URL to the profile or discussion thread. |
| `company` | `string \| null` | Organization or company affiliation when disclosed. |
| `location` | `string \| null` | Geographic location reported on the profile. |
| `websiteUrl` | `string \| null` | Primary external company or personal website URL. |
| `followersCount` | `integer \| null` | Follower count (Bluesky/GitHub) or Karma score (Hacker News). |
| `emails` | `string[]` | Verified public email addresses extracted from bio or page content. |
| `socialLinks` | `string[]` | All external domains and social links tied to the profile. |
| `leadRoleSignals` | `string[]` | Standardized executive tags (`Founder / Co-Founder`, `C-Level Executive`, `SaaS / B2B Operator`, etc.). |
| `matchedQuery` | `string \| null` | The exact search query or URL that produced this record. |
| `extractedAt` | `string` | ISO 8601 UTC timestamp of extraction. |

#### Sample Record

```json
{
  "profileName": "Pauline_cx | SaaS founder",
  "handle": "@pauline-cx.bsky.social",
  "bio": "Indie hacker 100k€+ ARR https://feedbask.com , https://iacrea.com, I post about my SaaS journey and share tips to grow a SaaS.",
  "postContent": "What's the correct algo to calculate Stripe MRR from a Stripe API key? I struggle to get the same result from API Key than the MRR I see in the app.",
  "url": "https://bsky.app/profile/pauline-cx.bsky.social",
  "platform": "bluesky",
  "company": null,
  "location": null,
  "websiteUrl": "https://feedbask.com",
  "followersCount": 913,
  "emails": [],
  "socialLinks": [
    "https://feedbask.com",
    "https://iacrea.com",
    "https://paulinecx.beehiiv.com/"
  ],
  "leadRoleSignals": [
    "Founder / Co-Founder",
    "SaaS / B2B Operator"
  ],
  "matchedQuery": "SaaS founder",
  "extractedAt": "2026-10-31T22:38:18.286407+00:00"
}
```

***

### Integration Patterns

#### 1. Clay.com / Make / n8n Outbound Workflow

1. **Trigger**: Schedule this Actor daily or trigger via webhook from Clay/n8n with your target ICP keywords.
2. **Filter**: Keep records where `leadRoleSignals` contains `Founder / Co-Founder` or `C-Level Executive` and `websiteUrl` is not null.
3. **Personalize**: Pass `bio` and `postContent` to your LLM prompt to reference the prospect's exact recent post in the first line of your email.

#### 2. Python SDK Execution

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("kleioks/b2b-social-leads-scraper").call(
    run_input={
        "searchQueries": ["SaaS founder", "AI infrastructure"],
        "platforms": ["bluesky", "github"],
        "includeLatestPost": True,
        "maxResults": 50,
    }
)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['profileName']} ({item['handle']}) -> {item['websiteUrl']}")
```

***

### Performance & Resource Profile

- **Architecture**: Pure asynchronous HTTP/2 (`httpx`) + `Pydantic v2` validation. Zero headless browser overhead.
- **Recommended Memory**: `256 MB` (processes ~50–100 enriched profiles in under 5 seconds).
- **Deduplication**: Built-in cross-query deduplication by `platform + handle`.

***

### No-Code, Clay, n8n & AI Agent (MCP) Integrations

#### 1. Clay.com Founder & Developer Lead Enrichment

1. Trigger `kleioks/b2b-social-leads-scraper` from **Clay** with target bio queries (`"SaaS founder"`, `"CTO"`, `"building in public"`, `"DevTools"`).
2. Feed the extracted `extractedEmail`, `websiteUrl`, `company`, and `postContent` columns directly into your Clay waterfall or AI email writer to reference the prospect's latest open-source commit or social post.

#### 2. n8n & Make.com Automated Community Lead Gen

Connect the **Apify Node** in **n8n** or **Make.com** to poll **Hacker News (`Ask HN` / `Show HN`)**, **Bluesky**, and **GitHub** daily. Filter records where `extractedEmail != null` or `intentSignals` is non-empty, and push qualified leads straight into **HubSpot**, **Pipedrive**, or **Attio**.

#### 3. Model Context Protocol (MCP) for Claude, Cursor & AI Agents

Equip **Claude Desktop**, **Cursor**, or custom AI sales agents with live social lead discovery via the official Apify MCP server:

```json
{
  "mcpServers": {
    "apify-social-leads": {
      "command": "npx",
      "args": [
        "-y",
        "@apify/actors-mcp-server",
        "--actors",
        "kleioks/b2b-social-leads-scraper"
      ],
      "env": {
        "APIFY_TOKEN": "YOUR_APIFY_API_TOKEN"
      }
    }
  }
}
```

***

### Frequently Asked Questions (FAQ)

#### How can I scrape B2B founder and developer leads without LinkedIn rate limits?

Tech founders, CTOs, and indie hackers are increasingly active on **Bluesky**, **GitHub**, and **Hacker News**, where their biographies, personal domains (`websiteUrl`), company affiliations, and public contact emails are accessible via open JSON APIs without account logins or cookie rotation.

#### Does this scraper extract emails from custom domains and landing pages?

Yes. In addition to scanning social profiles on Bluesky, GitHub, and Hacker News, passing any company or profile URLs in `targetUrls` triggers an asynchronous HTML + OpenGraph + `mailto:` parser that extracts public business emails and social handles.

#### What is the compute cost per 1,000 leads?

Because all requests use lightweight asynchronous HTTP/2 (`httpx`) inside a `128 MB`–`256 MB` container, extracting 1,000 profiles consumes less than **$0.03 in Apify Compute Units**.

***

### Complete B2B Intelligence Suite by Kleioks

Combine this Actor with our specialized B2B data engines on the Apify Store to build end-to-end GTM, RevOps, and market research pipelines:

| Actor | Primary B2B Use Case | Store Link |
| :--- | :--- | :--- |
| **B2B Social Leads & Intent Extractor** | Discover SaaS founders, developers & decision-makers across Bluesky, GitHub & Hacker News | [Open on Apify Store](https://apify.com/kleioks/b2b-social-leads-scraper) |
| **Google Maps B2B Lead Machine** | High-speed local business lead extractor (phone, website, rating & missing-website signals) | [Open on Apify Store](https://apify.com/kleioks/google-maps-b2b-lead-machine) |
| **Multi-ATS Career Jobs API** | Track real-time hiring intent & tech-stack signals across Greenhouse, Lever, Ashby & Workable | [Open on Apify Store](https://apify.com/kleioks/multi-ats-jobs-scraper) |
| **Reddit B2B Buying Intent Scraper** | Monitor competitor churn, software recommendations & high-intent buyer threads on Reddit | [Open on Apify Store](https://apify.com/kleioks/reddit-b2b-scraper) |
| **Influencer & Creator Discovery API** | Extract TikTok, Instagram & YouTube creator profiles, engagement rates & verified PR emails | [Open on Apify Store](https://apify.com/kleioks/influencer-creator-discovery) |
| **Real Estate Market Intelligence API** | Normalized property listings, automated price/m² valuation, DPE ratings & agency contacts | [Open on Apify Store](https://apify.com/kleioks/real-estate-market-scraper) |

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords, job titles, niches, or topics to target (e.g. 'SaaS founder', 'AI agency', 'B2B growth', 'DevTools CEO').

## `targetUrls` (type: `array`):

Direct social profile URLs (e.g. Bluesky, GitHub) or B2B landing pages to extract profile bio, handle, posts, and contact details.

## `platforms` (type: `array`):

Social and founder platforms to query for each search term.

## `includeLatestPost` (type: `boolean`):

Fetch the most recent post or discussion content for each discovered profile to personalize B2B cold outreach (icebreakers).

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

Maximum total number of B2B social leads to return across the run.

## Actor input object example

```json
{
  "searchQueries": [
    "SaaS founder",
    "AI startup"
  ],
  "targetUrls": [],
  "platforms": [
    "bluesky",
    "github",
    "hackernews"
  ],
  "includeLatestPost": true,
  "maxResults": 50
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing structured social profiles, handles, bios, recent posts, and contact links.

# 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 = {
    "searchQueries": [
        "SaaS founder",
        "AI startup"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kleioks/b2b-social-leads-scraper").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 = { "searchQueries": [
        "SaaS founder",
        "AI startup",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("kleioks/b2b-social-leads-scraper").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 '{
  "searchQueries": [
    "SaaS founder",
    "AI startup"
  ]
}' |
apify call kleioks/b2b-social-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kleioks/b2b-social-leads-scraper"
        }
    }
}
```

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/Pbj76JnFqlD1y9PTj/builds/GdbbJtYgkkNTYCl8a/openapi.json
