Skip to content
looot docs
Esc
↑↓navigate↵open⌘Jpreview
On this page

Linkup / Fetch a web page as markdown

Linkup tool linkup-fetch on looot: input fields, $0.001 per call, output shape, and code to run it with curl, JavaScript or Python.

Fetches one web page and returns its content as clean markdown. Send url; mode is standard or pro, and renderJs renders JavaScript pages first.

Inputs

Name Type Required Description
extractImages string no Defines whether the API should extract the images from the webpage in its response. Example: false
includeRawContent string no Defines whether the API should include the raw page content and its content type in the response. Example: false
includeRawHtml string no Deprecated. Use includeRawContent instead. Defines whether rawHtml is returned for non-LinkedIn HTML pages. Example: false
instructions string no Optional instructions that guide how data is extracted. Requires schema. Example: “Use public list prices only and express monetary values in USD.”
mode string no standard ($0.001) or pro ($0.005, higher success on hard pages). Example: “standard”
renderJs string no Defines whether the API should render the JavaScript of the webpage. Example: false
schema string no Optional JSON Schema of type object describing the structured data to extract from the page. Fields with no grounded value are omitted, even when marked as required.
url string yes The URL of the webpage you want to fetch. Example: “https://docs.linkup.so”

Output

Shape of the run’s result, checked against 1 real answer:

{ images: unknown[], favicon, markdown }

Run it

Every call needs your API token in LOOOT_TOKEN; Sign in shows how to get one. Each run also needs a new idempotency key, so a retry never pays twice. With wait: 30 the answer comes back inline when the run ends within 30 seconds. Otherwise you get the running run back: poll GET /v1/runs/<runId>.

Example input with placeholder values:

curl -X POST "https://api.looot.ai/v1/runs" \
  -H "Authorization: Bearer $LOOOT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"endpointId":"linkup-fetch","input":{"url":"https://docs.linkup.so","mode":"standard","renderJs":false,"instructions":"Use public list prices only and express monetary values in USD.","extractImages":false,"includeRawHtml":false,"includeRawContent":false},"wait":30}'
const response = await fetch("https://api.looot.ai/v1/runs", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LOOOT_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    endpointId: "linkup-fetch",
    input: {
      url: "https://docs.linkup.so",
      mode: "standard",
      renderJs: false,
      instructions: "Use public list prices only and express monetary values in USD.",
      extractImages: false,
      includeRawHtml: false,
      includeRawContent: false,
    },
    wait: 30,
  }),
});
const run = await response.json();
console.log(run.status, run.result);
import os
import uuid

import requests

response = requests.post(
    "https://api.looot.ai/v1/runs",
    headers={
        "Authorization": f"Bearer {os.environ['LOOOT_TOKEN']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={
        "endpointId": "linkup-fetch",
        "input": {
            "url": "https://docs.linkup.so",
            "mode": "standard",
            "renderJs": False,
            "instructions": "Use public list prices only and express monetary values in USD.",
            "extractImages": False,
            "includeRawHtml": False,
            "includeRawContent": False,
        },
        "wait": 30,
    },
    timeout=90,
)
run = response.json()
print(run["status"], run.get("result"))

To let looot pick among every provider of this job instead, send job:web.article.extract as endpointId; see the job page.

Was this page helpful?