Fetch a live web page and list every link on it: URL, anchor text, rel values, internal or external, and how often it appears.

GEThttps://rankfield.dev/v1/html/link-extraction?url={url}

The page is fetched live, as plain HTML without running JavaScript, and the answer usually arrives within a few seconds. For many pages, start a job.

Parameters

Headers

NameTypeRequiredDefaultDescription
AuthorizationstringYes–Bearer followed by your API key. See Authentication.

Query parameters

NameTypeRequiredDefaultDescription
urlstringYes–A public page. http:// is upgraded to HTTPS and a URL without a scheme gets https://. Credentials, custom ports and private hosts are refused.
viewstringNouniqueunique: one entry per distinct target, with occurrences. occurrences: one entry per link, in page order.
typestringNoallall, internal (same hostname as the final URL) or external. counts always cover the whole page.
maxAgeintegerNo60Seconds, 0–3,600. A copy of the page fetched at most this long ago may be reused (cached: true). 0 always fetches.
waitintegerNo60Seconds to wait for the page, 1–85. If it is not ready by then, the answer is 202 with resultsUrl.

Response

FieldTypeDescription
urlstringThe URL you sent, after normalising.
finalUrlstringThe page that answered, after redirects.
statusintegerThe website's HTTP status.
titlestring | nullThe page title.
redirectsarrayEach redirect on the way, {url, status}.
collectedAtstringWhen the page was fetched (UTC).
cachedbooleantrue when a copy within maxAge was reused.
countsobjectlinks (distinct targets), internal, external and occurrences, for the whole page.
links[].hrefstringThe absolute target URL.
links[].anchorstringThe link text (or the image's alt text).
links[].internalbooleanSame hostname as finalUrl.
links[].relstring[]The rel values.
links[].nofollow, sponsored, ugcbooleanWhether rel holds each value.
links[].occurrencesintegerHow many times the target appears (with view=unique).
viewstringThe view used.
jobIdstringThe one-page job behind the request.

Common questions

The page is read as served, without JavaScript. Links that a script adds after loading are not in the HTML. Bot View tells you whether a page needs JavaScript.

How is internal decided?

By hostname: www.example.com and blog.example.com are different hosts. Links to other subdomains count as external.

Errors

StatusWhen
202The page is not ready within wait. Read it from resultsUrl (see Get results).
400url or another parameter is missing or invalid.
401No valid API key.
422The website answered with an error, timed out, or the page could not be read. The body has the page's status and an error with message, code (such as SOURCE_HTTP_404) and retryable.
429The service is busy. Wait for Retry-After.
503The service is busy or paused. Retry after Retry-After.

Limits

No per-key limits. A job holds up to 600 URLs (a single-page request is a one-URL job). When the service is busy you get 429 or 503 with Retry-After.

MCP

On the MCP server, the tool for this is extract_page_links.