# List Saved Searches

> The workspace's saved Lead Finder searches.

Requires an API key with the `read` scope.

Each saved search carries its filters. Pass `filters` as the body of [Search People](/api-reference/lead-finder/search-people) or [Count People](/api-reference/lead-finder/count-people) (or the company equivalents when `kind` is `companies`) to run it again.

## Response

<ResponseField name="data" type="object">
  Result.

  <Expandable title="data">
    <ResponseField name="savedSearches" type="array">
      Saved searches.

      <Expandable title="savedSearches">
        <ResponseField name="id" type="string">Saved search identifier.</ResponseField>
        <ResponseField name="name" type="string">Name.</ResponseField>
        <ResponseField name="kind" type="string">`people` or `companies`.</ResponseField>
        <ResponseField name="filters" type="object">The stored filter object.</ResponseField>
        <ResponseField name="lastRunAt" type="string">ISO 8601 timestamp of the last run, or `null`.</ResponseField>
        <ResponseField name="lastTotal" type="integer">Result count from the last run, or `null`.</ResponseField>
        <ResponseField name="alertEnabled" type="boolean">Whether alerts are on for this search.</ResponseField>
        <ResponseField name="createdAt" type="string">ISO 8601 timestamp.</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
```bash cURL
curl -X GET "https://api.foxreach.io/api/v1/lead-finder/saved-searches" \
  -H "X-API-Key: otr_your_key"
```

```python Python SDK (beta)
from foxreach import FoxReach

client = FoxReach(api_key="otr_your_key")
searches = client.lead_finder.list_saved_searches()
```

```typescript TypeScript SDK (beta)
import { FoxReach } from "foxreach";

const client = new FoxReach({ apiKey: "otr_your_key" });
const searches = await client.leadFinder.savedSearches();
```
</RequestExample>

<ResponseExample>
```json
{
  "data": {
    "savedSearches": [
      {
        "id": "ss_abc123",
        "name": "Austin CTOs",
        "kind": "people",
        "filters": { "jobTitles": ["CTO"], "locations": ["Austin"] },
        "lastRunAt": "2026-10-28T16:30:00",
        "lastTotal": 312,
        "alertEnabled": false,
        "createdAt": "2026-10-20T09:00:00"
      }
    ]
  }
}
```
</ResponseExample>

## Errors

| Status | Description |
|--------|-------------|
| `401` | Missing, invalid, revoked or expired API key |
| `403` | API key does not have the required scope: `read` |
| `404` | `Lead Finder is not enabled` while Lead Finder is switched off on this environment |
| `503` | `Lead Finder is not configured` when it is enabled but has no data provider key |

## Rate Limit

- **100 requests per minute, per API key.** Fixed 60-second window.
- Every response includes `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` (unix epoch seconds).
- A `429` response includes a `Retry-After` header (seconds until the bucket resets).

For client-side patterns (`Retry-After`, exponential backoff, monitoring `X-RateLimit-Remaining`), see [Rate Limiting](/rate-limiting).
