Lnk.Bio hub

Lnk.Bio Directory API

Walk the public Lnk.Bio profile directory, filtered by last change and paged with a cursor.

GET /v1/lnk-bio/profiles

1 credit Failed requests are free

About this endpoint

GET /v1/lnk-bio/profiles returns one page of directory rows. limit is 1 to 500 and defaults to 100. modifiedSince keeps only profiles whose lastModified is at or after the time, as ISO 8601 or as epoch seconds or milliseconds.

On success, data.profiles holds rows with handle, profileUrl, lastModified, changeFrequency and priority, in directory order. lastModified is ISO 8601 UTC when known, and priority is 0 to 1 when present. data.page has hasMore and nextCursor. The directory only lists profiles, not their links; call the profile or links route for a handle you find here. A listed handle can still return not_found if the profile has since been removed.

The cursor is opaque and is tied to the same modifiedSince filter. A cursor from a different filter is refused with HTTP 400. Each page covers one stretch of the directory, so with a narrow modifiedSince filter a page can be empty while page.hasMore is true; keep following page.nextCursor. This route reports lookupStatus: "found" whenever the directory page is returned; it has no not_found state.

Lnk.Bio Directory API FAQ

What is in each directory row?

handle, profileUrl, lastModified, changeFrequency and priority. lastModified and priority are null when they are not known. The row does not include the profile's links.

How does modifiedSince work?

Send an ISO 8601 time, or epoch seconds or milliseconds. Only profiles whose lastModified is at or after that time are kept. Each page covers one stretch of the directory, so with a narrow filter an empty page with page.hasMore true is not the end; keep following page.nextCursor. The cursor is tied to the filter you started with.

How do I walk the whole directory?

Start without a cursor, then send data.page.nextCursor while data.page.hasMore is true, until hasMore is false. The directory holds several hundred thousand profiles, so a full walk is many requests; use modifiedSince to take only recently changed profiles.

Why was my cursor refused?

The cursor is tied to the same modifiedSince filter. A cursor from a different filter, or a malformed cursor, is refused with HTTP 400. Start again without a cursor.

How is a directory page billed?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth. Each paginated page is a separate billed request.

Does this endpoint have a not_found state?

No. This route either succeeds with lookupStatus found or fails with an HTTP error. Branch on lookupStatus for profile lookups, not for this route.