> ## Documentation Index
> Fetch the complete documentation index at: https://docs.linkup.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Extract Endpoint

> _Released: June 2026 (closed beta)_

We're introducing the new [**Extract**](/pages/documentation/endpoints/extract/overview) endpoint (`/extract`), a web data agent that turns a page into structured rows. Given a seed `url` and a natural-language query describing the rows you want, the agent extracts the matching records and returns them as a downloadable file.

Asynchronous lifecycle. Optional row `schema` and URL verification.

**Extract** is in closed beta and access is granted by request — [request access](mailto:contact@linkup.so?subject=Request%20access%20to%20%2Fextract%20beta) to try it.

### How to use

1. Send a `POST /extract` request with a seed `url` and a `q` describing which rows to extract. The endpoint immediately returns a task identifier and `status` of `"pending"`.
2. Poll `GET /extract/{id}` to retrieve a specific task, or `GET /extract` to list all your extract tasks.
3. While running, `status` is `"pending"` or `"processing"`. Once the task is `"completed"`, read `output.resultUrl` and download the rows. If `"failed"`, inspect `error`.

**Example Request**

```shell curl theme={"system"}
curl --request POST \
  --url https://api.linkup.so/v1/extract \
  --header 'Authorization: Bearer {{LINKUP_API_KEY}}' \
  --header 'Content-Type: application/json' \
  --data '{
  "q": "All engineering team members with their name, role, and profile page",
  "url": "https://example.com/team",
  "schema": {
    "type": "object",
    "properties": {
      "name": { "type": "string" },
      "role": { "type": "string" },
      "profileUrl": { "type": "string", "format": "uri" }
    },
    "required": ["name", "profileUrl"]
  },
  "verifyUrls": true
}'
```

### Parameters

| Parameter    | Description                                                                                              |
| ------------ | -------------------------------------------------------------------------------------------------------- |
| `q`          | Natural-language query describing which rows to extract and what each row should contain. Required.      |
| `url`        | The seed URL the extract task starts from. Required.                                                     |
| `schema`     | Optional JSON schema describing a single extracted row. When provided, every returned row must match it. |
| `verifyUrls` | Whether URLs found in extracted rows are checked for reachability after extraction. Defaults to `false`. |

### Output

The extracted rows are **not** returned inline. Once `"completed"`, `output` contains a `resultUrl` — a download link to a newline-delimited JSON (NDJSON) file, one row per line — valid for 24 hours. It also reports `rowsReturned` and `creditsUsed`, the credits used by the task.

Read the full reference: [`POST /extract`](/pages/documentation/endpoints/extract/post) · [`GET /extract`](/pages/documentation/endpoints/extract/list) · [`GET /extract/:id`](/pages/documentation/endpoints/extract/get). For operational guidance, see [extract best practices](/pages/documentation/endpoints/extract/best-practices).
