Follow one link to where it really goes
Follows a single link through its redirects and reports where it lands: the final url, its host and page title, every hop in order, whether the chain went through a link shortener or an affiliate redirector, and whether it hit the step limit and may continue. Use it on a shortened or campaign link when you want the retailer or network at the end rather than the wrapper at the start — a creator's page sends you to lnk.to, and lnk.to sends you to Spotify. Up to 20 hops, 10 by default. When the chain is still going, `truncated` is true and `url` is the furthest point reached rather than the end. When nothing could be established, `unresolvedReason` says why rather than leaving a null unexplained. Billing: 1 credit.
/unwrap-link Destinations https://api.fetchlayer.dev/link-in-bio/unwrap-link Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
url string required The link to follow to its real destination.
maxHops integer optional How many redirects to follow, up to 20. (default: 10)
format string optional json or markdown. Markdown returns a rendered summary instead of the structured record. (default: json)
timeoutMs integer optional Time limit for the request, in milliseconds (max 600000).
Response Fields
unwrap-link
Follow one link to where it really goes
transport string The upstream source. Always "link-in-bio-page".
resultType string Which route produced this record — profile, links, detect-provider, unwrap-link or resolve-url.
requestedUrl string The address this result corresponds to.
scrapedAt string ISO 8601 timestamp of the read.
blocked boolean Always false on a successful response.
notes string[] Caveats you can act on — a page that is live but publishes no links, a service that publishes no theme or plan details, a destination that could not be reached. Read these: an empty result always arrives with one.
pagesFetched number Pages fetched, which is what the request costs: one credit per page. detect-provider reports 0 when it recognised the address from its shape alone, and resolve-url fetches nothing at all.
url string The link that was followed.
destination.url string The address the chain ended at.
destination.host string Host of that address, so destinations can be grouped without re-parsing.
destination.status number HTTP status at the end of the chain, or null when none was established.
destination.hops string[] Each intermediate address, in order, excluding the starting one.
destination.truncated boolean True when the chain hit the step limit and may continue further.
destination.title string Page title at the destination, where one was readable.
destination.shortened boolean True when the chain went through a known link shortener or affiliate redirector, anywhere along it.
destination.unresolvedReason string Why no destination could be established, when status is null — the host did not answer, refused the request, and so on.
Request
curl -X POST "https://api.fetchlayer.dev/link-in-bio/unwrap-link" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"url":"https://bennyblanco.lnk.to/TeOlvido"}'Response
{
"blocked": false,
"requestedUrl": "https://bennyblanco.lnk.to/TeOlvido",
"scrapedAt": "2026-09-16T20:43:02.551Z",
"transport": "link-in-bio-page",
"notes": [],
"resultType": "unwrap-link",
"pagesFetched": 1,
"url": "https://bennyblanco.lnk.to/TeOlvido",
"destination": {
"url": "https://bennyblanco.lnk.to/TeOlvido",
"host": "bennyblanco.lnk.to",
"status": 200,
"hops": [],
"truncated": false,
"title": "benny blanco, Selena Gomez, Becky G - Te Olvido (La La)",
"shortened": true,
"unresolvedReason": null
}
}