Linktree Scraper (profile links, bio, discovery by keyword) avatar

Linktree Scraper (profile links, bio, discovery by keyword)

Pricing

from $2.00 / 1,000 result items

Go to Apify Store
Linktree Scraper (profile links, bio, discovery by keyword)

Linktree Scraper (profile links, bio, discovery by keyword)

Linktree scraper for public linktr.ee profiles: every link with title, URL, type and position, plus the social icon row, bio, avatar, verified badge, category verticals and link count. Find profiles by keyword or by handle. No e-mail or phone harvesting β€” contacts are removed.

Pricing

from $2.00 / 1,000 result items

Rating

0.0

(0)

Developer

Viktor Dubnytskiy

Viktor Dubnytskiy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Read any public linktr.ee profile as one flat row: every link on the page with its title, URL, link type and position, the social-icon row, the profile title, bio, avatar, verified badge and link count. Give it handles you already know, or a keyword β€” the actor finds the profiles for you. No login, no cookies, no API key.

What you get

One row per profile: id/username, url, title, description, avatarUrl, isActive, linkCount, links (title, url, type, position), socialLinks (platform, url), verified, tier, verticals, available, detailsFetched, query, rank, source, scrapedAt.

Example output

Real rows (usernames: ["nba"] and query yoga studio):

{
"id": "nba",
"url": "https://linktr.ee/nba",
"username": "nba",
"title": "NBA",
"description": "NBA ALL-STAR VOTING IS NOW OPEN. VOTE DAILY ON NBA.COM AND THE NBA APP",
"avatarUrl": "https://ugc.production.linktr.ee/x4TCEyCTz6yyVcYZWCDa_wz2MeHI8Q0HitmMy",
"isActive": true,
"linkCount": 3,
"links": [
{"title": "Download the NBA App πŸ“²", "url": "https://app.link.nba.com/DSkSiOcpgtb", "type": "CLASSIC", "position": 5},
{"title": "Create Your NBA ID πŸ€", "url": "https://app.link.nba.com/e/rV6Tw3sK7tb", "type": "CLASSIC", "position": 7},
{"title": "Latest News πŸ“", "url": "https://app.link.nba.com/e/FFIFF4O4htb", "type": "CLASSIC", "position": 9}
],
"socialLinks": [
{"platform": "INSTAGRAM", "url": "https://instagram.com/nba"},
{"platform": "X", "url": "https://x.com/nba"},
{"platform": "TIKTOK", "url": "https://tiktok.com/@nba"},
{"platform": "SNAPCHAT", "url": "https://www.snapchat.com/add/nba"},
{"platform": "YOUTUBE", "url": "https://www.youtube.com/user/NBA"}
],
"verified": true,
"tier": "paid2",
"verticals": ["sports"],
"available": true,
"detailsFetched": true,
"source": "url"
}

A profile found by the keyword yoga studio, shortened:

FieldValue
urlhttps://linktr.ee/theyogarepublic
titleTHE YOGA REPUBLIC
linkCount7
links[4]{"title": "OUR STORY πŸ–€", "url": "https://youtu.be/5ZASANDXryQ", "type": "YOUTUBE_VIDEO", "position": 4}
socialLinksINSTAGRAM, X, FACEBOOK
verticals["health-wellness"]
query / rankyoga studio / 5

Use cases

  • Take a list of Linktree handles from a campaign and pull every destination link behind them, with the link titles and the order they are shown in.
  • Find the Linktree pages of a niche ("yoga studio", "coffee roaster berlin") and see which booking, shop and app platforms they actually send traffic to.
  • Audit your own or a client's Linktree: check that every link still points where it should and that the order is right.
  • Monitor mode: get an alert the moment a profile adds, removes or repoints a link, or changes its title.

