Linktree Scraper (profile links, bio, discovery by keyword)
Pricing
from $2.00 / 1,000 result items
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
Maintained by CommunityActor 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:
| Field | Value |
|---|---|
url | https://linktr.ee/theyogarepublic |
title | THE YOGA REPUBLIC |
linkCount | 7 |
links[4] | {"title": "OUR STORY π€", "url": "https://youtu.be/5ZASANDXryQ", "type": "YOUTUBE_VIDEO", "position": 4} |
socialLinks | INSTAGRAM, X, FACEBOOK |
verticals | ["health-wellness"] |
query / rank | yoga 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
- Direct handles β
usernamesaccepts handles (nba,@nike) and full URLs (https://linktr.ee/q.wellness) alike. - 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. - 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.
- Filter β
minLinksandverticalsAnyare applied after reading. - A handle with no Linktree profile comes back as
available: falsewhen 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
| Field | Meaning | Default |
|---|---|---|
usernames | Handles or linktr.ee URLs to read directly | empty |
queries | Keywords to discover profiles with | empty |
resultsPerQuery | Search hits scanned per keyword (1-200) | 30 |
minLinks | Keep profiles with at least this many links | empty |
verticalsAny | Keep profiles tagged with at least one of these Linktree verticals | empty |
maxItems | Stop after this many rows | 50 |
mode | scrape or monitor (only new/changed since last run) | scrape |
monitorKey, webhookUrl, telegramBotToken, telegramChatId | Monitor-mode state key and alert targets | empty |
Pricing
| Event | Price |
|---|---|
| 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
linksarray with titles, types (CLASSIC,YOUTUBE_VIDEO,APPLE_APP_STORE_MOBILE_APP, β¦) and Linktree's ownposition. - 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
emailand nophonefield in the output schema. - Contact links are dropped whole β they never appear in
linksorsocialLinks. That coversmailto:,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 with0or+, 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
usernameswhen 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.
verticalsis Linktree's own tagging and is often absent; itsno-optionplaceholder ("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,
minLinksandverticalsAnyfilters, 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.