Link in Bio Detector API — Identify Any Link Page
Documentation menu
FetchLayer FetchLayer API

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.

POST /detect-provider Utilities
https://api.fetchlayer.dev/link-in-bio/detect-provider
OpenAPI JSON

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"
  }
}