How it works

  1. Direct handles β€” usernames accepts handles (nba, @nike) and full URLs (https://linktr.ee/q.wellness) alike.
  2. Discovery β€” each keyword is searched in a public search index restricted to linktr.ee, so you get the profiles Linktree has published to the open web. Site sections (/discover, /pricing, …) and static assets are skipped.
  3. Reading β€” every candidate's profile page is opened before it can become a row. Linktree server-renders the whole profile, so the links come out complete and in Linktree's own order, not scraped off a rendered screenshot.
  4. Filter β€” minLinks and verticalsAny are applied after reading.
  5. A handle with no Linktree profile comes back as available: false when you asked for it by name, and is dropped when it was only a dead link in the search index. A page that is not a profile page at all is reported as a block, never as an empty result.

Input

FieldMeaningDefault
usernamesHandles or linktr.ee URLs to read directlyempty
queriesKeywords to discover profiles withempty
resultsPerQuerySearch hits scanned per keyword (1-200)30
minLinksKeep profiles with at least this many linksempty
verticalsAnyKeep profiles tagged with at least one of these Linktree verticalsempty
maxItemsStop after this many rows50
modescrape or monitor (only new/changed since last run)scrape
monitorKey, webhookUrl, telegramBotToken, telegramChatIdMonitor-mode state key and alert targetsempty

Pricing

EventPrice
result$0.002 per profile ($2 per 1,000)
monitor-check$0.005 per monitor run
change$0.002 per new/changed profile

Charged only for rows actually pushed. No proxy is needed, so platform usage stays small.

Why this actor

  • Every link, not just the first few β€” the whole links array with titles, types (CLASSIC, YOUTUBE_VIDEO, APPLE_APP_STORE_MOBILE_APP, …) and Linktree's own position.
  • Discovery by keyword, not only by handle: you do not need the list of profiles up front.
  • Linktree's own category verticals on every row (health-wellness, independent-small-business, sports, …), and a filter to keep only the categories you want.
  • Half the price of the usual Linktree scraper, at $0.002 per profile.
  • Monitor mode with webhook and Telegram alerts when a link is added, removed or repointed.
  • No contact harvesting. See below β€” this is a deliberate design choice, and the reason this actor is safe to run on profiles that belong to individuals.

No e-mail or phone extraction β€” on purpose

Other Linktree scrapers advertise "bio e-mail" extraction. This one does not do it, and cannot be configured to:

  • There is no email and no phone field in the output schema.
  • Contact links are dropped whole β€” they never appear in links or socialLinks. That covers mailto:, tel:, sms:, hosts that exist only to open a one-to-one chat (signal.me, wa.link), an international number parked anywhere in a URL (t.me/+7999…, signal.me/#p/+1555…), and the WhatsApp family (wa.me/<number>, wa.me/c/<number>, wa.me/message/<code>, wa.me/qr/<code>, api.whatsapp.com/send?phone=…). A group invite is kept β€” chat.whatsapp.com/<code> is a community, not a person.
  • Contact details typed into the bio are removed from description: an e-mail address, or a dialable phone number (8+ digits starting with 0 or +, or a shorter group introduced by a phone word). Prices, dates, years and counts are left alone, so the bio still reads as the owner wrote it.

What you get instead is the structure Linktree publishes for every profile: who links to what, in which order, on which platforms. That is the part that is useful for market and traffic research β€” and the part that does not turn a scrape into a mailing list. If you need a contact, the profile's own links will take you to its website or booking page.

Limits

  • Discovery depends on a public search index: profiles never linked from the open web will not be found. Give the keyword in the language the profile is written in, and use usernames when you already know the handles.
  • Linktree does not label a profile as a business or a person, so this actor does not guess either. It returns the same published fields for every profile and no contact data, which is what keeps a keyword run usable.
  • Links behind a page password, an age gate or a "sensitive content" warning are not unlocked; such a profile returns whatever Linktree renders for a logged-out visitor.
  • Header rows (a link entry with no URL) are not returned β€” they are labels, not links.
  • verticals is Linktree's own tagging and is often absent; its no-option placeholder ("the owner picked nothing") is dropped rather than reported as a category, so an untagged profile comes back with an empty list.
  • The bio scrub works on the shape of the digits, not on a list of keywords. A number written in words, or a contact hidden in an image, is out of its reach β€” and a very unusual bio may lose a long digit group that was not a phone number.
  • Follower counts, click counts and analytics are private to the profile owner and are not available to any scraper.
  • No members, no visitors, no message authors: profile-level facts only.

FAQ

Does it need a Linktree account or API key? No. There is no credential field; every request is a plain public web request.

Can it find profiles by keyword? Yes β€” queries searches a public index restricted to linktr.ee and then opens every hit, so each row comes from a page that was actually read.

Will it give me the e-mail address in the bio? No, by design. See the section above.

What happens when there are no results? No rows are pushed and no result events are charged. The RUN_SUMMARY record in the run's key-value store carries emptyReason, which separates "the keyword has no profiles in the index" from "the source answered with a wall".

Changelog

  • 0.1: initial release β€” profiles by handle and by keyword, full link array with type and position, social icon row, verified badge, category verticals, minLinks and verticalsAny filters, monitor mode; contact links dropped and bio contacts scrubbed by design.

If this actor saved you time, a short review on its Store page genuinely helps other people find it. Found a bug or need a field that is missing? Open a ticket on the Issues tab.