# Linktree Scraper — Creator Socials, Links & Contacts (`haketa/linktree-scraper`) Actor

Linktree scraper: pull any creator's bio, social profiles (Instagram, TikTok, YouTube, X...), links, products and contact emails from their link-in-bio page. Bulk input, optional email enrichment. Built for influencer outreach and lead generation. Export JSON, CSV, Excel.

- **URL**: https://apify.com/haketa/linktree-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Linktree Scraper 🔗

Turn any **Linktree** (or other link-in-bio) profile into structured data. Paste usernames or profile URLs and get, for each creator: **bio, every social profile (Instagram, TikTok, YouTube, X, Facebook, Spotify…), all their links, products and contact emails** — in one clean JSON/CSV/Excel export.

Built for **influencer marketing, creator outreach and lead generation.** No login, no browser, no copy-pasting from hundreds of pages.

***

### 🔑 What you get

For each profile:

- 👤 **Profile** — username, page title, bio, avatar, country, account tier, verified flag, categories.
- 🌐 **Social profiles** — a de-duplicated list of the creator's *official* socials (Instagram, TikTok, YouTube, X, Facebook, Spotify, Twitch, LinkedIn, and more) with the detected **handle** for each.
- 🔗 **Links** — every link on the page (title, URL, type) — content, products, campaigns.
- 🛒 **Websites** — the creator's own website/store links, separated out.
- 📧 **Emails** — contact emails found on the page (including Cloudflare-obfuscated ones), with an optional deeper pass that follows website links.

Perfect for building **influencer shortlists, cross-platform creator maps and outreach lists** — and a natural companion to a YouTube/Instagram discovery step: find creators there, resolve *all* their platforms and contacts here.

***

### 📋 Example output

```json
{
  "platform": "linktree",
  "username": "mkbhd",
  "url": "https://linktr.ee/mkbhd",
  "title": "Waveform",
  "description": "The MKBHD Podcast",
  "country": "US",
  "tier": "pro",
  "isVerified": null,
  "profileImage": "https://...",
  "socialLinks": [
    { "platform": "YouTube",  "url": "https://youtube.com/...",  "handle": "..." },
    { "platform": "Instagram","url": "https://instagram.com/wvfrmpodcast", "handle": "wvfrmpodcast" },
    { "platform": "X",        "url": "https://x.com/WVFRM",      "handle": "WVFRM" },
    { "platform": "Spotify",  "url": "https://open.spotify.com/...", "handle": "..." }
  ],
  "socialCount": 6,
  "links": [ { "title": "Listen on Apple Podcasts", "url": "https://...", "type": "CLASSIC" } ],
  "linkCount": 9,
  "websites": ["https://shop.mkbhd.com"],
  "emails": ["podcast@mkbhd.com"],
  "scrapedAt": "2026-09-06T15:00:00.000Z"
}
```

***

### 🗂️ Fields

| Field | Description |
|---|---|
| `username`, `url` | Profile handle and URL |
| `title`, `description` | Page title and bio |
| `country`, `tier`, `isVerified`, `categories` | Account metadata |
| `profileImage` | Avatar URL |
| `socialLinks` | Official social profiles — `platform`, `url`, `handle` |
| `socialCount` | Number of distinct social profiles |
| `links`, `linkCount` | All page links (title, url, type) |
| `websites` | The creator's own website/store links |
| `emails` | Contact emails found (Cloudflare-decoded; real, filtered) |

***

### 🚀 How to use

1. Click **Try for free**.
2. Add **Profiles** — usernames (`selenagomez`) or full URLs (`https://linktr.ee/selenagomez`), one per line.
3. (Optional) Turn on **Extract Emails from Website Links** to follow each profile's website links and pull emails.
4. Run, then export as JSON, CSV, Excel, or pull via API.

#### Example input

```json
{
  "profiles": ["mkbhd", "garyvee", "https://linktr.ee/selenagomez"],
  "enrichEmails": true,
  "maxItems": 0
}
```

**Tip:** pair this with a discovery step — collect creator handles from YouTube/Instagram/TikTok, then feed them here to resolve every platform and contact in one run.

***

### 💡 Popular use cases

#### 🎯 Influencer marketing & outreach

