Linkup

App · AI Search & Memory · 13 actions

Search the web built for AI: get ranked results, a written answer with sources, or named fields filled from the web. Read any page or PDF as clean text, pull fields out of it, and run deep research or batches of searches in the background.

Actions

ActionWhat it does
Answer a questionAsk a question and get a written answer from the web, with the pages it came from.
Check a taskSee whether a background task has finished, and read its result once it has: search results, an answer, or a page's text.
Check researchSee whether a research job has finished, and read its report or fields once it has.
Check your Linkup creditSee how much credit is left on the Linkup account, in US dollars.
Extract data from a pageRead one web page or PDF and pull out the fields you name, such as a price, a job title or a contact email.
List researchList the research jobs on the account, newest first.
List tasksList background tasks, newest first, and see how many are running against the account's limit.
Read a pageRead one web page or PDF and get its content as clean text (Markdown), ready for an AI step.
Search for structured dataSearch the web and get the answer back as named fields, ready for a spreadsheet row or a CRM record.
Search the webSearch the web and get back the most relevant pages, each with the passage that answers the question.
Start a batch of page readsQueue up to 100 pages to read in the background.
Start a batch of searchesQueue up to 100 searches to run in the background, billed as ordinary searches.
Start researchStart a deep research job: Linkup searches, reads and cross-checks many sources and writes a report.

Answer a question

Ask a question and get a written answer from the web, with the pages it came from. When nothing relevant is found the step still succeeds, with 'found_answer' false.

Inputs

QuestionquerytextRequired
What to look for, written as you would ask a person. A full question works better than keywords.
Search depthdepthtext
How hard to look. Fast suits one specific fact; Deep chains several searches together for harder questions and takes up to 30 seconds.One of: fast (Fast (recommended)), flash (Flash (quickest)), standard, deep (Deep (slowest, most thorough)). Default: fast.
Cite sources in the textinclude_inline_citationstrue/false
Put numbered source references inside the answer.Default: false.
Most resultsmax_resultsnumber
The most pages to use. Leave empty to let Linkup decide.At least 1.
Only these sitesinclude_domainslist
Search only these sites, up to 100. Write each like example.com; a pasted address works too.
Never these sitesexclude_domainslist
Leave these sites out of the search. Write each like example.com.
Published afterfrom_datedate
Only use pages published on or after this day.
Published beforeto_datedate
Only use pages published on or before this day.

Outputs

answertext
The written answer.
found_answertrue/false
Whether an answer was found.
querytext
The question.
source_countnumber
How many sources there are.
sourceslist
The pages the answer drew on.
Example output
{
  "answer": "Linkup was founded in 2024 by ...",
  "found_answer": true,
  "query": "Who founded Linkup?",
  "source_count": 1,
  "sources": [
    {
      "favicon": null,
      "name": "About Linkup",
      "snippet": "Linkup was founded in 2024...",
      "url": "https://www.linkup.so/about"
    }
  ]
}

Check a task

See whether a background task has finished, and read its result once it has: search results, an answer, or a page's text.

Inputs

Tasktask_idtextRequired
The task's id, as given back by a 'Start a batch' step.

Outputs

answertext
A finished answer search's answer.
created_attext
When the task was queued.
dataobject
Structured fields, when asked for.
errortext
Why the task failed, if it did.
is_finishedtrue/false
Whether the task has completed or failed.
markdowntext
A finished page read's text.
outputobject
Linkup's full result, unchanged.
querytext
The search question, for a search task.
resultslist
A finished search's results.
sourceslist
The pages an answer drew on.
statustext
pending, processing, completed or failed.
succeededtrue/false
Whether the task completed with a result.
task_idtext
Linkup's id for the task. Hand it to 'Check a task'.
typetext
search, fetch or research.
updated_attext
When the task last changed.
urltext
The page address, for a page-read task.
Example output
{
  "answer": "Linkup was founded in 2024 by ...",
  "created_at": "2026-09-21T10:00:00.000Z",
  "data": null,
  "error": null,
  "is_finished": true,
  "markdown": null,
  "output": {
    "answer": "Linkup was founded in 2024 by ..."
  },
  "query": "Who founded Linkup?",
  "results": [],
  "sources": [
    {
      "favicon": null,
      "name": "About Linkup",
      "snippet": "Linkup was founded in 2024...",
      "url": "https://www.linkup.so/about"
    }
  ],
  "status": "completed",
  "succeeded": true,
  "task_id": "tsk_8f2c1a",
  "type": "search",
  "updated_at": "2026-09-21T10:00:00.000Z",
  "url": null
}

