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
| Action | What it does |
|---|---|
| Answer a question | Ask a question and get a written answer from the web, with the pages it came from. |
| 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. |
| Check research | See whether a research job has finished, and read its report or fields once it has. |
| Check your Linkup credit | See how much credit is left on the Linkup account, in US dollars. |
| 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. |
| List research | List the research jobs on the account, newest first. |
| List tasks | List background tasks, newest first, and see how many are running against the account's limit. |
| Read a page | Read one web page or PDF and get its content as clean text (Markdown), ready for an AI step. |
| Search for structured data | Search the web and get the answer back as named fields, ready for a spreadsheet row or a CRM record. |
| Search the web | Search the web and get back the most relevant pages, each with the passage that answers the question. |
| Start a batch of page reads | Queue up to 100 pages to read in the background. |
| Start a batch of searches | Queue up to 100 searches to run in the background, billed as ordinary searches. |
| Start research | Start 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
- Question
querytextRequired - What to look for, written as you would ask a person. A full question works better than keywords.
- Search depth
depthtext - 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 text
include_inline_citationstrue/false - Put numbered source references inside the answer.Default:
false. - Most results
max_resultsnumber - The most pages to use. Leave empty to let Linkup decide.At least 1.
- Only these sites
include_domainslist - Search only these sites, up to 100. Write each like example.com; a pasted address works too.
- Never these sites
exclude_domainslist - Leave these sites out of the search. Write each like example.com.
- Published after
from_datedate - Only use pages published on or after this day.
- Published before
to_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
- Task
task_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 job
research_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 address
urltextRequired - The address of the page or PDF to read.
- Fields to fill
fieldslist - 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.
- Instructions
instructionstext - Rules the fields cannot express, such as 'prices in US dollars'. Up to 4,000 characters.
- Run JavaScript
render_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 mode
modetext - 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
- Page
pagenumber - Which page of the list to return, starting at 1.At least 1. Default:
1. - Per page
page_sizenumber - How many to return, up to 100.From 1 to 100. Default:
10. - Sort by
sort_bytext - Which date to sort on.One of:
createdAt(When it was started),updatedAt(When it last changed). Default:createdAt. - Order
ordertext - 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
- Kinds
typeslist - Only these kinds of task. Leave empty for all.One or more of:
search(Searches),fetch(Page reads),research. - States
statuseslist - Only tasks in these states. Leave empty for all.One or more of:
pending(Waiting to start),processing(Running),completed(Finished),failed. - Page
pagenumber - Which page of the list to return, starting at 1.At least 1. Default:
1. - Per page
page_sizenumber - How many to return, up to 100.From 1 to 100. Default:
10. - Sort by
sort_bytext - Which date to sort on.One of:
createdAt(When it was started),updatedAt(When it last changed). Default:createdAt. - Order
ordertext - 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 address
urltextRequired - The address of the page or PDF to read.
- Run JavaScript
render_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 mode
modetext - 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 images
extract_imagestrue/false - Also return every image on the page. Slower.Default:
false. - Include the raw source
include_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
- Question
querytextRequired - What to look for, written as you would ask a person. A full question works better than keywords.
- Fields to fill
fieldslist - 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 sources
include_sourcestrue/false - Also return the pages the fields were taken from.Default:
false. - Search depth
depthtext - 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 results
max_resultsnumber - The most pages to use. Leave empty to let Linkup decide.At least 1.
- Only these sites
include_domainslist - Search only these sites, up to 100. Write each like example.com; a pasted address works too.
- Never these sites
exclude_domainslist - Leave these sites out of the search. Write each like example.com.
- Published after
from_datedate - Only use pages published on or after this day.
- Published before
to_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
- Question
querytextRequired - What to look for, written as you would ask a person. A full question works better than keywords.
- Search depth
depthtext - 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 results
max_resultsnumber - The most pages to use. Leave empty to let Linkup decide.At least 1.
- Only these sites
include_domainslist - Search only these sites, up to 100. Write each like example.com; a pasted address works too.
- Never these sites
exclude_domainslist - Leave these sites out of the search. Write each like example.com.
- Published after
from_datedate - Only use pages published on or after this day.
- Published before
to_datedate - Only use pages published on or before this day.
- Include images
include_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 addresses
urlslistRequired - The pages to read, one per entry.
- Run JavaScript
render_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 mode
modetext - 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 images
extract_imagestrue/false - Also return every image on the page. Slower.Default:
false. - Include the raw source
include_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
- Questions
querieslistRequired - The searches to run, one per entry.
- Bring back
outputtext - What each search should return.One of:
searchResults(Search results),sourcedAnswer(A written answer with sources). Default:searchResults. - Search depth
depthtext - 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 results
max_resultsnumber - The most pages to use. Leave empty to let Linkup decide.At least 1.
- Only these sites
include_domainslist - Search only these sites, up to 100. Write each like example.com; a pasted address works too.
- Never these sites
exclude_domainslist - Leave these sites out of the search. Write each like example.com.
- Published after
from_datedate - Only use pages published on or after this day.
- Published before
to_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
- Question
querytextRequired - What to look for, written as you would ask a person. A full question works better than keywords.
- Size
reasoning_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 report
modetext - 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 fill
fieldslist - 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 sites
include_domainslist - Search only these sites, up to 100. Write each like example.com; a pasted address works too.
- Never these sites
exclude_domainslist - Leave these sites out of the search. Write each like example.com.
- Published after
from_datedate - Only use pages published on or after this day.
- Published before
to_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"
}