Skip to main content
POST
/
v1
/
extract
/extract
curl --request POST \
  --url https://api.linkup.so/v1/extract \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "q": "All engineering team members with their name, role, and profile page",
  "schema": {
    "properties": {
      "name": {
        "description": "Full name",
        "type": "string"
      },
      "profileUrl": {
        "format": "uri",
        "type": "string"
      },
      "role": {
        "type": "string"
      }
    },
    "required": [
      "name",
      "profileUrl"
    ],
    "type": "object"
  },
  "url": "https://example.com/team",
  "verifyUrls": true
}
'
{
  "createdAt": "2026-01-01T00:00:00.000Z",
  "error": "<string>",
  "id": "01234-abcd-56789",
  "status": "completed",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "input": {
    "q": "<string>",
    "url": "https://example.com/team",
    "schema": null,
    "verifyUrls": false
  },
  "output": {
    "creditsUsed": 1,
    "resultUrl": "<string>",
    "rowsReturned": 4503599627370495
  },
  "type": "<string>"
}

Get your API key

Create a Linkup account for free to get your API key.
This is a closed-beta, asynchronous endpoint — request access before calling it. It immediately returns the extract task identifier, before the task is completed. Use GET /v1/extract/:id to poll for the result, or GET /v1/extract to list all your extract tasks.
For an explanation of q, url, schema, and verifyUrls, see the Extract overview.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

[BETA] Input for an extract task. The extract task type is in beta; its behavior and response shape may change.

q
string
required

[BETA] The natural-language query describing which rows to extract and what each row should contain.

url
string<uri>
required

[BETA] The seed URL the extract task should start from.

Example:

"https://example.com/team"

schema
string<json>

[BETA] Optional JSON schema describing a single extracted row. When provided, every returned row must match this schema.

verifyUrls
boolean
default:false

[BETA] Defines whether URLs found in extracted rows should be checked for reachability after extraction. Defaults to false.

Response

Extract task created successfully.

[BETA] Extract task output. The extract task type is in beta; its behavior and response shape may change.

createdAt
string<date-time>
required

The date and time when the task was created.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Example:

"2026-01-01T00:00:00.000Z"

error
string | null
required

The error message if the task failed.

id
string
required

The unique identifier of the task.

Example:

"01234-abcd-56789"

status
enum<string>
required

The current status of the task.

Available options:
completed,
failed,
pending,
processing
Example:

"completed"

updatedAt
string<date-time>
required

The date and time when the task status was last updated.

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Example:

"2026-01-01T00:00:00.000Z"

input
object
required

[BETA] Input for an extract task. The extract task type is in beta; its behavior and response shape may change.

output
object
required

[BETA] Output for an extract task. The extracted rows are stored as an NDJSON file and exposed through a time-limited URL. The extract task type is in beta; its behavior and response shape may change.

type
string
required
Allowed value: "extract"