# AllMyLinks Profile Scraper — Links, Socials & Emails (`ahmed_jasarevic/allmylinks-profile-scraper`) Actor

Extract complete AllMyLinks (allmylinks.com) profiles: display name, avatar, bio, location, all link buttons (title + URL), classified social profiles, emails (from mailto: and text) and custom domains. Built for influencer outreach, lead gen and brand partnership teams.

- **URL**: https://apify.com/ahmed\_jasarevic/allmylinks-profile-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:** E-commerce, Lead generation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 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/platform/actors/running/actors-in-store#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

## AllMyLinks Profile Scraper — Bio, Links, Socials & Emails

Extract complete public profiles from [AllMyLinks](https://allmylinks.com/) (allmylinks.com), the popular link-in-bio platform. For any username or profile URL, this Actor returns the **profile name, avatar, bio, location, every link button (title + URL), classified social profiles, email addresses (from mailto: links and page text) and custom domains**.

Built with Crawlee's **CheerioCrawler** (plain HTTP + HTML parsing — no browser), so it is fast and cheap on Apify compute units. It routes every request through the **Apify proxy** (residential group by default) because AllMyLinks sits behind Cloudflare and blocks datacenter IPs.

### Why use this Actor?

- **Influencer & creator outreach** — build lead lists of creators with their socials and contact emails in one pass.
- **Brand partnerships & sponsorship teams** — quickly see every link a creator promotes (stores, Ko-fi, OnlyFans, YouTube, etc.) and their custom domains.
- **Lead generation** — extract emails and social handles at scale for agencies and PR teams.
- **Streamer sponsorship brokers** — evaluate creators' link ecosystems before outreach.

### How to use

1. Open the Actor in Apify Console and click **Start**.
2. In the **Input** tab, enter one or more AllMyLinks usernames (e.g. `lauranne`) or full profile URLs (e.g. `https://allmylinks.com/lauranne`).
3. Optionally adjust **Max profiles** and toggle **Include profile views**.
4. Run it. Results appear in the **Dataset** tab and can be downloaded as JSON, CSV, HTML or Excel.

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `usernames` | array | — | AllMyLinks usernames or full profile URLs (required) |
| `useApifyProxy` | boolean | `true` | Route through Apify proxy (keep ON — site blocks datacenter IPs) |
| `proxyGroup` | string | `BUYPROXIES94952` | Apify proxy group (residential recommended) |
| `maxProfiles` | integer | `100` | Max profiles per run |
| `includeProfileStats` | boolean | `false` | Fetch the profile views counter (extra request per profile) |

### Output

Each dataset item is one profile:

```json
{
  "username": "lauranne",
  "profileUrl": "https://allmylinks.com/lauranne",
  "displayName": "Laura Solá",
  "avatarUrl": "https://cdn.allmylinks.com/prod/User/photo/...",
  "bio": "",
  "location": "Zaragoza, España",
  "birthday": "November 17",
  "content": "",
  "lastOnline": null,
  "qrCodeUrl": "https://allmylinks.com/profile/qr?id=817875",
  "profileViews": null,
  "links": [
    { "title": "Artstation", "url": "https://www.artstation.com/lauranne", "urlText": "artstation.com/lauranne", "connectedStatus": "", "domain": "artstation.com" }
  ],
  "socialProfiles": [
    { "platform": "Instagram", "url": "https://instagram.com/lauranne_art" }
  ],
  "emails": [],
  "customDomains": ["cara.app", "laurannearts.storenvy.com"]
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Data table

| Field | Description |
|-------|-------------|
| `username` | AllMyLinks handle |
| `displayName` | Profile display name |
| `avatarUrl` | Profile avatar image URL |
| `bio` | Profile bio text |
| `location` | Profile location |
| `birthday` | Profile birthday (if set) |
| `content` | About-section content |
| `lastOnline` | Last online timestamp (ISO) |
| `qrCodeUrl` | Profile QR code URL |
| `profileViews` | Profile view counter (if enabled) |
| `links` | All link buttons: title, URL, visible URL text, connected status, domain |
| `socialProfiles` | Classified social/creator platforms with URLs |
| `emails` | Emails found in mailto: links and page text |
| `customDomains` | Non-social link domains (custom sites, stores) |

### Pricing / Cost estimation

This is a **CheerioCrawler** actor — one HTTP request per profile (plus one more per profile only if `includeProfileStats` is on). It is very cheap: scraping a few hundred profiles typically costs a fraction of a compute unit. Free users get a capped preview (10 profiles); paying users can scrape unlimited profiles. Proxy usage is included in your Apify plan.

### Tips & advanced options

- **Keep the proxy ON.** AllMyLinks is Cloudflare-protected and blocks datacenter IPs; the residential proxy group (`BUYPROXIES94952`) is the reliable default.
- **Scale safely** — set `maxProfiles` to a sane cap for your budget. Concurrency is capped at 5 and retries at 3 to avoid hammering the site.
- **Emails** — many creators hide their email behind a contact form or only show it as link text; this Actor scans both `mailto:` links and all visible link text, so it catches most public emails.

### FAQ, disclaimers & support

- **Is this legal?** Scraping public profile data is generally acceptable, but always respect AllMyLinks' Terms of Service, robots.txt and applicable laws (e.g. GDPR for personal data). Use responsibly.
- **Known limitations** — some profiles gate links behind an "18+" age prompt; those links are not extracted. Email is only extracted when publicly visible.
- **Feedback** — open an issue on the Actor's Issues tab, or contact us for a custom solution.

# Actor input Schema

## `usernames` (type: `array`):

AllMyLinks usernames (e.g. "lauranne") or full profile URLs (e.g. "https://allmylinks.com/lauranne").

## `proxy` (type: `object`):

Apify Proxy with Residential IPs is recommended to avoid blocking.

## `maxProfiles` (type: `integer`):

Maximum number of profiles to scrape in one run.

## `includeProfileStats` (type: `boolean`):

Fetch the profile views counter (adds one extra request per profile).

## Actor input object example

```json
{
  "usernames": [
    "lauranne",
    "jamespriviere"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxProfiles": 100,
  "includeProfileStats": false
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "usernames": [
        "lauranne",
        "jamespriviere"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/allmylinks-profile-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 = {
    "usernames": [
        "lauranne",
        "jamespriviere",
    ],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/allmylinks-profile-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 '{
  "usernames": [
    "lauranne",
    "jamespriviere"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call ahmed_jasarevic/allmylinks-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/allmylinks-profile-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/8RFvAxvgjr83FFCIn/builds/AszSeDVtmjRgLnXr4/openapi.json
