# Beacons Profile & Links Scraper (`datascraperes/beacons-profile-scraper`) Actor

Extract public Beacons profiles in structured JSON with identities, biographies, social destinations, featured links, public emails, images, media, video URLs and SEO metadata. Useful for creator research, link-in-bio analysis and competitor monitoring.

- **URL**: https://apify.com/datascraperes/beacons-profile-scraper.md
- **Developed by:** [DataScraperES](https://apify.com/datascraperes) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 3 total users, 2 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

## Beacons Profile & Links Scraper

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

Extract publicly available Beacons profiles into a structured dataset. Enter
Beacons usernames or public `beacons.ai` profile URLs and receive one record
per successfully collected profile with identity, biography, avatar, social
destinations, featured links, public emails, media, video URLs and SEO
metadata.

Each successful profile is returned as one complete Dataset record. Public
identity, social profiles, links and metadata remain together with the
profile that published them.

### What this Actor collects

- One or many public Beacons profiles in a single run.
- Beacons usernames, `@usernames`, and `beacons.ai/username` URLs.
- Display name, username, normalized profile URL and public profile metadata.
- Public biography or description text when published.
- Profile image, Open Graph image, theme color and available media.
- Social destinations such as Instagram, TikTok, YouTube, X, Facebook,
  LinkedIn, Spotify, Twitch and other supported networks.
- Public featured links exposed by the profile page.
- Unique email addresses explicitly published on the public page.
- Public video URLs found in visible links or media elements.
- Page title, canonical URL, description, Open Graph, Twitter and other SEO
  metadata.

### Public-data limitation

Beacons may load some link-in-bio buttons from a protected application API
instead of exposing them in the public HTML or JSON-LD. The Actor returns all
profile data that Beacons exposes publicly and adds a warning when the full
button list cannot be verified from the public page. It does not use a login,
private account data, or third-party enrichment.

### 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 social destinations, emails, images, media items, featured links or videos
inside that profile does not create additional charges.

Invalid, duplicated, unavailable, blocked and 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 | `goxuzha` | Beacons usernames or public profile URLs. Up to 500 entries per run. |

Accepted values include:

```text
goxuzha
@creator
https://beacons.ai/creator
https://beacons.ai/creator?ref=public
```

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

### Output

The Dataset contains one JSON record for every successfully obtained public
profile. References that cannot be collected are also emitted as non-billable
status records so the result explains what happened. They are never charged
as successful profiles.

#### Profile information

| Field | Description |
| --- | --- |
| `profileUrl` | Normalized public Beacons URL that was collected. |
| `finalUrl` | Final URL after a normal page redirect, when available. |
| `slug` | Username segment used in the normalized profile URL. |
| `username` | Public Beacons identifier or username. |
| `displayName` | Public display name. |
| `pageTitle` | HTML page title. |
| `description` / `bio` | Public profile description or biography. |
| `bioParagraphs` | Biography text represented as paragraphs. |
| `avatarUrl` | Public profile image URL, when available. |
| `profileImage` | Image URL, alternative text and source metadata. |
| `backgroundImageUrl` | Public Open Graph image URL, when available. |
| `links` | Public featured and visible outbound links. |
| `socialLinks` | Public social destinations with platform and URL. |
| `emails` | Explicitly published public email addresses. |
| `media` | Public image, video and media records. |
| `videoLinks` | Public video URLs detected in the profile. |
| `seo` | Canonical, description, Open Graph, Twitter and theme metadata. |
| `warnings` | Public-data limitations or missing-field notices. |
| `status` | `ok` for a successfully collected profile. |
| `capturedAt` | UTC timestamp of collection. |

#### Example output

```json
{
  "recordType": "profile",
  "ok": true,
  "status": "ok",
  "profileUrl": "https://beacons.ai/goxuzha",
  "slug": "goxuzha",
  "username": "goxuzha",
  "displayName": "Creator name",
  "description": "Public creator biography",
  "avatarUrl": "https://cdn.beacons.ai/user_content/.../profile_goxuzha.png",
  "links": [
    {
      "title": "Featured link",
      "url": "https://example.com/featured",
      "kind": "link",
      "source": "json_ld"
    }
  ],
  "socialLinks": [
    {
      "platform": "INSTAGRAM",
      "title": "INSTAGRAM",
      "url": "https://www.instagram.com/goxuzha/",
      "source": "json_ld"
    }
  ],
  "emails": [],
  "linksCount": 1,
  "socialLinksCount": 1,
  "videoCount": 0,
  "warnings": ["full_button_list_not_available_from_public_html"],
  "capturedAt": "2026-08-18T12:00:00+00:00"
}
```

### Common statuses

| Status | Meaning |
| --- | --- |
| `ok` | Public profile collected successfully. |
| `invalid_input` | Reference is not a valid Beacons username or URL. |
| `not_found` | The profile returned HTTP 404. |
| `blocked` | The page returned an access challenge. |
| `forbidden` | The page returned HTTP 403. |
| `rate_limited` | The page returned HTTP 429 after the allowed retries. |
| `parser_drift` | The page was reachable but its public data structure was not recognizable. |
| `charge_limit_reached` | The run spending limit was reached before this profile was requested. |

### Notes

- Only public Beacons profile pages are supported.
- Private, deleted, password-protected or blocked profiles cannot be
  collected.
- The Actor does not collect subscriber lists, analytics, private messages,
  store customer data or account-only information.
- The Actor is not affiliated with or endorsed by Beacons.
- Use the collected data in accordance with applicable laws, privacy
  expectations and Beacons rules.

# Actor input Schema

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

Enter Beacons usernames, @usernames, or public beacons.ai profile URLs. Duplicate entries are removed automatically.

## Actor input object example

```json
{
  "profiles": [
    "goxuzha"
  ]
}
```

# Actor output Schema

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

Dataset containing successful profile records and non-billable collection status records.

## `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": [
        "goxuzha"
    ]
};

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

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

```

## MCP server setup

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