Check research

See whether a research job has finished, and read its report or fields once it has.

Inputs

Research jobresearch_idtextRequired
The job's id, as given back by 'Start research'.

Outputs

answertext
The written report, once finished (answer format).
created_attext
When the job was started.
dataobject
The named fields, once finished, when fields were asked for.
errortext
Why the job failed, if it did.
is_finishedtrue/false
Whether the job has completed or failed.
querytext
The question that was researched.
research_idtext
Linkup's id for the job. Hand it to 'Check research'.
sourceslist
The pages the report drew on.
statustext
pending, processing, completed or failed.
succeededtrue/false
Whether the job completed with a result.
updated_attext
When the job last changed.
Example output
{
  "answer": "Three shifts stand out...",
  "created_at": "2026-09-21T10:00:00.000Z",
  "data": null,
  "error": null,
  "is_finished": true,
  "query": "How is the European web-search API market changing?",
  "research_id": "res_4b1d9e",
  "sources": [
    {
      "favicon": null,
      "name": "About Linkup",
      "snippet": "Linkup was founded in 2024...",
      "url": "https://www.linkup.so/about"
    }
  ],
  "status": "completed",
  "succeeded": true,
  "updated_at": "2026-09-21T10:05:12.000Z"
}

Check your Linkup credit

See how much credit is left on the Linkup account, in US dollars. Free to call, so it also makes a good first step for checking the connection works.

Inputs

None.

Outputs

balancenumber
Credit left, in US dollars.
has_credittrue/false
Whether any credit is left.
Example output
{
  "balance": 18.42,
  "has_credit": true
}

Extract data from a page

Read one web page or PDF and pull out the fields you name, such as a price, a job title or a contact email. A field that is not on the page is left out rather than guessed.

Inputs

Page addressurltextRequired
The address of the page or PDF to read.
Fields to fillfieldslist
The pieces of information you want back, one per entry. Add what each means after a colon to steer it: 'price: the list price in US dollars'.
JSON Schema (advanced)json_schematext
Instead of 'Fields to fill', paste a JSON Schema whose root is an object, for numbers, lists or nested fields. When set, it is used and 'Fields to fill' is ignored.
Instructionsinstructionstext
Rules the fields cannot express, such as 'prices in US dollars'. Up to 4,000 characters.
Run JavaScriptrender_jstrue/false
Let the page's scripts run before reading it. Needed for pages that fill themselves in after they load; slower and costs a little more.Default: false.
Read modemodetext
Pro succeeds far more often on pages that are hard to read, and costs more. Try Standard first.One of: standard, pro (Pro (for pages that are hard to read)). Default: standard.

Outputs

dataobject
The fields found, by the names asked for.
favicontext
The site's icon.
found_fieldslist
The names of the fields that were found.
markdowntext
The page's content as Markdown.
urltext
The page read.
Example output
{
  "data": {
    "starter price": "$19"
  },
  "favicon": null,
  "found_fields": [
    "starter price"
  ],
  "markdown": "# Pricing\n\nStarter is $19 a month...",
  "url": "https://example.com/pricing"
}

List research

List the research jobs on the account, newest first.

Inputs

Pagepagenumber
Which page of the list to return, starting at 1.At least 1. Default: 1.
Per pagepage_sizenumber
How many to return, up to 100.From 1 to 100. Default: 10.
Sort bysort_bytext
Which date to sort on.One of: createdAt (When it was started), updatedAt (When it last changed). Default: createdAt.
Orderordertext
Newest or oldest first.One of: desc (Newest first), asc (Oldest first). Default: desc.

Outputs

