Identify which service an address belongs to
Which link-in-bio service hosts an address, whether its pages can be read here, the handle it names, and the evidence behind the answer. Thirty services are recognised and four of them are readable in this release — Linktree, Lnk.Bio, AllMyLinks and solo.to. The other twenty-six come back identified with the reason they are not, and that is the useful half: a note saying "Bento has closed and its addresses now redirect to Linktree; use the creator’s Linktree page instead", or "Beacons pages are behind bot verification and cannot be read by this service", or "Komi pages load their content after the page opens", or "Carrd builds general one-page sites rather than link pages, so it has no link list to read". A list of addresses from a dead service is answered rather than left to fail one page fetch at a time. An address that is not a link page at all gets an answer too, not a refusal. Set `checkCustomDomain` to fetch the page as well, so a link page served on the creator’s own domain is still identified — that costs a fetch, which is why it is off by default. Billing: 1 credit, and `pagesFetched` is 0 when the address was recognised from its shape alone.
/detect-provider Utilities https://api.fetchlayer.dev/link-in-bio/detect-provider Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
url string required Any address to identify.
checkCustomDomain boolean optional Also fetch the page, so a link page on the creator’s own domain is recognised. Costs a fetch. (default: false)
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
detect-provider
Identify which service an address belongs to
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.
input string The address the caller asked about, verbatim.
detection.provider string Short, stable id for the service, or null when the address belongs to none of them.
detection.providerName string The service’s public name, for display.
detection.supported boolean Whether /profile and /links can actually read this page. False comes with a note saying why.
detection.handle string The handle the address names, or null.
detection.evidence object[] What the answer was based on — the host, the path shape, or the page itself when checkCustomDomain was set.
Request
curl -X POST "https://api.fetchlayer.dev/link-in-bio/detect-provider" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"url":"https://bento.me/someone"}'Response
{
"blocked": false,
"requestedUrl": "https://bento.me/someone",
"scrapedAt": "2026-09-16T20:42:31.010Z",
"transport": "link-in-bio-page",
"notes": [
"Bento has closed and its addresses now redirect to Linktree; use the creator's Linktree page instead"
],
"resultType": "detect-provider",
"pagesFetched": 0,
"input": "https://bento.me/someone",
"detection": {
"provider": "bento",
"providerName": "Bento",
"supported": false,
"handle": "someone"
}
}