# Read task results
Read one page of saved leads. Keep the filters and fields unchanged when you follow next_cursor.
**Request:** `GET https://leadsagent.io/api/v1/tasks/{id}/results?fields=business_name,email&limit=50`
**Access:** leads:read.
**Response:** data contains rows, counts, has_more and next_cursor. A page can contain fewer rows to stay within the 256 KiB REST response budget.

## Parameters

- `id` (UUID): Required. The task ID.
- `fields` (comma-separated strings): Optional. Defaults to business_name, category, address, phone, email, website, rating, reviews. Request 1–30 documented fields.
- `limit` (integer): Optional. 1–1,000 rows; default 50.
- `cursor` (string): Optional. Use next_cursor from the previous page.
- `has_email, has_website, has_phone` (boolean): Optional row filters. Keep the same values while paging.

## cURL

```sh
curl --fail-with-body --silent --show-error --request GET "$LEADSAGENT_API_BASE/tasks/$TASK_ID/results?fields=business_name,email&limit=50" -H "X-API-Key: $LEADSAGENT_API_KEY"
```

## Example response

```
{
  "request_id": "6c4d0c26-8aa3-44b0-a50a-51b832b29465",
  "status": "success",
  "data": {
    "task_id": "73bd1ccb-1a44-4b41-84da-4ea7a5ad03f4",
    "rows": [
      {
        "business_name": "Austin Dental",
        "email": "hello@example.test"
      }
    ],
    "total_count": 1,
    "matching_count": 1,
    "returned_count": 1,
    "has_more": false,
    "next_cursor": null
  },
  "meta": {}
}
```

## Notes

- Use export-results when you need every row in one file.
- A cursor is bound to the task, list version, fields and filters.

[Open the full API reference](https://leadsagent.io/documentation/api-reference)