countnumber
How many are on this page.
pagenumber
This page's number.
page_sizenumber
Entries per page.
researchlist
The jobs.
totalnumber
How many there are in all.
total_pagesnumber
How many pages there are.
Example output
{
  "count": 1,
  "page": 1,
  "page_size": 10,
  "research": [
    {
      "answer": "Three shifts stand out...",
      "created_at": "2026-09-21T10:00:00.000Z",
      "data": null,
      "error": null,
      "is_finished": true,
      "query": "How is the European web-search API market changing?",
      "research_id": "res_4b1d9e",
      "sources": [
        {
          "favicon": null,
          "name": "About Linkup",
          "snippet": "Linkup was founded in 2024...",
          "url": "https://www.linkup.so/about"
        }
      ],
      "status": "completed",
      "succeeded": true,
      "updated_at": "2026-09-21T10:05:12.000Z"
    }
  ],
  "total": 1,
  "total_pages": 1
}

List tasks

List background tasks, newest first, and see how many are running against the account's limit.

Inputs

Kindstypeslist
Only these kinds of task. Leave empty for all.One or more of: search (Searches), fetch (Page reads), research.
Statesstatuseslist
Only tasks in these states. Leave empty for all.One or more of: pending (Waiting to start), processing (Running), completed (Finished), failed.
Pagepagenumber
Which page of the list to return, starting at 1.At least 1. Default: 1.
Per pagepage_sizenumber
How many to return, up to 100.From 1 to 100. Default: 10.
Sort bysort_bytext
Which date to sort on.One of: createdAt (When it was started), updatedAt (When it last changed). Default: createdAt.
Orderordertext
Newest or oldest first.One of: desc (Newest first), asc (Oldest first). Default: desc.

Outputs

countnumber
How many are on this page.
in_flightnumber
Tasks waiting or running right now.
in_flight_limitnumber
The most that may wait or run at once.
pagenumber
This page's number.
page_sizenumber
Entries per page.
taskslist
The tasks.
totalnumber
How many there are in all.
total_pagesnumber
How many pages there are.
Example output
{
  "count": 1,
  "in_flight": 1,
  "in_flight_limit": 100,
  "page": 1,
  "page_size": 10,
  "tasks": [
    {
      "created_at": "2026-09-21T10:00:00.000Z",
      "error": null,
      "is_finished": false,
      "query": "Who founded Linkup?",
      "status": "pending",
      "task_id": "tsk_8f2c1a",
      "type": "search",
      "updated_at": "2026-09-21T10:00:00.000Z",
      "url": null
    }
  ],
  "total": 1,
  "total_pages": 1
}

Read a page

Read one web page or PDF and get its content as clean text (Markdown), ready for an AI step. Reads only that address; it does not follow links.

Inputs

Page addressurltextRequired
The address of the page or PDF to read.
Run JavaScriptrender_jstrue/false
Let the page's scripts run before reading it. Needed for pages that fill themselves in after they load; slower and costs a little more.Default: false.
Read modemodetext
Pro succeeds far more often on pages that are hard to read, and costs more. Try Standard first.One of: standard, pro (Pro (for pages that are hard to read)). Default: standard.
List the imagesextract_imagestrue/false
Also return every image on the page. Slower.Default: false.
Include the raw sourceinclude_raw_contenttrue/false
Also return the page's original source (HTML, or the PDF's text).Default: false.

Outputs

content_typetext
The source's type, such as text/html.
favicontext
The site's icon.
imageslist
The page's images, when asked for.
markdowntext
The page's content as Markdown.
raw_contenttext
The original source, when asked for.
urltext
The page read.
Example output
{
  "content_type": null,
  "favicon": null,
  "images": [],
  "markdown": "# Pricing\n\nStarter is $19 a month...",
  "raw_content": null,
  "url": "https://example.com/pricing"
}

Search for structured data

Search the web and get the answer back as named fields, ready for a spreadsheet row or a CRM record. Name the fields you want; no schema writing needed.

Inputs

