Extract is in closed beta. Access is limited to a small group of users while we refine it — request access. Parameters, behavior, and response shape may change.
url and a
natural-language description of the rows you want, it extracts the matching
records and returns them as structured rows.
Use cases include:
- turning a listing page (team, catalog, directory) into a table of records,
- pulling repeated entities (people, products, jobs) with consistent fields, and
- collecting links from a page and verifying they resolve.
url you provide, extracts the rows described by
q, and writes the result to a downloadable NDJSON file.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
q | string | (required) | Natural-language query describing which rows to extract and what each row should contain. |
url | string | (required) | The seed URL the extract task starts from. |
schema | object | null | JSON schema describing a single extracted row. When provided, every returned row must match it. |
verifyUrls | boolean | false | Whether URLs found in extracted rows are checked for reachability after extraction. |
The schema parameter
When schema is omitted, the agent infers the shape of each row from q
and from the data structure on the website.
Pass an explicit schema to pin the fields and types of every row. The
schema describes one row — the agent applies it to each record it
extracts. For example, to extract one row per team member:
The verifyUrls parameter
When verifyUrls is true, any URL found in an extracted row is checked
for reachability after extraction. This adds latency but filters out dead
links. Leave it false when you only need the raw extracted values.
Output
Once the task is"completed", output holds a link to a newline-delimited
JSON (NDJSON) file — one extracted row per line — rather than the rows
themselves:
| Field | Type | Description |
|---|---|---|
creditsUsed | number | Credits used by this extract task. |
resultUrl | string | Download link for the extracted rows as an NDJSON file. The rows live here, not in the API response. Valid for 24 hours. |
rowsReturned | integer | Number of rows in the downloadable file. |
GET /v1/extract/:id until status is "completed",
read output.resultUrl, then make a separate GET request to that URL to
download and parse the NDJSON file (one JSON object per line).
Pricing
Extract uses variable pricing: cost scales with crawl complexity — page size, number of rows extracted, pagination depth, and whetherverifyUrls is
enabled. Most completed tasks fall in the $2–10 range. The exact charge
appears as creditsUsed in the task output once status is "completed".
No credit is deducted for failed tasks.
A minimum account balance of $10 is required to submit an extract task.
See pricing for billing details.
Async lifecycle
POST /v1/extract returns immediately with a task identifier and
status set to "pending". Subsequent calls to GET /v1/extract/:id return the
current state until status is "completed" or "failed".
GET /v1/extract is also available to list all extract tasks for the
account. See the list reference.
Example
Get your API key
Create a Linkup account for free to get your API key.
POST /v1/extract returns the task envelope immediately, with
status set to "pending" and output set to null. GET /v1/extract/{id} returns the
same envelope; once status is "completed", output is populated:
schema (or the
shape inferred from q and the data structure on the website):
Next
Best practices
Query phrasing, schema design, and polling.
For AI agents
Tool definition and integration prompt.
API reference
Full parameter spec and response schema.