
Instagram Reel Scraper
scrape.ly/store/echofield/instagram-reel-scraperSocial mediaVideos
1 monthly user

Scrape Linktree, Beacons, Komi, link.me, bio.link and other link-in-bio pages: display name, bio, avatar, every link, social handles, emails and phones.
Turn link-in-bio pages into clean lead rows. Paste Linktree, Beacons, Komi, link.me, bio.link, Lnk.Bio, solo.to, AllMyLinks or other bio-link URLs (or plain usernames) and get the creator's display name, bio, avatar, every link with its title and type, all social handles, and the emails and phone numbers shown on the page. No login, no browser, a few seconds per batch.
| Field | Description |
|---|---|
profileUrls | Bio-link profile URLs, one per line |
usernames | Bare usernames for the platform below |
platform | Platform of the usernames (default Linktree) |
maxResults | Maximum profiles to save (0 = all) |
{
"profileUrls": [
"https://linktr.ee/garyvee",
"https://beacons.ai/defleppard",
"https://kennyg.komi.io"
],
"usernames": ["mrbeast"],
"platform": "linktree"
}
One row per profile:
| Field | Description |
|---|---|
platform, profileUrl, username | Where the profile lives |
displayName, bio, avatar, verified | Identity |
email, emails, phone, phones | Contacts shown on the page |
socialHandles, socialLinks, instagramUrl, tiktokUrl, youtubeUrl, xUrl, ... | Social accounts |
links, totalLinks, websites | Every outbound link with title, type, network and handle |
category, country, createdAt, updatedAt | Extra profile data where the platform shows it (Linktree, Komi) |
{
"inputUrl": "https://linktr.ee/janedoemusic",
"platform": "linktree",
"profileUrl": "https://linktr.ee/janedoemusic",
"username": "janedoemusic",
"displayName": "Jane Doe",
"bio": "Singer-songwriter. New EP out now.",
"avatar": "https://ugc.production.linktr.ee/avatar.jpg",
"verified": false,
"email": "booking@janedoemusic.com",
"emails": ["booking@janedoemusic.com"],
"phone": null,
"socialHandles": { "instagram": "janedoemusic", "tiktok": "@janedoemusic", "youtube": "@JaneDoeMusic" },
"links": [
{ "title": "Listen to the new EP", "url": "https://open.spotify.com/album/123", "type": "link", "network": "spotify", "handle": null, "position": 0 },
{ "title": "Tour dates", "url": "https://janedoemusic.com/tour", "type": "link", "network": null, "handle": null, "position": 1 },
{ "title": "Instagram", "url": "https://www.instagram.com/janedoemusic", "type": "social", "network": "instagram", "handle": "janedoemusic", "position": 2 }
],
"totalLinks": 3,
"instagramUrl": "https://www.instagram.com/janedoemusic",
"scrapedAt": "2026-10-16T01:00:00Z"
}
$2.50 per 1,000 profiles ($0.0025 per profile), emails and phones included, no start fee. Profiles that can't be read are not saved and never charged; they are listed in the run's status message and in the OUTPUT record (failedInputs). Platform usage (compute and proxy traffic, roughly 0.15 MB per profile) is billed separately.
Example: 1,000 profiles ≈ $2.50 plus about $0.20 of usage.
Is it legal? It reads public pages that anyone can open without an account. Check the platforms' terms and your local privacy laws, especially for outreach with personal emails.
Do I need a login or proxies? No login. The default residential proxy (US exits) gets through the Cloudflare checks some hosts use; datacenter also works for Linktree, Komi, link.me and bio.link.
Which platforms work best? Linktree, Komi, link.me, bio.link, solo.to and AllMyLinks return every link. Beacons returns the profile, all social accounts and the main featured link (its full button list is loaded by the app after the page opens). Other hosts go through a generic reader that collects names, links and contacts from the page.
Why is the email empty? Many creators don't publish one, or hide it behind a contact form. The actor only returns contacts that are on the page.
Can I find creators by keyword? No, this actor reads profiles you supply. Pair it with a search or social actor to discover bio links first.
Can I schedule it or use the API? Yes, schedule runs or call it from the API and integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
profileUrlsarrayOptionalProfile URLs
Bio-link profile URLs, one per line, any mix of platforms: Linktree, Beacons, Komi, link.me, bio.link, Lnk.Bio, solo.to, AllMyLinks, hoo.be, Milkshake, Stan and other link-in-bio pages.
usernamesarrayOptionalUsernames
Optional bare usernames (without the URL) for the platform chosen below, e.g. 'mrbeast'.
platformenumOptionaldefault "linktree"Platform for usernames
Which platform the usernames above belong to. Full URLs are detected automatically.
maxResultsintegerOptionalMax profiles
Maximum number of profiles to save. 0 means all inputs.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy
Residential proxies (US exits unless you pick a country) get through the Cloudflare checks some bio-link hosts use, such as Beacons. Pages are small, so proxy traffic stays cheap.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| inputUrl | string | null | Input |
| platform | string | null | Platform |
| profileUrl | string | null | Profile URL |
| username | string | null | Username |
| displayName | string | null | Display name |
| bio | string | null | Bio |
| avatar | string | null | Avatar image |
| verified | boolean | null | Verified |
| string | null | First email | |
| emails | array | null | Emails on the page |
| phone | string | null | First phone |
| phones | array | null | Phones on the page |
| location | string | null | Location |
| socialHandles | object | null | Handle per network |
| socialLinks | array | null | Social profile links |
| websites | array | null | Other websites |
| links | array | null | All links (title, url, type, network, handle) |
| totalLinks | number | null | Number of links |
| instagramUrl | string | null | |
| tiktokUrl | string | null | TikTok |
| youtubeUrl | string | null | YouTube |
| xUrl | string | null | X / Twitter |
| facebookUrl | string | null | |
| linkedinUrl | string | null | |
| spotifyUrl | string | null | Spotify |
| threadsUrl | string | null | Threads |
| snapchatUrl | string | null | Snapchat |
| twitchUrl | string | null | Twitch |
| category | string | null | Category |
| country | string | null | Country |
| createdAt | string | null | Created |
| updatedAt | string | null | Updated |
| finalUrl | string | null | URL after redirects |
| scrapedAt | string | null | Scraped at |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Profile | One saved bio-link profile. | $0.0025 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/linktree-scraper').call({
"profileUrls": [
"https://linktr.ee/garyvee",
"https://beacons.ai/defleppard",
"https://kennyg.komi.io",
"https://link.me/danucd",
"https://bio.link/art"
],
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/linktree-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/linktree-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
All links and profile data for a Linktree username.
Links from Linktree, Beacons and Komi profile URLs.
Links from a Beacons bio page.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.