QuestionquerytextRequired
What to look for, written as you would ask a person. A full question works better than keywords.
Fields to fillfieldslist
The pieces of information you want back, one per entry. Add what each means after a colon to steer it: 'price: the list price in US dollars'.
JSON Schema (advanced)json_schematext
Instead of 'Fields to fill', paste a JSON Schema whose root is an object, for numbers, lists or nested fields. When set, it is used and 'Fields to fill' is ignored.
Include sourcesinclude_sourcestrue/false
Also return the pages the fields were taken from.Default: false.
Search depthdepthtext
How hard to look. Fast suits one specific fact; Deep chains several searches together for harder questions and takes up to 30 seconds.One of: fast (Fast (recommended)), flash (Flash (quickest)), standard, deep (Deep (slowest, most thorough)). Default: fast.
Most resultsmax_resultsnumber
The most pages to use. Leave empty to let Linkup decide.At least 1.
Only these sitesinclude_domainslist
Search only these sites, up to 100. Write each like example.com; a pasted address works too.
Never these sitesexclude_domainslist
Leave these sites out of the search. Write each like example.com.
Published afterfrom_datedate
Only use pages published on or after this day.
Published beforeto_datedate
Only use pages published on or before this day.

Outputs

dataobject
The fields, by the names asked for.
found_datatrue/false
Whether any field was filled.
querytext
What was searched.
sourceslist
The pages used, when 'Include sources' is on.
Example output
{
  "data": {
    "ceo": "Jane Doe",
    "headquarters city": "Paris"
  },
  "found_data": true,
  "query": "Acme Corp company facts",
  "sources": []
}

Search the web

Search the web and get back the most relevant pages, each with the passage that answers the question. Finding nothing is not an error: the step returns an empty list.

Inputs

QuestionquerytextRequired
What to look for, written as you would ask a person. A full question works better than keywords.
Search depthdepthtext
How hard to look. Fast suits one specific fact; Deep chains several searches together for harder questions and takes up to 30 seconds.One of: fast (Fast (recommended)), flash (Flash (quickest)), standard, deep (Deep (slowest, most thorough)). Default: fast.
Most resultsmax_resultsnumber
The most pages to use. Leave empty to let Linkup decide.At least 1.
Only these sitesinclude_domainslist
Search only these sites, up to 100. Write each like example.com; a pasted address works too.
Never these sitesexclude_domainslist
Leave these sites out of the search. Write each like example.com.
Published afterfrom_datedate
Only use pages published on or after this day.
Published beforeto_datedate
Only use pages published on or before this day.
Include imagesinclude_imagestrue/false
Also return matching images.Default: false.

Outputs

querytext
What was searched.
result_countnumber
How many results came back.
resultslist
The matching pages and images.
urlslist
The page addresses, ready to read.
Example output
{
  "query": "Who founded Linkup?",
  "result_count": 1,
  "results": [
    {
      "content": "Linkup was founded in 2024...",
      "favicon": null,
      "name": "About Linkup",
      "type": "text",
      "url": "https://www.linkup.so/about"
    }
  ],
  "urls": [
    "https://www.linkup.so/about"
  ]
}

Start a batch of page reads

Queue up to 100 pages to read in the background. Follow with a Wait step and 'Check a task' for each id returned.

Inputs

Page addressesurlslistRequired
The pages to read, one per entry.
Run JavaScriptrender_jstrue/false
Let the page's scripts run before reading it. Needed for pages that fill themselves in after they load; slower and costs a little more.Default: false.
Read modemodetext
Pro succeeds far more often on pages that are hard to read, and costs more. Try Standard first.One of: standard, pro (Pro (for pages that are hard to read)). Default: standard.
List the imagesextract_imagestrue/false
Also return every image on the page. Slower.Default: false.
Include the raw sourceinclude_raw_contenttrue/false
Also return the page's original source (HTML, or the PDF's text).Default: false.

Outputs

first_task_idtext
The first task's id, handy for a single check.
task_countnumber
How many were queued.
task_idslist
Every task's id, in the order they were asked for.
taskslist
One entry per queued task, in order.
Example output
{
  "first_task_id": "tsk_8f2c1a",
  "task_count": 1,
  "task_ids": [
    "tsk_8f2c1a"
  ],
  "tasks": [
    {
      "created_at": "2026-09-21T10:00:00.000Z",
      "error": null,
      "is_finished": false,
      "query": null,
      "status": "pending",
      "task_id": "tsk_8f2c1a",
      "type": "fetch",
      "updated_at": "2026-09-21T10:00:00.000Z",
      "url": "https://example.com"
    }
  ]
}

Start a batch of searches

