# Lnk.Bio Profile Scraper (`datascraperes/lnk-bio-profile-scraper`) Actor

Scrape public Lnk.Bio profiles and export complete profile data: names, bios, grouped links, social destinations, public emails, images, media, video URLs, and SEO metadata. Pay $1 per 1,000 successful profiles.

- **URL**: https://apify.com/datascraperes/lnk-bio-profile-scraper.md
- **Developed by:** [DataScraperES](https://apify.com/datascraperes) (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

$1.00 / 1,000 profiles

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

## Lnk.Bio Profile Scraper

[Open the Actor on Apify](https://apify.com/datascraperes/lnk-bio-profile-scraper)

Extract complete public Lnk.Bio profiles into a structured dataset. Enter
Lnk.Bio usernames or profile URLs and receive one profile record containing the
public identity, biography, grouped links, social destinations, images, media,
SEO metadata, public emails, and detected video URLs.

Each successfully obtained profile is returned as one complete Dataset record,
so the profile information and all of its links stay together when exported.

### What this Lnk.Bio scraper collects

- One or many public Lnk.Bio profiles in a single run.
- Usernames, `@usernames`, or full `https://lnk.bio/<username>` URLs.
- Display name, username, profile ID, and profile URL.
- Public biography text and separate biography paragraphs.
- Profile image, background image, and available public media.
- Group or section titles and the links contained in each section.
- Link titles, destinations, types, IDs, images, and display positions.
- Social, music, messaging, and contact destinations exposed as profile icons.
- Unique public email addresses when the profile visibly publishes them.
- Public video URLs and detected video media references.
- Page title, description, canonical URL, Open Graph, Twitter, and theme metadata.
- Theme colors, gradients, and other public presentation information when available.

### Pricing

The Actor costs **$1 per 1,000 successfully obtained profiles**, equivalent to
**$0.001 per profile**.

You are charged once for each successfully obtained profile record. The number
of links, social destinations, emails, images, media items, groups, or videos
inside that profile does not create additional charges.

Invalid, duplicated, unavailable, blocked, or not-found references are not
charged as successful profiles. Apify may show its normal platform resource
costs separately according to your account and run settings.

### Input

The only input is `profiles`.

| Field | Required | Default | Description |
| --- | --- | --- | --- |
| `profiles` | Yes | `lnk.bio` | Lnk.Bio usernames or full profile URLs. Up to 500 entries per run. |

Accepted values include:

```text
lnk.bio
@creatorcollage
https://lnk.bio/creatorprogram
https://www.lnk.bio/lnk.bio
```

Duplicate usernames and URLs are removed automatically. References to other
websites are rejected so that the Actor only processes Lnk.Bio profiles.

### Output

The Dataset contains one JSON record for every successfully obtained public
profile. Failed references are summarized in the run statistics without being
charged as successful profiles.

### Example output from a real public profile

The following abbreviated record was collected from the public profile
`https://lnk.bio/lnk.bio`. Values such as links, SEO metadata, images, emails,
and videos reflect what the profile published at collection time and can change.

```json
{
  "recordType": "profile",
  "ok": true,
  "status": "ok",
  "profileUrl": "https://lnk.bio/lnk.bio",
  "finalUrl": "https://lnk.bio/lnk.bio",
  "slug": "lnk.bio",
  "username": "lnkbio",
  "displayName": "@lnkbio",
  "pageTitle": "@lnkbio Lnk.Bio · link in bio",
  "bio": "Custom Url & Multiple links for your IG bio",
  "avatarUrl": "https://s3.us-west-2.amazonaws.com/cdn.lnk.bio/profilepics/5414270435_20210412497.png",
  "profileSocialUrl": "https://www.instagram.com/lnkbio",
  "links": [
    {
      "title": "Lnk.Bio-ception",
      "url": "https://lnk.bio",
      "kind": "link",
      "position": 0,
      "group": "My Favorite Lnks",
      "linkId": "2501",
      "linkType": "TYPE_BIOLINK"
    },
    {
      "title": "Daily Influencer Marketing News",
      "url": "https://popularchips.com/dailies/",
      "kind": "link",
      "position": 1,
      "group": "My Favorite Lnks",
      "linkId": "2503",
      "linkType": "TYPE_BIOLINK"
    },
    {
      "title": "Influencer Marketing Analytics",
      "url": "https://popularchips.com",
      "kind": "link",
      "position": 2,
      "group": "My Favorite Lnks",
      "linkId": "2502",
      "linkType": "TYPE_BIOLINK"
    }
  ],
  "groupSections": [
    {
      "title": "My Favorite Lnks",
      "position": 0,
      "linkIds": ["2501", "2503", "2502"],
      "linkCount": 3
    }
  ],
  "socialLinks": [],
  "emails": [],
  "emailsCount": 0,
  "videoCount": 0,
  "videoLinks": [],
  "linksCount": 3,
  "socialLinksCount": 0,
  "seo": {
    "title": "@lnkbio Lnk.Bio · link in bio",
    "canonicalUrl": "https://lnk.bio/lnk.bio",
    "ogType": "website",
    "themeColor": "#FFFFFF"
  },
  "warnings": []
}
```

#### Main profile fields

| Field | Description |
| --- | --- |
| `profileUrl` | Normalized public Lnk.Bio profile URL. |
| `finalUrl` | URL reached after normal redirects. |
| `username` | Public username shown by the profile. |
| `displayName` | Public profile name, when available. |
| `profileId` | Public profile identifier when exposed in the page. |
| `bio` | Public biography or description. |
| `bioParagraphs` | Biography split into readable paragraphs. |
| `avatarUrl` | Public profile image URL. |
| `backgroundImageUrl` | Public background image URL when available. |
| `profileSocialUrl` | Public destination associated with the profile identity, when available. |

#### Links, groups, social destinations, and media

| Field | Description |
| --- | --- |
| `links` | Profile links with title, URL, type, ID, group, image, and position. |
| `groupSections` | Public group or section names and their link IDs. |
| `socialLinks` | Public social, music, messaging, and contact icon destinations. |
| `media` | Public image, video, source, and iframe references present in the profile. |
| `videoLinks` | Detected public video records with URL, title, type, and position. |
| `linksCount` | Number of unique profile links. |
| `socialLinksCount` | Number of unique social destinations. |
| `videoCount` | Number of unique detected video URLs. |

#### Contact and SEO fields

| Field | Description |
| --- | --- |
| `emails` | Unique email addresses visibly published on the public profile. |
| `emailsCount` | Number of extracted public emails. |
| `seo` | Page title, description, canonical URL, theme color, Open Graph, and Twitter metadata. |
| `theme` | Public theme colors, gradients, and available presentation classes. |
| `status` | `ok` for a successfully collected profile, or a reason for a skipped profile. |
| `warnings` | Non-fatal collection observations. |
| `capturedAt` | UTC timestamp for the collected record. |

Emails are collected only when they are publicly visible in the profile
content or public link destinations. Private account information, login-only
data, analytics, passwords, and form submissions are not collected.

Video fields contain public URLs and references; the Actor does not download,
store, or host video files.

### Limitations

- Only public Lnk.Bio profile pages are supported.
- Password-protected links and private content cannot be opened.
- A profile may not publish a biography, email, image, or social destination.
- Custom domains are not treated as Lnk.Bio profile URLs unless the supplied
  input is the corresponding `lnk.bio` profile URL.
- Data reflects what the public page exposes at collection time.

Use the Actor only for public profiles and information you are allowed to
collect. Respect applicable laws, privacy expectations, and Lnk.Bio rules.

# Actor input Schema

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

Enter Lnk.Bio usernames, @usernames, or full https://lnk.bio/<username> profile URLs. Duplicate entries are removed.

## Actor input object example

```json
{
  "profiles": [
    "lnk.bio"
  ]
}
```

# Actor output Schema

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

Dataset containing one complete record per successfully obtained public Lnk.Bio profile.

## `runStats` (type: `string`):

Run summary and non-billable outcomes stored in the RUN\_STATS key-value record.

# 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": [
        "lnk.bio"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("datascraperes/lnk-bio-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 = { "profiles": ["lnk.bio"] }

# Run the Actor and wait for it to finish
run = client.actor("datascraperes/lnk-bio-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 '{
  "profiles": [
    "lnk.bio"
  ]
}' |
apify call datascraperes/lnk-bio-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datascraperes/lnk-bio-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/V6MN4wRsqrTqRgV6w/builds/Swipdu4il0nnoS2R0/openapi.json
