From f78bc51fb098210bf12eb7ced7dcae489badb8d5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Olender?=
<92638966+TC-MO@users.noreply.github.com>
Date: Mon, 29 Jun 2026 11:31:09 +0200
Subject: [PATCH 01/20] feat: restructure docs into the v3 information
architecture
Relocate sections to match the v3 IA:
- console pages fold into Account (/account/*), console index -> /account/console
- collaboration folds under Account (/account/collaboration/*),
organization_account renamed to organization
- schedules and monitoring move under Actors > running (/actors/running/*)
- schedule and monitoring images move alongside their pages
Add the Account hub (/account) and the opinionated Get Started section
(/get-started: locally, web-ide, build-with-ai, develop-ai-agents).
---
.../platform/{console => account}/billing.md | 2 +-
.../collaboration/access_rights.md | 4 +-
.../collaboration/general-resource-access.md | 4 +-
.../account-setting.png | Bin
.../copy-record-url-kv-store.png | Bin
.../copy-shareable-link.png | Bin
.../creating-actor-issue.png | Bin
.../share-resource-dialog.png | Bin
.../organizations/configure-permissions.png | Bin
.../images/organizations/integrations.png | Bin
.../images/organizations/members.png | Bin
.../images/organizations/my-organizations.png | Bin
.../images/organizations/roles.png | Bin
.../organizations/switch-to-organization.png | Bin
.../collaboration/images/share-actor.svg | 0
.../{ => account}/collaboration/index.md | 18 +-
.../collaboration/list_of_permissions.md | 18 +-
.../collaboration/organization}/how_to_use.md | 4 +-
.../collaboration/organization}/index.md | 4 +-
.../collaboration/organization}/setup.md | 4 +-
.../{console/index.md => account/console.md} | 26 +--
.../images/console-billing-current-period.png | Bin
...ole-billing-historical-usage-by-actors.png | Bin
.../console-billing-historical-usage.png | Bin
.../images/console-billing-invoices.png | Bin
.../images/console-billing-limits.png | Bin
.../images/console-billing-pricing.png | Bin
.../images/console-billing-subscription.png | Bin
.../images/two-factor-authentication.svg | 0
sources/platform/account/index.mdx | 40 ++++
.../platform/{console => account}/settings.md | 6 +-
.../two-factor-authentication.md | 2 +-
.../running}/images/schedules-actor-input.png | Bin
.../images/schedules-bulk-notifications.png | Bin
.../running}/images/schedules-overview.png | Bin
.../running}/images/schedules-setup-tool.png | Bin
.../running}/images/schedules-task-input.png | Bin
.../running}/monitoring/images/alerts.png | Bin
.../monitoring/images/daily-run-statuses.png | Bin
.../monitoring/images/email-notification.png | Bin
.../monitoring/images/in-app-notification.png | Bin
.../monitoring/images/metric-options.png | Bin
.../running}/monitoring/images/monitoring.png | Bin
.../monitoring/images/notifications.png | Bin
.../images/run-statistics-chart.png | Bin
.../{ => actors/running}/monitoring/index.md | 6 +-
.../{ => actors/running}/schedules.md | 10 +-
sources/platform/get-started/build-with-ai.md | 178 ++++++++++++++++++
.../platform/get-started/develop-ai-agents.md | 160 ++++++++++++++++
.../images/actor-create-button.png | Bin 0 -> 108064 bytes
.../images/actor-create-templates.png | Bin 0 -> 288409 bytes
.../get-started/images/actor-create.gif | Bin 0 -> 167521 bytes
.../get-started/images/actor-input.png | Bin 0 -> 123946 bytes
.../get-started/images/actor-local-code.png | Bin 0 -> 190661 bytes
.../get-started/images/actor-local-run.png | Bin 0 -> 207491 bytes
.../get-started/images/actor-pull.png | Bin 0 -> 83474 bytes
.../get-started/images/actor-source-code.png | Bin 0 -> 742768 bytes
.../images/build-actor-in-web-ide.svg | 144 ++++++++++++++
.../platform/get-started/images/claude.png | Bin 0 -> 142581 bytes
.../get-started/images/copy-for-ai.png | Bin 0 -> 74301 bytes
.../images/copy-for-llm-button.svg | 144 ++++++++++++++
.../platform/get-started/images/cursor.png | Bin 0 -> 104076 bytes
.../get-started/images/github-copilot.png | Bin 0 -> 115440 bytes
.../platform/get-started/images/windsurf.png | Bin 0 -> 134014 bytes
sources/platform/get-started/index.mdx | 41 ++++
sources/platform/get-started/locally.md | 150 +++++++++++++++
sources/platform/get-started/web-ide.md | 142 ++++++++++++++
67 files changed, 1053 insertions(+), 54 deletions(-)
rename sources/platform/{console => account}/billing.md (99%)
rename sources/platform/{ => account}/collaboration/access_rights.md (76%)
rename sources/platform/{ => account}/collaboration/general-resource-access.md (99%)
rename sources/platform/{ => account}/collaboration/images/general-resouce-access/account-setting.png (100%)
rename sources/platform/{ => account}/collaboration/images/general-resouce-access/copy-record-url-kv-store.png (100%)
rename sources/platform/{ => account}/collaboration/images/general-resouce-access/copy-shareable-link.png (100%)
rename sources/platform/{ => account}/collaboration/images/general-resouce-access/creating-actor-issue.png (100%)
rename sources/platform/{ => account}/collaboration/images/general-resouce-access/share-resource-dialog.png (100%)
rename sources/platform/{ => account}/collaboration/images/organizations/configure-permissions.png (100%)
rename sources/platform/{ => account}/collaboration/images/organizations/integrations.png (100%)
rename sources/platform/{ => account}/collaboration/images/organizations/members.png (100%)
rename sources/platform/{ => account}/collaboration/images/organizations/my-organizations.png (100%)
rename sources/platform/{ => account}/collaboration/images/organizations/roles.png (100%)
rename sources/platform/{ => account}/collaboration/images/organizations/switch-to-organization.png (100%)
rename sources/platform/{ => account}/collaboration/images/share-actor.svg (100%)
rename sources/platform/{ => account}/collaboration/index.md (72%)
rename sources/platform/{ => account}/collaboration/list_of_permissions.md (85%)
rename sources/platform/{collaboration/organization_account => account/collaboration/organization}/how_to_use.md (93%)
rename sources/platform/{collaboration/organization_account => account/collaboration/organization}/index.md (92%)
rename sources/platform/{collaboration/organization_account => account/collaboration/organization}/setup.md (87%)
rename sources/platform/{console/index.md => account/console.md} (71%)
rename sources/platform/{console => account}/images/console-billing-current-period.png (100%)
rename sources/platform/{console => account}/images/console-billing-historical-usage-by-actors.png (100%)
rename sources/platform/{console => account}/images/console-billing-historical-usage.png (100%)
rename sources/platform/{console => account}/images/console-billing-invoices.png (100%)
rename sources/platform/{console => account}/images/console-billing-limits.png (100%)
rename sources/platform/{console => account}/images/console-billing-pricing.png (100%)
rename sources/platform/{console => account}/images/console-billing-subscription.png (100%)
rename sources/platform/{console => account}/images/two-factor-authentication.svg (100%)
create mode 100644 sources/platform/account/index.mdx
rename sources/platform/{console => account}/settings.md (96%)
rename sources/platform/{console => account}/two-factor-authentication.md (99%)
rename sources/platform/{ => actors/running}/images/schedules-actor-input.png (100%)
rename sources/platform/{ => actors/running}/images/schedules-bulk-notifications.png (100%)
rename sources/platform/{ => actors/running}/images/schedules-overview.png (100%)
rename sources/platform/{ => actors/running}/images/schedules-setup-tool.png (100%)
rename sources/platform/{ => actors/running}/images/schedules-task-input.png (100%)
rename sources/platform/{ => actors/running}/monitoring/images/alerts.png (100%)
rename sources/platform/{ => actors/running}/monitoring/images/daily-run-statuses.png (100%)
rename sources/platform/{ => actors/running}/monitoring/images/email-notification.png (100%)
rename sources/platform/{ => actors/running}/monitoring/images/in-app-notification.png (100%)
rename sources/platform/{ => actors/running}/monitoring/images/metric-options.png (100%)
rename sources/platform/{ => actors/running}/monitoring/images/monitoring.png (100%)
rename sources/platform/{ => actors/running}/monitoring/images/notifications.png (100%)
rename sources/platform/{ => actors/running}/monitoring/images/run-statistics-chart.png (100%)
rename sources/platform/{ => actors/running}/monitoring/index.md (90%)
rename sources/platform/{ => actors/running}/schedules.md (92%)
create mode 100644 sources/platform/get-started/build-with-ai.md
create mode 100644 sources/platform/get-started/develop-ai-agents.md
create mode 100644 sources/platform/get-started/images/actor-create-button.png
create mode 100644 sources/platform/get-started/images/actor-create-templates.png
create mode 100644 sources/platform/get-started/images/actor-create.gif
create mode 100644 sources/platform/get-started/images/actor-input.png
create mode 100644 sources/platform/get-started/images/actor-local-code.png
create mode 100644 sources/platform/get-started/images/actor-local-run.png
create mode 100644 sources/platform/get-started/images/actor-pull.png
create mode 100644 sources/platform/get-started/images/actor-source-code.png
create mode 100644 sources/platform/get-started/images/build-actor-in-web-ide.svg
create mode 100644 sources/platform/get-started/images/claude.png
create mode 100644 sources/platform/get-started/images/copy-for-ai.png
create mode 100644 sources/platform/get-started/images/copy-for-llm-button.svg
create mode 100644 sources/platform/get-started/images/cursor.png
create mode 100644 sources/platform/get-started/images/github-copilot.png
create mode 100644 sources/platform/get-started/images/windsurf.png
create mode 100644 sources/platform/get-started/index.mdx
create mode 100644 sources/platform/get-started/locally.md
create mode 100644 sources/platform/get-started/web-ide.md
diff --git a/sources/platform/console/billing.md b/sources/platform/account/billing.md
similarity index 99%
rename from sources/platform/console/billing.md
rename to sources/platform/account/billing.md
index 640046b5b2..9ab311f5a2 100644
--- a/sources/platform/console/billing.md
+++ b/sources/platform/account/billing.md
@@ -3,7 +3,7 @@ title: Billing
description: View invoices, track current billing cycle usage, manage subscriptions and limits, and review historical usage from the Billings page in Console.
sidebar_position: 3
category: platform
-slug: /console/billing
+slug: /account/billing
---
## Current period
diff --git a/sources/platform/collaboration/access_rights.md b/sources/platform/account/collaboration/access_rights.md
similarity index 76%
rename from sources/platform/collaboration/access_rights.md
rename to sources/platform/account/collaboration/access_rights.md
index 2b0df3c6ed..78f2b0a961 100644
--- a/sources/platform/collaboration/access_rights.md
+++ b/sources/platform/account/collaboration/access_rights.md
@@ -3,12 +3,12 @@ title: Access rights
description: Manage permissions for your private resources such as Actors, Actor runs, and storages. Allow other users to read, run, modify, or build new versions.
sidebar_position: 12
category: platform
-slug: /collaboration/access-rights
+slug: /account/collaboration/access-rights
---
You can securely share your resources with others by using a granular permissions system. Such resources include Actors, tasks, key-value stores, datasets, and request queues.
-For example, you can let your colleague run an [Actor](../actors/index.mdx) or view a [dataset](../storage/dataset.md) but not modify it. You can also grant permission to update an Actor and build a new version. [Storages](../storage/index.md) are sharable in the same way as a **read** permission or a combination of both **read** and **write** permissions.
+For example, you can let your colleague run an [Actor](/actors) or view a [dataset](/storage/dataset) but not modify it. You can also grant permission to update an Actor and build a new version. [Storages](/storage) are sharable in the same way as a **read** permission or a combination of both **read** and **write** permissions.
## Grant access to resources
diff --git a/sources/platform/collaboration/general-resource-access.md b/sources/platform/account/collaboration/general-resource-access.md
similarity index 99%
rename from sources/platform/collaboration/general-resource-access.md
rename to sources/platform/account/collaboration/general-resource-access.md
index 78d321fce9..208e4a12eb 100644
--- a/sources/platform/collaboration/general-resource-access.md
+++ b/sources/platform/account/collaboration/general-resource-access.md
@@ -3,7 +3,7 @@ title: General resource access
description: Control how Apify resources are shared. Set default access to open ID-based access or restricted, and manage link sharing and pre-signed URLs.
sidebar_position: 1
category: platform
-slug: /collaboration/general-resource-access
+slug: /account/collaboration/general-resource-access
---
Some resources, like storages, Actor runs or Actor builds, can be shared simply by sending their unique resource ID or Console link and the recipient can then view the data in Console or fetch it via API without needing an API token. This is very useful for ad-hoc collaboration, integrating third party tools that connect to data in your Apify account or quick prototypes.
@@ -305,7 +305,7 @@ const recordUrl = await storeClient.getRecordPublicUrl(recordKey);
await Actor.pushData({ recordUrl });
```
-To learn more about generating pre-signed URLs, refer to the section [Sharing restricted resources with pre-signed URLs](/platform/collaboration/general-resource-access#pre-signed-urls).
+To learn more about generating pre-signed URLs, refer to the section [Sharing restricted resources with pre-signed URLs](/account/collaboration/general-resource-access#pre-signed-urls).
:::note Using Console URLs
diff --git a/sources/platform/collaboration/images/general-resouce-access/account-setting.png b/sources/platform/account/collaboration/images/general-resouce-access/account-setting.png
similarity index 100%
rename from sources/platform/collaboration/images/general-resouce-access/account-setting.png
rename to sources/platform/account/collaboration/images/general-resouce-access/account-setting.png
diff --git a/sources/platform/collaboration/images/general-resouce-access/copy-record-url-kv-store.png b/sources/platform/account/collaboration/images/general-resouce-access/copy-record-url-kv-store.png
similarity index 100%
rename from sources/platform/collaboration/images/general-resouce-access/copy-record-url-kv-store.png
rename to sources/platform/account/collaboration/images/general-resouce-access/copy-record-url-kv-store.png
diff --git a/sources/platform/collaboration/images/general-resouce-access/copy-shareable-link.png b/sources/platform/account/collaboration/images/general-resouce-access/copy-shareable-link.png
similarity index 100%
rename from sources/platform/collaboration/images/general-resouce-access/copy-shareable-link.png
rename to sources/platform/account/collaboration/images/general-resouce-access/copy-shareable-link.png
diff --git a/sources/platform/collaboration/images/general-resouce-access/creating-actor-issue.png b/sources/platform/account/collaboration/images/general-resouce-access/creating-actor-issue.png
similarity index 100%
rename from sources/platform/collaboration/images/general-resouce-access/creating-actor-issue.png
rename to sources/platform/account/collaboration/images/general-resouce-access/creating-actor-issue.png
diff --git a/sources/platform/collaboration/images/general-resouce-access/share-resource-dialog.png b/sources/platform/account/collaboration/images/general-resouce-access/share-resource-dialog.png
similarity index 100%
rename from sources/platform/collaboration/images/general-resouce-access/share-resource-dialog.png
rename to sources/platform/account/collaboration/images/general-resouce-access/share-resource-dialog.png
diff --git a/sources/platform/collaboration/images/organizations/configure-permissions.png b/sources/platform/account/collaboration/images/organizations/configure-permissions.png
similarity index 100%
rename from sources/platform/collaboration/images/organizations/configure-permissions.png
rename to sources/platform/account/collaboration/images/organizations/configure-permissions.png
diff --git a/sources/platform/collaboration/images/organizations/integrations.png b/sources/platform/account/collaboration/images/organizations/integrations.png
similarity index 100%
rename from sources/platform/collaboration/images/organizations/integrations.png
rename to sources/platform/account/collaboration/images/organizations/integrations.png
diff --git a/sources/platform/collaboration/images/organizations/members.png b/sources/platform/account/collaboration/images/organizations/members.png
similarity index 100%
rename from sources/platform/collaboration/images/organizations/members.png
rename to sources/platform/account/collaboration/images/organizations/members.png
diff --git a/sources/platform/collaboration/images/organizations/my-organizations.png b/sources/platform/account/collaboration/images/organizations/my-organizations.png
similarity index 100%
rename from sources/platform/collaboration/images/organizations/my-organizations.png
rename to sources/platform/account/collaboration/images/organizations/my-organizations.png
diff --git a/sources/platform/collaboration/images/organizations/roles.png b/sources/platform/account/collaboration/images/organizations/roles.png
similarity index 100%
rename from sources/platform/collaboration/images/organizations/roles.png
rename to sources/platform/account/collaboration/images/organizations/roles.png
diff --git a/sources/platform/collaboration/images/organizations/switch-to-organization.png b/sources/platform/account/collaboration/images/organizations/switch-to-organization.png
similarity index 100%
rename from sources/platform/collaboration/images/organizations/switch-to-organization.png
rename to sources/platform/account/collaboration/images/organizations/switch-to-organization.png
diff --git a/sources/platform/collaboration/images/share-actor.svg b/sources/platform/account/collaboration/images/share-actor.svg
similarity index 100%
rename from sources/platform/collaboration/images/share-actor.svg
rename to sources/platform/account/collaboration/images/share-actor.svg
diff --git a/sources/platform/collaboration/index.md b/sources/platform/account/collaboration/index.md
similarity index 72%
rename from sources/platform/collaboration/index.md
rename to sources/platform/account/collaboration/index.md
index 3c7b4c4272..974070a924 100644
--- a/sources/platform/collaboration/index.md
+++ b/sources/platform/account/collaboration/index.md
@@ -3,7 +3,7 @@ title: Collaboration
description: Learn how to collaborate with other users and manage permissions for organizations or private resources such as Actors, Actor runs, and storages.
sidebar_position: 12
category: platform
-slug: /collaboration
+slug: /account/collaboration
---
Apify was built from the ground up as a collaborative platform. Whether you’re publishing your Actor in Apify Store or sharing a dataset with a teammate, collaboration is deeply integrated into how Apify works. You can share your resources (like Actors, runs, or storages) with others, manage permissions, or invite collaborators to your organization. By default, each system resource you create is only available to you, the owner. However, you can grant access to other users, making it easy to collaborate effectively and securely.
@@ -11,8 +11,8 @@ Apify was built from the ground up as a collaborative platform. Whether you’re
While most resources can be shared by assigning permissions (see [Access Rights](./access_rights.md)), some resources can also be shared simply by using their unique links or IDs. There are two types of resources in terms of sharing:
- _Resources that require explicit access by default:_
- - [Actors](../actors/running/index.md), [tasks](../actors/running/tasks.md)
- - Can be shared only by inviting collaborators using [Access Rights](./access_rights.md)) or using [Organization Accounts](./organization_account/index.md)
+ - [Actors](/actors/running), [tasks](/actors/running/tasks)
+ - Can be shared only by inviting collaborators using [Access Rights](./access_rights.md)) or using [Organization Accounts](/account/collaboration/organization)
- _Resources supporting both explicit access and link sharing:_
- Actor runs, Actor builds and storage resources (datasets, key-value stores, request queues)
- Can be shared by inviting collaborators or simply by sharing a unique direct link
@@ -21,19 +21,19 @@ You can control access to your resources in four ways:
diff --git a/sources/platform/collaboration/list_of_permissions.md b/sources/platform/account/collaboration/list_of_permissions.md
similarity index 85%
rename from sources/platform/collaboration/list_of_permissions.md
rename to sources/platform/account/collaboration/list_of_permissions.md
index 02a6ed1e54..ea12f4ba54 100644
--- a/sources/platform/collaboration/list_of_permissions.md
+++ b/sources/platform/account/collaboration/list_of_permissions.md
@@ -2,14 +2,14 @@
title: List of permissions
description: Learn about the access rights you can grant to other users. See a list of all access options for Apify resources such as Actors, Actor runs/tasks and storage.
sidebar_position: 12.2
-slug: /collaboration/list-of-permissions
+slug: /account/collaboration/list-of-permissions
---
This document contains all the access options that can be granted to resources on the Apify platform.
## Actors
-To learn about Apify Actors, check out the [documentation](../actors/index.mdx).
+To learn about Apify Actors, check out the [documentation](/actors).
### Actor
@@ -30,11 +30,11 @@ To learn about Apify Actors, check out the [documentation](../actors/index.mdx).
| View runs | View a list of Actor task runs and their details. |
| Manage access rights | Manage Actor task access rights. |
-To learn about Actor tasks, see the [documentation](../actors/running/tasks.md).
+To learn about Actor tasks, see the [documentation](/actors/running/tasks).
## Storage
-For more information about Storage, see its [documentation](../storage/index.md).
+For more information about Storage, see its [documentation](/storage).
### Dataset
@@ -44,7 +44,7 @@ For more information about Storage, see its [documentation](../storage/index.md)
| Write | Edit dataset settings, push data to it, and remove the dataset. |
| Manage access rights | Manage dataset access rights. |
-To learn about dataset storage, see its [documentation](../storage/dataset.md).
+To learn about dataset storage, see its [documentation](/storage/dataset).
### Key-value-store
@@ -54,7 +54,7 @@ To learn about dataset storage, see its [documentation](../storage/dataset.md).
| Write | Edit key-value store settings, add, update or remove its records, and delete the key-value store. |
| Manage access rights | Manage key-value store access rights. |
-To learn about key-value stores, see the [documentation](../storage/key_value_store.md).
+To learn about key-value stores, see the [documentation](/storage/key-value-store).
### Request queue
@@ -64,7 +64,7 @@ To learn about key-value stores, see the [documentation](../storage/key_value_st
| Write | Edit request queue settings, add, update, or remove its records, and delete the request queue. |
| Manage access rights | Manage request queue access rights. |
-To learn about request queue storage, see the [documentation](../storage/request_queue.md).
+To learn about request queue storage, see the [documentation](/storage/request-queue).
## Proxy
@@ -72,11 +72,11 @@ To learn about request queue storage, see the [documentation](../storage/request
|------------|---------------------------|
| Proxy | Allow to use Apify Proxy. |
-To learn about Apify Proxy, see its [documentation](../proxy/index.md).
+To learn about Apify Proxy, see its [documentation](/proxy).
## User permissions
-Permissions that can be granted to members of organizations. To learn about the organization account, see its [documentation](./organization_account/index.md).
+Permissions that can be granted to members of organizations. To learn about the organization account, see its [documentation](/account/collaboration/organization).
| Permission | Description |
|---------------------|-----------------------------------------------------------------------|
diff --git a/sources/platform/collaboration/organization_account/how_to_use.md b/sources/platform/account/collaboration/organization/how_to_use.md
similarity index 93%
rename from sources/platform/collaboration/organization_account/how_to_use.md
rename to sources/platform/account/collaboration/organization/how_to_use.md
index 6dab78b62b..1150a63980 100644
--- a/sources/platform/collaboration/organization_account/how_to_use.md
+++ b/sources/platform/account/collaboration/organization/how_to_use.md
@@ -2,7 +2,7 @@
title: Using the organization account
description: Learn to use and manage your organization account using Apify Console or the Apify API. View the organizations you are in and manage your memberships.
sidebar_position: 2
-slug: /collaboration/organization-account/how-to-use
+slug: /account/collaboration/organization/how-to-use
sidebar_label: How to use
---
@@ -40,7 +40,7 @@ The organization, its Actors, and its integrations will keep running as they are
While you cannot manage an organization account's settings and members via API, you can access its Actor and task runs, webhooks, schedules, and storages just as you would with any other account.
-As a member of an organization, you are assigned an [API token](../../integrations/index.mdx) (under the **API & Integrations** tab) and proxy password (click the **Proxy** button in the left menu) for accessing the Apify platform via REST API.
+As a member of an organization, you are assigned an [API token](/integrations) (under the **API & Integrations** tab) and proxy password (click the **Proxy** button in the left menu) for accessing the Apify platform via REST API.

diff --git a/sources/platform/collaboration/organization_account/index.md b/sources/platform/account/collaboration/organization/index.md
similarity index 92%
rename from sources/platform/collaboration/organization_account/index.md
rename to sources/platform/account/collaboration/organization/index.md
index 52945b3057..a1242ebc64 100644
--- a/sources/platform/collaboration/organization_account/index.md
+++ b/sources/platform/account/collaboration/organization/index.md
@@ -2,7 +2,7 @@
title: Organization account
description: Create a specialized account for your organization to encourage collaboration and manage permissions. Convert an existing account, or create one from scratch.
sidebar_position: 12.1
-slug: /collaboration/organization-account
+slug: /account/collaboration/organization
---
Organization accounts allow groups to collaborate on projects. It enables you to manage your team members' [permissions](../list_of_permissions.md) and to centralize your billing without having to share the credentials of a single personal account.
@@ -12,7 +12,7 @@ You can [switch](./how_to_use.md) between your personal and organization account
You can set up an organization in two ways:
- [Create a new organization](#create-a-new-organization). If you don't have integrations set up yet, or if they are easy to change, you can create a new organization, preserving your personal account.
-- [Convert an existing account](#convert-an-existing-account) into an organization. If your Actors and [integrations](../../integrations/index.mdx) are set up in a personal account, it is probably best to convert that account into an organization. This will preserve all your integrations but means you will have a new personal account created for you.
+- [Convert an existing account](#convert-an-existing-account) into an organization. If your Actors and [integrations](/integrations) are set up in a personal account, it is probably best to convert that account into an organization. This will preserve all your integrations but means you will have a new personal account created for you.
Prefer video to reading? [See the video tutorial](https://www.youtube.com/watch?v=BIL6HqtnvKk) for organization accounts.
diff --git a/sources/platform/collaboration/organization_account/setup.md b/sources/platform/account/collaboration/organization/setup.md
similarity index 87%
rename from sources/platform/collaboration/organization_account/setup.md
rename to sources/platform/account/collaboration/organization/setup.md
index f5807b07d1..0fed008fb8 100644
--- a/sources/platform/collaboration/organization_account/setup.md
+++ b/sources/platform/account/collaboration/organization/setup.md
@@ -2,7 +2,7 @@
title: Setup
description: Configure your organization account by inviting new members and assigning their roles. Manage team members' access permissions to the organization's resources.
sidebar_position: 1
-slug: /collaboration/organization-account/setup
+slug: /account/collaboration/organization/setup
---
After creating your organization, you can configure its settings. The **Account** tab allows you to:
@@ -37,7 +37,7 @@ To edit the permissions for each role, click on the **Configure permissions** bu
> Each member can only have one role to avoid conflicting permissions.
-You can configure individual permissions for each resource type such as Actors, Actor tasks or storage. Bear in mind that if a user has the **read** permission for [storages](../../storage/index.md), you cannot prevent them from accessing a particular storage (e.g. a certain [dataset](../../storage/index.md)) - they will have access to all of the organization's storages.
+You can configure individual permissions for each resource type such as Actors, Actor tasks or storage. Bear in mind that if a user has the **read** permission for [storages](/storage), you cannot prevent them from accessing a particular storage (e.g. a certain [dataset](/storage)) - they will have access to all of the organization's storages.
**Some permissions have dependencies**. For example, if someone has the **Actor run** permission, it is likely they will also need the **storage write** permission, so they can store the results from their Actor runs.
diff --git a/sources/platform/console/index.md b/sources/platform/account/console.md
similarity index 71%
rename from sources/platform/console/index.md
rename to sources/platform/account/console.md
index 09ca5868bf..01cb8dafda 100644
--- a/sources/platform/console/index.md
+++ b/sources/platform/account/console.md
@@ -3,7 +3,7 @@ title: Apify Console
description: "Get started with Apify Console: create an account, sign in with email, Google, or GitHub, and manage your web scraping projects from one place."
sidebar_position: 1
category: platform
-slug: /console
+slug: /account/console
---
[Apify Console](https://console.apify.com) is a web application where you can manage all your Apify projects and resources.
@@ -59,17 +59,17 @@ To navigate Apify Console, use the left-side panel or keyboard shortcuts.
| Section | Keyboard shortcut | Description |
| :--- | :--- | :--- |
-| [Apify Store](/platform/console/store) | G + O | Search for Actors that suit your web-scraping needs. |
-| [Dashboard](/platform/console) | G + H | Overview of your account with recently viewed Actors, suggestions, and recent runs. |
-| [Actors](/platform/actors) | G + A | View recent and bookmarked Actors. |
-| [Runs](/platform/actors/running/runs-and-builds) | G + R | View your recent runs. |
-| [Saved tasks](/platform/actors/running/tasks) | G + T | View your saved tasks. |
-| [Integrations](/platform/integrations) | G + I | View your integrations. |
-| [Schedules](/platform/schedules) | G + U | Schedule Actor runs and tasks to run at a specified time. |
-| [Development](/platform/actors/development) | G + D | • **My Actors** - see Actors developed by you.
• **Insights** - see analytics for your Actors.
• **Messaging** - check reported issues or send emails to users of your Actors. |
-| [Proxy](/platform/proxy) | G + P | View your proxy usage and credentials. |
-| [Storage](/platform/storage) | G + E | View stored results of your runs in various data formats. |
-| [Billing](/platform/console/billing) | G + B | View billing information, statistics, and invoices. |
-| [Settings](/platform/console/settings) | G + S | Change settings of your account. |
+| [Apify Store](/console/store) | G + O | Search for Actors that suit your web-scraping needs. |
+| [Dashboard](/account/console) | G + H | Overview of your account with recently viewed Actors, suggestions, and recent runs. |
+| [Actors](/actors) | G + A | View recent and bookmarked Actors. |
+| [Runs](/actors/running/runs-and-builds) | G + R | View your recent runs. |
+| [Saved tasks](/actors/running/tasks) | G + T | View your saved tasks. |
+| [Integrations](/integrations) | G + I | View your integrations. |
+| [Schedules](/actors/running/schedules) | G + U | Schedule Actor runs and tasks to run at a specified time. |
+| [Development](/actors/development) | G + D | • **My Actors** - see Actors developed by you.
• **Insights** - see analytics for your Actors.
• **Messaging** - check reported issues or send emails to users of your Actors. |
+| [Proxy](/proxy) | G + P | View your proxy usage and credentials. |
+| [Storage](/storage) | G + E | View stored results of your runs in various data formats. |
+| [Billing](/account/billing) | G + B | View billing information, statistics, and invoices. |
+| [Settings](/account/settings) | G + S | Change settings of your account. |
To view all keyboard shortcuts, press Shift + ?.
diff --git a/sources/platform/console/images/console-billing-current-period.png b/sources/platform/account/images/console-billing-current-period.png
similarity index 100%
rename from sources/platform/console/images/console-billing-current-period.png
rename to sources/platform/account/images/console-billing-current-period.png
diff --git a/sources/platform/console/images/console-billing-historical-usage-by-actors.png b/sources/platform/account/images/console-billing-historical-usage-by-actors.png
similarity index 100%
rename from sources/platform/console/images/console-billing-historical-usage-by-actors.png
rename to sources/platform/account/images/console-billing-historical-usage-by-actors.png
diff --git a/sources/platform/console/images/console-billing-historical-usage.png b/sources/platform/account/images/console-billing-historical-usage.png
similarity index 100%
rename from sources/platform/console/images/console-billing-historical-usage.png
rename to sources/platform/account/images/console-billing-historical-usage.png
diff --git a/sources/platform/console/images/console-billing-invoices.png b/sources/platform/account/images/console-billing-invoices.png
similarity index 100%
rename from sources/platform/console/images/console-billing-invoices.png
rename to sources/platform/account/images/console-billing-invoices.png
diff --git a/sources/platform/console/images/console-billing-limits.png b/sources/platform/account/images/console-billing-limits.png
similarity index 100%
rename from sources/platform/console/images/console-billing-limits.png
rename to sources/platform/account/images/console-billing-limits.png
diff --git a/sources/platform/console/images/console-billing-pricing.png b/sources/platform/account/images/console-billing-pricing.png
similarity index 100%
rename from sources/platform/console/images/console-billing-pricing.png
rename to sources/platform/account/images/console-billing-pricing.png
diff --git a/sources/platform/console/images/console-billing-subscription.png b/sources/platform/account/images/console-billing-subscription.png
similarity index 100%
rename from sources/platform/console/images/console-billing-subscription.png
rename to sources/platform/account/images/console-billing-subscription.png
diff --git a/sources/platform/console/images/two-factor-authentication.svg b/sources/platform/account/images/two-factor-authentication.svg
similarity index 100%
rename from sources/platform/console/images/two-factor-authentication.svg
rename to sources/platform/account/images/two-factor-authentication.svg
diff --git a/sources/platform/account/index.mdx b/sources/platform/account/index.mdx
new file mode 100644
index 0000000000..097aaa8861
--- /dev/null
+++ b/sources/platform/account/index.mdx
@@ -0,0 +1,40 @@
+---
+title: Account
+description: Manage your Apify account, billing, security, organization, and access permissions.
+sidebar_label: Overview
+sidebar_position: 0
+slug: /account
+---
+
+import Card from "@site/src/components/Card";
+import CardGrid from "@site/src/components/CardGrid";
+
+Manage your Apify account settings, billing, security, and team collaboration.
+
+
+
+
+
+
+
+
diff --git a/sources/platform/console/settings.md b/sources/platform/account/settings.md
similarity index 96%
rename from sources/platform/console/settings.md
rename to sources/platform/account/settings.md
index 25df3408f7..27136da8bd 100644
--- a/sources/platform/console/settings.md
+++ b/sources/platform/account/settings.md
@@ -3,7 +3,7 @@ title: Account settings
description: Learn how to manage your Apify account, configure integrations, create and manage organizations, and set notification preferences in the Settings tab.
sidebar_position: 4
category: platform
-slug: /console/settings
+slug: /account/settings
---
## Account
@@ -36,11 +36,11 @@ In the **Session information** section, you can adjust the session configuration
## API & Integrations
-The **API & Integrations** tab provides essential tools for accessing the Apify platform programmatically. Here, you can manage your **API tokens**, which are necessary for using the [Apify API](https://docs.apify.com/api/v2). The tab also shows **third-party apps and services** connected to your account, **account-level integrations**, and **Actor OAuth accounts**. For detailed guidance on utilizing these integrations, refer to the [Integrations documentation](https://docs.apify.com/platform/integrations).
+The **API & Integrations** tab provides essential tools for accessing the Apify platform programmatically. Here, you can manage your **API tokens**, which are necessary for using the [Apify API](https://docs.apify.com/api/v2). The tab also shows **third-party apps and services** connected to your account, **account-level integrations**, and **Actor OAuth accounts**. For detailed guidance on utilizing these integrations, refer to the [Integrations documentation](https://docs.apify.com/integrations).
### MCP connectors
-The **MCP connectors** section lets you authorize third-party MCP servers (such as Notion, Slack, GitHub, or Supabase) once and reuse those connections across any Actor that accepts them. For an overview of the feature, see [MCP connectors](/platform/integrations/mcp-connectors).
+The **MCP connectors** section lets you authorize third-party MCP servers (such as Notion, Slack, GitHub, or Supabase) once and reuse those connections across any Actor that accepts them. For an overview of the feature, see [MCP connectors](/integrations/mcp-connectors).
#### Create a connector
diff --git a/sources/platform/console/two-factor-authentication.md b/sources/platform/account/two-factor-authentication.md
similarity index 99%
rename from sources/platform/console/two-factor-authentication.md
rename to sources/platform/account/two-factor-authentication.md
index 0715634be3..abfda9a62b 100644
--- a/sources/platform/console/two-factor-authentication.md
+++ b/sources/platform/account/two-factor-authentication.md
@@ -3,7 +3,7 @@ title: Two-factor authentication
description: Enable two-factor authentication on your Apify Console account using an authenticator app to add a second layer of security against unauthorized access.
sidebar_position: 5
category: platform
-slug: /console/two-factor-authentication
+slug: /account/two-factor-authentication
---
Two-factor authentication (2FA) provides an extra layer of security that helps protect your Apify account. With 2FA enabled, logging into your account consists of two steps:
diff --git a/sources/platform/images/schedules-actor-input.png b/sources/platform/actors/running/images/schedules-actor-input.png
similarity index 100%
rename from sources/platform/images/schedules-actor-input.png
rename to sources/platform/actors/running/images/schedules-actor-input.png
diff --git a/sources/platform/images/schedules-bulk-notifications.png b/sources/platform/actors/running/images/schedules-bulk-notifications.png
similarity index 100%
rename from sources/platform/images/schedules-bulk-notifications.png
rename to sources/platform/actors/running/images/schedules-bulk-notifications.png
diff --git a/sources/platform/images/schedules-overview.png b/sources/platform/actors/running/images/schedules-overview.png
similarity index 100%
rename from sources/platform/images/schedules-overview.png
rename to sources/platform/actors/running/images/schedules-overview.png
diff --git a/sources/platform/images/schedules-setup-tool.png b/sources/platform/actors/running/images/schedules-setup-tool.png
similarity index 100%
rename from sources/platform/images/schedules-setup-tool.png
rename to sources/platform/actors/running/images/schedules-setup-tool.png
diff --git a/sources/platform/images/schedules-task-input.png b/sources/platform/actors/running/images/schedules-task-input.png
similarity index 100%
rename from sources/platform/images/schedules-task-input.png
rename to sources/platform/actors/running/images/schedules-task-input.png
diff --git a/sources/platform/monitoring/images/alerts.png b/sources/platform/actors/running/monitoring/images/alerts.png
similarity index 100%
rename from sources/platform/monitoring/images/alerts.png
rename to sources/platform/actors/running/monitoring/images/alerts.png
diff --git a/sources/platform/monitoring/images/daily-run-statuses.png b/sources/platform/actors/running/monitoring/images/daily-run-statuses.png
similarity index 100%
rename from sources/platform/monitoring/images/daily-run-statuses.png
rename to sources/platform/actors/running/monitoring/images/daily-run-statuses.png
diff --git a/sources/platform/monitoring/images/email-notification.png b/sources/platform/actors/running/monitoring/images/email-notification.png
similarity index 100%
rename from sources/platform/monitoring/images/email-notification.png
rename to sources/platform/actors/running/monitoring/images/email-notification.png
diff --git a/sources/platform/monitoring/images/in-app-notification.png b/sources/platform/actors/running/monitoring/images/in-app-notification.png
similarity index 100%
rename from sources/platform/monitoring/images/in-app-notification.png
rename to sources/platform/actors/running/monitoring/images/in-app-notification.png
diff --git a/sources/platform/monitoring/images/metric-options.png b/sources/platform/actors/running/monitoring/images/metric-options.png
similarity index 100%
rename from sources/platform/monitoring/images/metric-options.png
rename to sources/platform/actors/running/monitoring/images/metric-options.png
diff --git a/sources/platform/monitoring/images/monitoring.png b/sources/platform/actors/running/monitoring/images/monitoring.png
similarity index 100%
rename from sources/platform/monitoring/images/monitoring.png
rename to sources/platform/actors/running/monitoring/images/monitoring.png
diff --git a/sources/platform/monitoring/images/notifications.png b/sources/platform/actors/running/monitoring/images/notifications.png
similarity index 100%
rename from sources/platform/monitoring/images/notifications.png
rename to sources/platform/actors/running/monitoring/images/notifications.png
diff --git a/sources/platform/monitoring/images/run-statistics-chart.png b/sources/platform/actors/running/monitoring/images/run-statistics-chart.png
similarity index 100%
rename from sources/platform/monitoring/images/run-statistics-chart.png
rename to sources/platform/actors/running/monitoring/images/run-statistics-chart.png
diff --git a/sources/platform/monitoring/index.md b/sources/platform/actors/running/monitoring/index.md
similarity index 90%
rename from sources/platform/monitoring/index.md
rename to sources/platform/actors/running/monitoring/index.md
index 2b94d18481..cbea4bb739 100644
--- a/sources/platform/monitoring/index.md
+++ b/sources/platform/actors/running/monitoring/index.md
@@ -3,7 +3,7 @@ title: Monitoring
description: Learn how to make sure your Actors and tasks perform as expected and retrieve correct results. Get alerts when jobs or their metrics fall short.
sidebar_position: 12
category: guides
-slug: /monitoring
+slug: /actors/running/monitoring
---
The web is continuously evolving, and so are the websites you interact with. If you implement Apify Actors or the data they provide into your daily workflows, you need to make sure that everything runs as expected.
@@ -45,7 +45,7 @@ When you set up an alert, you have four choices for how you want the metrics to
3. **Alert, when run status is one of following** - This type of alert is checked only after the run finishes. It makes possible to track the status of your finished runs and send an alert if the run finishes in a state you do not expect. If your Actor runs very often and suddenly starts failing, you will receive a single alert after the first failed run in 1 minute, and then aggregated alert every 15 minutes.
-4. **Alert for dataset field statistics** - If you have a [dataset schema](../actors/development/actor_definition/dataset_schema/validation.md) set up, then you can use the field statistics to set up an alert. You can use field statistics for example to track if some field is filled in all records, if some numeric value is too low/high (for example when tracking the price of a product over multiple sources), if the number of items in an array is too low/high (for example alert on Instagram Actor if post has a lot of comments) and many other tasks like these.
+4. **Alert for dataset field statistics** - If you have a [dataset schema](/actors/development/actor-definition/dataset-schema/validation) set up, then you can use the field statistics to set up an alert. You can use field statistics for example to track if some field is filled in all records, if some numeric value is too low/high (for example when tracking the price of a product over multiple sources), if the number of items in an array is too low/high (for example alert on Instagram Actor if post has a lot of comments) and many other tasks like these.
:::important
@@ -104,7 +104,7 @@ These are just a few examples of what you can monitor. It's always recommended t
### Alternative solutions
-For more complex monitoring, you can use the [monitoring suite](https://apify.com/apify/monitoring), which is a collection of [Apify Actors](../actors/index.mdx) that allows you to automate the monitoring of jobs you have running on the [Apify platform](https://apify.com). The monitoring suite offers some features that are not **currently** available in Apify Console, such as:
+For more complex monitoring, you can use the [monitoring suite](https://apify.com/apify/monitoring), which is a collection of [Apify Actors](/actors) that allows you to automate the monitoring of jobs you have running on the [Apify platform](https://apify.com). The monitoring suite offers some features that are not **currently** available in Apify Console, such as:
1. Schema validation of the output
2. Duplicate checks in the output
diff --git a/sources/platform/schedules.md b/sources/platform/actors/running/schedules.md
similarity index 92%
rename from sources/platform/schedules.md
rename to sources/platform/actors/running/schedules.md
index 7b9147c563..5862a2b801 100644
--- a/sources/platform/schedules.md
+++ b/sources/platform/actors/running/schedules.md
@@ -3,7 +3,7 @@ title: Schedules
description: Learn how to automatically start your Actor and task runs and the basics of cron expressions. Set up and manage your schedules from Apify Console or via API.
sidebar_position: 8
category: platform
-slug: /schedules
+slug: /actors/running/schedules
---
Schedules allow you to run your Actors and tasks at specific times. You schedule the run frequency using [cron expressions](#cron-expressions).
@@ -30,7 +30,7 @@ Each schedule can be associated with a maximum of _10_ Actors and _10_ Actor tas
## Set up a new schedule
-Before setting up a new schedule, you should have the [Actor](./actors/index.mdx) or [task](./actors/running/tasks.md) you want to schedule prepared and tested.
+Before setting up a new schedule, you should have the [Actor](/actors) or [task](/actors/running/tasks) you want to schedule prepared and tested.
To schedule an Actor, you need to have run it at least once before. To run the Actor, navigate to the Actor's page through [Apify Console](https://console.apify.com/store), where you can configure and initiate the Actor's run with your preferred settings by clicking the **Start** button. After this initial run, you can then use Schedules to automate future runs.
@@ -50,7 +50,7 @@ You can adjust how often your Actor or task runs using the [schedule setup tool]
Next, you'll need to give the schedule something to run. This is where the Actor or task you prepared earlier comes in. Click on the **Add** dropdown and select whether you want to schedule an Actor or task.
-If you're scheduling an Actor run, you'll be able to specify the Actor's [input](./actors/running/input_and_output.md) and running options like [build](./actors/development/builds_and_runs/builds.md), timeout, [memory](./actors/running/usage_and_resources.md).
+If you're scheduling an Actor run, you'll be able to specify the Actor's [input](/actors/running/input-and-output) and running options like [build](/actors/development/builds-and-runs/builds), timeout, [memory](/actors/running/usage-and-resources).
The **timeout** value is specified in seconds; a value of _0_ means there is no timeout, and the Actor runs until it finishes.
If you don't provide an input, then the Actor's default input is used. If you provide an input with some fields missing, the missing fields are filled in with values from the default input. If input options are not provided, the default options values are used.
@@ -65,13 +65,13 @@ To add more Actors or tasks, just repeat the process.
You can disable or enable the schedule at any time using the **Disable**/**Enable** button on the schedule detail page. New schedules are created in _disabled_ state by default.
-For integrations, you can also add a [webhook](/platform/integrations/webhooks) to your tasks, which will notify you (or perform an action of your choice) every time the task runs.
+For integrations, you can also add a [webhook](/integrations/webhooks) to your tasks, which will notify you (or perform an action of your choice) every time the task runs.
### Apify API
To create a new [schedule](/api/v2/schedules) using the Apify API, send a `POST` request to the [create schedule](/api/v2/schedules-post) endpoint.
-You can find your [secret API token](./integrations/index.mdx) under the [API & Integrations](https://console.apify.com/settings/integrations) tab of your Apify account settings.
+You can find your [secret API token](/integrations) under the [API & Integrations](https://console.apify.com/settings/integrations) tab of your Apify account settings.
:::caution API authentication recommendations
When providing your API authentication token, we recommend using the request's `Authorization` header, rather than the URL ([more info](/api/v2#authentication)).
diff --git a/sources/platform/get-started/build-with-ai.md b/sources/platform/get-started/build-with-ai.md
new file mode 100644
index 0000000000..0a519c0a2c
--- /dev/null
+++ b/sources/platform/get-started/build-with-ai.md
@@ -0,0 +1,178 @@
+---
+title: Build Actors with AI
+sidebar_position: 3
+sidebar_label: Build with AI
+description: Build new Actors or improve existing ones using AI coding tools by providing the right context, prompts, Agent Skills, and the Apify MCP server.
+slug: /get-started/build-with-ai
+toc_max_heading_level: 4
+---
+
+import { AGENTS_PROMPT } from "@site/src/utils/agents-prompt";
+import PromptButton from "@site/src/components/PromptButton";
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import ClaudeCodeWebEgress from '@site/sources/_partials/_claude-code-web-egress.mdx';
+
+This guide provides best practices for building new Actors or improving existing ones using AI code generation tools by providing the AI agents with the right instructions and context.
+
+:::tip Different goal?
+
+- _Building and deploying AI agents as Actors on Apify?_ See [Develop AI agents on Apify](/get-started/develop-ai-agents) for the full stack - templates, sandboxes, LLM access, and monetization.
+- _Connecting an external AI agent to Apify?_ See [Apify for AI agents](/integrations/agent-onboarding) for MCP, Agent Skills, client libraries, and the REST API.
+
+:::
+
+The methods on this page are complementary. Start with the [AI coding assistant instructions](#ai-coding-assistant-instructions) or [Actor templates with AGENTS.md](#use-actor-templates-with-agentsmd) to get going, then add [Agent Skills](#use-agent-skills) and the [Apify MCP server](#use-apify-mcp-server) to give your assistant more context and better results.
+
+## Quick start
+
+
+
+
+1. Create a directory: `mkdir my-new-actor`.
+1. Open the directory in _Cursor_, _Claude Code_, _VS Code with GitHub Copilot_, etc. Using Claude Code on the web? See the setup note below first.
+1. Copy the [AI coding assistant prompt](#ai-coding-assistant-instructions) and paste it into your AI coding assistant.
+1. Run it, and develop your first Actor with the help of AI.
+
+
+
+
+1. [Install the Apify CLI](/cli/docs/installation) if you haven't already.
+1. Run `apify create` to initialize an Actor from a [template](https://apify.com/templates) (includes AGENTS.md).
+1. Open the project in _Cursor_, _Claude Code_, _VS Code with GitHub Copilot_, etc. Using Claude Code on the web? See the setup note below first.
+1. Start developing - your AI coding assistant automatically picks up context from AGENTS.md.
+
+
+
+
+
+
+## AI coding assistant instructions
+
+Use the following prompt in your AI coding assistant such as [Cursor](https://cursor.com/), [Claude Code](https://claude.com/product/claude-code), or [GitHub Copilot](https://github.com/features/copilot):
+
+
+
+The prompt guides your AI coding assistant to create and deploy an Apify Actor step by step. It walks through setting up the Actor structure, configuring all required files, installing dependencies, running it locally, logging in, and pushing it to the Apify platform.
+
+## Use Actor templates with AGENTS.md
+
+All [Actor Templates](https://apify.com/templates) have AGENTS.md that will help you with AI coding. You can use the [Apify CLI](/cli/docs) to create Actors from Actor Templates.
+
+```bash
+apify create
+```
+
+If you do not have the Apify CLI installed, see the [installation guide](/cli/docs/installation).
+
+The command above will guide you through Apify Actor initialization, where you select an Actor Template that works for you. The result is an initialized Actor (with AGENTS.md) ready for development.
+
+## Use Agent Skills
+
+[Agent Skills](https://github.com/apify/agent-skills) are official Apify skills for Actor development, web scraping, data extraction, automation, etc. They work with Claude Code, Cursor, Codex, Gemini CLI, and other AI coding assistants.
+
+Install Agent Skills in your project directory:
+
+```bash
+npx skills add apify/agent-skills
+```
+
+This adds skill files to your project that AI coding assistants automatically discover and use for context. No additional configuration is needed.
+
+## Use Apify MCP server
+
+The Apify MCP server has tools to search and fetch documentation. If you set it up in your AI editor, it will help you improve the generated code by providing additional context to the AI.
+
+:::info Use Apify MCP server configuration
+
+We have prepared the [Apify MCP server configuration](https://mcp.apify.com/), which you can configure for your needs.
+
+:::
+
+
+
+
+To add Apify MCP server to Cursor manually:
+
+1. Create or open the `.cursor/mcp.json` file.
+1. Add the following to the configuration file:
+
+ ```json
+ {
+ "mcpServers": {
+ "apify": {
+ "url": "https://mcp.apify.com/?tools=docs"
+ }
+ }
+ }
+ ```
+
+
+
+
+VS Code supports MCP through MCP-compatible extensions like _GitHub Copilot_, _Cline_, or _Roo Code_.
+
+1. Install an MCP-compatible extension (e.g., GitHub Copilot, Cline).
+1. Locate the extension's MCP settings or configuration file (often `mcp.json`).
+ - For _GitHub Copilot_: Run the **MCP: Open User Configuration** command.
+ - For _Cline_ or _Roo Code_: Go to the **MCP Servers** tab in the extension interface.
+1. Add the Apify server configuration:
+
+ ```json
+ {
+ "mcpServers": {
+ "apify": {
+ "url": "https://mcp.apify.com/?tools=docs"
+ }
+ }
+ }
+ ```
+
+
+
+
+Run the following command to add the Apify MCP server:
+
+```bash
+claude mcp add apify "https://mcp.apify.com/?tools=docs" -t http
+```
+
+
+
+
+## Provide context to assistants
+
+Every page in the Apify documentation has a **Copy for LLM** button. Use it to add more context to your AI assistant, or even open the page in ChatGPT, Claude, or Perplexity and ask additional questions.
+
+
+
+## Use `/llms.txt` files
+
+The entire Apify documentation is available in Markdown format for use with LLMs and AI coding tools. Two consolidated files are available:
+
+- `https://docs.apify.com/llms.txt`: A Markdown file with an index of all documentation pages in Markdown format, based on the [llmstxt.org](https://llmstxt.org/) standard.
+- `https://docs.apify.com/llms-full.txt`: All Apify documentation consolidated in a single Markdown file.
+
+:::tip Access Markdown source
+
+Add `.md` to any documentation page URL to view its Markdown source.
+
+Example: `https://docs.apify.com/actors` > `https://docs.apify.com/actors.md`
+
+:::
+
+:::note Provide link to AI assistants
+
+LLMs don't automatically discover `llms.txt` files, you need to add the link manually to improve the quality of answers.
+
+:::
+
+## Best practices
+
+- _Small tasks_: Don't ask AI for many tasks at once. Break complex problems into smaller pieces. Solve them step by step.
+
+- _Iterative approach_: Work iteratively with clear steps. Start with a basic implementation and gradually add complexity.
+
+- _Versioning_: Version your changes often using git. This lets you track changes, roll back if needed, and maintain a clear history.
+
+- _Security_: Don't expose API keys, secrets, or sensitive information in your code or conversations with LLM assistants.
diff --git a/sources/platform/get-started/develop-ai-agents.md b/sources/platform/get-started/develop-ai-agents.md
new file mode 100644
index 0000000000..52a5ce794f
--- /dev/null
+++ b/sources/platform/get-started/develop-ai-agents.md
@@ -0,0 +1,160 @@
+---
+title: Develop AI agents on Apify
+description: Build and deploy AI agents on Apify with framework templates, sandboxes, OpenRouter for LLM access, and pay-per-event pricing.
+sidebar_position: 4.0
+sidebar_label: Develop AI agents
+slug: /get-started/develop-ai-agents
+---
+
+The Apify platform provides everything you need to build, test, and deploy AI agents. This page walks you through the complete toolkit: templates, sandbox code execution, LLM access through OpenRouter, pay-per-event monetization, and deployment to [Apify Store](https://apify.com/store).
+
+This page covers:
+
+- [Start from a template](#start-from-a-template) - Use pre-built Apify Actor templates for popular AI frameworks to scaffold your agent quickly.
+- [AI Sandbox](#use-ai-sandbox-for-code-execution) - Run code in an isolated environment at runtime. Useful when your agent needs to execute user-provided or dynamically generated code.
+- [OpenRouter](#access-llms-with-openrouter) - Access 100+ LLMs through your Apify account without managing separate API keys.
+- [Pay-per-event pricing](#monetize-with-pay-per-event-pricing) - Charge users for specific actions your agent performs, such as API calls or token usage.
+- [Deploy to Apify](#deploy-to-apify) - Push your agent to the Apify platform and publish it to Apify Store.
+
+:::note Build with AI
+
+Looking to use AI coding assistants (Claude Code, Cursor, GitHub Copilot) to help you develop Actors? See [Build Actors with AI](/get-started/build-with-ai).
+
+:::
+
+## Prerequisites
+
+- An [Apify account](https://console.apify.com/sign-up).
+- The [Apify CLI](/cli/docs/installation) installed.
+- Your `APIFY_TOKEN` environment variable set. See [API token](/integrations/api#api-token) for details.
+
+## Start from a template
+
+The fastest way to start your AI agent is to use one of the Apify Actor templates built on popular AI frameworks. Each template comes pre-configured with the right file structure, dependencies, and the Apify SDK integration.
+
+Available AI framework templates include:
+
+- LangChain - LLM pipelines with chain-of-thought and tool use
+- Mastra - TypeScript-native AI agent framework
+- CrewAI - multi-agent orchestration for complex tasks
+- LlamaIndex - retrieval-augmented generation (RAG) workflows
+- PydanticAI - Python agents with structured, validated outputs
+- Smolagents - lightweight agents from Hugging Face
+- MCP - expose your Actor as an MCP server
+
+Initialize a template with the Apify CLI:
+
+```bash
+apify create my-agent
+```
+
+The command guides you through template selection. Browse all available templates at [apify.com/templates](https://apify.com/templates).
+
+If you don't have the Apify CLI installed, see the [installation guide](/cli/docs/installation).
+
+## Use AI Sandbox for code execution
+
+[AI Sandbox](https://apify.com/apify/ai-sandbox) is an isolated, containerized environment where your AI agent can execute code and system commands at runtime. Your agent Actor starts the sandbox and communicates with it through a REST API or MCP interface.
+
+### Key capabilities
+
+- Code execution - run JavaScript, TypeScript, Python, and bash via `POST /exec` with captured stdout/stderr and exit codes
+- Filesystem access - read, write, list, and delete files through `/fs/{path}` endpoints
+- Dynamic reverse proxy - start a web server inside the sandbox and expose it externally
+- Dependency installation - install npm and pip packages at startup through Actor input
+- Idle timeout - the sandbox automatically stops after a period of inactivity
+- MCP interface - connect directly from Claude Code or other MCP clients for live debugging
+
+### Example workflow
+
+1. Your agent Actor starts the AI Sandbox Actor using the Apify SDK (similar to calling any other Actor)
+1. The agent sends code to execute via the REST API (`POST /exec`)
+1. AI Sandbox runs the code in isolation and returns results
+1. The agent processes results and iterates
+
+:::info Sandbox environment
+
+AI Sandbox runs on a Debian image with Node.js version 24 and Python 3.11 pre-installed. You can install additional dependencies through the Actor input configuration.
+
+:::
+
+## Connect to user services with MCP connectors
+
+If your agent needs to act on a user's third-party accounts - posting to Slack, writing to Notion, querying GitHub - use [MCP connectors](/integrations/mcp-connectors). The user authorizes each service once in their account settings, and your Actor receives a connector ID as input. Your Actor uses its Apify run token to reach the MCP Proxy; the third-party service credential stored in the connector stays server-side and never enters the Actor. Declare which services your Actor accepts in the input schema with `resourceType: "mcpConnector"`. See [Build Actors with MCP connectors](/integrations/mcp-connectors/use-in-actors) for the full schema and code samples.
+
+## Access LLMs with OpenRouter
+
+The [OpenRouter](https://apify.com/apify/openrouter) Actor provides access to 100+ LLMs through your Apify account. Supported providers include OpenAI, Anthropic, Google, Mistral, Meta, and more. No separate API keys or billing setup required - all costs are billed as platform usage.
+
+:::caution Paid account recommended
+
+To use the OpenRouter Actor, subscribe to a paid Apify plan. Free-tier accounts may be blocked by anti-fraud protections.
+
+:::
+
+OpenRouter exposes an OpenAI-compatible API, so you can use it with any SDK that supports the OpenAI API format.
+
+### Connect to OpenRouter
+
+Use the Apify OpenRouter proxy endpoint with your Apify token:
+
+```js
+import { createOpenRouter } from '@openrouter/ai-sdk-provider';
+
+const openrouter = createOpenRouter({
+ baseURL: 'https://openrouter.apify.actor/api/v1',
+ apiKey: 'api-key-not-required',
+ headers: {
+ Authorization: `Bearer ${process.env.APIFY_TOKEN}`,
+ },
+});
+```
+
+The proxy supports chat completions, streaming, text embeddings, and image generation through vision-capable models.
+
+:::caution Token usage tracking
+
+Pay-per-event pricing can charge users per token. To do this, extract token counts from OpenRouter responses. Check the [OpenRouter Actor README](https://apify.com/apify/openrouter) for the latest guidance on this workflow.
+
+:::
+
+## Monetize with pay-per-event pricing
+
+[Pay-per-event (PPE)](/actors/publishing/monetize/pay-per-event) pricing lets you charge users for specific actions your agent performs. Use `Actor.charge()` from the [JavaScript SDK](/sdk/js/reference/class/Actor#charge) or [Python SDK](/sdk/python/reference/class/Actor#charge) to bill users for events like API calls, generated results, or token usage.
+
+### PPE for AI agents
+
+For AI agents that use OpenRouter, consider these pricing strategies:
+
+- Fixed pricing - charge a flat fee per task or request, regardless of the underlying LLM costs
+- Usage-based pricing - charge per token or per LLM call, passing costs through to users with a markup
+
+Your profit is calculated as:
+
+```text
+profit = (0.8 × revenue) - platform costs
+```
+
+:::note Free-tier protection
+
+If an Actor's net profit goes negative (for example, from free-tier users consuming LLM resources), the negative amount resets to $0 for aggregation purposes. Negative profit on one Actor doesn't affect earnings from your other Actors.
+
+:::
+
+For detailed pricing guidance, see the [pay-per-event documentation](/actors/publishing/monetize/pay-per-event).
+
+## Deploy to Apify
+
+When your agent is ready, deploy it to the Apify platform:
+
+```bash
+apify push
+```
+
+This builds and deploys your Actor. Once deployed, you can:
+
+- Publish to Apify Store - make your agent available to other users and start earning with PPE pricing. See the [publishing documentation](/actors/publishing).
+- Run via API - trigger your agent programmatically through the [Apify API](/api/v2).
+- Set up schedules - run your agent on a recurring schedule.
+
+For more deployment options, see the [deployment documentation](/actors/development/deployment).
diff --git a/sources/platform/get-started/images/actor-create-button.png b/sources/platform/get-started/images/actor-create-button.png
new file mode 100644
index 0000000000000000000000000000000000000000..f38a7bbe6ce444c555c520ac764a3db284eb4b97
GIT binary patch
literal 108064
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