Queue up to 100 searches to run in the background, billed as ordinary searches. Follow with a Wait step and 'Check a task' for each id returned.

Inputs

QuestionsquerieslistRequired
The searches to run, one per entry.
Bring backoutputtext
What each search should return.One of: searchResults (Search results), sourcedAnswer (A written answer with sources). Default: searchResults.
Search depthdepthtext
How hard to look. Fast suits one specific fact; Deep chains several searches together for harder questions and takes up to 30 seconds.One of: fast (Fast (recommended)), flash (Flash (quickest)), standard, deep (Deep (slowest, most thorough)). Default: fast.
Most resultsmax_resultsnumber
The most pages to use. Leave empty to let Linkup decide.At least 1.
Only these sitesinclude_domainslist
Search only these sites, up to 100. Write each like example.com; a pasted address works too.
Never these sitesexclude_domainslist
Leave these sites out of the search. Write each like example.com.
Published afterfrom_datedate
Only use pages published on or after this day.
Published beforeto_datedate
Only use pages published on or before this day.

Outputs

first_task_idtext
The first task's id, handy for a single check.
task_countnumber
How many were queued.
task_idslist
Every task's id, in the order they were asked for.
taskslist
One entry per queued task, in order.
Example output
{
  "first_task_id": "tsk_8f2c1a",
  "task_count": 1,
  "task_ids": [
    "tsk_8f2c1a"
  ],
  "tasks": [
    {
      "created_at": "2026-09-21T10:00:00.000Z",
      "error": null,
      "is_finished": false,
      "query": "Who founded Linkup?",
      "status": "pending",
      "task_id": "tsk_8f2c1a",
      "type": "search",
      "updated_at": "2026-09-21T10:00:00.000Z",
      "url": null
    }
  ]
}

Start research

Start a deep research job: Linkup searches, reads and cross-checks many sources and writes a report. It takes 2 to 20 minutes and runs in the background, so follow this with a Wait step and 'Check research'. Costs $0.25 to $2.50 by size.

Inputs

QuestionquerytextRequired
What to look for, written as you would ask a person. A full question works better than keywords.
Sizereasoning_depthtext
How long Linkup may work on it. Bigger is more thorough, slower and dearer.One of: S (Small: 2-5 minutes, $0.25), M (Medium: 3-7 minutes, $0.50), L (Large: 5-10 minutes, $1.50), XL (Extra large: 10-20 minutes, $2.50). Default: M.
Kind of reportmodetext
What to produce. Linkup can pick from the question.One of: auto (Let Linkup decide), answer (A precise answer), investigate (A focused report on one subject), research (A broad report across many topics). Default: auto.
Fields to fillfieldslist
Leave empty for a written report. Name fields here to get them back as data instead, adding what each means after a colon.
JSON Schema (advanced)json_schematext
Instead of 'Fields to fill', paste a JSON Schema whose root is an object, for numbers, lists or nested fields. When set, it is used and 'Fields to fill' is ignored.
Only these sitesinclude_domainslist
Search only these sites, up to 100. Write each like example.com; a pasted address works too.
Never these sitesexclude_domainslist
Leave these sites out of the search. Write each like example.com.
Published afterfrom_datedate
Only use pages published on or after this day.
Published beforeto_datedate
Only use pages published on or before this day.

Outputs

answertext
The written report, once finished (answer format).
created_attext
When the job was started.
dataobject
The named fields, once finished, when fields were asked for.
errortext
Why the job failed, if it did.
is_finishedtrue/false
Whether the job has completed or failed.
querytext
The question that was researched.
research_idtext
Linkup's id for the job. Hand it to 'Check research'.
sourceslist
The pages the report drew on.
statustext
pending, processing, completed or failed.
succeededtrue/false
Whether the job completed with a result.
updated_attext
When the job last changed.
Example output
{
  "answer": null,
  "created_at": "2026-09-21T10:00:00.000Z",
  "data": null,
  "error": null,
  "is_finished": false,
  "query": "How is the European web-search API market changing?",
  "research_id": "res_4b1d9e",
  "sources": [],
  "status": "pending",
  "succeeded": false,
  "updated_at": "2026-09-21T10:05:12.000Z"
}

On this page