Resolve a creator's *entire* presence from a single link-in-bio: every platform, their handles, their website and their contact email. Build outreach lists without hopping between apps.

#### 📇 Lead generation

Small businesses and solo founders put their contact links on Linktree. Extract websites and emails at scale for your CRM or cold-outreach pipeline.

#### 🕸️ Cross-platform creator mapping

Given a list of handles, map each creator across Instagram, TikTok, YouTube, X, Twitch and more — great for talent agencies and creator databases.

#### 📊 Market & audience research

Analyse what links, products and platforms creators in a niche promote — affiliate stores, merch, podcasts, newsletters.

#### 🤖 Data & AI products

Clean, structured link-in-bio data for enrichment pipelines, matching engines and AI agents — no HTML parsing required.

***

### 🎛️ Options

- **Profiles** — usernames or full profile URLs. Other link-in-bio URLs (about.me, bio.link) are accepted on a best-effort basis.
- **Extract Emails from Website Links** — follows each profile's website links and extracts emails (decodes Cloudflare-obfuscated ones). Slower but richer; leave off for the fast social + links data.
- **Max Items** — cap the number of profiles (0 = unlimited).

***

### ❓ FAQ

**Do I need an account or API key?**
No. Just add profiles and run.

**Can it discover creators by keyword?**
This Actor resolves profiles you provide (username/URL list). Pair it with a discovery Actor (e.g. a YouTube/Instagram scraper) to build the handle list first, then enrich here.

**Does every profile have an email?**
No — many creators use link-in-bio without exposing an email. When one is present (on the page or on a linked website with email enrichment on), it's extracted and cleaned of placeholders.

**Are content links counted as social profiles?**
No. `socialLinks` contains only the creator's official social profiles; content and product links live in `links`.

**What formats can I export?**
JSON, CSV, Excel, HTML table, RSS and via the Apify API. Connect to Make, Zapier, Google Sheets, webhooks or an MCP server.

***

### 🔌 Integrations

- Export to **JSON, CSV, Excel, HTML, RSS**.
- Pull data via the **Apify API** or client libraries.
- Connect to **Make, Zapier, Google Sheets, Slack, webhooks** and more.
- Use it from an **MCP server** in your AI agent / LLM workflow.

***

### ⚖️ Legal & responsible use

This scraper collects **publicly available** profile information only — the same data any visitor sees on a public link-in-bio page without logging in.

You are responsible for how you use the collected data. Please:

- Respect Linktree's Terms of Service and applicable laws (including GDPR/CCPA).
- Use personal data (names, emails) lawfully and only for legitimate purposes; honour opt-outs.
- Scrape responsibly and avoid excessive request rates.

This tool is provided for lawful purposes such as marketing research, creator outreach and business intelligence. It is not affiliated with, endorsed by, or connected to Linktree.

# Actor input Schema

## `profiles` (type: `array`):

Linktree usernames or full profile URLs, one per line. Examples: 'selenagomez', 'https://linktr.ee/selenagomez'. Other link-in-bio URLs (about.me, bio.link) are also accepted on a best-effort basis.

## `enrichEmails` (type: `boolean`):

For each profile, follow its website/custom links and extract any email addresses found (decodes Cloudflare-obfuscated emails too). Adds requests, so it's slower — leave off for the fast social + links data.

## `maxItems` (type: `integer`):

Maximum number of profiles to scrape. 0 = unlimited.

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

Apify Proxy (Datacenter) is enabled by default and works out of the box. Residential is not recommended (unnecessary per-GB cost).

## Actor input object example

```json
{
  "profiles": [
    "selenagomez"
  ],
  "enrichEmails": false,
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Open to view, filter and export all scraped profiles from this run (JSON, CSV, Excel).

# 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 = {
    "profiles": [
        "selenagomez"
    ],
    "enrichEmails": false,
    "maxItems": 0,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/linktree-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 = {
    "profiles": ["selenagomez"],
    "enrichEmails": False,
    "maxItems": 0,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/linktree-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 '{
  "profiles": [
    "selenagomez"
  ],
  "enrichEmails": false,
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/linktree-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/linktree-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/4jT2Y6ocqgJpR34KL/builds/Vhh9SGPR2juNhjgau/openapi.json
