# List Projects

Source: https://www.ranked.ai/developers/api-reference/projects/list

`GET https://app.ranked.ai/api/v1/projects`

> List all SEO projects for the authenticated user

Returns active SEO projects owned by the API key holder. Only projects with `trial`, `active`, or `past_due` status are included.

Every project carries a `productMode`:

| Value | Meaning |
|-------|---------|
| `managed` | Ranked AI's team does the work (content, publishing, optimization, outreach, Google Ads). The full software suite is included in the service plan and never billed separately. |
| `software` | Self-serve SEO Software: the account runs it themselves. Rank tracking, AI visibility prompts, audits, backlinks, heatmaps, integrations and reports, billed as prepaid keyword and prompt blocks. No content pipeline, so the content endpoints return nothing for these projects. |

### Query parameters

- `limit` (query, number, default 50): Maximum number of projects to return (max: 500)

- `offset` (query, number, default 0): Number of projects to skip for pagination

- `product_mode` (query, string): Only return one kind of project: `managed` or `software`. Omit for both.

**Request**

```bash cURL
curl "https://app.ranked.ai/api/v1/projects?product_mode=managed" \
  -H "Authorization: Bearer rk_live_your_api_key"
```

```javascript JavaScript
const response = await fetch('https://app.ranked.ai/api/v1/projects', {
  headers: { 'Authorization': 'Bearer rk_live_your_api_key' }
});
const { data } = await response.json();

for (const project of data) {
  console.log(`${project.name} (${project.productMode}): ${project.id}`);
}
```

```python Python
import requests

response = requests.get(
    'https://app.ranked.ai/api/v1/projects',
    headers={'Authorization': 'Bearer rk_live_your_api_key'},
    params={'product_mode': 'software'},
)
for project in response.json()['data']:
    print(f"{project['name']} ({project['productMode']}): {project['id']}")
```

**Response**

```json 200
{
  "success": true,
  "data": [
    {
      "id": "40596405-c27c-4dfc-89e4-142c87846d66",
      "name": "Sioux City Tree Co",
      "status": "active",
      "serviceType": "seo",
      "productMode": "managed",
      "websiteUrl": "https://siouxcitytreeco.com",
      "createdAt": "2025-08-28T08:47:05.816Z"
    },
    {
      "id": "8c1f2a4e-5b7d-4c3e-9a1b-2d3e4f5a6b7c",
      "name": "acme.com",
      "status": "active",
      "serviceType": "seo",
      "productMode": "software",
      "websiteUrl": "https://acme.com",
      "createdAt": "2026-09-14T10:12:44.102Z"
    }
  ],
  "meta": {
    "pagination": {
      "total": 2,
      "limit": 50,
      "offset": 0,
      "has_more": false
    }
  }
}
```

### Response fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Project UUID, used in every `/projects/{projectId}/...` path |
| `name` | string | Project name |
| `status` | string | `trial`, `active` or `past_due` |
| `serviceType` | string | Always `seo` for API-visible projects |
| `productMode` | string | `managed` or `software` (see above) |
| `websiteUrl` | string or null | The tracked website |
| `createdAt` | string | ISO 8601 creation time |

> **Info:** Need a new project? Software projects can be created with [Create Project](https://www.ranked.ai/developers/api-reference/projects/create). Managed-service projects start from the dashboard's Add Project flow, where the plan and free trial are set up.
